@clerk/shared
Version:
Internal package utils used by the Clerk SDKs
43 lines (41 loc) • 1.32 kB
JavaScript
const require_createErrorTypeGuard = require('./createErrorTypeGuard.js');
//#region src/errors/clerkError.ts
var ClerkError = class ClerkError extends Error {
static kind = "ClerkError";
clerkError = true;
code;
longMessage;
docsUrl;
cause;
get name() {
return this.constructor.name;
}
constructor(opts) {
super(new.target.formatMessage(new.target.kind, opts.message, opts.code, opts.docsUrl), { cause: opts.cause });
Object.setPrototypeOf(this, ClerkError.prototype);
this.code = opts.code;
this.docsUrl = opts.docsUrl;
this.longMessage = opts.longMessage;
this.cause = opts.cause;
}
toString() {
return `[${this.name}]\nMessage:${this.message}`;
}
static formatMessage(name, msg, code, docsUrl) {
const prefix = "Clerk:";
const regex = new RegExp(prefix.replace(" ", "\\s*"), "i");
msg = msg.replace(regex, "");
msg = `${prefix} ${msg.trim()}\n\n(code="${code}")\n\n`;
if (docsUrl) msg += `\n\nDocs: ${docsUrl}`;
return msg;
}
};
/**
* Type guard to check if a value is a ClerkError instance.
*/
function isClerkError(val) {
return require_createErrorTypeGuard.createErrorTypeGuard(ClerkError)(val) || !!val && typeof val === "object" && "clerkError" in val && val.clerkError === true;
}
//#endregion
exports.ClerkError = ClerkError;
exports.isClerkError = isClerkError;