@bigmi/core
Version:
TypeScript library for Bitcoin apps.
55 lines • 1.7 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.BaseError = void 0;
exports.setErrorConfig = setErrorConfig;
const version_js_1 = require("../version.js");
let errorConfig = {
version: `bigmi@${version_js_1.version}`,
};
function setErrorConfig(config) {
errorConfig = config;
}
class BaseError extends Error {
constructor(shortMessage, args = {}) {
const details = (() => {
if (args.cause instanceof BaseError) {
return args.cause.details;
}
if (args.cause?.message) {
return args.cause.message;
}
return args.details;
})();
const message = [
shortMessage || 'An error occurred.',
'',
...(args.metaMessages ? [...args.metaMessages, ''] : []),
...(details ? [`Details: ${details}`] : []),
...(errorConfig.version ? [`Version: ${errorConfig.version}`] : []),
].join('\n');
super(message, args.cause ? { cause: args.cause } : undefined);
this.name = 'BaseError';
this.details = details;
this.metaMessages = args.metaMessages;
this.name = args.name ?? this.name;
this.shortMessage = shortMessage;
this.version = version_js_1.version;
}
walk(fn) {
return walk(this, fn);
}
}
exports.BaseError = BaseError;
function walk(err, fn) {
if (fn?.(err)) {
return err;
}
if (err &&
typeof err === 'object' &&
'cause' in err &&
err.cause !== undefined) {
return walk(err.cause, fn);
}
return fn ? null : err;
}
//# sourceMappingURL=base.js.map