UNPKG

ts-cast

Version:
23 lines (22 loc) 1.1 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.record = void 0; var engine_1 = require("../engine"); var guards_1 = require("../engine/guards"); var recordTypeName = function (keyTypeName, valueTypeName) { return "Record<".concat(keyTypeName, ", ").concat(valueTypeName, ">"); }; var checkFields = function (keyCaster, valueCaster) { return function (value, context, reportError) { return Object.entries(value).reduce(function (obj, _a) { var key = _a[0], val = _a[1]; var newKey = keyCaster(key, context ? "key of ".concat(context) : 'key', reportError); var newValue = valueCaster(val, context ? "".concat(context, ".").concat(key) : key, reportError); obj[newKey] = newValue; return obj; }, Object.create(null)); }; }; var record = function (keyCaster, valueCaster, typeName) { if (typeName === void 0) { typeName = recordTypeName(keyCaster.name, valueCaster.name); } return (0, engine_1.createCaster)(typeName, guards_1.isAnObj, checkFields(keyCaster, valueCaster)); }; exports.record = record;