UNPKG

@typed/io

Version:

Runtime IO type system

48 lines 1.27 kB
import { id as identity } from '@typed/lambda'; export var Encoder; (function (Encoder) { const _id = { encode: identity }; Encoder.id = () => _id; })(Encoder || (Encoder = {})); export 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; }, }; } export 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; }, }; } export function array(items) { return { encode: (as) => as.map(items.encode), }; } export function tuple(encoders) { return { encode: (as) => as.map((a, i) => encoders[i].encode(a)), }; } export function intersection(encoders) { return { encode: (a) => encoders.map((e) => e.encode(a)).reduce((acc, x) => ({ ...acc, ...x }), {}), }; } //# sourceMappingURL=Encoder.js.map