UNPKG

livr

Version:

Lightweight validator supporting Language Independent Validation Rules Specification

54 lines (45 loc) 1.55 kB
const AsyncValidator = require('../../AsyncValidator'); const util = require('../../util'); function list_of_different_objects(selectorField, livrs, ruleBuilders) { const validators = {}; for (const selectorValue in livrs) { const validator = new AsyncValidator(livrs[selectorValue]) .registerRules(ruleBuilders) .prepare(); validators[selectorValue] = validator; } return async (objects, params, outputArr) => { if (util.isNoValue(objects)) return; if (!Array.isArray(objects)) return 'FORMAT_ERROR'; const results = []; const errors = []; let hasErrors = false; for (const object of objects) { if ( typeof object != 'object' || !object[selectorField] || !validators[object[selectorField]] ) { errors.push('FORMAT_ERROR'); continue; } const validator = validators[object[selectorField]]; try { const result = await validator.validate(object); results.push(result); errors.push(null); } catch (caughtErrors) { hasErrors = true; errors.push(caughtErrors); results.push(null); } } if (hasErrors) { return errors; } else { outputArr.push(results); return; } }; } module.exports = list_of_different_objects;