UNPKG

@typed/io

Version:

Runtime IO type system

18 lines 806 B
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.tuple = void 0; const effects_1 = require("@typed/effects"); const strings_1 = require("@typed/strings"); const Array_1 = require("./Array"); const Decoder_1 = require("./Decoder"); const refinement_1 = require("./refinement"); exports.tuple = (decoders) => { const expected = `[${decoders.map((d) => d.expected).join(`, `)}]`; return refinement_1.refinement(Array_1.Array, function* (list) { if (list.length !== decoders.length) { return yield* Decoder_1.decodeFailure(Decoder_1.DecodeError.create(expected, `${strings_1.toString(list)}`)); } return yield* effects_1.combine(...decoders.map((d, i) => d.decode(list[i]))); }, expected); }; //# sourceMappingURL=Tuple.js.map