{"dependencies":[{"name":"./inflateTree","loc":{"line":11,"column":28}}],"generated":{"js":"\"use strict\";\nvar __assign = (this && this.__assign) || Object.assign || function(t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n        s = arguments[i];\n        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n            t[p] = s[p];\n    }\n    return t;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar inflateTree_1 = require(\"./inflateTree\");\n// We want to wait for all promises to settle, regardless if they resolve or reject.\nvar promiseEvery = function (arr) {\n    return Promise.all(arr.map(function (val) { return Promise.resolve(val).catch(function (x) { return x; }); }));\n};\nvar validateNode = function (node, form, eventType) {\n    return promiseEvery((node.validators || []).map(function (fn) { return fn(node.value, form, eventType); })).then(function (fieldErrors) {\n        return __assign({}, node, { fieldErrors: fieldErrors.filter(function (x) { return x; }) });\n    });\n};\nexports.validate = function (tree, form, eventType, paths) {\n    // Convert the paths array into a key value lookup\n    var isPath = paths.reduce(function (memo, path) {\n        return (__assign({}, memo, (_a = {}, _a[path] = true, _a)));\n        var _a;\n    }, {});\n    var promisedTree = promiseEvery(tree.map(function (node) {\n        return isPath[node.path.join('.')] ? validateNode(node, form, eventType) : node;\n    }));\n    return promisedTree.then(function (validatedTree) {\n        var errors = validatedTree\n            .reduce(function (memo, node) { return memo.concat(node.fieldErrors); }, [])\n            .filter(function (val, i, self) { return self.indexOf(val) === i; });\n        return {\n            validatedTree: validatedTree,\n            errors: errors,\n            valid: !errors.length,\n            fieldErrors: inflateTree_1.default('fieldErrors', validatedTree),\n        };\n    });\n};\n//# sourceMappingURL=validation.js.map"},"hash":"bb367ee3dd05fe3e8427440f68bba86d"}