@bigmi/core
Version:
TypeScript library for Bitcoin apps.
50 lines • 1.5 kB
JavaScript
import { version } from '../version.js';
let errorConfig = {
version: `bigmi@${version}`,
};
export function setErrorConfig(config) {
errorConfig = config;
}
export 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;
}
walk(fn) {
return walk(this, fn);
}
}
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