@3fv/guard
Version:
TypeScript guard suite
56 lines • 2.08 kB
JavaScript
;
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