UNPKG

nope-validator

Version:
115 lines (110 loc) 3.68 kB
define(['exports', './NopeReference'], (function (exports, NopeReference) { 'use strict'; function resolvePathFromContext(path, context) { var optionWithPath = path.split('../'); var depth = optionWithPath.length - 1; var key = optionWithPath[optionWithPath.length - 1]; var ctx = context; for (var i = 0; i < depth; i++) { ctx = ctx === null || ctx === void 0 ? void 0 : ctx.___parent; } if (ctx && key !== undefined && key !== null) { return ctx[key]; } return key; } function resolveNopeRefsFromKeys(options, context) { var resolvedOptions = options.map(function (option) { return resolvePathFromContext(option, context); }); return resolvedOptions; } function resolveNopeRef(option, context) { if (option instanceof NopeReference.NopeReference) { return resolvePathFromContext(option.key, context); } return option; } function deepEquals(a, b) { if (typeof a == 'object' && a != null && typeof b == 'object' && b != null) { if (a === b) { return true; } var aCount = 0; var bCount = 0; // eslint-disable-next-line @typescript-eslint/no-unused-vars for (var _ in a) { aCount++; } // eslint-disable-next-line @typescript-eslint/no-unused-vars for (var _ in b) { bCount++; } if (aCount - bCount !== 0) { return false; } for (var key in a) { if (!(key in b) || !deepEquals(a[key], b[key])) { return false; } } for (var key in b) { if (!(key in a) || !deepEquals(b[key], a[key])) { return false; } } return true; } return a === b; } function pathToArray(path) { return path.split(/[,[\].]/g).filter(Boolean); } function getFromPath(path, entry, dropLast) { if (dropLast === void 0) { dropLast = false; } if (!path) { return undefined; } var pathArray = pathToArray(path); pathArray = dropLast ? pathArray.slice(0, -1) : pathArray; var value = entry; for (var _i = 0, pathArray_1 = pathArray; _i < pathArray_1.length; _i++) { var key = pathArray_1[_i]; value = value[key]; } return value; } function runValidators(tasks, entry, context) { var done = false; return tasks.reduce(function (previous, next) { if (done) { return previous; } return previous .then(function (error) { if (error) { done = true; return error; } return next(entry, context); })["catch"](function (error) { if (error) { done = true; return error; } return next(entry, context); }); }, Promise.resolve()); } function isNil(entry) { return !!(entry === undefined || entry === null); } exports.deepEquals = deepEquals; exports.getFromPath = getFromPath; exports.isNil = isNil; exports.pathToArray = pathToArray; exports.resolveNopeRef = resolveNopeRef; exports.resolveNopeRefsFromKeys = resolveNopeRefsFromKeys; exports.runValidators = runValidators; Object.defineProperty(exports, '__esModule', { value: true }); })); //# sourceMappingURL=utils.js.map