@3fv/guard
Version:
TypeScript guard suite
20 lines (19 loc) • 1.03 kB
TypeScript
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;