ts-cast
Version:
Runtime typechecking
21 lines (20 loc) • 855 B
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.prod = exports.allOf = void 0;
var engine_1 = require("../engine");
var guards_1 = require("../engine/guards");
var prodTypeName = function (schema) { return schema.map(function (caster) { return caster.name; }).join(' & '); };
var mergeStructs = function (schema) {
return function (value, context, reportError) {
return schema.reduce(function (obj, caster) { return Object.assign(obj, caster(value, context, reportError)); }, Object.create(null));
};
};
var allOf = function () {
var schema = [];
for (var _i = 0; _i < arguments.length; _i++) {
schema[_i] = arguments[_i];
}
return (0, engine_1.createCaster)(prodTypeName(schema), guards_1.isAnObj, mergeStructs(schema));
};
exports.allOf = allOf;
exports.prod = exports.allOf;