UNPKG

@3fv/guard

Version:

TypeScript guard suite

50 lines 1.42 kB
import { isNil, isPromise } from "./guards/primitive.js"; let globalErrorHandler; export function setGuardErrorHandler(errorHandler = null) { globalErrorHandler = errorHandler; } /** * Get a value in a guarded fashion * ensuring no exception * * @param fn * @param defaultValue * @returns {any} * @param errorHandler */ export function getValue(fn, defaultValue = undefined, errorHandler = globalErrorHandler) { let result = null; try { result = fn(); if (isPromise(result)) return result .catch(err => { if (errorHandler) errorHandler(err); return defaultValue; }) .then(value => isNil(value) ? defaultValue : value); } catch (err) { if (errorHandler) errorHandler(err); } return isNil(result) ? defaultValue : result; } /** * Execute a function guarded from exception * * @param fn * @param localErrorHandler * @returns {(fn:()=>any)=>(fn:()=>any)=>any} */ const guardFn = (fn, localErrorHandler = null) => { const value = getValue(fn, undefined, localErrorHandler); if (isPromise(value)) return value.then(() => undefined); }; export const guard = Object.assign(guardFn, { lift: (fn, localErrorHandler) => (fn, localErrorHandler) => guardFn(fn, localErrorHandler) }); //# sourceMappingURL=Tools.js.map