UNPKG

castage

Version:

A type-safe library for dynamic object casting and ensuring type consistency in JavaScript/TypeScript.

45 lines (44 loc) 2.25 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.possibleText = exports.possibleTextBool = exports.possibleTextNumber = exports.possibleTextInt = exports.text = exports.textBool = exports.textNumber = exports.textInt = void 0; const resultage_1 = require("resultage"); const engine_js_1 = require("./engine.js"); const casting_error_js_1 = require("./casting-error.js"); const types_js_1 = require("./types.js"); const predicates_js_1 = require("./predicates.js"); const primitives_js_1 = require("./primitives.js"); const oneOf_js_1 = require("./oneOf.js"); const values_js_1 = require("./values.js"); exports.textInt = (0, engine_js_1.fromGuardAndTransform)((value) => (0, predicates_js_1.isString)(value) && /^-?\d+$/.test(value), (value, path) => { const result = +value; return Number.isInteger(result) ? (0, resultage_1.ok)(result) : (0, casting_error_js_1.castErr)(types_js_1.ERR_INVALID_VALUE, path, { expected: 'text::int', received: value, }); }, 'text::int'); exports.textNumber = (0, engine_js_1.fromGuardAndTransform)((value) => (0, predicates_js_1.isString)(value) && value.trim() !== '' && !Number.isNaN(+value), (value, path) => { const result = +value; return Number.isNaN(result) ? (0, casting_error_js_1.castErr)(types_js_1.ERR_INVALID_VALUE, path, { expected: 'text::number', received: value, }) : (0, resultage_1.ok)(result); }, 'text::number'); const boolValues = (0, values_js_1.values)('true', 'false'); exports.textBool = (0, engine_js_1.fromGuardAndTransform)((0, engine_js_1.is)(boolValues), (value) => (0, resultage_1.ok)(value === 'true'), 'text::boolean'); exports.text = { int: exports.textInt, number: exports.textNumber, bool: exports.textBool, }; exports.possibleTextInt = (0, oneOf_js_1.oneOf)(primitives_js_1.int, exports.textInt); exports.possibleTextNumber = (0, oneOf_js_1.oneOf)(primitives_js_1.number, exports.textNumber); exports.possibleTextBool = (0, oneOf_js_1.oneOf)(primitives_js_1.boolean, exports.textBool); exports.possibleText = { int: exports.possibleTextInt, number: exports.possibleTextNumber, bool: exports.possibleTextBool, };