UNPKG

@typed/io

Version:

Runtime IO type system

23 lines 973 B
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.maybe = exports.Maybe = void 0; const either_1 = require("@typed/either"); const maybe_1 = require("@typed/maybe"); const strings_1 = require("@typed/strings"); const G = require("../guard"); const Decoder_1 = require("./Decoder"); const refinement_1 = require("./refinement"); const _Maybe = Decoder_1.Decoder.fromGuard(G.Maybe, 'Maybe<unknown>'); exports.Maybe = _Maybe; exports.maybe = (a) => refinement_1.refinement(_Maybe, function* (maybe) { if (maybe_1.isNothing(maybe)) { return maybe; } const u = maybe_1.fromJust(maybe); const t = yield* Decoder_1.catchDecodeFailure(a.decode(u)); if (either_1.isRight(t)) { return maybe_1.Just.of(either_1.fromRight(t)); } return yield* Decoder_1.decodeFailure(Decoder_1.DecodeError.create(`Maybe<${a.expected}>`, strings_1.toString(u))); }, `Maybe<${a.expected}>`); //# sourceMappingURL=Maybe.js.map