UNPKG

@typed/effects

Version:

Generator-powered Effect management

23 lines 1.13 kB
import { Resume } from '@typed/env'; import { Maybe } from '@typed/maybe'; import { Capabilities, Effects } from '../Effect'; export declare type FailEnv<K extends PropertyKey, Err> = { readonly [Key in K]: Fail<Err>; }; export declare type Fail<Err> = <A>(error: Err) => Resume<Failure<Err, A>>; export declare const Fail: Fail<any>; export declare type FailureTypes<E extends Effects<any, any>> = keyof FailuresOf<E>; export declare type FailuresOf<E extends Effects<any, any>> = Pick<Capabilities<E>, FailureKeys<Capabilities<E>>>; export declare type ErrorOf<E extends Effects<any, any>, K extends FailureTypes<E>> = FailuresOf<E>[K] extends Fail<infer R> ? R : never; declare type FailureKeys<A> = { [K in keyof A]: A[K] extends Fail<any> ? K : never; }[keyof A]; export declare class Failure<Err, A> { readonly error: Err; readonly value: Maybe<A>; static of: <Err_1, A_1>(error: Err_1, value?: Maybe<A_1>) => Failure<Err_1, A_1>; constructor(error: Err, value: Maybe<A>); readonly unpack: <B>(left: (err: Err) => B, right: (value: A) => B) => B; } export {}; //# sourceMappingURL=Failure.d.ts.map