UNPKG

computed-types

Version:

Runtime validation types for TypeScript.

59 lines (43 loc) 7.87 kB
"use strict"; exports.__esModule = true; exports.default = exports.ArrayValidator = void 0; var _Validator = _interopRequireDefault(require("./Validator")); var _validations = require("./schema/validations"); var _compiler = _interopRequireDefault(require("./schema/compiler")); var _utils = require("./schema/utils"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } class ArrayValidator extends _Validator.default { of(schema, error) { const validator = (0, _compiler.default)(schema, { error }); return this.transform(arr => { let isAsync; const items = arr.map(item => { const ret = validator(...[item]); if ((0, _utils.isPromiseLike)(ret)) { isAsync = true; } return ret; }); if (!isAsync) { return items; } return Promise.all(items); }); } min(length, error) { return this.test(arr => arr.length >= length, error || (arr => `Expect array to be minimum of ${length} items (actual: ${arr.length})`)); } max(length, error) { return this.test(arr => arr.length <= length, error || (arr => `Expect array to be maximum of ${length} items (actual: ${arr.length})`)); } between(minLength, maxLength, error) { return this.test(arr => arr.length >= minLength && arr.length <= maxLength, error || (arr => `Expect array to be between ${minLength} and ${maxLength} items (actual: ${arr.length})`)); } } exports.ArrayValidator = ArrayValidator; const array = new ArrayValidator((0, _validations.array)()).proxy(); var _default = array; exports.default = _default; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9hcnJheS50cyJdLCJuYW1lcyI6WyJBcnJheVZhbGlkYXRvciIsIlZhbGlkYXRvciIsIm9mIiwic2NoZW1hIiwiZXJyb3IiLCJ2YWxpZGF0b3IiLCJ0cmFuc2Zvcm0iLCJhcnIiLCJpc0FzeW5jIiwiaXRlbXMiLCJtYXAiLCJpdGVtIiwicmV0IiwiUHJvbWlzZSIsImFsbCIsIm1pbiIsImxlbmd0aCIsInRlc3QiLCJtYXgiLCJiZXR3ZWVuIiwibWluTGVuZ3RoIiwibWF4TGVuZ3RoIiwiYXJyYXkiLCJwcm94eSJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTs7QUFFQTs7QUFPQTs7QUFDQTs7OztBQUVPLE1BQU1BLGNBQU4sU0FHR0Msa0JBSEgsQ0FHaUM7QUFDL0JDLEVBQUFBLEVBQUUsQ0FDUEMsTUFETyxFQUVQQyxLQUZPLEVBS1A7QUFDQSxVQUFNQyxTQUFTLEdBQUcsdUJBQVNGLE1BQVQsRUFBaUI7QUFBRUMsTUFBQUE7QUFBRixLQUFqQixDQUFsQjtBQUVBLFdBQU8sS0FBS0UsU0FBTCxDQUVIQyxHQURGLElBRW1FO0FBQ2pFLFVBQUlDLE9BQUo7QUFDQSxZQUFNQyxLQUFLLEdBQUdGLEdBQUcsQ0FBQ0csR0FBSixDQUNYQyxJQUFELElBQW9FO0FBQ2xFLGNBQU1DLEdBQUcsR0FBR1AsU0FBUyxDQUFDLEdBQUksQ0FBQ00sSUFBRCxDQUFMLENBQXJCOztBQUNBLFlBQUksMEJBQWNDLEdBQWQsQ0FBSixFQUF3QjtBQUN0QkosVUFBQUEsT0FBTyxHQUFHLElBQVY7QUFDRDs7QUFFRCxlQUFPSSxHQUFQO0FBQ0QsT0FSVyxDQUFkOztBQVdBLFVBQUksQ0FBQ0osT0FBTCxFQUFjO0FBQ1osZUFBT0MsS0FBUDtBQUNEOztBQUVELGFBQU9JLE9BQU8sQ0FBQ0MsR0FBUixDQUFZTCxLQUFaLENBQVA7QUFDRCxLQXJCSSxDQUFQO0FBeUJEOztBQUVNTSxFQUFBQSxHQUFHLENBQ1JDLE1BRFEsRUFFUlosS0FGUSxFQUdjO0FBQ3RCLFdBQU8sS0FBS2EsSUFBTCxDQUNKVixHQUFELElBQVNBLEdBQUcsQ0FBQ1MsTUFBSixJQUFjQSxNQURsQixFQUVMWixLQUFLLEtBQ0RHLEdBQUQsSUFDRSxpQ0FBZ0NTLE1BQU8sbUJBQWtCVCxHQUFHLENBQUNTLE1BQU8sR0FGcEUsQ0FGQSxDQUFQO0FBTUQ7O0FBRU1FLEVBQUFBLEdBQUcsQ0FDUkYsTUFEUSxFQUVSWixLQUZRLEVBR2M7QUFDdEIsV0FBTyxLQUFLYSxJQUFMLENBQ0pWLEdBQUQsSUFBU0EsR0FBRyxDQUFDUyxNQUFKLElBQWNBLE1BRGxCLEVBRUxaLEtBQUssS0FDREcsR0FBRCxJQUNFLGlDQUFnQ1MsTUFBTyxtQkFBa0JULEdBQUcsQ0FBQ1MsTUFBTyxHQUZwRSxDQUZBLENBQVA7QUFNRDs7QUFFTUcsRUFBQUEsT0FBTyxDQUNaQyxTQURZLEVBRVpDLFNBRlksRUFHWmpCLEtBSFksRUFJVTtBQUN0QixXQUFPLEtBQUthLElBQUwsQ0FDSlYsR0FBRCxJQUFTQSxHQUFHLENBQUNTLE1BQUosSUFBY0ksU0FBZCxJQUEyQmIsR0FBRyxDQUFDUyxNQUFKLElBQWNLLFNBRDdDLEVBRUxqQixLQUFLLEtBQ0RHLEdBQUQsSUFDRSw4QkFBNkJhLFNBQVUsUUFBT0MsU0FBVSxtQkFBa0JkLEdBQUcsQ0FBQ1MsTUFBTyxHQUZyRixDQUZBLENBQVA7QUFNRDs7QUF2RXFDOzs7QUEwRXhDLE1BQU1NLEtBQUssR0FBRyxJQUFJdEIsY0FBSixDQUFtQix5QkFBbkIsRUFBcUN1QixLQUFyQyxFQUFkO2VBWWVELEsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgVmFsaWRhdG9yLCB7IFZhbGlkYXRvclByb3h5IH0gZnJvbSAnLi9WYWxpZGF0b3InO1xuaW1wb3J0IEZ1bmN0aW9uVHlwZSwgeyBGdW5jdGlvblBhcmFtZXRlcnMgfSBmcm9tICcuL3NjaGVtYS9GdW5jdGlvblR5cGUnO1xuaW1wb3J0IHsgYXJyYXkgYXMgYXJyYXlWYWxpZGF0b3IgfSBmcm9tICcuL3NjaGVtYS92YWxpZGF0aW9ucyc7XG5pbXBvcnQgeyBFcnJvckxpa2UgfSBmcm9tICcuL3NjaGVtYS9lcnJvcnMnO1xuaW1wb3J0IHtcbiAgU2NoZW1hUGFyYW1ldGVycyxcbiAgU2NoZW1hUmVzb2x2ZVR5cGUsXG4gIFNjaGVtYVJldHVyblR5cGUsXG59IGZyb20gJy4vc2NoZW1hL2lvJztcbmltcG9ydCBjb21waWxlciBmcm9tICcuL3NjaGVtYS9jb21waWxlcic7XG5pbXBvcnQgeyBpc1Byb21pc2VMaWtlLCBSZXNvbHZlZFZhbHVlIH0gZnJvbSAnLi9zY2hlbWEvdXRpbHMnO1xuXG5leHBvcnQgY2xhc3MgQXJyYXlWYWxpZGF0b3I8XG4gIFIgZXh0ZW5kcyB1bmtub3duW10gfCBQcm9taXNlTGlrZTx1bmtub3duW10+ID0gdW5rbm93bltdLFxuICBQIGV4dGVuZHMgRnVuY3Rpb25QYXJhbWV0ZXJzID0gW1JdLFxuPiBleHRlbmRzIFZhbGlkYXRvcjxGdW5jdGlvblR5cGU8UiwgUD4+IHtcbiAgcHVibGljIG9mPFM+KFxuICAgIHNjaGVtYTogUyxcbiAgICBlcnJvcj86IEVycm9yTGlrZTxTY2hlbWFQYXJhbWV0ZXJzPFM+PixcbiAgKTogVmFsaWRhdG9yUHJveHk8XG4gICAgQXJyYXlWYWxpZGF0b3I8U2NoZW1hUmV0dXJuVHlwZTxTLCBTY2hlbWFSZXNvbHZlVHlwZTxTPltdPiwgUD5cbiAgPiB7XG4gICAgY29uc3QgdmFsaWRhdG9yID0gY29tcGlsZXIoc2NoZW1hLCB7IGVycm9yIH0pO1xuXG4gICAgcmV0dXJuIHRoaXMudHJhbnNmb3JtKFxuICAgICAgKFxuICAgICAgICBhcnI6IFJlc29sdmVkVmFsdWU8Uj4sXG4gICAgICApOiBQcm9taXNlTGlrZTxTY2hlbWFSZXNvbHZlVHlwZTxTPltdPiB8IFNjaGVtYVJlc29sdmVUeXBlPFM+W10gPT4ge1xuICAgICAgICBsZXQgaXNBc3luYztcbiAgICAgICAgY29uc3QgaXRlbXMgPSBhcnIubWFwKFxuICAgICAgICAgIChpdGVtKTogU2NoZW1hUmVzb2x2ZVR5cGU8Uz4gfCBQcm9taXNlTGlrZTxTY2hlbWFSZXNvbHZlVHlwZTxTPj4gPT4ge1xuICAgICAgICAgICAgY29uc3QgcmV0ID0gdmFsaWRhdG9yKC4uLihbaXRlbV0gYXMgU2NoZW1hUGFyYW1ldGVyczxTPikpO1xuICAgICAgICAgICAgaWYgKGlzUHJvbWlzZUxpa2UocmV0KSkge1xuICAgICAgICAgICAgICBpc0FzeW5jID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHJldDtcbiAgICAgICAgICB9LFxuICAgICAgICApO1xuXG4gICAgICAgIGlmICghaXNBc3luYykge1xuICAgICAgICAgIHJldHVybiBpdGVtcyBhcyBTY2hlbWFSZXNvbHZlVHlwZTxTPltdO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKGl0ZW1zKTtcbiAgICAgIH0sXG4gICAgKSBhcyB1bmtub3duIGFzIFZhbGlkYXRvclByb3h5PFxuICAgICAgQXJyYXlWYWxpZGF0b3I8U2NoZW1hUmV0dXJuVHlwZTxTLCBTY2hlbWFSZXNvbHZlVHlwZTxTPltdPiwgUD5cbiAgICA+O1xuICB9XG5cbiAgcHVibGljIG1pbihcbiAgICBsZW5ndGg6IG51bWJlcixcbiAgICBlcnJvcj86IEVycm9yTGlrZTxbUmVzb2x2ZWRWYWx1ZTxSPl0+LFxuICApOiBWYWxpZGF0b3JQcm94eTx0aGlzPiB7XG4gICAgcmV0dXJuIHRoaXMudGVzdChcbiAgICAgIChhcnIpID0+IGFyci5sZW5ndGggPj0gbGVuZ3RoLFxuICAgICAgZXJyb3IgfHxcbiAgICAgICAgKChhcnI6IFJlc29sdmVkVmFsdWU8Uj4pOiBzdHJpbmcgPT5cbiAgICAgICAgICBgRXhwZWN0IGFycmF5IHRvIGJlIG1pbmltdW0gb2YgJHtsZW5ndGh9IGl0ZW1zIChhY3R1YWw6ICR7YXJyLmxlbmd0aH0pYCksXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBtYXgoXG4gICAgbGVuZ3RoOiBudW1iZXIsXG4gICAgZXJyb3I/OiBFcnJvckxpa2U8W1Jlc29sdmVkVmFsdWU8Uj5dPixcbiAgKTogVmFsaWRhdG9yUHJveHk8dGhpcz4ge1xuICAgIHJldHVybiB0aGlzLnRlc3QoXG4gICAgICAoYXJyKSA9PiBhcnIubGVuZ3RoIDw9IGxlbmd0aCxcbiAgICAgIGVycm9yIHx8XG4gICAgICAgICgoYXJyOiBSZXNvbHZlZFZhbHVlPFI+KTogc3RyaW5nID0+XG4gICAgICAgICAgYEV4cGVjdCBhcnJheSB0byBiZSBtYXhpbXVtIG9mICR7bGVuZ3RofSBpdGVtcyAoYWN0dWFsOiAke2Fyci5sZW5ndGh9KWApLFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgYmV0d2VlbihcbiAgICBtaW5MZW5ndGg6IG51bWJlcixcbiAgICBtYXhMZW5ndGg6IG51bWJlcixcbiAgICBlcnJvcj86IEVycm9yTGlrZTxbUmVzb2x2ZWRWYWx1ZTxSPl0+LFxuICApOiBWYWxpZGF0b3JQcm94eTx0aGlzPiB7XG4gICAgcmV0dXJuIHRoaXMudGVzdChcbiAgICAgIChhcnIpID0+IGFyci5sZW5ndGggPj0gbWluTGVuZ3RoICYmIGFyci5sZW5ndGggPD0gbWF4TGVuZ3RoLFxuICAgICAgZXJyb3IgfHxcbiAgICAgICAgKChhcnI6IFJlc29sdmVkVmFsdWU8Uj4pOiBzdHJpbmcgPT5cbiAgICAgICAgICBgRXhwZWN0IGFycmF5IHRvIGJlIGJldHdlZW4gJHttaW5MZW5ndGh9IGFuZCAke21heExlbmd0aH0gaXRlbXMgKGFjdHVhbDogJHthcnIubGVuZ3RofSlgKSxcbiAgICApO1xuICB9XG59XG5cbmNvbnN0IGFycmF5ID0gbmV3IEFycmF5VmFsaWRhdG9yKGFycmF5VmFsaWRhdG9yKCkpLnByb3h5KCkgYXMge1xuICBvZjxTPihcbiAgICBzY2hlbWE6IFMsXG4gICAgZXJyb3I/OiBFcnJvckxpa2U8U2NoZW1hUGFyYW1ldGVyczxTPj4sXG4gICk6IFZhbGlkYXRvclByb3h5PFxuICAgIEFycmF5VmFsaWRhdG9yPFxuICAgICAgU2NoZW1hUmV0dXJuVHlwZTxTLCBTY2hlbWFSZXNvbHZlVHlwZTxTPltdPixcbiAgICAgIFtTY2hlbWFQYXJhbWV0ZXJzPFM+WzBdW11dXG4gICAgPlxuICA+O1xufSAmIFZhbGlkYXRvclByb3h5PEFycmF5VmFsaWRhdG9yPjtcblxuZXhwb3J0IGRlZmF1bHQgYXJyYXk7XG4iXX0=