UNPKG

checkmate

Version:
34 lines (26 loc) 1.26 kB
"use strict"; function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } module.exports = function (validations) { var checkers = Object.keys(validations).map(function (valueKey) { return { valueKey: valueKey, valueChecks: validations[valueKey] }; }).reduce(function (validators, _ref) { var valueKey = _ref.valueKey, valueChecks = _ref.valueChecks; return validators.concat(Object.keys(valueChecks).map(function (checkKey) { return { checkKey: checkKey, checkFunction: valueChecks[checkKey] }; }).reduce(function (validators, _ref2) { var checkKey = _ref2.checkKey, checkFunction = _ref2.checkFunction; return validators.concat(function (errors, values) { var result = checkFunction(values[valueKey]); if (result) return errors; return Object.assign({}, errors, _defineProperty({}, valueKey, [].concat((errors || {})[valueKey] || [], checkKey))); }); }, [])); }, []); return function (values) { return checkers.reduce(function (errors, checker) { return checker(errors, values); }, null); }; };