@typed/fp
Version:
Data Structures and Resources for fp-ts
75 lines • 2.87 kB
TypeScript
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