UNPKG

mutoid

Version:

Reactive library for data fetching, caching, state management

20 lines (19 loc) 663 B
import * as t from 'io-ts'; const initLiteral = t.literal('init'); const submittedLiteral = t.literal('submitted'); const failLiteral = t.literal('fail'); const doneLiteral = t.literal('done'); export function resourceT(failCodec, doneCodec, name = `Resource<${failCodec.name}, ${doneCodec.name}>`) { return t.union([ t.strict({ _tag: initLiteral }), t.strict({ _tag: submittedLiteral }), t.strict({ _tag: failLiteral, error: failCodec, }, `Fail<${failCodec.name}>`), t.strict({ _tag: doneLiteral, data: doneCodec, }, `Right<${doneCodec.name}>`), ], name); }