UNPKG

@typed/fp

Version:

Data Structures and Resources for fp-ts

75 lines 2.87 kB
import { Either } from 'fp-ts/Either'; import { Env } from './Env'; import { Resume } from './Resume'; /** * @since 0.9.2 * @category Model */ export declare type Fail<Key extends PropertyKey, E> = { readonly [_ in Key]: (e: E) => Resume<never>; }; /** * @since 0.9.2 * @category Constructor */ export declare const throwError: <Key extends PropertyKey>(key: Key) => <E>(err: E) => Env<Fail<Key, E>, never>; /** * @since 0.9.2 * @category Combinator */ export declare const catchErrorW: <Key extends PropertyKey>(key: Key) => <E, R1, A>(onError: (err: E) => Env<R1, A>) => <R2, B>(env: Env<Fail<Key, E>, B> | Env<R2 & Fail<Key, E>, B>) => Env<R1 & R2, A | B>; /** * @since 0.9.2 * @category Combinator */ export declare const catchError: <Key extends PropertyKey>(key: Key) => <E, R1, A>(onError: (err: E) => Env<R1, A>) => { <R2>(env: Env<Fail<Key, E>, A> | Env<R2 & Fail<Key, E>, A>): Env<R1 & R2, A>; (env: Env<Fail<Key, E>, A>): Env<R1, A>; }; /** * @since 0.9.2 * @category Combinator */ export declare const attempt: <Key extends PropertyKey>(key: Key) => <R, E, B>(env: Env<Fail<Key, E>, B> | Env<R & Fail<Key, E>, B>) => Env<R, Either<E, B>>; /** * Creates a Provider for an Error which will throw an Exception. * Reserve this only for *critical* application errors * @since 0.13.4 * @category Environment */ export declare const criticalExpection: <K extends PropertyKey>(key: K) => <E>(f: (error: E) => string) => Fail<K, E>; /** * @since 0.9.2 * @category Model */ export interface Failure<K extends PropertyKey, E> { readonly throw: (err: E) => Env<Fail<K, E>, never>; readonly catchW: <R1, A>(onError: (err: E) => Env<R1, A>) => <R2, B>(env: Env<Fail<K, E>, B> | Env<R2 & Fail<K, E>, B>) => Env<R1 & R2, A | B>; readonly catch: <R1, A>(onError: (err: E) => Env<R1, A>) => { <R2>(env: Env<Fail<K, E>, A> | Env<R2 & Fail<K, E>, A>): Env<R1 & R2, A>; (env: Env<Fail<K, E>, A>): Env<R1, A>; }; readonly attempt: <R, B>(env: Env<Fail<K, E>, B> | Env<R & Fail<K, E>, B>) => Env<R, Either<E, B>>; readonly criticalExpection: (f: (error: E) => string) => Fail<K, E>; } /** * @since 0.9.2 * @category Constructor */ export declare const named: <E>() => <K extends PropertyKey>(name: K) => Failure<K, E>; /** * @since 0.13.4 * @category Type-level */ export declare type ErrorOf<A> = [A] extends [Failure<infer _, infer E>] ? E : [A] extends [Fail<infer _, infer E>] ? E : never; /** * @since 0.13.4 * @category Type-level */ export declare type KeyOf<A> = [A] extends [Failure<infer K, infer _>] ? K : [A] extends [Fail<infer K, infer _>] ? K : never; /** * @since 0.13.4 * @category Type-level */ export declare type EnvOf<A> = [A] extends [Failure<infer K, infer E>] ? Fail<K, E> : [A] extends [Fail<infer K, infer E>] ? Fail<K, E> : never; //# sourceMappingURL=Fail.d.ts.map