You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
97 lines
3.2 KiB
97 lines
3.2 KiB
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.BaseError = void 0;
|
|
exports.setErrorConfig = setErrorConfig;
|
|
const version_js_1 = require("./version.js");
|
|
let errorConfig = {
|
|
getDocsUrl: ({ docsBaseUrl, docsPath = '', docsSlug, }) => docsPath
|
|
? `${docsBaseUrl ?? 'https://viem.sh'}${docsPath}${docsSlug ? `#${docsSlug}` : ''}`
|
|
: undefined,
|
|
version: `viem@${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 docsPath = (() => {
|
|
if (args.cause instanceof BaseError)
|
|
return args.cause.docsPath || args.docsPath;
|
|
return args.docsPath;
|
|
})();
|
|
const docsUrl = errorConfig.getDocsUrl?.({ ...args, docsPath });
|
|
const message = [
|
|
shortMessage || 'An error occurred.',
|
|
'',
|
|
...(args.metaMessages ? [...args.metaMessages, ''] : []),
|
|
...(docsUrl ? [`Docs: ${docsUrl}`] : []),
|
|
...(details ? [`Details: ${details}`] : []),
|
|
...(errorConfig.version ? [`Version: ${errorConfig.version}`] : []),
|
|
].join('\n');
|
|
super(message, args.cause ? { cause: args.cause } : undefined);
|
|
Object.defineProperty(this, "details", {
|
|
enumerable: true,
|
|
configurable: true,
|
|
writable: true,
|
|
value: void 0
|
|
});
|
|
Object.defineProperty(this, "docsPath", {
|
|
enumerable: true,
|
|
configurable: true,
|
|
writable: true,
|
|
value: void 0
|
|
});
|
|
Object.defineProperty(this, "metaMessages", {
|
|
enumerable: true,
|
|
configurable: true,
|
|
writable: true,
|
|
value: void 0
|
|
});
|
|
Object.defineProperty(this, "shortMessage", {
|
|
enumerable: true,
|
|
configurable: true,
|
|
writable: true,
|
|
value: void 0
|
|
});
|
|
Object.defineProperty(this, "version", {
|
|
enumerable: true,
|
|
configurable: true,
|
|
writable: true,
|
|
value: void 0
|
|
});
|
|
Object.defineProperty(this, "name", {
|
|
enumerable: true,
|
|
configurable: true,
|
|
writable: true,
|
|
value: 'BaseError'
|
|
});
|
|
this.details = details;
|
|
this.docsPath = docsPath;
|
|
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
|