UNPKG

auto-translatr

Version:
40 lines (39 loc) 1.97 kB
export type Prettify<T> = { [K in keyof T]: T[K]; } & {}; export type Either<L, R> = { type: 'left'; value: L; } | { type: 'right'; value: R; }; export declare function left<L, R>(value: L): Either<L, R>; export declare function right<L, R>(value: R): Either<L, R>; export declare function isLeft<L, R>(either: Either<L, R>): either is { type: 'left'; value: L; }; export declare function isRight<L, R>(either: Either<L, R>): either is { type: 'right'; value: R; }; type Monad<TIn, TError, TOut> = { flatMap: <TOutNext>(fn: (value: TOut) => Either<TError, TOutNext>) => Monad<TIn, TError, TOutNext>; flatMapVoid: (fn: (value: TOut) => Either<TError, void>) => Monad<TIn, TError, TOut>; map: <TOutNext>(fn: (value: TOut) => TOutNext) => Monad<TIn, TError, TOutNext>; mapError: <TErrorNext>(fn: (error: TError) => TErrorNext) => Monad<TIn, TErrorNext, TOut>; result: (value: TIn) => Either<TError, TOut>; }; export declare function lift<TIn, TError, TOut>(fn: (value: TIn) => Either<TError, TOut>): Monad<TIn, TError, TOut>; type AsyncMonad<TIn, TError, TOut> = { flatMap: <TOutNext>(fn: (value: TOut) => Promise<Either<TError, TOutNext>>) => AsyncMonad<TIn, TError, TOutNext>; flatMapAll: <TOutNext>(fn: (value: TOut) => Promise<Either<TError, TOutNext>>[]) => AsyncMonad<TIn, TError, TOutNext[]>; flatMapVoid: (fn: (value: TOut) => Promise<Either<TError, void>>) => AsyncMonad<TIn, TError, TOut>; flatMapAllVoid: (fn: (value: TOut) => Promise<Either<TError, void>>[]) => AsyncMonad<TIn, TError, TOut>; map: <TOutNext>(fn: (value: TOut) => TOutNext) => AsyncMonad<TIn, TError, TOutNext>; mapError: <TErrorNext>(fn: (error: TError) => TErrorNext) => AsyncMonad<TIn, TErrorNext, TOut>; result: (value?: TIn) => Promise<Either<TError, TOut>>; }; export declare function liftAsync<TIn, TError, TOut>(fn: (value: TIn) => Promise<Either<TError, TOut>>): AsyncMonad<TIn, TError, TOut>; export {};