livr
Version:
Lightweight validator supporting Language Independent Validation Rules Specification
43 lines (35 loc) • 1.19 kB
JavaScript
const AsyncValidator = require('../../AsyncValidator');
const util = require('../../util');
function list_of(rules, ruleBuilders) {
if (!Array.isArray(rules)) {
rules = Array.prototype.slice.call(arguments);
ruleBuilders = rules.pop();
}
const livr = { field: rules };
const validator = new AsyncValidator(livr).registerRules(ruleBuilders).prepare();
return async (values, params, outputArr) => {
if (util.isNoValue(values)) return;
if (!Array.isArray(values)) return 'FORMAT_ERROR';
const results = [];
const errors = [];
let hasErrors = false;
for (const value of values) {
try {
const result = await validator.validate({ field: value });
results.push(result.field);
errors.push(null);
} catch (caughtErrors) {
hasErrors = true;
errors.push(caughtErrors.field);
results.push(null);
}
}
if (hasErrors) {
return errors;
} else {
outputArr.push(results);
return;
}
};
}
module.exports = list_of;