UNPKG

@typed/io

Version:

Runtime IO type system

21 lines (16 loc) 523 B
import * as G from '../guard' import { array } from './Array' import { Decoder, TypeOf } from './Decoder' import { refinement } from './refinement' const _Set = Decoder.fromGuard(G.Set, `ReadonlySet<unknown>`) export { _Set as Set } export const set = <A extends Decoder>(d: A): Decoder<ReadonlySet<TypeOf<A>>> => { const arrayDecoder = array(d) return refinement( _Set, function* (s) { return new Set(yield* arrayDecoder.decode(Array.from(s.values()))) }, `ReadonlySet<${d.expected}>`, ) }