UNPKG

io-ts-types

Version:

A collection of codecs and combinators for use with io-ts

39 lines (38 loc) 892 B
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getLenses = void 0; var monocle_ts_1 = require("monocle-ts"); function getProps(codec) { switch (codec._tag) { case 'InterfaceType': return codec.props; case 'ExactType': return getProps(codec.type); } } var fromProp = monocle_ts_1.Lens.fromProp(); /** * Return a `Lens` for each prop * * @example * import * as t from 'io-ts' * import { getLenses } from 'io-ts-types/lib/getLenses' * * const Person = t.type({ * name: t.string, * age: t.number * }) * * const lenses = getLenses(Person) * assert.strictEqual(lenses.age.get({ name: 'Giulio', age: 44 }), 44) * * @since 0.5.0 */ function getLenses(codec) { var r = {}; for (var k in getProps(codec)) { r[k] = fromProp(k); } return r; } exports.getLenses = getLenses;