auto-translatr
Version:
An automatic translation library
40 lines (39 loc) • 1.97 kB
TypeScript
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 {};