@clerk/shared 3.28.0 → 3.28.1-canary.v20251016143055

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -3,7 +3,7 @@ function createErrorTypeGuard(ErrorClass) {
3
3
  function typeGuard(error) {
4
4
  const target = error ?? this;
5
5
  if (!target) {
6
- throw new TypeError(`${ErrorClass.name} type guard requires an error object`);
6
+ throw new TypeError(`${ErrorClass.kind || ErrorClass.name} type guard requires an error object`);
7
7
  }
8
8
  return target instanceof ErrorClass;
9
9
  }
@@ -12,7 +12,7 @@ function createErrorTypeGuard(ErrorClass) {
12
12
 
13
13
  // src/errors/clerkApiError.ts
14
14
  var ClerkAPIError = class {
15
- name = "ClerkApiError";
15
+ static kind = "ClerkApiError";
16
16
  code;
17
17
  message;
18
18
  longMessage;
@@ -70,7 +70,7 @@ function errorToJSON(error) {
70
70
  // src/errors/clerkError.ts
71
71
  var __DEV__ = true;
72
72
  var ClerkError = class _ClerkError extends Error {
73
- static name = "ClerkError";
73
+ static kind = "ClerkError";
74
74
  clerkError = true;
75
75
  code;
76
76
  longMessage;
@@ -80,7 +80,7 @@ var ClerkError = class _ClerkError extends Error {
80
80
  return this.constructor.name;
81
81
  }
82
82
  constructor(opts) {
83
- super(new.target.formatMessage(new.target.name, opts.message, opts.code, opts.docsUrl), { cause: opts.cause });
83
+ super(new.target.formatMessage(new.target.kind, opts.message, opts.code, opts.docsUrl), { cause: opts.cause });
84
84
  Object.setPrototypeOf(this, _ClerkError.prototype);
85
85
  this.code = opts.code;
86
86
  this.docsUrl = opts.docsUrl;
@@ -111,7 +111,7 @@ Docs: ${docsUrl}`;
111
111
 
112
112
  // src/errors/clerkApiResponseError.ts
113
113
  var ClerkAPIResponseError = class _ClerkAPIResponseError extends ClerkError {
114
- static name = "ClerkAPIResponseError";
114
+ static kind = "ClerkAPIResponseError";
115
115
  status;
116
116
  clerkTraceId;
117
117
  retryAfter;
@@ -226,7 +226,7 @@ var EmailLinkErrorCodeStatus = {
226
226
 
227
227
  // src/errors/clerkRuntimeError.ts
228
228
  var ClerkRuntimeError = class _ClerkRuntimeError extends ClerkError {
229
- static name = "ClerkRuntimeError";
229
+ static kind = "ClerkRuntimeError";
230
230
  /**
231
231
  * @deprecated Use `clerkError` property instead. This property is maintained for backward compatibility.
232
232
  */
@@ -317,4 +317,4 @@ export {
317
317
  isPasswordPwnedError,
318
318
  isEmailLinkError
319
319
  };
320
- //# sourceMappingURL=chunk-LAUDJDHO.mjs.map
320
+ //# sourceMappingURL=chunk-AXHU6TXE.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/errors/createErrorTypeGuard.ts","../src/errors/clerkApiError.ts","../src/errors/parseError.ts","../src/errors/clerkError.ts","../src/errors/clerkApiResponseError.ts","../src/errors/errorThrower.ts","../src/errors/emailLinkError.ts","../src/errors/clerkRuntimeError.ts","../src/errors/webAuthNError.ts","../src/errors/helpers.ts"],"sourcesContent":["/* eslint-disable jsdoc/require-jsdoc */\n\ntype Value = unknown;\n\n/**\n * Creates a type guard function for any error class.\n * The returned function can be called as a standalone function or as a method on an error object.\n *\n * @example\n * ```typescript\n * class MyError extends Error {}\n * const isMyError = createErrorTypeGuard(MyError);\n *\n * // As a standalone function\n * if (isMyError(error)) { ... }\n *\n * // As a method (when attached to error object)\n * if (error.isMyError()) { ... }\n * ```\n */\nexport function createErrorTypeGuard<T extends new (...args: any[]) => Value>(\n ErrorClass: T & { kind?: string },\n): {\n (error: Value): error is InstanceType<T>;\n (this: Value): this is InstanceType<T>;\n} {\n function typeGuard(this: Value, error?: Value): error is InstanceType<T> {\n const target = error ?? this;\n if (!target) {\n throw new TypeError(`${ErrorClass.kind || ErrorClass.name} type guard requires an error object`);\n }\n return target instanceof ErrorClass;\n }\n\n return typeGuard as {\n (error: Value): error is InstanceType<T>;\n (this: Value): this is InstanceType<T>;\n };\n}\n","import type { ClerkAPIError as ClerkAPIErrorInterface, ClerkAPIErrorJSON } from '@clerk/types';\n\nimport { createErrorTypeGuard } from './createErrorTypeGuard';\n\nexport type ClerkApiErrorMeta = Record<string, unknown>;\n\n/**\n * This error contains the specific error message, code, and any additional metadata that was returned by the Clerk API.\n */\nexport class ClerkAPIError<Meta extends ClerkApiErrorMeta = any> implements ClerkAPIErrorInterface {\n static kind = 'ClerkApiError';\n readonly code: string;\n readonly message: string;\n readonly longMessage: string | undefined;\n readonly meta: Meta;\n\n constructor(json: ClerkAPIErrorJSON) {\n const parsedError = this.parseJsonError(json);\n this.code = parsedError.code;\n this.message = parsedError.message;\n this.longMessage = parsedError.longMessage;\n this.meta = parsedError.meta;\n }\n\n private parseJsonError(json: ClerkAPIErrorJSON) {\n return {\n code: json.code,\n message: json.message,\n longMessage: json.long_message,\n meta: {\n paramName: json.meta?.param_name,\n sessionId: json.meta?.session_id,\n emailAddresses: json.meta?.email_addresses,\n identifiers: json.meta?.identifiers,\n zxcvbn: json.meta?.zxcvbn,\n plan: json.meta?.plan,\n isPlanUpgradePossible: json.meta?.is_plan_upgrade_possible,\n } as unknown as Meta,\n };\n }\n}\n\n/**\n * Type guard to check if a value is a ClerkApiError instance.\n */\nexport const isClerkApiError = createErrorTypeGuard(ClerkAPIError);\n","import type { ClerkAPIError as ClerkAPIErrorInterface, ClerkAPIErrorJSON } from '@clerk/types';\n\nimport { ClerkAPIError } from './clerkApiError';\n\n/**\n * Parses an array of ClerkAPIErrorJSON objects into an array of ClerkAPIError objects.\n *\n * @internal\n */\nexport function parseErrors(data: ClerkAPIErrorJSON[] = []): ClerkAPIErrorInterface[] {\n return data.length > 0 ? data.map(e => new ClerkAPIError(e)) : [];\n}\n\n/**\n * Parses a ClerkAPIErrorJSON object into a ClerkAPIError object.\n *\n * @deprecated Use `ClerkAPIError` class instead\n *\n * @internal\n */\nexport function parseError(error: ClerkAPIErrorJSON): ClerkAPIErrorInterface {\n return new ClerkAPIError(error);\n}\n\n/**\n * Converts a ClerkAPIError object into a ClerkAPIErrorJSON object.\n *\n * @internal\n */\nexport function errorToJSON(error: ClerkAPIError | null): ClerkAPIErrorJSON {\n return {\n code: error?.code || '',\n message: error?.message || '',\n long_message: error?.longMessage,\n meta: {\n param_name: error?.meta?.paramName,\n session_id: error?.meta?.sessionId,\n email_addresses: error?.meta?.emailAddresses,\n identifiers: error?.meta?.identifiers,\n zxcvbn: error?.meta?.zxcvbn,\n plan: error?.meta?.plan,\n is_plan_upgrade_possible: error?.meta?.isPlanUpgradePossible,\n },\n };\n}\n","import { createErrorTypeGuard } from './createErrorTypeGuard';\n\nexport interface ClerkErrorParams {\n /**\n * A message that describes the error. This is typically intented to be showed to the developers.\n * It should not be shown to the user or parsed directly as the message contents are not guaranteed\n * to be stable - use the `code` property instead.\n */\n message: string;\n /**\n * A machine-stable code that identifies the error.\n */\n code: string;\n /**\n * A user-friendly message that describes the error and can be displayed to the user.\n * This message defaults to English but can be usually translated to the user's language\n * by matching the `code` property to a localized message.\n */\n longMessage?: string;\n /**\n * The cause of the error, typically an `Error` instance that was caught and wrapped by the Clerk error handler.\n */\n cause?: Error;\n /**\n * A URL to the documentation for the error.\n */\n docsUrl?: string;\n}\n\n/**\n * A temporary placeholder, this will eventually be replaced with a\n * build-time flag that will actually perform DCE.\n */\nconst __DEV__ = true;\n\nexport class ClerkError extends Error {\n static kind = 'ClerkError';\n readonly clerkError = true as const;\n readonly code: string;\n readonly longMessage: string | undefined;\n readonly docsUrl: string | undefined;\n readonly cause: Error | undefined;\n\n get name() {\n return this.constructor.name;\n }\n\n constructor(opts: ClerkErrorParams) {\n super(new.target.formatMessage(new.target.kind, opts.message, opts.code, opts.docsUrl), { cause: opts.cause });\n Object.setPrototypeOf(this, ClerkError.prototype);\n this.code = opts.code;\n this.docsUrl = opts.docsUrl;\n this.longMessage = opts.longMessage;\n this.cause = opts.cause;\n }\n\n public toString() {\n return `[${this.name}]\\nMessage:${this.message}`;\n }\n\n protected static formatMessage(name: string, msg: string, code: string, docsUrl: string | undefined) {\n // Keeping the Clerk prefix for backward compatibility\n // msg = `${name}: ${msg.trim()}\\n\\n(code=\"${code}\")\\n\\n`;\n // We can remove the Clerk prefix in the next major version\n const prefix = 'Clerk:';\n const regex = new RegExp(prefix.replace(' ', '\\\\s*'), 'i');\n msg = msg.replace(regex, '');\n msg = `${prefix} ${msg.trim()}\\n\\n(code=\"${code}\")\\n\\n`;\n if (__DEV__ && docsUrl) {\n msg += `\\n\\nDocs: ${docsUrl}`;\n }\n return msg;\n }\n}\n\n/**\n * Type guard to check if a value is a ClerkError instance.\n */\nexport function isClerkError(val: unknown): val is ClerkError {\n const typeguard = createErrorTypeGuard(ClerkError);\n // Ths is the base error so we're being more defensive about the type guard\n return typeguard(val) || (!!val && typeof val === 'object' && 'clerkError' in val && val.clerkError === true);\n}\n","import type { ClerkAPIErrorJSON, ClerkAPIResponseError as ClerkAPIResponseErrorInterface } from '@clerk/types';\n\nimport { ClerkAPIError } from './clerkApiError';\nimport type { ClerkErrorParams } from './clerkError';\nimport { ClerkError } from './clerkError';\nimport { createErrorTypeGuard } from './createErrorTypeGuard';\n\ninterface ClerkAPIResponseOptions extends Omit<ClerkErrorParams, 'message' | 'code'> {\n data: ClerkAPIErrorJSON[];\n status: number;\n clerkTraceId?: string;\n retryAfter?: number;\n}\n\nexport class ClerkAPIResponseError extends ClerkError implements ClerkAPIResponseErrorInterface {\n static kind = 'ClerkAPIResponseError';\n status: number;\n clerkTraceId?: string;\n retryAfter?: number;\n errors: ClerkAPIError[];\n\n constructor(message: string, options: ClerkAPIResponseOptions) {\n const { data: errorsJson, status, clerkTraceId, retryAfter } = options;\n super({ ...options, message, code: 'api_response_error' });\n Object.setPrototypeOf(this, ClerkAPIResponseError.prototype);\n this.status = status;\n this.clerkTraceId = clerkTraceId;\n this.retryAfter = retryAfter;\n this.errors = (errorsJson || []).map(e => new ClerkAPIError(e));\n }\n\n public toString() {\n let message = `[${this.name}]\\nMessage:${this.message}\\nStatus:${this.status}\\nSerialized errors: ${this.errors.map(\n e => JSON.stringify(e),\n )}`;\n\n if (this.clerkTraceId) {\n message += `\\nClerk Trace ID: ${this.clerkTraceId}`;\n }\n\n return message;\n }\n\n // Override formatMessage to keep it unformatted for backward compatibility\n protected static override formatMessage(name: string, msg: string, _: string, __: string | undefined) {\n return msg;\n }\n}\n\n/**\n * Type guard to check if an error is a ClerkApiResponseError.\n * Can be called as a standalone function or as a method on an error object.\n *\n * @example\n * // As a standalone function\n * if (isClerkApiResponseError(error)) { ... }\n *\n * // As a method (when attached to error object)\n * if (error.isClerkApiResponseError()) { ... }\n */\nexport const isClerkApiResponseError = createErrorTypeGuard(ClerkAPIResponseError);\n","const DefaultMessages = Object.freeze({\n InvalidProxyUrlErrorMessage: `The proxyUrl passed to Clerk is invalid. The expected value for proxyUrl is an absolute URL or a relative path with a leading '/'. (key={{url}})`,\n InvalidPublishableKeyErrorMessage: `The publishableKey passed to Clerk is invalid. You can get your Publishable key at https://dashboard.clerk.com/last-active?path=api-keys. (key={{key}})`,\n MissingPublishableKeyErrorMessage: `Missing publishableKey. You can get your key at https://dashboard.clerk.com/last-active?path=api-keys.`,\n MissingSecretKeyErrorMessage: `Missing secretKey. You can get your key at https://dashboard.clerk.com/last-active?path=api-keys.`,\n MissingClerkProvider: `{{source}} can only be used within the <ClerkProvider /> component. Learn more: https://clerk.com/docs/components/clerk-provider`,\n});\n\ntype MessageKeys = keyof typeof DefaultMessages;\n\ntype Messages = Record<MessageKeys, string>;\n\ntype CustomMessages = Partial<Messages>;\n\nexport type ErrorThrowerOptions = {\n packageName: string;\n customMessages?: CustomMessages;\n};\n\nexport interface ErrorThrower {\n setPackageName(options: ErrorThrowerOptions): ErrorThrower;\n\n setMessages(options: ErrorThrowerOptions): ErrorThrower;\n\n throwInvalidPublishableKeyError(params: { key?: string }): never;\n\n throwInvalidProxyUrl(params: { url?: string }): never;\n\n throwMissingPublishableKeyError(): never;\n\n throwMissingSecretKeyError(): never;\n\n throwMissingClerkProviderError(params: { source?: string }): never;\n\n throw(message: string): never;\n}\n\n/**\n * Builds an error thrower.\n *\n * @internal\n */\nexport function buildErrorThrower({ packageName, customMessages }: ErrorThrowerOptions): ErrorThrower {\n let pkg = packageName;\n\n /**\n * Builds a message from a raw message and replacements.\n *\n * @internal\n */\n function buildMessage(rawMessage: string, replacements?: Record<string, string | number>) {\n if (!replacements) {\n return `${pkg}: ${rawMessage}`;\n }\n\n let msg = rawMessage;\n const matches = rawMessage.matchAll(/{{([a-zA-Z0-9-_]+)}}/g);\n\n for (const match of matches) {\n const replacement = (replacements[match[1]] || '').toString();\n msg = msg.replace(`{{${match[1]}}}`, replacement);\n }\n\n return `${pkg}: ${msg}`;\n }\n\n const messages = {\n ...DefaultMessages,\n ...customMessages,\n };\n\n return {\n setPackageName({ packageName }: ErrorThrowerOptions): ErrorThrower {\n if (typeof packageName === 'string') {\n pkg = packageName;\n }\n return this;\n },\n\n setMessages({ customMessages }: ErrorThrowerOptions): ErrorThrower {\n Object.assign(messages, customMessages || {});\n return this;\n },\n\n throwInvalidPublishableKeyError(params: { key?: string }): never {\n throw new Error(buildMessage(messages.InvalidPublishableKeyErrorMessage, params));\n },\n\n throwInvalidProxyUrl(params: { url?: string }): never {\n throw new Error(buildMessage(messages.InvalidProxyUrlErrorMessage, params));\n },\n\n throwMissingPublishableKeyError(): never {\n throw new Error(buildMessage(messages.MissingPublishableKeyErrorMessage));\n },\n\n throwMissingSecretKeyError(): never {\n throw new Error(buildMessage(messages.MissingSecretKeyErrorMessage));\n },\n\n throwMissingClerkProviderError(params: { source?: string }): never {\n throw new Error(buildMessage(messages.MissingClerkProvider, params));\n },\n\n throw(message: string): never {\n throw new Error(buildMessage(message));\n },\n };\n}\n","export class EmailLinkError extends Error {\n code: string;\n\n constructor(code: string) {\n super(code);\n this.code = code;\n this.name = 'EmailLinkError' as const;\n Object.setPrototypeOf(this, EmailLinkError.prototype);\n }\n}\n\n/**\n * @deprecated Use `EmailLinkErrorCodeStatus` instead.\n *\n * @internal\n */\nexport const EmailLinkErrorCode = {\n Expired: 'expired',\n Failed: 'failed',\n ClientMismatch: 'client_mismatch',\n};\n\nexport const EmailLinkErrorCodeStatus = {\n Expired: 'expired',\n Failed: 'failed',\n ClientMismatch: 'client_mismatch',\n} as const;\n","import type { ClerkErrorParams } from './clerkError';\nimport { ClerkError } from './clerkError';\nimport { createErrorTypeGuard } from './createErrorTypeGuard';\n\ntype ClerkRuntimeErrorOptions = Omit<ClerkErrorParams, 'message'>;\n\n/**\n * Custom error class for representing Clerk runtime errors.\n *\n * @class ClerkRuntimeError\n *\n * @example\n * throw new ClerkRuntimeError('An error occurred', { code: 'password_invalid' });\n */\nexport class ClerkRuntimeError extends ClerkError {\n static kind = 'ClerkRuntimeError';\n /**\n * @deprecated Use `clerkError` property instead. This property is maintained for backward compatibility.\n */\n readonly clerkRuntimeError = true as const;\n\n constructor(message: string, options: ClerkRuntimeErrorOptions) {\n super({ ...options, message });\n Object.setPrototypeOf(this, ClerkRuntimeError.prototype);\n }\n}\n\n/**\n * Type guard to check if an error is a ClerkRuntimeError.\n * Can be called as a standalone function or as a method on an error object.\n *\n * @example\n * // As a standalone function\n * if (isClerkRuntimeError(error)) { ... }\n *\n * // As a method (when attached to error object)\n * if (error.isClerkRuntimeError()) { ... }\n */\nexport const isClerkRuntimeError = createErrorTypeGuard(ClerkRuntimeError);\n","import { ClerkRuntimeError } from './clerkRuntimeError';\n\ntype ClerkWebAuthnErrorCode =\n // Generic\n | 'passkey_not_supported'\n | 'passkey_pa_not_supported'\n | 'passkey_invalid_rpID_or_domain'\n | 'passkey_already_exists'\n | 'passkey_operation_aborted'\n // Retrieval\n | 'passkey_retrieval_cancelled'\n | 'passkey_retrieval_failed'\n // Registration\n | 'passkey_registration_cancelled'\n | 'passkey_registration_failed';\n\nexport class ClerkWebAuthnError extends ClerkRuntimeError {\n /**\n * A unique code identifying the error, can be used for localization.\n */\n code: ClerkWebAuthnErrorCode;\n\n constructor(message: string, { code }: { code: ClerkWebAuthnErrorCode }) {\n super(message, { code });\n this.code = code;\n }\n}\n","import type { ClerkAPIResponseError } from './clerkApiResponseError';\nimport type { ClerkRuntimeError } from './clerkRuntimeError';\nimport type { EmailLinkError } from './emailLinkError';\nimport type { MetamaskError } from './metamaskError';\n\n/**\n * Checks if the provided error object is an unauthorized error.\n *\n * @internal\n *\n * @deprecated This is no longer used, and will be removed in the next major version.\n */\nexport function isUnauthorizedError(e: any): boolean {\n const status = e?.status;\n const code = e?.errors?.[0]?.code;\n return code === 'authentication_invalid' && status === 401;\n}\n\n/**\n * Checks if the provided error object is a captcha error.\n *\n * @internal\n */\nexport function isCaptchaError(e: ClerkAPIResponseError): boolean {\n return ['captcha_invalid', 'captcha_not_enabled', 'captcha_missing_token'].includes(e.errors[0].code);\n}\n\n/**\n * Checks if the provided error is a 4xx error.\n *\n * @internal\n */\nexport function is4xxError(e: any): boolean {\n const status = e?.status;\n return !!status && status >= 400 && status < 500;\n}\n\n/**\n * Checks if the provided error is a network error.\n *\n * @internal\n */\nexport function isNetworkError(e: any): boolean {\n // TODO: revise during error handling epic\n const message = (`${e.message}${e.name}` || '').toLowerCase().replace(/\\s+/g, '');\n return message.includes('networkerror');\n}\n\n/**\n * Checks if the provided error is either a ClerkAPIResponseError, a ClerkRuntimeError, or a MetamaskError.\n *\n * @internal\n */\nexport function isKnownError(error: any): error is ClerkAPIResponseError | ClerkRuntimeError | MetamaskError {\n return isClerkAPIResponseError(error) || isMetamaskError(error) || isClerkRuntimeError(error);\n}\n\n/**\n * Checks if the provided error is a ClerkAPIResponseError.\n *\n * @internal\n */\nexport function isClerkAPIResponseError(err: any): err is ClerkAPIResponseError {\n return err && 'clerkError' in err;\n}\n\n/**\n * Checks if the provided error object is an instance of ClerkRuntimeError.\n *\n * @param err - The error object to check.\n * @returns True if the error is a ClerkRuntimeError, false otherwise.\n *\n * @example\n * const error = new ClerkRuntimeError('An error occurred');\n * if (isClerkRuntimeError(error)) {\n * // Handle ClerkRuntimeError\n * console.error('ClerkRuntimeError:', error.message);\n * } else {\n * // Handle other errors\n * console.error('Other error:', error.message);\n * }\n */\nexport function isClerkRuntimeError(err: any): err is ClerkRuntimeError {\n return 'clerkRuntimeError' in err;\n}\n\n/**\n * Checks if the provided error is a Clerk runtime error indicating a reverification was cancelled.\n *\n * @internal\n */\nexport function isReverificationCancelledError(err: any) {\n return isClerkRuntimeError(err) && err.code === 'reverification_cancelled';\n}\n\n/**\n * Checks if the provided error is a Metamask error.\n *\n * @internal\n */\nexport function isMetamaskError(err: any): err is MetamaskError {\n return 'code' in err && [4001, 32602, 32603].includes(err.code) && 'message' in err;\n}\n\n/**\n * Checks if the provided error is clerk api response error indicating a user is locked.\n *\n * @internal\n */\nexport function isUserLockedError(err: any) {\n return isClerkAPIResponseError(err) && err.errors?.[0]?.code === 'user_locked';\n}\n\n/**\n * Checks if the provided error is a clerk api response error indicating a password was pwned.\n *\n * @internal\n */\nexport function isPasswordPwnedError(err: any) {\n return isClerkAPIResponseError(err) && err.errors?.[0]?.code === 'form_password_pwned';\n}\n\n/**\n * Checks if the provided error is an EmailLinkError.\n *\n * @internal\n */\nexport function isEmailLinkError(err: Error): err is EmailLinkError {\n return err.name === 'EmailLinkError';\n}\n"],"mappings":"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","names":["packageName","customMessages","isClerkRuntimeError"]}
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  versionSelector
3
- } from "./chunk-57A2UL5K.mjs";
3
+ } from "./chunk-Y3SCV4WN.mjs";
4
4
  import {
5
5
  isValidProxyUrl,
6
6
  proxyUrlToAbsoluteURL
@@ -14,7 +14,7 @@ import {
14
14
  import {
15
15
  ClerkRuntimeError,
16
16
  buildErrorThrower
17
- } from "./chunk-LAUDJDHO.mjs";
17
+ } from "./chunk-AXHU6TXE.mjs";
18
18
  import {
19
19
  createDevOrStagingUrlCache,
20
20
  parsePublishableKey
@@ -149,4 +149,4 @@ export {
149
149
  clerkJsScriptUrl,
150
150
  buildClerkJsScriptAttributes
151
151
  };
152
- //# sourceMappingURL=chunk-NCCT55PY.mjs.map
152
+ //# sourceMappingURL=chunk-H3ZGMQBC.mjs.map
@@ -1,12 +1,12 @@
1
1
  // src/versionSelector.ts
2
- var versionSelector = (clerkJSVersion, packageVersion = "5.101.0") => {
2
+ var versionSelector = (clerkJSVersion, packageVersion = "5.101.1-canary.v20251016143055") => {
3
3
  if (clerkJSVersion) {
4
4
  return clerkJSVersion;
5
5
  }
6
6
  const prereleaseTag = getPrereleaseTag(packageVersion);
7
7
  if (prereleaseTag) {
8
8
  if (prereleaseTag === "snapshot") {
9
- return "5.101.0";
9
+ return "5.101.1-canary.v20251016143055";
10
10
  }
11
11
  return prereleaseTag;
12
12
  }
@@ -19,4 +19,4 @@ export {
19
19
  versionSelector,
20
20
  getMajorVersion
21
21
  };
22
- //# sourceMappingURL=chunk-57A2UL5K.mjs.map
22
+ //# sourceMappingURL=chunk-Y3SCV4WN.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/versionSelector.ts"],"sourcesContent":["/**\n * This version selector is a bit complicated, so here is the flow:\n * 1. Use the clerkJSVersion prop on the provider\n * 2. Use the exact `@clerk/clerk-js` version if it is a `@snapshot` prerelease\n * 3. Use the prerelease tag of `@clerk/clerk-js` or the packageVersion provided\n * 4. Fallback to the major version of `@clerk/clerk-js` or the packageVersion provided\n * @param clerkJSVersion - The optional clerkJSVersion prop on the provider\n * @param packageVersion - The version of `@clerk/clerk-js` that will be used if an explicit version is not provided\n * @returns The npm tag, version or major version to use\n */\nexport const versionSelector = (clerkJSVersion: string | undefined, packageVersion = JS_PACKAGE_VERSION) => {\n if (clerkJSVersion) {\n return clerkJSVersion;\n }\n\n const prereleaseTag = getPrereleaseTag(packageVersion);\n if (prereleaseTag) {\n if (prereleaseTag === 'snapshot') {\n return JS_PACKAGE_VERSION;\n }\n\n return prereleaseTag;\n }\n\n return getMajorVersion(packageVersion);\n};\n\nconst getPrereleaseTag = (packageVersion: string) =>\n packageVersion\n .trim()\n .replace(/^v/, '')\n .match(/-(.+?)(\\.|$)/)?.[1];\n\nexport const getMajorVersion = (packageVersion: string) => packageVersion.trim().replace(/^v/, '').split('.')[0];\n"],"mappings":";AAUO,IAAM,kBAAkB,CAAC,gBAAoC,iBAAiB,cAAuB;AAC1G,MAAI,gBAAgB;AAClB,WAAO;AAAA,EACT;AAEA,QAAM,gBAAgB,iBAAiB,cAAc;AACrD,MAAI,eAAe;AACjB,QAAI,kBAAkB,YAAY;AAChC,aAAO;AAAA,IACT;AAEA,WAAO;AAAA,EACT;AAEA,SAAO,gBAAgB,cAAc;AACvC;AAEA,IAAM,mBAAmB,CAAC,mBACxB,eACG,KAAK,EACL,QAAQ,MAAM,EAAE,EAChB,MAAM,cAAc,IAAI,CAAC;AAEvB,IAAM,kBAAkB,CAAC,mBAA2B,eAAe,KAAK,EAAE,QAAQ,MAAM,EAAE,EAAE,MAAM,GAAG,EAAE,CAAC;","names":[]}
1
+ {"version":3,"sources":["../src/versionSelector.ts"],"sourcesContent":["/**\n * This version selector is a bit complicated, so here is the flow:\n * 1. Use the clerkJSVersion prop on the provider\n * 2. Use the exact `@clerk/clerk-js` version if it is a `@snapshot` prerelease\n * 3. Use the prerelease tag of `@clerk/clerk-js` or the packageVersion provided\n * 4. Fallback to the major version of `@clerk/clerk-js` or the packageVersion provided\n * @param clerkJSVersion - The optional clerkJSVersion prop on the provider\n * @param packageVersion - The version of `@clerk/clerk-js` that will be used if an explicit version is not provided\n * @returns The npm tag, version or major version to use\n */\nexport const versionSelector = (clerkJSVersion: string | undefined, packageVersion = JS_PACKAGE_VERSION) => {\n if (clerkJSVersion) {\n return clerkJSVersion;\n }\n\n const prereleaseTag = getPrereleaseTag(packageVersion);\n if (prereleaseTag) {\n if (prereleaseTag === 'snapshot') {\n return JS_PACKAGE_VERSION;\n }\n\n return prereleaseTag;\n }\n\n return getMajorVersion(packageVersion);\n};\n\nconst getPrereleaseTag = (packageVersion: string) =>\n packageVersion\n .trim()\n .replace(/^v/, '')\n .match(/-(.+?)(\\.|$)/)?.[1];\n\nexport const getMajorVersion = (packageVersion: string) => packageVersion.trim().replace(/^v/, '').split('.')[0];\n"],"mappings":";AAUO,IAAM,kBAAkB,CAAC,gBAAoC,iBAAiB,qCAAuB;AAC1G,MAAI,gBAAgB;AAClB,WAAO;AAAA,EACT;AAEA,QAAM,gBAAgB,iBAAiB,cAAc;AACrD,MAAI,eAAe;AACjB,QAAI,kBAAkB,YAAY;AAChC,aAAO;AAAA,IACT;AAEA,WAAO;AAAA,EACT;AAEA,SAAO,gBAAgB,cAAc;AACvC;AAEA,IAAM,mBAAmB,CAAC,mBACxB,eACG,KAAK,EACL,QAAQ,MAAM,EAAE,EAChB,MAAM,cAAc,IAAI,CAAC;AAEvB,IAAM,kBAAkB,CAAC,mBAA2B,eAAe,KAAK,EAAE,QAAQ,MAAM,EAAE,EAAE,MAAM,GAAG,EAAE,CAAC;","names":[]}
@@ -5,7 +5,7 @@ type ClerkApiErrorMeta = Record<string, unknown>;
5
5
  * This error contains the specific error message, code, and any additional metadata that was returned by the Clerk API.
6
6
  */
7
7
  declare class ClerkAPIError<Meta extends ClerkApiErrorMeta = any> implements ClerkAPIError$1 {
8
- readonly name = "ClerkApiError";
8
+ static kind: string;
9
9
  readonly code: string;
10
10
  readonly message: string;
11
11
  readonly longMessage: string | undefined;
@@ -41,7 +41,7 @@ interface ClerkErrorParams {
41
41
  docsUrl?: string;
42
42
  }
43
43
  declare class ClerkError extends Error {
44
- static name: string;
44
+ static kind: string;
45
45
  readonly clerkError: true;
46
46
  readonly code: string;
47
47
  readonly longMessage: string | undefined;
@@ -60,7 +60,7 @@ interface ClerkAPIResponseOptions extends Omit<ClerkErrorParams, 'message' | 'co
60
60
  retryAfter?: number;
61
61
  }
62
62
  declare class ClerkAPIResponseError extends ClerkError implements ClerkAPIResponseError$1 {
63
- static name: string;
63
+ static kind: string;
64
64
  status: number;
65
65
  clerkTraceId?: string;
66
66
  retryAfter?: number;
@@ -5,7 +5,7 @@ type ClerkApiErrorMeta = Record<string, unknown>;
5
5
  * This error contains the specific error message, code, and any additional metadata that was returned by the Clerk API.
6
6
  */
7
7
  declare class ClerkAPIError<Meta extends ClerkApiErrorMeta = any> implements ClerkAPIError$1 {
8
- readonly name = "ClerkApiError";
8
+ static kind: string;
9
9
  readonly code: string;
10
10
  readonly message: string;
11
11
  readonly longMessage: string | undefined;
@@ -41,7 +41,7 @@ interface ClerkErrorParams {
41
41
  docsUrl?: string;
42
42
  }
43
43
  declare class ClerkError extends Error {
44
- static name: string;
44
+ static kind: string;
45
45
  readonly clerkError: true;
46
46
  readonly code: string;
47
47
  readonly longMessage: string | undefined;
@@ -60,7 +60,7 @@ interface ClerkAPIResponseOptions extends Omit<ClerkErrorParams, 'message' | 'co
60
60
  retryAfter?: number;
61
61
  }
62
62
  declare class ClerkAPIResponseError extends ClerkError implements ClerkAPIResponseError$1 {
63
- static name: string;
63
+ static kind: string;
64
64
  status: number;
65
65
  clerkTraceId?: string;
66
66
  retryAfter?: number;
package/dist/error.d.mts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { ClerkAPIErrorJSON, ClerkAPIError as ClerkAPIError$1 } from '@clerk/types';
2
- import { C as ClerkAPIError, b as ClerkError, c as ClerkErrorParams, a as ClerkAPIResponseError } from './clerkApiResponseError-CeAPWrkq.mjs';
2
+ import { C as ClerkAPIError, b as ClerkError, c as ClerkErrorParams, a as ClerkAPIResponseError } from './clerkApiResponseError-CpTaa-eQ.mjs';
3
3
 
4
4
  /**
5
5
  * Parses an array of ClerkAPIErrorJSON objects into an array of ClerkAPIError objects.
@@ -95,7 +95,7 @@ type ClerkRuntimeErrorOptions = Omit<ClerkErrorParams, 'message'>;
95
95
  * throw new ClerkRuntimeError('An error occurred', { code: 'password_invalid' });
96
96
  */
97
97
  declare class ClerkRuntimeError extends ClerkError {
98
- static name: string;
98
+ static kind: string;
99
99
  /**
100
100
  * @deprecated Use `clerkError` property instead. This property is maintained for backward compatibility.
101
101
  */
package/dist/error.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { ClerkAPIErrorJSON, ClerkAPIError as ClerkAPIError$1 } from '@clerk/types';
2
- import { C as ClerkAPIError, b as ClerkError, c as ClerkErrorParams, a as ClerkAPIResponseError } from './clerkApiResponseError-CeAPWrkq.js';
2
+ import { C as ClerkAPIError, b as ClerkError, c as ClerkErrorParams, a as ClerkAPIResponseError } from './clerkApiResponseError-CpTaa-eQ.js';
3
3
 
4
4
  /**
5
5
  * Parses an array of ClerkAPIErrorJSON objects into an array of ClerkAPIError objects.
@@ -95,7 +95,7 @@ type ClerkRuntimeErrorOptions = Omit<ClerkErrorParams, 'message'>;
95
95
  * throw new ClerkRuntimeError('An error occurred', { code: 'password_invalid' });
96
96
  */
97
97
  declare class ClerkRuntimeError extends ClerkError {
98
- static name: string;
98
+ static kind: string;
99
99
  /**
100
100
  * @deprecated Use `clerkError` property instead. This property is maintained for backward compatibility.
101
101
  */
package/dist/error.js CHANGED
@@ -51,7 +51,7 @@ function createErrorTypeGuard(ErrorClass) {
51
51
  function typeGuard(error) {
52
52
  const target = error ?? this;
53
53
  if (!target) {
54
- throw new TypeError(`${ErrorClass.name} type guard requires an error object`);
54
+ throw new TypeError(`${ErrorClass.kind || ErrorClass.name} type guard requires an error object`);
55
55
  }
56
56
  return target instanceof ErrorClass;
57
57
  }
@@ -60,7 +60,7 @@ function createErrorTypeGuard(ErrorClass) {
60
60
 
61
61
  // src/errors/clerkApiError.ts
62
62
  var ClerkAPIError = class {
63
- name = "ClerkApiError";
63
+ static kind = "ClerkApiError";
64
64
  code;
65
65
  message;
66
66
  longMessage;
@@ -118,7 +118,7 @@ function errorToJSON(error) {
118
118
  // src/errors/clerkError.ts
119
119
  var __DEV__ = true;
120
120
  var ClerkError = class _ClerkError extends Error {
121
- static name = "ClerkError";
121
+ static kind = "ClerkError";
122
122
  clerkError = true;
123
123
  code;
124
124
  longMessage;
@@ -128,7 +128,7 @@ var ClerkError = class _ClerkError extends Error {
128
128
  return this.constructor.name;
129
129
  }
130
130
  constructor(opts) {
131
- super(new.target.formatMessage(new.target.name, opts.message, opts.code, opts.docsUrl), { cause: opts.cause });
131
+ super(new.target.formatMessage(new.target.kind, opts.message, opts.code, opts.docsUrl), { cause: opts.cause });
132
132
  Object.setPrototypeOf(this, _ClerkError.prototype);
133
133
  this.code = opts.code;
134
134
  this.docsUrl = opts.docsUrl;
@@ -159,7 +159,7 @@ Docs: ${docsUrl}`;
159
159
 
160
160
  // src/errors/clerkApiResponseError.ts
161
161
  var ClerkAPIResponseError = class _ClerkAPIResponseError extends ClerkError {
162
- static name = "ClerkAPIResponseError";
162
+ static kind = "ClerkAPIResponseError";
163
163
  status;
164
164
  clerkTraceId;
165
165
  retryAfter;
@@ -274,7 +274,7 @@ var EmailLinkErrorCodeStatus = {
274
274
 
275
275
  // src/errors/clerkRuntimeError.ts
276
276
  var ClerkRuntimeError = class _ClerkRuntimeError extends ClerkError {
277
- static name = "ClerkRuntimeError";
277
+ static kind = "ClerkRuntimeError";
278
278
  /**
279
279
  * @deprecated Use `clerkError` property instead. This property is maintained for backward compatibility.
280
280
  */
package/dist/error.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/error.ts","../src/errors/createErrorTypeGuard.ts","../src/errors/clerkApiError.ts","../src/errors/parseError.ts","../src/errors/clerkError.ts","../src/errors/clerkApiResponseError.ts","../src/errors/errorThrower.ts","../src/errors/emailLinkError.ts","../src/errors/clerkRuntimeError.ts","../src/errors/webAuthNError.ts","../src/errors/helpers.ts"],"sourcesContent":["export { errorToJSON, parseError, parseErrors } from './errors/parseError';\n\nexport { ClerkAPIError } from './errors/clerkApiError';\nexport { ClerkAPIResponseError } from './errors/clerkApiResponseError';\n\nexport { buildErrorThrower, type ErrorThrower, type ErrorThrowerOptions } from './errors/errorThrower';\n\nexport { EmailLinkError, EmailLinkErrorCode, EmailLinkErrorCodeStatus } from './errors/emailLinkError';\n\nexport type { MetamaskError } from './errors/metamaskError';\n\nexport { ClerkRuntimeError } from './errors/clerkRuntimeError';\n\nexport { ClerkWebAuthnError } from './errors/webAuthNError';\n\nexport {\n is4xxError,\n isCaptchaError,\n isClerkAPIResponseError,\n isClerkRuntimeError,\n isEmailLinkError,\n isKnownError,\n isMetamaskError,\n isNetworkError,\n isPasswordPwnedError,\n isReverificationCancelledError,\n isUnauthorizedError,\n isUserLockedError,\n} from './errors/helpers';\n","/* eslint-disable jsdoc/require-jsdoc */\n\ntype Value = unknown;\n\n/**\n * Creates a type guard function for any error class.\n * The returned function can be called as a standalone function or as a method on an error object.\n *\n * @example\n * ```typescript\n * class MyError extends Error {}\n * const isMyError = createErrorTypeGuard(MyError);\n *\n * // As a standalone function\n * if (isMyError(error)) { ... }\n *\n * // As a method (when attached to error object)\n * if (error.isMyError()) { ... }\n * ```\n */\nexport function createErrorTypeGuard<T extends new (...args: any[]) => Value>(\n ErrorClass: T,\n): {\n (error: Value): error is InstanceType<T>;\n (this: Value): this is InstanceType<T>;\n} {\n function typeGuard(this: Value, error?: Value): error is InstanceType<T> {\n const target = error ?? this;\n if (!target) {\n throw new TypeError(`${ErrorClass.name} type guard requires an error object`);\n }\n return target instanceof ErrorClass;\n }\n\n return typeGuard as {\n (error: Value): error is InstanceType<T>;\n (this: Value): this is InstanceType<T>;\n };\n}\n","import type { ClerkAPIError as ClerkAPIErrorInterface, ClerkAPIErrorJSON } from '@clerk/types';\n\nimport { createErrorTypeGuard } from './createErrorTypeGuard';\n\nexport type ClerkApiErrorMeta = Record<string, unknown>;\n\n/**\n * This error contains the specific error message, code, and any additional metadata that was returned by the Clerk API.\n */\nexport class ClerkAPIError<Meta extends ClerkApiErrorMeta = any> implements ClerkAPIErrorInterface {\n readonly name = 'ClerkApiError';\n readonly code: string;\n readonly message: string;\n readonly longMessage: string | undefined;\n readonly meta: Meta;\n\n constructor(json: ClerkAPIErrorJSON) {\n const parsedError = this.parseJsonError(json);\n this.code = parsedError.code;\n this.message = parsedError.message;\n this.longMessage = parsedError.longMessage;\n this.meta = parsedError.meta;\n }\n\n private parseJsonError(json: ClerkAPIErrorJSON) {\n return {\n code: json.code,\n message: json.message,\n longMessage: json.long_message,\n meta: {\n paramName: json.meta?.param_name,\n sessionId: json.meta?.session_id,\n emailAddresses: json.meta?.email_addresses,\n identifiers: json.meta?.identifiers,\n zxcvbn: json.meta?.zxcvbn,\n plan: json.meta?.plan,\n isPlanUpgradePossible: json.meta?.is_plan_upgrade_possible,\n } as unknown as Meta,\n };\n }\n}\n\n/**\n * Type guard to check if a value is a ClerkApiError instance.\n */\nexport const isClerkApiError = createErrorTypeGuard(ClerkAPIError);\n","import type { ClerkAPIError as ClerkAPIErrorInterface, ClerkAPIErrorJSON } from '@clerk/types';\n\nimport { ClerkAPIError } from './clerkApiError';\n\n/**\n * Parses an array of ClerkAPIErrorJSON objects into an array of ClerkAPIError objects.\n *\n * @internal\n */\nexport function parseErrors(data: ClerkAPIErrorJSON[] = []): ClerkAPIErrorInterface[] {\n return data.length > 0 ? data.map(e => new ClerkAPIError(e)) : [];\n}\n\n/**\n * Parses a ClerkAPIErrorJSON object into a ClerkAPIError object.\n *\n * @deprecated Use `ClerkAPIError` class instead\n *\n * @internal\n */\nexport function parseError(error: ClerkAPIErrorJSON): ClerkAPIErrorInterface {\n return new ClerkAPIError(error);\n}\n\n/**\n * Converts a ClerkAPIError object into a ClerkAPIErrorJSON object.\n *\n * @internal\n */\nexport function errorToJSON(error: ClerkAPIError | null): ClerkAPIErrorJSON {\n return {\n code: error?.code || '',\n message: error?.message || '',\n long_message: error?.longMessage,\n meta: {\n param_name: error?.meta?.paramName,\n session_id: error?.meta?.sessionId,\n email_addresses: error?.meta?.emailAddresses,\n identifiers: error?.meta?.identifiers,\n zxcvbn: error?.meta?.zxcvbn,\n plan: error?.meta?.plan,\n is_plan_upgrade_possible: error?.meta?.isPlanUpgradePossible,\n },\n };\n}\n","import { createErrorTypeGuard } from './createErrorTypeGuard';\n\nexport interface ClerkErrorParams {\n /**\n * A message that describes the error. This is typically intented to be showed to the developers.\n * It should not be shown to the user or parsed directly as the message contents are not guaranteed\n * to be stable - use the `code` property instead.\n */\n message: string;\n /**\n * A machine-stable code that identifies the error.\n */\n code: string;\n /**\n * A user-friendly message that describes the error and can be displayed to the user.\n * This message defaults to English but can be usually translated to the user's language\n * by matching the `code` property to a localized message.\n */\n longMessage?: string;\n /**\n * The cause of the error, typically an `Error` instance that was caught and wrapped by the Clerk error handler.\n */\n cause?: Error;\n /**\n * A URL to the documentation for the error.\n */\n docsUrl?: string;\n}\n\n/**\n * A temporary placeholder, this will eventually be replaced with a\n * build-time flag that will actually perform DCE.\n */\nconst __DEV__ = true;\n\nexport class ClerkError extends Error {\n static name = 'ClerkError';\n readonly clerkError = true as const;\n readonly code: string;\n readonly longMessage: string | undefined;\n readonly docsUrl: string | undefined;\n readonly cause: Error | undefined;\n\n get name() {\n return this.constructor.name;\n }\n\n constructor(opts: ClerkErrorParams) {\n super(new.target.formatMessage(new.target.name, opts.message, opts.code, opts.docsUrl), { cause: opts.cause });\n Object.setPrototypeOf(this, ClerkError.prototype);\n this.code = opts.code;\n this.docsUrl = opts.docsUrl;\n this.longMessage = opts.longMessage;\n this.cause = opts.cause;\n }\n\n public toString() {\n return `[${this.name}]\\nMessage:${this.message}`;\n }\n\n protected static formatMessage(name: string, msg: string, code: string, docsUrl: string | undefined) {\n // Keeping the Clerk prefix for backward compatibility\n // msg = `${name}: ${msg.trim()}\\n\\n(code=\"${code}\")\\n\\n`;\n // We can remove the Clerk prefix in the next major version\n const prefix = 'Clerk:';\n const regex = new RegExp(prefix.replace(' ', '\\\\s*'), 'i');\n msg = msg.replace(regex, '');\n msg = `${prefix} ${msg.trim()}\\n\\n(code=\"${code}\")\\n\\n`;\n if (__DEV__ && docsUrl) {\n msg += `\\n\\nDocs: ${docsUrl}`;\n }\n return msg;\n }\n}\n\n/**\n * Type guard to check if a value is a ClerkError instance.\n */\nexport function isClerkError(val: unknown): val is ClerkError {\n const typeguard = createErrorTypeGuard(ClerkError);\n // Ths is the base error so we're being more defensive about the type guard\n return typeguard(val) || (!!val && typeof val === 'object' && 'clerkError' in val && val.clerkError === true);\n}\n","import type { ClerkAPIErrorJSON, ClerkAPIResponseError as ClerkAPIResponseErrorInterface } from '@clerk/types';\n\nimport { ClerkAPIError } from './clerkApiError';\nimport type { ClerkErrorParams } from './clerkError';\nimport { ClerkError } from './clerkError';\nimport { createErrorTypeGuard } from './createErrorTypeGuard';\n\ninterface ClerkAPIResponseOptions extends Omit<ClerkErrorParams, 'message' | 'code'> {\n data: ClerkAPIErrorJSON[];\n status: number;\n clerkTraceId?: string;\n retryAfter?: number;\n}\n\nexport class ClerkAPIResponseError extends ClerkError implements ClerkAPIResponseErrorInterface {\n static name = 'ClerkAPIResponseError';\n status: number;\n clerkTraceId?: string;\n retryAfter?: number;\n errors: ClerkAPIError[];\n\n constructor(message: string, options: ClerkAPIResponseOptions) {\n const { data: errorsJson, status, clerkTraceId, retryAfter } = options;\n super({ ...options, message, code: 'api_response_error' });\n Object.setPrototypeOf(this, ClerkAPIResponseError.prototype);\n this.status = status;\n this.clerkTraceId = clerkTraceId;\n this.retryAfter = retryAfter;\n this.errors = (errorsJson || []).map(e => new ClerkAPIError(e));\n }\n\n public toString() {\n let message = `[${this.name}]\\nMessage:${this.message}\\nStatus:${this.status}\\nSerialized errors: ${this.errors.map(\n e => JSON.stringify(e),\n )}`;\n\n if (this.clerkTraceId) {\n message += `\\nClerk Trace ID: ${this.clerkTraceId}`;\n }\n\n return message;\n }\n\n // Override formatMessage to keep it unformatted for backward compatibility\n protected static override formatMessage(name: string, msg: string, _: string, __: string | undefined) {\n return msg;\n }\n}\n\n/**\n * Type guard to check if an error is a ClerkApiResponseError.\n * Can be called as a standalone function or as a method on an error object.\n *\n * @example\n * // As a standalone function\n * if (isClerkApiResponseError(error)) { ... }\n *\n * // As a method (when attached to error object)\n * if (error.isClerkApiResponseError()) { ... }\n */\nexport const isClerkApiResponseError = createErrorTypeGuard(ClerkAPIResponseError);\n","const DefaultMessages = Object.freeze({\n InvalidProxyUrlErrorMessage: `The proxyUrl passed to Clerk is invalid. The expected value for proxyUrl is an absolute URL or a relative path with a leading '/'. (key={{url}})`,\n InvalidPublishableKeyErrorMessage: `The publishableKey passed to Clerk is invalid. You can get your Publishable key at https://dashboard.clerk.com/last-active?path=api-keys. (key={{key}})`,\n MissingPublishableKeyErrorMessage: `Missing publishableKey. You can get your key at https://dashboard.clerk.com/last-active?path=api-keys.`,\n MissingSecretKeyErrorMessage: `Missing secretKey. You can get your key at https://dashboard.clerk.com/last-active?path=api-keys.`,\n MissingClerkProvider: `{{source}} can only be used within the <ClerkProvider /> component. Learn more: https://clerk.com/docs/components/clerk-provider`,\n});\n\ntype MessageKeys = keyof typeof DefaultMessages;\n\ntype Messages = Record<MessageKeys, string>;\n\ntype CustomMessages = Partial<Messages>;\n\nexport type ErrorThrowerOptions = {\n packageName: string;\n customMessages?: CustomMessages;\n};\n\nexport interface ErrorThrower {\n setPackageName(options: ErrorThrowerOptions): ErrorThrower;\n\n setMessages(options: ErrorThrowerOptions): ErrorThrower;\n\n throwInvalidPublishableKeyError(params: { key?: string }): never;\n\n throwInvalidProxyUrl(params: { url?: string }): never;\n\n throwMissingPublishableKeyError(): never;\n\n throwMissingSecretKeyError(): never;\n\n throwMissingClerkProviderError(params: { source?: string }): never;\n\n throw(message: string): never;\n}\n\n/**\n * Builds an error thrower.\n *\n * @internal\n */\nexport function buildErrorThrower({ packageName, customMessages }: ErrorThrowerOptions): ErrorThrower {\n let pkg = packageName;\n\n /**\n * Builds a message from a raw message and replacements.\n *\n * @internal\n */\n function buildMessage(rawMessage: string, replacements?: Record<string, string | number>) {\n if (!replacements) {\n return `${pkg}: ${rawMessage}`;\n }\n\n let msg = rawMessage;\n const matches = rawMessage.matchAll(/{{([a-zA-Z0-9-_]+)}}/g);\n\n for (const match of matches) {\n const replacement = (replacements[match[1]] || '').toString();\n msg = msg.replace(`{{${match[1]}}}`, replacement);\n }\n\n return `${pkg}: ${msg}`;\n }\n\n const messages = {\n ...DefaultMessages,\n ...customMessages,\n };\n\n return {\n setPackageName({ packageName }: ErrorThrowerOptions): ErrorThrower {\n if (typeof packageName === 'string') {\n pkg = packageName;\n }\n return this;\n },\n\n setMessages({ customMessages }: ErrorThrowerOptions): ErrorThrower {\n Object.assign(messages, customMessages || {});\n return this;\n },\n\n throwInvalidPublishableKeyError(params: { key?: string }): never {\n throw new Error(buildMessage(messages.InvalidPublishableKeyErrorMessage, params));\n },\n\n throwInvalidProxyUrl(params: { url?: string }): never {\n throw new Error(buildMessage(messages.InvalidProxyUrlErrorMessage, params));\n },\n\n throwMissingPublishableKeyError(): never {\n throw new Error(buildMessage(messages.MissingPublishableKeyErrorMessage));\n },\n\n throwMissingSecretKeyError(): never {\n throw new Error(buildMessage(messages.MissingSecretKeyErrorMessage));\n },\n\n throwMissingClerkProviderError(params: { source?: string }): never {\n throw new Error(buildMessage(messages.MissingClerkProvider, params));\n },\n\n throw(message: string): never {\n throw new Error(buildMessage(message));\n },\n };\n}\n","export class EmailLinkError extends Error {\n code: string;\n\n constructor(code: string) {\n super(code);\n this.code = code;\n this.name = 'EmailLinkError' as const;\n Object.setPrototypeOf(this, EmailLinkError.prototype);\n }\n}\n\n/**\n * @deprecated Use `EmailLinkErrorCodeStatus` instead.\n *\n * @internal\n */\nexport const EmailLinkErrorCode = {\n Expired: 'expired',\n Failed: 'failed',\n ClientMismatch: 'client_mismatch',\n};\n\nexport const EmailLinkErrorCodeStatus = {\n Expired: 'expired',\n Failed: 'failed',\n ClientMismatch: 'client_mismatch',\n} as const;\n","import type { ClerkErrorParams } from './clerkError';\nimport { ClerkError } from './clerkError';\nimport { createErrorTypeGuard } from './createErrorTypeGuard';\n\ntype ClerkRuntimeErrorOptions = Omit<ClerkErrorParams, 'message'>;\n\n/**\n * Custom error class for representing Clerk runtime errors.\n *\n * @class ClerkRuntimeError\n *\n * @example\n * throw new ClerkRuntimeError('An error occurred', { code: 'password_invalid' });\n */\nexport class ClerkRuntimeError extends ClerkError {\n static name = 'ClerkRuntimeError';\n /**\n * @deprecated Use `clerkError` property instead. This property is maintained for backward compatibility.\n */\n readonly clerkRuntimeError = true as const;\n\n constructor(message: string, options: ClerkRuntimeErrorOptions) {\n super({ ...options, message });\n Object.setPrototypeOf(this, ClerkRuntimeError.prototype);\n }\n}\n\n/**\n * Type guard to check if an error is a ClerkRuntimeError.\n * Can be called as a standalone function or as a method on an error object.\n *\n * @example\n * // As a standalone function\n * if (isClerkRuntimeError(error)) { ... }\n *\n * // As a method (when attached to error object)\n * if (error.isClerkRuntimeError()) { ... }\n */\nexport const isClerkRuntimeError = createErrorTypeGuard(ClerkRuntimeError);\n","import { ClerkRuntimeError } from './clerkRuntimeError';\n\ntype ClerkWebAuthnErrorCode =\n // Generic\n | 'passkey_not_supported'\n | 'passkey_pa_not_supported'\n | 'passkey_invalid_rpID_or_domain'\n | 'passkey_already_exists'\n | 'passkey_operation_aborted'\n // Retrieval\n | 'passkey_retrieval_cancelled'\n | 'passkey_retrieval_failed'\n // Registration\n | 'passkey_registration_cancelled'\n | 'passkey_registration_failed';\n\nexport class ClerkWebAuthnError extends ClerkRuntimeError {\n /**\n * A unique code identifying the error, can be used for localization.\n */\n code: ClerkWebAuthnErrorCode;\n\n constructor(message: string, { code }: { code: ClerkWebAuthnErrorCode }) {\n super(message, { code });\n this.code = code;\n }\n}\n","import type { ClerkAPIResponseError } from './clerkApiResponseError';\nimport type { ClerkRuntimeError } from './clerkRuntimeError';\nimport type { EmailLinkError } from './emailLinkError';\nimport type { MetamaskError } from './metamaskError';\n\n/**\n * Checks if the provided error object is an unauthorized error.\n *\n * @internal\n *\n * @deprecated This is no longer used, and will be removed in the next major version.\n */\nexport function isUnauthorizedError(e: any): boolean {\n const status = e?.status;\n const code = e?.errors?.[0]?.code;\n return code === 'authentication_invalid' && status === 401;\n}\n\n/**\n * Checks if the provided error object is a captcha error.\n *\n * @internal\n */\nexport function isCaptchaError(e: ClerkAPIResponseError): boolean {\n return ['captcha_invalid', 'captcha_not_enabled', 'captcha_missing_token'].includes(e.errors[0].code);\n}\n\n/**\n * Checks if the provided error is a 4xx error.\n *\n * @internal\n */\nexport function is4xxError(e: any): boolean {\n const status = e?.status;\n return !!status && status >= 400 && status < 500;\n}\n\n/**\n * Checks if the provided error is a network error.\n *\n * @internal\n */\nexport function isNetworkError(e: any): boolean {\n // TODO: revise during error handling epic\n const message = (`${e.message}${e.name}` || '').toLowerCase().replace(/\\s+/g, '');\n return message.includes('networkerror');\n}\n\n/**\n * Checks if the provided error is either a ClerkAPIResponseError, a ClerkRuntimeError, or a MetamaskError.\n *\n * @internal\n */\nexport function isKnownError(error: any): error is ClerkAPIResponseError | ClerkRuntimeError | MetamaskError {\n return isClerkAPIResponseError(error) || isMetamaskError(error) || isClerkRuntimeError(error);\n}\n\n/**\n * Checks if the provided error is a ClerkAPIResponseError.\n *\n * @internal\n */\nexport function isClerkAPIResponseError(err: any): err is ClerkAPIResponseError {\n return err && 'clerkError' in err;\n}\n\n/**\n * Checks if the provided error object is an instance of ClerkRuntimeError.\n *\n * @param err - The error object to check.\n * @returns True if the error is a ClerkRuntimeError, false otherwise.\n *\n * @example\n * const error = new ClerkRuntimeError('An error occurred');\n * if (isClerkRuntimeError(error)) {\n * // Handle ClerkRuntimeError\n * console.error('ClerkRuntimeError:', error.message);\n * } else {\n * // Handle other errors\n * console.error('Other error:', error.message);\n * }\n */\nexport function isClerkRuntimeError(err: any): err is ClerkRuntimeError {\n return 'clerkRuntimeError' in err;\n}\n\n/**\n * Checks if the provided error is a Clerk runtime error indicating a reverification was cancelled.\n *\n * @internal\n */\nexport function isReverificationCancelledError(err: any) {\n return isClerkRuntimeError(err) && err.code === 'reverification_cancelled';\n}\n\n/**\n * Checks if the provided error is a Metamask error.\n *\n * @internal\n */\nexport function isMetamaskError(err: any): err is MetamaskError {\n return 'code' in err && [4001, 32602, 32603].includes(err.code) && 'message' in err;\n}\n\n/**\n * Checks if the provided error is clerk api response error indicating a user is locked.\n *\n * @internal\n */\nexport function isUserLockedError(err: any) {\n return isClerkAPIResponseError(err) && err.errors?.[0]?.code === 'user_locked';\n}\n\n/**\n * Checks if the provided error is a clerk api response error indicating a password was pwned.\n *\n * @internal\n */\nexport function isPasswordPwnedError(err: any) {\n return isClerkAPIResponseError(err) && err.errors?.[0]?.code === 'form_password_pwned';\n}\n\n/**\n * Checks if the provided error is an EmailLinkError.\n *\n * @internal\n */\nexport function isEmailLinkError(err: Error): err is EmailLinkError {\n return err.name === 'EmailLinkError';\n}\n"],"mappings":"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","names":["isClerkRuntimeError","packageName","customMessages","isClerkRuntimeError"]}
1
+ {"version":3,"sources":["../src/error.ts","../src/errors/createErrorTypeGuard.ts","../src/errors/clerkApiError.ts","../src/errors/parseError.ts","../src/errors/clerkError.ts","../src/errors/clerkApiResponseError.ts","../src/errors/errorThrower.ts","../src/errors/emailLinkError.ts","../src/errors/clerkRuntimeError.ts","../src/errors/webAuthNError.ts","../src/errors/helpers.ts"],"sourcesContent":["export { errorToJSON, parseError, parseErrors } from './errors/parseError';\n\nexport { ClerkAPIError } from './errors/clerkApiError';\nexport { ClerkAPIResponseError } from './errors/clerkApiResponseError';\n\nexport { buildErrorThrower, type ErrorThrower, type ErrorThrowerOptions } from './errors/errorThrower';\n\nexport { EmailLinkError, EmailLinkErrorCode, EmailLinkErrorCodeStatus } from './errors/emailLinkError';\n\nexport type { MetamaskError } from './errors/metamaskError';\n\nexport { ClerkRuntimeError } from './errors/clerkRuntimeError';\n\nexport { ClerkWebAuthnError } from './errors/webAuthNError';\n\nexport {\n is4xxError,\n isCaptchaError,\n isClerkAPIResponseError,\n isClerkRuntimeError,\n isEmailLinkError,\n isKnownError,\n isMetamaskError,\n isNetworkError,\n isPasswordPwnedError,\n isReverificationCancelledError,\n isUnauthorizedError,\n isUserLockedError,\n} from './errors/helpers';\n","/* eslint-disable jsdoc/require-jsdoc */\n\ntype Value = unknown;\n\n/**\n * Creates a type guard function for any error class.\n * The returned function can be called as a standalone function or as a method on an error object.\n *\n * @example\n * ```typescript\n * class MyError extends Error {}\n * const isMyError = createErrorTypeGuard(MyError);\n *\n * // As a standalone function\n * if (isMyError(error)) { ... }\n *\n * // As a method (when attached to error object)\n * if (error.isMyError()) { ... }\n * ```\n */\nexport function createErrorTypeGuard<T extends new (...args: any[]) => Value>(\n ErrorClass: T & { kind?: string },\n): {\n (error: Value): error is InstanceType<T>;\n (this: Value): this is InstanceType<T>;\n} {\n function typeGuard(this: Value, error?: Value): error is InstanceType<T> {\n const target = error ?? this;\n if (!target) {\n throw new TypeError(`${ErrorClass.kind || ErrorClass.name} type guard requires an error object`);\n }\n return target instanceof ErrorClass;\n }\n\n return typeGuard as {\n (error: Value): error is InstanceType<T>;\n (this: Value): this is InstanceType<T>;\n };\n}\n","import type { ClerkAPIError as ClerkAPIErrorInterface, ClerkAPIErrorJSON } from '@clerk/types';\n\nimport { createErrorTypeGuard } from './createErrorTypeGuard';\n\nexport type ClerkApiErrorMeta = Record<string, unknown>;\n\n/**\n * This error contains the specific error message, code, and any additional metadata that was returned by the Clerk API.\n */\nexport class ClerkAPIError<Meta extends ClerkApiErrorMeta = any> implements ClerkAPIErrorInterface {\n static kind = 'ClerkApiError';\n readonly code: string;\n readonly message: string;\n readonly longMessage: string | undefined;\n readonly meta: Meta;\n\n constructor(json: ClerkAPIErrorJSON) {\n const parsedError = this.parseJsonError(json);\n this.code = parsedError.code;\n this.message = parsedError.message;\n this.longMessage = parsedError.longMessage;\n this.meta = parsedError.meta;\n }\n\n private parseJsonError(json: ClerkAPIErrorJSON) {\n return {\n code: json.code,\n message: json.message,\n longMessage: json.long_message,\n meta: {\n paramName: json.meta?.param_name,\n sessionId: json.meta?.session_id,\n emailAddresses: json.meta?.email_addresses,\n identifiers: json.meta?.identifiers,\n zxcvbn: json.meta?.zxcvbn,\n plan: json.meta?.plan,\n isPlanUpgradePossible: json.meta?.is_plan_upgrade_possible,\n } as unknown as Meta,\n };\n }\n}\n\n/**\n * Type guard to check if a value is a ClerkApiError instance.\n */\nexport const isClerkApiError = createErrorTypeGuard(ClerkAPIError);\n","import type { ClerkAPIError as ClerkAPIErrorInterface, ClerkAPIErrorJSON } from '@clerk/types';\n\nimport { ClerkAPIError } from './clerkApiError';\n\n/**\n * Parses an array of ClerkAPIErrorJSON objects into an array of ClerkAPIError objects.\n *\n * @internal\n */\nexport function parseErrors(data: ClerkAPIErrorJSON[] = []): ClerkAPIErrorInterface[] {\n return data.length > 0 ? data.map(e => new ClerkAPIError(e)) : [];\n}\n\n/**\n * Parses a ClerkAPIErrorJSON object into a ClerkAPIError object.\n *\n * @deprecated Use `ClerkAPIError` class instead\n *\n * @internal\n */\nexport function parseError(error: ClerkAPIErrorJSON): ClerkAPIErrorInterface {\n return new ClerkAPIError(error);\n}\n\n/**\n * Converts a ClerkAPIError object into a ClerkAPIErrorJSON object.\n *\n * @internal\n */\nexport function errorToJSON(error: ClerkAPIError | null): ClerkAPIErrorJSON {\n return {\n code: error?.code || '',\n message: error?.message || '',\n long_message: error?.longMessage,\n meta: {\n param_name: error?.meta?.paramName,\n session_id: error?.meta?.sessionId,\n email_addresses: error?.meta?.emailAddresses,\n identifiers: error?.meta?.identifiers,\n zxcvbn: error?.meta?.zxcvbn,\n plan: error?.meta?.plan,\n is_plan_upgrade_possible: error?.meta?.isPlanUpgradePossible,\n },\n };\n}\n","import { createErrorTypeGuard } from './createErrorTypeGuard';\n\nexport interface ClerkErrorParams {\n /**\n * A message that describes the error. This is typically intented to be showed to the developers.\n * It should not be shown to the user or parsed directly as the message contents are not guaranteed\n * to be stable - use the `code` property instead.\n */\n message: string;\n /**\n * A machine-stable code that identifies the error.\n */\n code: string;\n /**\n * A user-friendly message that describes the error and can be displayed to the user.\n * This message defaults to English but can be usually translated to the user's language\n * by matching the `code` property to a localized message.\n */\n longMessage?: string;\n /**\n * The cause of the error, typically an `Error` instance that was caught and wrapped by the Clerk error handler.\n */\n cause?: Error;\n /**\n * A URL to the documentation for the error.\n */\n docsUrl?: string;\n}\n\n/**\n * A temporary placeholder, this will eventually be replaced with a\n * build-time flag that will actually perform DCE.\n */\nconst __DEV__ = true;\n\nexport class ClerkError extends Error {\n static kind = 'ClerkError';\n readonly clerkError = true as const;\n readonly code: string;\n readonly longMessage: string | undefined;\n readonly docsUrl: string | undefined;\n readonly cause: Error | undefined;\n\n get name() {\n return this.constructor.name;\n }\n\n constructor(opts: ClerkErrorParams) {\n super(new.target.formatMessage(new.target.kind, opts.message, opts.code, opts.docsUrl), { cause: opts.cause });\n Object.setPrototypeOf(this, ClerkError.prototype);\n this.code = opts.code;\n this.docsUrl = opts.docsUrl;\n this.longMessage = opts.longMessage;\n this.cause = opts.cause;\n }\n\n public toString() {\n return `[${this.name}]\\nMessage:${this.message}`;\n }\n\n protected static formatMessage(name: string, msg: string, code: string, docsUrl: string | undefined) {\n // Keeping the Clerk prefix for backward compatibility\n // msg = `${name}: ${msg.trim()}\\n\\n(code=\"${code}\")\\n\\n`;\n // We can remove the Clerk prefix in the next major version\n const prefix = 'Clerk:';\n const regex = new RegExp(prefix.replace(' ', '\\\\s*'), 'i');\n msg = msg.replace(regex, '');\n msg = `${prefix} ${msg.trim()}\\n\\n(code=\"${code}\")\\n\\n`;\n if (__DEV__ && docsUrl) {\n msg += `\\n\\nDocs: ${docsUrl}`;\n }\n return msg;\n }\n}\n\n/**\n * Type guard to check if a value is a ClerkError instance.\n */\nexport function isClerkError(val: unknown): val is ClerkError {\n const typeguard = createErrorTypeGuard(ClerkError);\n // Ths is the base error so we're being more defensive about the type guard\n return typeguard(val) || (!!val && typeof val === 'object' && 'clerkError' in val && val.clerkError === true);\n}\n","import type { ClerkAPIErrorJSON, ClerkAPIResponseError as ClerkAPIResponseErrorInterface } from '@clerk/types';\n\nimport { ClerkAPIError } from './clerkApiError';\nimport type { ClerkErrorParams } from './clerkError';\nimport { ClerkError } from './clerkError';\nimport { createErrorTypeGuard } from './createErrorTypeGuard';\n\ninterface ClerkAPIResponseOptions extends Omit<ClerkErrorParams, 'message' | 'code'> {\n data: ClerkAPIErrorJSON[];\n status: number;\n clerkTraceId?: string;\n retryAfter?: number;\n}\n\nexport class ClerkAPIResponseError extends ClerkError implements ClerkAPIResponseErrorInterface {\n static kind = 'ClerkAPIResponseError';\n status: number;\n clerkTraceId?: string;\n retryAfter?: number;\n errors: ClerkAPIError[];\n\n constructor(message: string, options: ClerkAPIResponseOptions) {\n const { data: errorsJson, status, clerkTraceId, retryAfter } = options;\n super({ ...options, message, code: 'api_response_error' });\n Object.setPrototypeOf(this, ClerkAPIResponseError.prototype);\n this.status = status;\n this.clerkTraceId = clerkTraceId;\n this.retryAfter = retryAfter;\n this.errors = (errorsJson || []).map(e => new ClerkAPIError(e));\n }\n\n public toString() {\n let message = `[${this.name}]\\nMessage:${this.message}\\nStatus:${this.status}\\nSerialized errors: ${this.errors.map(\n e => JSON.stringify(e),\n )}`;\n\n if (this.clerkTraceId) {\n message += `\\nClerk Trace ID: ${this.clerkTraceId}`;\n }\n\n return message;\n }\n\n // Override formatMessage to keep it unformatted for backward compatibility\n protected static override formatMessage(name: string, msg: string, _: string, __: string | undefined) {\n return msg;\n }\n}\n\n/**\n * Type guard to check if an error is a ClerkApiResponseError.\n * Can be called as a standalone function or as a method on an error object.\n *\n * @example\n * // As a standalone function\n * if (isClerkApiResponseError(error)) { ... }\n *\n * // As a method (when attached to error object)\n * if (error.isClerkApiResponseError()) { ... }\n */\nexport const isClerkApiResponseError = createErrorTypeGuard(ClerkAPIResponseError);\n","const DefaultMessages = Object.freeze({\n InvalidProxyUrlErrorMessage: `The proxyUrl passed to Clerk is invalid. The expected value for proxyUrl is an absolute URL or a relative path with a leading '/'. (key={{url}})`,\n InvalidPublishableKeyErrorMessage: `The publishableKey passed to Clerk is invalid. You can get your Publishable key at https://dashboard.clerk.com/last-active?path=api-keys. (key={{key}})`,\n MissingPublishableKeyErrorMessage: `Missing publishableKey. You can get your key at https://dashboard.clerk.com/last-active?path=api-keys.`,\n MissingSecretKeyErrorMessage: `Missing secretKey. You can get your key at https://dashboard.clerk.com/last-active?path=api-keys.`,\n MissingClerkProvider: `{{source}} can only be used within the <ClerkProvider /> component. Learn more: https://clerk.com/docs/components/clerk-provider`,\n});\n\ntype MessageKeys = keyof typeof DefaultMessages;\n\ntype Messages = Record<MessageKeys, string>;\n\ntype CustomMessages = Partial<Messages>;\n\nexport type ErrorThrowerOptions = {\n packageName: string;\n customMessages?: CustomMessages;\n};\n\nexport interface ErrorThrower {\n setPackageName(options: ErrorThrowerOptions): ErrorThrower;\n\n setMessages(options: ErrorThrowerOptions): ErrorThrower;\n\n throwInvalidPublishableKeyError(params: { key?: string }): never;\n\n throwInvalidProxyUrl(params: { url?: string }): never;\n\n throwMissingPublishableKeyError(): never;\n\n throwMissingSecretKeyError(): never;\n\n throwMissingClerkProviderError(params: { source?: string }): never;\n\n throw(message: string): never;\n}\n\n/**\n * Builds an error thrower.\n *\n * @internal\n */\nexport function buildErrorThrower({ packageName, customMessages }: ErrorThrowerOptions): ErrorThrower {\n let pkg = packageName;\n\n /**\n * Builds a message from a raw message and replacements.\n *\n * @internal\n */\n function buildMessage(rawMessage: string, replacements?: Record<string, string | number>) {\n if (!replacements) {\n return `${pkg}: ${rawMessage}`;\n }\n\n let msg = rawMessage;\n const matches = rawMessage.matchAll(/{{([a-zA-Z0-9-_]+)}}/g);\n\n for (const match of matches) {\n const replacement = (replacements[match[1]] || '').toString();\n msg = msg.replace(`{{${match[1]}}}`, replacement);\n }\n\n return `${pkg}: ${msg}`;\n }\n\n const messages = {\n ...DefaultMessages,\n ...customMessages,\n };\n\n return {\n setPackageName({ packageName }: ErrorThrowerOptions): ErrorThrower {\n if (typeof packageName === 'string') {\n pkg = packageName;\n }\n return this;\n },\n\n setMessages({ customMessages }: ErrorThrowerOptions): ErrorThrower {\n Object.assign(messages, customMessages || {});\n return this;\n },\n\n throwInvalidPublishableKeyError(params: { key?: string }): never {\n throw new Error(buildMessage(messages.InvalidPublishableKeyErrorMessage, params));\n },\n\n throwInvalidProxyUrl(params: { url?: string }): never {\n throw new Error(buildMessage(messages.InvalidProxyUrlErrorMessage, params));\n },\n\n throwMissingPublishableKeyError(): never {\n throw new Error(buildMessage(messages.MissingPublishableKeyErrorMessage));\n },\n\n throwMissingSecretKeyError(): never {\n throw new Error(buildMessage(messages.MissingSecretKeyErrorMessage));\n },\n\n throwMissingClerkProviderError(params: { source?: string }): never {\n throw new Error(buildMessage(messages.MissingClerkProvider, params));\n },\n\n throw(message: string): never {\n throw new Error(buildMessage(message));\n },\n };\n}\n","export class EmailLinkError extends Error {\n code: string;\n\n constructor(code: string) {\n super(code);\n this.code = code;\n this.name = 'EmailLinkError' as const;\n Object.setPrototypeOf(this, EmailLinkError.prototype);\n }\n}\n\n/**\n * @deprecated Use `EmailLinkErrorCodeStatus` instead.\n *\n * @internal\n */\nexport const EmailLinkErrorCode = {\n Expired: 'expired',\n Failed: 'failed',\n ClientMismatch: 'client_mismatch',\n};\n\nexport const EmailLinkErrorCodeStatus = {\n Expired: 'expired',\n Failed: 'failed',\n ClientMismatch: 'client_mismatch',\n} as const;\n","import type { ClerkErrorParams } from './clerkError';\nimport { ClerkError } from './clerkError';\nimport { createErrorTypeGuard } from './createErrorTypeGuard';\n\ntype ClerkRuntimeErrorOptions = Omit<ClerkErrorParams, 'message'>;\n\n/**\n * Custom error class for representing Clerk runtime errors.\n *\n * @class ClerkRuntimeError\n *\n * @example\n * throw new ClerkRuntimeError('An error occurred', { code: 'password_invalid' });\n */\nexport class ClerkRuntimeError extends ClerkError {\n static kind = 'ClerkRuntimeError';\n /**\n * @deprecated Use `clerkError` property instead. This property is maintained for backward compatibility.\n */\n readonly clerkRuntimeError = true as const;\n\n constructor(message: string, options: ClerkRuntimeErrorOptions) {\n super({ ...options, message });\n Object.setPrototypeOf(this, ClerkRuntimeError.prototype);\n }\n}\n\n/**\n * Type guard to check if an error is a ClerkRuntimeError.\n * Can be called as a standalone function or as a method on an error object.\n *\n * @example\n * // As a standalone function\n * if (isClerkRuntimeError(error)) { ... }\n *\n * // As a method (when attached to error object)\n * if (error.isClerkRuntimeError()) { ... }\n */\nexport const isClerkRuntimeError = createErrorTypeGuard(ClerkRuntimeError);\n","import { ClerkRuntimeError } from './clerkRuntimeError';\n\ntype ClerkWebAuthnErrorCode =\n // Generic\n | 'passkey_not_supported'\n | 'passkey_pa_not_supported'\n | 'passkey_invalid_rpID_or_domain'\n | 'passkey_already_exists'\n | 'passkey_operation_aborted'\n // Retrieval\n | 'passkey_retrieval_cancelled'\n | 'passkey_retrieval_failed'\n // Registration\n | 'passkey_registration_cancelled'\n | 'passkey_registration_failed';\n\nexport class ClerkWebAuthnError extends ClerkRuntimeError {\n /**\n * A unique code identifying the error, can be used for localization.\n */\n code: ClerkWebAuthnErrorCode;\n\n constructor(message: string, { code }: { code: ClerkWebAuthnErrorCode }) {\n super(message, { code });\n this.code = code;\n }\n}\n","import type { ClerkAPIResponseError } from './clerkApiResponseError';\nimport type { ClerkRuntimeError } from './clerkRuntimeError';\nimport type { EmailLinkError } from './emailLinkError';\nimport type { MetamaskError } from './metamaskError';\n\n/**\n * Checks if the provided error object is an unauthorized error.\n *\n * @internal\n *\n * @deprecated This is no longer used, and will be removed in the next major version.\n */\nexport function isUnauthorizedError(e: any): boolean {\n const status = e?.status;\n const code = e?.errors?.[0]?.code;\n return code === 'authentication_invalid' && status === 401;\n}\n\n/**\n * Checks if the provided error object is a captcha error.\n *\n * @internal\n */\nexport function isCaptchaError(e: ClerkAPIResponseError): boolean {\n return ['captcha_invalid', 'captcha_not_enabled', 'captcha_missing_token'].includes(e.errors[0].code);\n}\n\n/**\n * Checks if the provided error is a 4xx error.\n *\n * @internal\n */\nexport function is4xxError(e: any): boolean {\n const status = e?.status;\n return !!status && status >= 400 && status < 500;\n}\n\n/**\n * Checks if the provided error is a network error.\n *\n * @internal\n */\nexport function isNetworkError(e: any): boolean {\n // TODO: revise during error handling epic\n const message = (`${e.message}${e.name}` || '').toLowerCase().replace(/\\s+/g, '');\n return message.includes('networkerror');\n}\n\n/**\n * Checks if the provided error is either a ClerkAPIResponseError, a ClerkRuntimeError, or a MetamaskError.\n *\n * @internal\n */\nexport function isKnownError(error: any): error is ClerkAPIResponseError | ClerkRuntimeError | MetamaskError {\n return isClerkAPIResponseError(error) || isMetamaskError(error) || isClerkRuntimeError(error);\n}\n\n/**\n * Checks if the provided error is a ClerkAPIResponseError.\n *\n * @internal\n */\nexport function isClerkAPIResponseError(err: any): err is ClerkAPIResponseError {\n return err && 'clerkError' in err;\n}\n\n/**\n * Checks if the provided error object is an instance of ClerkRuntimeError.\n *\n * @param err - The error object to check.\n * @returns True if the error is a ClerkRuntimeError, false otherwise.\n *\n * @example\n * const error = new ClerkRuntimeError('An error occurred');\n * if (isClerkRuntimeError(error)) {\n * // Handle ClerkRuntimeError\n * console.error('ClerkRuntimeError:', error.message);\n * } else {\n * // Handle other errors\n * console.error('Other error:', error.message);\n * }\n */\nexport function isClerkRuntimeError(err: any): err is ClerkRuntimeError {\n return 'clerkRuntimeError' in err;\n}\n\n/**\n * Checks if the provided error is a Clerk runtime error indicating a reverification was cancelled.\n *\n * @internal\n */\nexport function isReverificationCancelledError(err: any) {\n return isClerkRuntimeError(err) && err.code === 'reverification_cancelled';\n}\n\n/**\n * Checks if the provided error is a Metamask error.\n *\n * @internal\n */\nexport function isMetamaskError(err: any): err is MetamaskError {\n return 'code' in err && [4001, 32602, 32603].includes(err.code) && 'message' in err;\n}\n\n/**\n * Checks if the provided error is clerk api response error indicating a user is locked.\n *\n * @internal\n */\nexport function isUserLockedError(err: any) {\n return isClerkAPIResponseError(err) && err.errors?.[0]?.code === 'user_locked';\n}\n\n/**\n * Checks if the provided error is a clerk api response error indicating a password was pwned.\n *\n * @internal\n */\nexport function isPasswordPwnedError(err: any) {\n return isClerkAPIResponseError(err) && err.errors?.[0]?.code === 'form_password_pwned';\n}\n\n/**\n * Checks if the provided error is an EmailLinkError.\n *\n * @internal\n */\nexport function isEmailLinkError(err: Error): err is EmailLinkError {\n return err.name === 'EmailLinkError';\n}\n"],"mappings":"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","names":["isClerkRuntimeError","packageName","customMessages","isClerkRuntimeError"]}
package/dist/error.mjs CHANGED
@@ -22,7 +22,7 @@ import {
22
22
  isUserLockedError,
23
23
  parseError,
24
24
  parseErrors
25
- } from "./chunk-LAUDJDHO.mjs";
25
+ } from "./chunk-AXHU6TXE.mjs";
26
26
  import "./chunk-IEP6GGEX.mjs";
27
27
  export {
28
28
  ClerkAPIError,
package/dist/index.d.mts CHANGED
@@ -8,7 +8,7 @@ export { RelativeDateCase, addYears, dateTo12HourTime, differenceInCalendarDays,
8
8
  export { deprecated, deprecatedObjectProperty, deprecatedProperty } from './deprecated.mjs';
9
9
  export { deriveState } from './deriveState.mjs';
10
10
  export { ClerkRuntimeError, ClerkWebAuthnError, EmailLinkError, EmailLinkErrorCode, EmailLinkErrorCodeStatus, ErrorThrower, ErrorThrowerOptions, MetamaskError, buildErrorThrower, errorToJSON, is4xxError, isCaptchaError, isClerkAPIResponseError, isClerkRuntimeError, isEmailLinkError, isKnownError, isMetamaskError, isNetworkError, isPasswordPwnedError, isReverificationCancelledError, isUnauthorizedError, isUserLockedError, parseError, parseErrors } from './error.mjs';
11
- export { C as ClerkAPIError, a as ClerkAPIResponseError } from './clerkApiResponseError-CeAPWrkq.mjs';
11
+ export { C as ClerkAPIError, a as ClerkAPIResponseError } from './clerkApiResponseError-CpTaa-eQ.mjs';
12
12
  export { SupportedMimeType, extension, readJSONFile } from './file.mjs';
13
13
  export { isomorphicAtob } from './isomorphicAtob.mjs';
14
14
  export { isomorphicBtoa } from './isomorphicBtoa.mjs';
package/dist/index.d.ts CHANGED
@@ -8,7 +8,7 @@ export { RelativeDateCase, addYears, dateTo12HourTime, differenceInCalendarDays,
8
8
  export { deprecated, deprecatedObjectProperty, deprecatedProperty } from './deprecated.js';
9
9
  export { deriveState } from './deriveState.js';
10
10
  export { ClerkRuntimeError, ClerkWebAuthnError, EmailLinkError, EmailLinkErrorCode, EmailLinkErrorCodeStatus, ErrorThrower, ErrorThrowerOptions, MetamaskError, buildErrorThrower, errorToJSON, is4xxError, isCaptchaError, isClerkAPIResponseError, isClerkRuntimeError, isEmailLinkError, isKnownError, isMetamaskError, isNetworkError, isPasswordPwnedError, isReverificationCancelledError, isUnauthorizedError, isUserLockedError, parseError, parseErrors } from './error.js';
11
- export { C as ClerkAPIError, a as ClerkAPIResponseError } from './clerkApiResponseError-CeAPWrkq.js';
11
+ export { C as ClerkAPIError, a as ClerkAPIResponseError } from './clerkApiResponseError-CpTaa-eQ.js';
12
12
  export { SupportedMimeType, extension, readJSONFile } from './file.js';
13
13
  export { isomorphicAtob } from './isomorphicAtob.js';
14
14
  export { isomorphicBtoa } from './isomorphicBtoa.js';
package/dist/index.js CHANGED
@@ -814,7 +814,7 @@ function createErrorTypeGuard(ErrorClass) {
814
814
  function typeGuard(error) {
815
815
  const target = error ?? this;
816
816
  if (!target) {
817
- throw new TypeError(`${ErrorClass.name} type guard requires an error object`);
817
+ throw new TypeError(`${ErrorClass.kind || ErrorClass.name} type guard requires an error object`);
818
818
  }
819
819
  return target instanceof ErrorClass;
820
820
  }
@@ -823,7 +823,7 @@ function createErrorTypeGuard(ErrorClass) {
823
823
 
824
824
  // src/errors/clerkApiError.ts
825
825
  var ClerkAPIError = class {
826
- name = "ClerkApiError";
826
+ static kind = "ClerkApiError";
827
827
  code;
828
828
  message;
829
829
  longMessage;
@@ -881,7 +881,7 @@ function errorToJSON(error) {
881
881
  // src/errors/clerkError.ts
882
882
  var __DEV__ = true;
883
883
  var ClerkError = class _ClerkError extends Error {
884
- static name = "ClerkError";
884
+ static kind = "ClerkError";
885
885
  clerkError = true;
886
886
  code;
887
887
  longMessage;
@@ -891,7 +891,7 @@ var ClerkError = class _ClerkError extends Error {
891
891
  return this.constructor.name;
892
892
  }
893
893
  constructor(opts) {
894
- super(new.target.formatMessage(new.target.name, opts.message, opts.code, opts.docsUrl), { cause: opts.cause });
894
+ super(new.target.formatMessage(new.target.kind, opts.message, opts.code, opts.docsUrl), { cause: opts.cause });
895
895
  Object.setPrototypeOf(this, _ClerkError.prototype);
896
896
  this.code = opts.code;
897
897
  this.docsUrl = opts.docsUrl;
@@ -922,7 +922,7 @@ Docs: ${docsUrl}`;
922
922
 
923
923
  // src/errors/clerkApiResponseError.ts
924
924
  var ClerkAPIResponseError = class _ClerkAPIResponseError extends ClerkError {
925
- static name = "ClerkAPIResponseError";
925
+ static kind = "ClerkAPIResponseError";
926
926
  status;
927
927
  clerkTraceId;
928
928
  retryAfter;
@@ -1037,7 +1037,7 @@ var EmailLinkErrorCodeStatus = {
1037
1037
 
1038
1038
  // src/errors/clerkRuntimeError.ts
1039
1039
  var ClerkRuntimeError = class _ClerkRuntimeError extends ClerkError {
1040
- static name = "ClerkRuntimeError";
1040
+ static kind = "ClerkRuntimeError";
1041
1041
  /**
1042
1042
  * @deprecated Use `clerkError` property instead. This property is maintained for backward compatibility.
1043
1043
  */
@@ -1368,14 +1368,14 @@ var ABSOLUTE_URL_REGEX = /^[a-zA-Z][a-zA-Z\d+\-.]*?:/;
1368
1368
  var isAbsoluteUrl = (url) => ABSOLUTE_URL_REGEX.test(url);
1369
1369
 
1370
1370
  // src/versionSelector.ts
1371
- var versionSelector = (clerkJSVersion, packageVersion = "5.101.0") => {
1371
+ var versionSelector = (clerkJSVersion, packageVersion = "5.101.1-canary.v20251016143055") => {
1372
1372
  if (clerkJSVersion) {
1373
1373
  return clerkJSVersion;
1374
1374
  }
1375
1375
  const prereleaseTag = getPrereleaseTag(packageVersion);
1376
1376
  if (prereleaseTag) {
1377
1377
  if (prereleaseTag === "snapshot") {
1378
- return "5.101.0";
1378
+ return "5.101.1-canary.v20251016143055";
1379
1379
  }
1380
1380
  return prereleaseTag;
1381
1381
  }