UNPKG

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
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>;