UNPKG

@typed/io

Version:

Runtime IO type system

56 lines 1.58 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.intersection = exports.tuple = exports.array = exports.record = exports.partial = exports.Encoder = void 0; const lambda_1 = require("@typed/lambda"); var Encoder; (function (Encoder) { const _id = { encode: lambda_1.id }; Encoder.id = () => _id; })(Encoder = exports.Encoder || (exports.Encoder = {})); function partial(properties) { return { encode: (a) => { const o = {}; for (const k in properties) { if (k in a) { const v = a[k]; o[k] = v === undefined ? undefined : properties[k].encode(v); } } return o; }, }; } exports.partial = partial; function record(properties) { return { encode: (a) => { const o = {}; // tslint:disable-next-line:forin for (const k in properties) { o[k] = properties[k].encode(a[k]); } return o; }, }; } exports.record = record; function array(items) { return { encode: (as) => as.map(items.encode), }; } exports.array = array; function tuple(encoders) { return { encode: (as) => as.map((a, i) => encoders[i].encode(a)), }; } exports.tuple = tuple; function intersection(encoders) { return { encode: (a) => encoders.map((e) => e.encode(a)).reduce((acc, x) => ({ ...acc, ...x }), {}), }; } exports.intersection = intersection; //# sourceMappingURL=Encoder.js.map