@berish/validate
Version:
Validation of complex objects with support for validation maps, rules and decorators
45 lines • 1.96 kB
JavaScript
;
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