io-ts-types
Version:
A collection of codecs and combinators for use with io-ts
39 lines (38 loc) • 892 B
JavaScript
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;
;