blob: c2338494693399e453dbc59b5f4c059d1bfee5fc [file] [log] [blame]
/* @flow */
"use strict";
const _ = require("lodash");
/**
* Check whether the variable is an object and all it's properties are arrays of string values:
*
* ignoreProperties = {
* value1: ["item11", "item12", "item13"],
* value2: ["item21", "item22", "item23"],
* value3: ["item31", "item32", "item33"],
* }
*/
module.exports = (validator /*: Function */) => (
value /*: Object*/
) /*: boolean*/ => {
if (!_.isPlainObject(value)) {
return false;
}
return Object.keys(value).every(key => {
if (!_.isArray(value[key])) {
return false;
}
// Make sure the array items are strings
return value[key].every(item => {
if (Array.isArray(validator)) {
return validator.some(v => v(item));
}
return validator(item);
});
});
};