"use strict"; const combinator = require("@validatem/combinator"); const validationResult = require("@validatem/validation-result"); const annotateErrors = require("@validatem/annotate-errors"); const isArray = require("@validatem/is-array"); const withContext = require("@validatem/with-context"); module.exports = function (rules) { let validator = combinator((value, applyValidators) => { let newArray = []; let allErrors = []; value.forEach((item, i) => { let itemRules = withContext(rules, { arrayIndex: i, arrayLength: value.length }); let { errors, newValue } = applyValidators(item, itemRules); let annotatedErrors = annotateErrors({ pathSegments: [ i ], errors: errors }); newArray.push(newValue); allErrors.push(...annotatedErrors); }); return validationResult({ errors: allErrors, newValue: newArray }); }); validator.callIfNull = false; return [ isArray, validator ]; };