UNPKG

computed-types

Version:

Runtime validation types for TypeScript.

75 lines (55 loc) 10.9 kB
"use strict"; exports.__esModule = true; exports.default = exports.NumberValidator = void 0; var _Validator = _interopRequireDefault(require("./Validator")); var _string = require("./string"); var _validations = require("./schema/validations"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } class NumberValidator extends _Validator.default { constructor(...args) { super(...args); this.gte = this.min; this.lte = this.max; } float(error) { return this.test(val => !isNaN(val) && Number.isFinite(val), error || `Expect value to be a number`); } integer(error) { return this.test(val => Number.isInteger(val), error || `Expect value to be an integer`); } toExponential(...args) { return this.transform(val => val.toExponential(...args), _string.StringValidator); } toFixed(...args) { return this.transform(val => val.toFixed(...args), _string.StringValidator); } toLocaleString(...args) { return this.transform(val => val.toLocaleString(...args), _string.StringValidator); } toPrecision(...args) { return this.transform(val => val.toPrecision(...args), _string.StringValidator); } toString(...args) { return this.transform(val => val.toString(...args), _string.StringValidator); } min(min, error) { return this.test(val => val >= min, error || (val => new RangeError(`Expect value to be greater or equal than ${min} (actual: ${val})`))); } max(max, error) { return this.test(val => val <= max, error || (val => new RangeError(`Expect value to be lower or equal than ${max} (actual: ${val})`))); } gt(boundary, error) { return this.test(val => val > boundary, error || (val => new RangeError(`Expect value to be greater than ${boundary} (actual: ${val})`))); } lt(boundary, error) { return this.test(val => val < boundary, error || (val => new RangeError(`Expect value to be lower than ${boundary} (actual: ${val})`))); } between(min, max, error) { return this.test(val => val >= min && val <= max, error || (val => new RangeError(`Expect value to be between ${min} and ${max} (actual: ${val})`))); } } exports.NumberValidator = NumberValidator; const number = new NumberValidator((0, _validations.type)('number')).proxy(); var _default = number; exports.default = _default; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9udW1iZXIudHMiXSwibmFtZXMiOlsiTnVtYmVyVmFsaWRhdG9yIiwiVmFsaWRhdG9yIiwiZ3RlIiwibWluIiwibHRlIiwibWF4IiwiZmxvYXQiLCJlcnJvciIsInRlc3QiLCJ2YWwiLCJpc05hTiIsIk51bWJlciIsImlzRmluaXRlIiwiaW50ZWdlciIsImlzSW50ZWdlciIsInRvRXhwb25lbnRpYWwiLCJhcmdzIiwidHJhbnNmb3JtIiwiU3RyaW5nVmFsaWRhdG9yIiwidG9GaXhlZCIsInRvTG9jYWxlU3RyaW5nIiwidG9QcmVjaXNpb24iLCJ0b1N0cmluZyIsIlJhbmdlRXJyb3IiLCJndCIsImJvdW5kYXJ5IiwibHQiLCJiZXR3ZWVuIiwibnVtYmVyIiwicHJveHkiXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7O0FBQ0E7O0FBR0E7Ozs7QUFFTyxNQUFNQSxlQUFOLFNBRUdDLGtCQUZILENBRXNDO0FBQUE7QUFBQTtBQUFBLFNBc0VwQ0MsR0F0RW9DLEdBc0U5QixLQUFLQyxHQXRFeUI7QUFBQSxTQXVFcENDLEdBdkVvQyxHQXVFOUIsS0FBS0MsR0F2RXlCO0FBQUE7O0FBQ3BDQyxFQUFBQSxLQUFLLENBQUNDLEtBQUQsRUFBb0Q7QUFDOUQsV0FBTyxLQUFLQyxJQUFMLENBQ0pDLEdBQUQsSUFBUyxDQUFDQyxLQUFLLENBQUNELEdBQUQsQ0FBTixJQUFlRSxNQUFNLENBQUNDLFFBQVAsQ0FBZ0JILEdBQWhCLENBRG5CLEVBRUxGLEtBQUssSUFBSyw2QkFGTCxDQUFQO0FBSUQ7O0FBRU1NLEVBQUFBLE9BQU8sQ0FBQ04sS0FBRCxFQUFvRDtBQUNoRSxXQUFPLEtBQUtDLElBQUwsQ0FDSkMsR0FBRCxJQUFTRSxNQUFNLENBQUNHLFNBQVAsQ0FBaUJMLEdBQWpCLENBREosRUFFTEYsS0FBSyxJQUFLLCtCQUZMLENBQVA7QUFJRDs7QUFFTVEsRUFBQUEsYUFBYSxDQUNsQixHQUFHQyxJQURlLEVBRWtCO0FBQ3BDLFdBQU8sS0FBS0MsU0FBTCxDQUFn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YWxpZGF0b3IsIHsgVmFsaWRhdG9yUHJveHkgfSBmcm9tICcuL1ZhbGlkYXRvcic7XG5pbXBvcnQgeyBTdHJpbmdWYWxpZGF0b3IgfSBmcm9tICcuL3N0cmluZyc7XG5pbXBvcnQgeyBFcnJvckxpa2UgfSBmcm9tICcuL3NjaGVtYS9lcnJvcnMnO1xuaW1wb3J0IEZ1bmN0aW9uVHlwZSwgeyBGdW5jdGlvblBhcmFtZXRlcnMgfSBmcm9tICcuL3NjaGVtYS9GdW5jdGlvblR5cGUnO1xuaW1wb3J0IHsgdHlwZSB9IGZyb20gJy4vc2NoZW1hL3ZhbGlkYXRpb25zJztcblxuZXhwb3J0IGNsYXNzIE51bWJlclZhbGlkYXRvcjxcbiAgUCBleHRlbmRzIEZ1bmN0aW9uUGFyYW1ldGVycyA9IFtudW1iZXJdLFxuPiBleHRlbmRzIFZhbGlkYXRvcjxGdW5jdGlvblR5cGU8bnVtYmVyLCBQPj4ge1xuICBwdWJsaWMgZmxvYXQoZXJyb3I/OiBFcnJvckxpa2U8W251bWJlcl0+KTogVmFsaWRhdG9yUHJveHk8dGhpcz4ge1xuICAgIHJldHVybiB0aGlzLnRlc3QoXG4gICAgICAodmFsKSA9PiAhaXNOYU4odmFsKSAmJiBOdW1iZXIuaXNGaW5pdGUodmFsKSxcbiAgICAgIGVycm9yIHx8IGBFeHBlY3QgdmFsdWUgdG8gYmUgYSBudW1iZXJgLFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgaW50ZWdlcihlcnJvcj86IEVycm9yTGlrZTxbbnVtYmVyXT4pOiBWYWxpZGF0b3JQcm94eTx0aGlzPiB7XG4gICAgcmV0dXJuIHRoaXMudGVzdChcbiAgICAgICh2YWwpID0+IE51bWJlci5pc0ludGVnZXIodmFsKSxcbiAgICAgIGVycm9yIHx8IGBFeHBlY3QgdmFsdWUgdG8gYmUgYW4gaW50ZWdlcmAsXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyB0b0V4cG9uZW50aWFsKFxuICAgIC4uLmFyZ3M6IFBhcmFtZXRlcnM8bnVtYmVyWyd0b0V4cG9uZW50aWFsJ10+XG4gICk6IFZhbGlkYXRvclByb3h5PFN0cmluZ1ZhbGlkYXRvcjxQPj4ge1xuICAgIHJldHVybiB0aGlzLnRyYW5zZm9ybSgodmFsKSA9PiB2YWwudG9FeHBvbmVudGlhbCguLi5hcmdzKSwgU3RyaW5nVmFsaWRhdG9yKTtcbiAgfVxuXG4gIHB1YmxpYyB0b0ZpeGVkKFxuICAgIC4uLmFyZ3M6IFBhcmFtZXRlcnM8bnVtYmVyWyd0b0ZpeGVkJ10+XG4gICk6IFZhbGlkYXRvclByb3h5PFN0cmluZ1ZhbGlkYXRvcjxQPj4ge1xuICAgIHJldHVybiB0aGlzLnRyYW5zZm9ybSgodmFsKSA9PiB2YWwudG9GaXhlZCguLi5hcmdzKSwgU3RyaW5nVmFsaWRhdG9yKTtcbiAgfVxuXG4gIHB1YmxpYyB0b0xvY2FsZVN0cmluZyhcbiAgICAuLi5hcmdzOiBQYXJhbWV0ZXJzPG51bWJlclsndG9Mb2NhbGVTdHJpbmcnXT5cbiAgKTogVmFsaWRhdG9yUHJveHk8U3RyaW5nVmFsaWRhdG9yPFA+PiB7XG4gICAgcmV0dXJuIHRoaXMudHJhbnNmb3JtKFxuICAgICAgKHZhbCkgPT4gdmFsLnRvTG9jYWxlU3RyaW5nKC4uLmFyZ3MpLFxuICAgICAgU3RyaW5nVmFsaWRhdG9yLFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgdG9QcmVjaXNpb24oXG4gICAgLi4uYXJnczogUGFyYW1ldGVyczxudW1iZXJbJ3RvUHJlY2lzaW9uJ10+XG4gICk6IFZhbGlkYXRvclByb3h5PFN0cmluZ1ZhbGlkYXRvcjxQPj4ge1xuICAgIHJldHVybiB0aGlzLnRyYW5zZm9ybSgodmFsKSA9PiB2YWwudG9QcmVjaXNpb24oLi4uYXJncyksIFN0cmluZ1ZhbGlkYXRvcik7XG4gIH1cblxuICBwdWJsaWMgdG9TdHJpbmcoXG4gICAgLi4uYXJnczogUGFyYW1ldGVyczxudW1iZXJbJ3RvU3RyaW5nJ10+XG4gICk6IFZhbGlkYXRvclByb3h5PFN0cmluZ1ZhbGlkYXRvcjxQPj4ge1xuICAgIHJldHVybiB0aGlzLnRyYW5zZm9ybSgodmFsKSA9PiB2YWwudG9TdHJpbmcoLi4uYXJncyksIFN0cmluZ1ZhbGlkYXRvcik7XG4gIH1cblxuICBwdWJsaWMgbWluKG1pbjogbnVtYmVyLCBlcnJvcj86IEVycm9yTGlrZTxbbnVtYmVyXT4pOiBWYWxpZGF0b3JQcm94eTx0aGlzPiB7XG4gICAgcmV0dXJuIHRoaXMudGVzdChcbiAgICAgICh2YWwpID0+IHZhbCA+PSBtaW4sXG4gICAgICBlcnJvciB8fFxuICAgICAgICAoKHZhbDogbnVtYmVyKTogUmFuZ2VFcnJvciA9PlxuICAgICAgICAgIG5ldyBSYW5nZUVycm9yKFxuICAgICAgICAgICAgYEV4cGVjdCB2YWx1ZSB0byBiZSBncmVhdGVyIG9yIGVxdWFsIHRoYW4gJHttaW59IChhY3R1YWw6ICR7dmFsfSlgLFxuICAgICAgICAgICkpLFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgbWF4KG1heDogbnVtYmVyLCBlcnJvcj86IEVycm9yTGlrZTxbbnVtYmVyXT4pOiBWYWxpZGF0b3JQcm94eTx0aGlzPiB7XG4gICAgcmV0dXJuIHRoaXMudGVzdChcbiAgICAgICh2YWwpID0+IHZhbCA8PSBtYXgsXG4gICAgICBlcnJvciB8fFxuICAgICAgICAoKHZhbDogbnVtYmVyKTogUmFuZ2VFcnJvciA9PlxuICAgICAgICAgIG5ldyBSYW5nZUVycm9yKFxuICAgICAgICAgICAgYEV4cGVjdCB2YWx1ZSB0byBiZSBsb3dlciBvciBlcXVhbCB0aGFuICR7bWF4fSAoYWN0dWFsOiAke3ZhbH0pYCxcbiAgICAgICAgICApKSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGd0ZSA9IHRoaXMubWluO1xuICBwdWJsaWMgbHRlID0gdGhpcy5tYXg7XG5cbiAgcHVibGljIGd0KFxuICAgIGJvdW5kYXJ5OiBudW1iZXIsXG4gICAgZXJyb3I/OiBFcnJvckxpa2U8W251bWJlcl0+LFxuICApOiBWYWxpZGF0b3JQcm94eTx0aGlzPiB7XG4gICAgcmV0dXJuIHRoaXMudGVzdChcbiAgICAgICh2YWwpID0+IHZhbCA+IGJvdW5kYXJ5LFxuICAgICAgZXJyb3IgfHxcbiAgICAgICAgKCh2YWw6IG51bWJlcik6IFJhbmdlRXJyb3IgPT5cbiAgICAgICAgICBuZXcgUmFuZ2VFcnJvcihcbiAgICAgICAgICAgIGBFeHBlY3QgdmFsdWUgdG8gYmUgZ3JlYXRlciB0aGFuICR7Ym91bmRhcnl9IChhY3R1YWw6ICR7dmFsfSlgLFxuICAgICAgICAgICkpLFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgbHQoXG4gICAgYm91bmRhcnk6IG51bWJlcixcbiAgICBlcnJvcj86IEVycm9yTGlrZTxbbnVtYmVyXT4sXG4gICk6IFZhbGlkYXRvclByb3h5PHRoaXM+IHtcbiAgICByZXR1cm4gdGhpcy50ZXN0KFxuICAgICAgKHZhbCkgPT4gdmFsIDwgYm91bmRhcnksXG4gICAgICBlcnJvciB8fFxuICAgICAgICAoKHZhbDogbnVtYmVyKTogUmFuZ2VFcnJvciA9PlxuICAgICAgICAgIG5ldyBSYW5nZUVycm9yKFxuICAgICAgICAgICAgYEV4cGVjdCB2YWx1ZSB0byBiZSBsb3dlciB0aGFuICR7Ym91bmRhcnl9IChhY3R1YWw6ICR7dmFsfSlgLFxuICAgICAgICAgICkpLFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgYmV0d2VlbihcbiAgICBtaW46IG51bWJlcixcbiAgICBtYXg6IG51bWJlcixcbiAgICBlcnJvcj86IEVycm9yTGlrZTxbbnVtYmVyXT4sXG4gICk6IFZhbGlkYXRvclByb3h5PHRoaXM+IHtcbiAgICByZXR1cm4gdGhpcy50ZXN0KFxuICAgICAgKHZhbCkgPT4gdmFsID49IG1pbiAmJiB2YWwgPD0gbWF4LFxuICAgICAgZXJyb3IgfHxcbiAgICAgICAgKCh2YWw6IG51bWJlcik6IFJhbmdlRXJyb3IgPT5cbiAgICAgICAgICBuZXcgUmFuZ2VFcnJvcihcbiAgICAgICAgICAgIGBFeHBlY3QgdmFsdWUgdG8gYmUgYmV0d2VlbiAke21pbn0gYW5kICR7bWF4fSAoYWN0dWFsOiAke3ZhbH0pYCxcbiAgICAgICAgICApKSxcbiAgICApO1xuICB9XG59XG5cbmNvbnN0IG51bWJlciA9IG5ldyBOdW1iZXJWYWxpZGF0b3IodHlwZSgnbnVtYmVyJykpLnByb3h5KCk7XG5cbmV4cG9ydCBkZWZhdWx0IG51bWJlcjtcbiJdfQ==