UNPKG

@3fv/guard

Version:

TypeScript guard suite

20 lines (19 loc) 1.03 kB
import type { ErrorHandler } from "./types"; export type GuardErrorHandler = (err: Error) => void; export declare function setGuardErrorHandler(errorHandler?: GuardErrorHandler | null): void; export type ReturnTypeOrAny<Fn extends () => any> = (ReturnType<Fn> extends never ? unknown : ReturnType<Fn>); /** * Get a value in a guarded fashion * ensuring no exception * * @param fn * @param defaultValue * @returns {any} * @param errorHandler */ export declare function getValue<Fn extends () => any, T extends ReturnType<Fn>>(fn: Fn, defaultValue?: T, errorHandler?: ErrorHandler): T extends Promise<infer T2> ? Promise<T2> : T; export type GuardFn = <Fn extends () => any, T extends ReturnType<Fn>>(fn: Fn, localErrorHandler?: GuardErrorHandler | null) => (void | Promise<void>); export type GuardTool = GuardFn & { lift: <T>(fn: () => T, localErrorHandler?: GuardErrorHandler | null) => ((fn: () => T, localErrorHandler?: GuardErrorHandler | null) => (void | Promise<void>)); }; export declare const guard: GuardTool;