UNPKG

@quenk/preconditions

Version:
61 lines 2.02 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.toNumber = exports.isNumber = exports.max = exports.min = exports.range = exports.lt = exports.gt = void 0; const result_1 = require("./result"); /** * gt test. */ const gt = (target) => (value) => value > target ? (0, result_1.succeed)(value) : (0, result_1.fail)('gt', value, { target, value }); exports.gt = gt; /** * lt test. */ const lt = (target) => (value) => value < target ? (0, result_1.succeed)(value) : (0, result_1.fail)('lt', value, { target, value }); exports.lt = lt; /** * range tests whether a number falls within a specified range. */ const range = (min, max) => (value) => value < min ? (0, result_1.fail)('range.min', value, { min, max }) : value > max ? (0, result_1.fail)('range.max', value, { min, max }) : (0, result_1.succeed)(value); exports.range = range; /** * min tests whether a value is more than or equal to the desired target. */ const min = (target) => value => value >= target ? (0, result_1.succeed)(value) : (0, result_1.fail)('min', value, { target, value }); exports.min = min; /** * max tests whether a value is less than or equal to the desired target. */ const max = (target) => value => value <= target ? (0, result_1.succeed)(value) : (0, result_1.fail)('max', value, { target, value }); exports.max = max; /** * isNumber tests if a value is a number. */ const isNumber = (n) => typeof n === 'number' && !isNaN(n) ? (0, result_1.succeed)(n) : (0, result_1.fail)('isNumber', n); exports.isNumber = isNumber; /** * toNumber casts a string to a number. */ const toNumber = (value) => { if (value === null) return (0, result_1.succeed)(0); else if (Array.isArray(value)) return (0, result_1.fail)('NaN', value, {}); let n = Number(value); return isNaN(n) ? (0, result_1.fail)('NaN', value, {}) : (0, result_1.succeed)(n); }; exports.toNumber = toNumber; //# sourceMappingURL=number.js.map