UNPKG

io-ts-types

Version:

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

22 lines (21 loc) 616 B
/** * @since 0.5.0 */ import { pipe } from 'fp-ts/es6/pipeable'; import { map } from 'fp-ts/es6/Either'; import * as O from 'fp-ts/es6/Option'; import * as t from 'io-ts'; import { option } from './option'; /** * @since 0.5.0 */ export function optionFromNullable(codec, name) { if (name === void 0) { name = "Option<" + codec.name + ">"; } return new t.Type(name, option(codec).is, function (u, c) { return u == null ? t.success(O.none) : pipe(codec.validate(u, c), map(O.some)); }, function (a) { return O.toNullable(pipe(a, O.map(codec.encode))); }); }