UNPKG

@3fv/guard

Version:

TypeScript guard suite

50 lines 1.74 kB
import { isFunction, isString } from "./primitive.js"; export const DefaultAssertOptions = { logErrorsToConsole: false }; let assertOptions = Object.assign({}, DefaultAssertOptions); export function getAssertOptions() { return Object.assign({}, assertOptions); } export function setGlobalAssertOptions(options) { assertOptions = Object.assign(Object.assign({}, assertOptions), options); } export class AssertError extends Error { constructor(message, cause) { super(message); this.cause = cause; } } const assertLift = (test, messageProvider) => { return (nextValue) => { const ok = test(nextValue); if (!ok) { const message = isFunction(messageProvider) ? messageProvider(nextValue) : messageProvider !== null && messageProvider !== void 0 ? messageProvider : "no message"; throw new AssertError(message); } }; }; export const assert = Object.assign((test, msg, overrideOptions = {}) => { var _a; const options = Object.assign(Object.assign({}, assertOptions), overrideOptions); let result = false; let error = undefined; try { result = isFunction(test) ? test() : test; } catch (err) { error = err; if (options.logErrorsToConsole) { console.error(`Assert failed: "${test}"`, err); } } if (!result || !!error) { const errOut = !msg ? ((_a = error === null || error === void 0 ? void 0 : error.message) !== null && _a !== void 0 ? _a : "unknown") : isFunction(msg) ? msg(error) : msg; throw isString(errOut) ? new AssertError(errOut, error) : errOut; } }, { lift: assertLift }); //# sourceMappingURL=assert.js.map