UNPKG

@berish/validate

Version:

Validation of complex objects with support for validation maps, rules and decorators

45 lines 1.96 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const isValidateMap_1 = require("./isValidateMap"); const isRuleArray_1 = require("../rule/isRuleArray"); const isRuleTuple_1 = require("../rule/isRuleTuple"); const isRuleMap_1 = require("../rule/isRuleMap"); const rule_1 = require("../rule"); const zipValidateMapCompact_1 = require("./zipValidateMapCompact"); function getValidateMapCompact(globalMap) { const _getRules = (parentKeys, currentKey, map) => { if (!map || !isValidateMap_1.isValidateMap(map)) return []; if (isRuleArray_1.isRuleArray(map)) return [[[...parentKeys, currentKey], map]]; if (isRuleTuple_1.isRuleTuple(map)) { const [rules, mapChild] = map; return [[[...parentKeys, currentKey], rules], ..._getRules(parentKeys, currentKey, mapChild)]; } if (isRuleMap_1.isRuleMap(map)) { return Object.entries(map).reduce((out, [key, value]) => { if (rule_1.isRuleReference(value)) { return [...out, [[...parentKeys, currentKey, key], value]]; } else if (rule_1.isRuleReferenceTuple(value)) { const [map, ref] = value; return [ ...out, [ [...parentKeys, currentKey, key], [map, ref], ], ]; } else if (isValidateMap_1.isValidateMap(value)) { return [...out, ..._getRules([...parentKeys, currentKey], key, value)]; } return out; }, []); } return []; }; return zipValidateMapCompact_1.zipValidateMapCompact(_getRules([], null, globalMap)); } exports.getValidateMapCompact = getValidateMapCompact; //# sourceMappingURL=getValidateMapCompact.js.map