1234567891011121314151617181920212223242526272829303132333435363738394041 |
- 'use strict';
-
- const _ = require('lodash');
-
- /**
- * @template T
- * @typedef {(i: T) => boolean} Validator
- */
-
- /**
- * 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"],
- * }
- * @template T
- * @param {Validator<T>|Validator<T>[]} validator
- * @returns {(value: {[k: any]: T|T[]}) => boolean}
- */
- module.exports = (validator) => (value) => {
- if (!_.isPlainObject(value)) {
- return false;
- }
-
- return Object.values(value).every((array) => {
- if (!Array.isArray(array)) {
- return false;
- }
-
- // Make sure the array items are strings
- return array.every((item) => {
- if (Array.isArray(validator)) {
- return validator.some((v) => v(item));
- }
-
- return validator(item);
- });
- });
- };
|