UNPKG

@typed/io

Version:

Runtime IO type system

15 lines 654 B
import { combine } from '@typed/effects'; import { toString } from '@typed/strings'; import { Array } from './Array'; import { DecodeError, decodeFailure } from './Decoder'; import { refinement } from './refinement'; export const tuple = (decoders) => { const expected = `[${decoders.map((d) => d.expected).join(`, `)}]`; return refinement(Array, function* (list) { if (list.length !== decoders.length) { return yield* decodeFailure(DecodeError.create(expected, `${toString(list)}`)); } return yield* combine(...decoders.map((d, i) => d.decode(list[i]))); }, expected); }; //# sourceMappingURL=Tuple.js.map