UNPKG

@3fv/guard

Version:

TypeScript guard suite

56 lines 2.08 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.assert = exports.AssertError = exports.DefaultAssertOptions = void 0; exports.getAssertOptions = getAssertOptions; exports.setGlobalAssertOptions = setGlobalAssertOptions; const primitive_js_1 = require("./primitive.js"); exports.DefaultAssertOptions = { logErrorsToConsole: false }; let assertOptions = Object.assign({}, exports.DefaultAssertOptions); function getAssertOptions() { return Object.assign({}, assertOptions); } function setGlobalAssertOptions(options) { assertOptions = Object.assign(Object.assign({}, assertOptions), options); } class AssertError extends Error { constructor(message, cause) { super(message); this.cause = cause; } } exports.AssertError = AssertError; const assertLift = (test, messageProvider) => { return (nextValue) => { const ok = test(nextValue); if (!ok) { const message = (0, primitive_js_1.isFunction)(messageProvider) ? messageProvider(nextValue) : messageProvider !== null && messageProvider !== void 0 ? messageProvider : "no message"; throw new AssertError(message); } }; }; exports.assert = Object.assign((test, msg, overrideOptions = {}) => { var _a; const options = Object.assign(Object.assign({}, assertOptions), overrideOptions); let result = false; let error = undefined; try { result = (0, primitive_js_1.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") : (0, primitive_js_1.isFunction)(msg) ? msg(error) : msg; throw (0, primitive_js_1.isString)(errOut) ? new AssertError(errOut, error) : errOut; } }, { lift: assertLift }); //# sourceMappingURL=assert.js.map