minauth
Version:
A TypeScript library for building authentication systems on top of the Mina blockchain and other zero-knowledge proofs solutions.
55 lines (54 loc) • 2.77 kB
TypeScript
import { ReaderTaskEither } from 'fp-ts/lib/ReaderTaskEither.js';
import * as z from 'zod';
import { ILogObj, Logger } from 'tslog';
/**
* Construct a ReaderTaskEither from a function that performs side effects and
* may throw.
*/
export declare const tryCatchIO: <Env, Err, Ret>(f: (env: Env) => Ret, onThrow: (reason: unknown) => Err) => ReaderTaskEither<Env, Err, Ret>;
/**
* Convert a promise that may reject into a ReaderTaskEither.
*/
export declare const tryCatch: <Env, Err, Ret>(f: (env: Env) => Promise<Ret>, onThrow: (reason: unknown) => Err) => ReaderTaskEither<Env, Err, Ret>;
/**
* Given an error and a condition, throw the error when the condition is false.
*/
export declare const guard: <Env, Err>(err: Err) => (cond: boolean) => ReaderTaskEither<Env, Err, void>;
export declare const liftZodParseResult: <R, E, I, O>(r: z.SafeParseReturnType<I, O>, onThrow: (err: z.ZodError<I>) => E) => ReaderTaskEither<R, E, O>;
/**
* Assuming the reader environment is a string-indexable object, return the field
* in the environment of the given key.
*/
export declare const askRecordField: <P extends string, R extends { [key in P]: unknown; }, Err = never>(key: P) => ReaderTaskEither<R, Err, R[P]>;
/**
* Returns the logger stored within RTE env.
*/
export declare const askLogger: <R extends {
logger: LoggerType;
}, LoggerType extends Logger<LogObjType>, LogObjType extends ILogObj = ILogObj, Err = never>() => ReaderTaskEither<R, Err, LoggerType>;
/**
* Pass a function accepting the logger stored within RTE env
* to call it with the logger.
*/
export declare const useLogger: <R extends {
logger: LoggerType;
}, B, LoggerType extends Logger<LogObjType>, LogObjType extends ILogObj = ILogObj, Err = never>(f: (l: LoggerType) => B) => ReaderTaskEither<R, Err, void>;
/**
* Pass a function accepting the logger stored within RTE env
* to call it with the logger.
* It will passthrough the given task either action
* - to be used within monadic actions chains.
*/
export declare const tapLogger: <R extends {
logger: LoggerType;
}, A, B, LoggerType extends Logger<LogObjType>, LogObjType extends ILogObj = ILogObj, Err = never>(f: (logger: LoggerType, x: A) => B) => (_: ReaderTaskEither<R, Err, A>) => ReaderTaskEither<R, Err, A>;
/**
* Returns a sublogger of the logger stored within RTE env.
*/
export declare const askSublogger: <R extends {
logger: Logger<LogObjType>;
}, Err = never, LogObjType extends ILogObj = ILogObj>(loggerName: string) => ReaderTaskEither<R, Err, Logger<LogObjType>>;
/**
* Execute a computation in a modified environment.
*/
export declare const withRTE: <R1, R2, E1, E2>(mapErr: (_: E2) => E1, mapEnv: (_: R1) => R2) => <A>(f: ReaderTaskEither<R2, E2, A>) => ReaderTaskEither<R1, E1, A>;