UNPKG

ts-cast

Version:
22 lines (21 loc) 952 B
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.tuple = void 0; var engine_1 = require("../engine"); var guards_1 = require("../engine/guards"); var transformTuple = function (schema) { return function (value, context, reportError) { var casted = schema.map(function (caster, index) { return caster(value[index], context ? "".concat(context, "[").concat(index, "]") : "#".concat(index), reportError); }); var last = value.length - 1; return casted.slice(0, last + 1); }; }; var tupleTypeName = function (schema) { return "[".concat(schema.map(function (casterFn) { return casterFn.name; }).join(', '), "]"); }; var tuple = function () { var schema = []; for (var _i = 0; _i < arguments.length; _i++) { schema[_i] = arguments[_i]; } return (0, engine_1.createCaster)(tupleTypeName(schema), guards_1.isATuple, transformTuple(schema)); }; exports.tuple = tuple;