UNPKG

castage

Version:

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

26 lines (25 loc) 937 B
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.oneOf = void 0; const engine_js_1 = require("./engine.js"); const casting_error_js_1 = require("./casting-error.js"); const types_js_1 = require("./types.js"); const oneOf = (...casters) => { const name = `(${casters.map((c) => c.name).join(' | ')})`; return (0, engine_js_1.fromGuardAndTransform)((value) => true, (value, path) => { const errors = []; for (let i = 0; i < casters.length; i += 1) { const caster = casters[i]; const result = caster(value, path); if (result.isOk) return result; errors.push(result.unwrapErr()); } return (0, casting_error_js_1.castErr)(types_js_1.ERR_INVALID_VALUE_TYPE, path, { expected: name, received: value, causes: errors, }); }, name); }; exports.oneOf = oneOf;