UNPKG

validata

Version:

Type safe data validation and sanitization

47 lines 2.02 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.maybeAsNumber = exports.asNumber = exports.maybeNumber = exports.isNumber = exports.empty = void 0; const common_1 = require("./common"); const types_1 = require("./types"); const empty = (value) => { return value === '' || value === null || value === undefined || typeof value === 'number' && Number.isNaN(value); }; exports.empty = empty; const check = (value) => { return typeof value === 'number' && !Number.isNaN(value); }; const convert = (value) => { if (Array.isArray(value)) return undefined; const converted = Number(value); if (!Number.isNaN(converted)) return converted; return undefined; }; const coerce = (options) => (next) => (value, path) => { if (!options) return next(value, path); let coerced = value; if (options.coerceMin !== undefined && coerced < options.coerceMin) { coerced = options.coerceMin; } if (options.coerceMax !== undefined && coerced > options.coerceMax) { coerced = options.coerceMax; } return next(coerced, path); }; const validate = (value, path, options) => { const result = (0, common_1.basicValidation)(value, path, options); if (options.min !== undefined && value < options.min) { result.issues.push(types_1.Issue.forPath(path, value, 'min', { min: options.min })); } if (options.max !== undefined && value > options.max) { result.issues.push(types_1.Issue.forPath(path, value, 'max', { max: options.max })); } return result; }; exports.isNumber = (0, common_1.createIsCheck)('number', check, coerce, validate); exports.maybeNumber = (0, common_1.createMaybeCheck)('number', check, coerce, validate, exports.empty); exports.asNumber = (0, common_1.createAsCheck)('number', check, convert, coerce, validate); exports.maybeAsNumber = (0, common_1.createMaybeAsCheck)('number', check, convert, coerce, validate, exports.empty); //# sourceMappingURL=number.js.map