castage
Version:
A type-safe library for dynamic object casting and ensuring type consistency in JavaScript/TypeScript.
26 lines (25 loc) • 937 B
JavaScript
;
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;