UNPKG

@clerk/shared

Version:

Internal package utils used by the Clerk SDKs

148 lines (145 loc) • 6.12 kB
import { ClerkAPIError, ClerkAPIErrorJSON } from '@clerk/types'; declare function isUnauthorizedError(e: any): boolean; declare function isCaptchaError(e: ClerkAPIResponseError): boolean; declare function is4xxError(e: any): boolean; declare function isNetworkError(e: any): boolean; interface ClerkAPIResponseOptions { data: ClerkAPIErrorJSON[]; status: number; clerkTraceId?: string; } interface MetamaskError extends Error { code: 4001 | 32602 | 32603; message: string; data?: unknown; } declare function isKnownError(error: any): error is ClerkAPIResponseError | ClerkRuntimeError | MetamaskError; declare function isClerkAPIResponseError(err: any): err is ClerkAPIResponseError; /** * Checks if the provided error object is an instance of ClerkRuntimeError. * * @param {any} err - The error object to check. * @returns {boolean} True if the error is a ClerkRuntimeError, false otherwise. * * @example * const error = new ClerkRuntimeError('An error occurred'); * if (isClerkRuntimeError(error)) { * // Handle ClerkRuntimeError * console.error('ClerkRuntimeError:', error.message); * } else { * // Handle other errors * console.error('Other error:', error.message); * } */ declare function isClerkRuntimeError(err: any): err is ClerkRuntimeError; declare function isMetamaskError(err: any): err is MetamaskError; declare function isUserLockedError(err: any): boolean; declare function isPasswordPwnedError(err: any): boolean; declare function parseErrors(data?: ClerkAPIErrorJSON[]): ClerkAPIError[]; declare function parseError(error: ClerkAPIErrorJSON): ClerkAPIError; declare function errorToJSON(error: ClerkAPIError | null): ClerkAPIErrorJSON; declare class ClerkAPIResponseError extends Error { clerkError: true; status: number; message: string; clerkTraceId?: string; errors: ClerkAPIError[]; constructor(message: string, { data, status, clerkTraceId }: ClerkAPIResponseOptions); toString: () => string; } /** * Custom error class for representing Clerk runtime errors. * * @class ClerkRuntimeError * @example * throw new ClerkRuntimeError('An error occurred', { code: 'password_invalid' }); */ declare class ClerkRuntimeError extends Error { clerkRuntimeError: true; /** * The error message. * * @type {string} * @memberof ClerkRuntimeError */ message: string; /** * A unique code identifying the error, can be used for localization. * * @type {string} * @memberof ClerkRuntimeError */ code: string; constructor(message: string, { code }: { code: string; }); /** * Returns a string representation of the error. * * @returns {string} A formatted string with the error name and message. * @memberof ClerkRuntimeError */ toString: () => string; } declare class EmailLinkError extends Error { code: string; constructor(code: string); } declare function isEmailLinkError(err: Error): err is EmailLinkError; /** * @deprecated Please use `EmailLinkErrorCodeStatus` instead. * * @hidden */ declare const EmailLinkErrorCode: { Expired: string; Failed: string; ClientMismatch: string; }; declare const EmailLinkErrorCodeStatus: { readonly Expired: "expired"; readonly Failed: "failed"; readonly ClientMismatch: "client_mismatch"; }; declare const DefaultMessages: Readonly<{ 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}})"; 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}})"; MissingPublishableKeyErrorMessage: "Missing publishableKey. You can get your key at https://dashboard.clerk.com/last-active?path=api-keys."; MissingSecretKeyErrorMessage: "Missing secretKey. You can get your key at https://dashboard.clerk.com/last-active?path=api-keys."; MissingClerkProvider: "{{source}} can only be used within the <ClerkProvider /> component. Learn more: https://clerk.com/docs/components/clerk-provider"; }>; type MessageKeys = keyof typeof DefaultMessages; type Messages = Record<MessageKeys, string>; type CustomMessages = Partial<Messages>; type ErrorThrowerOptions = { packageName: string; customMessages?: CustomMessages; }; interface ErrorThrower { setPackageName(options: ErrorThrowerOptions): ErrorThrower; setMessages(options: ErrorThrowerOptions): ErrorThrower; throwInvalidPublishableKeyError(params: { key?: string; }): never; throwInvalidProxyUrl(params: { url?: string; }): never; throwMissingPublishableKeyError(): never; throwMissingSecretKeyError(): never; throwMissingClerkProviderError(params: { source?: string; }): never; throw(message: string): never; } declare function buildErrorThrower({ packageName, customMessages }: ErrorThrowerOptions): ErrorThrower; type ClerkWebAuthnErrorCode = 'passkey_not_supported' | 'passkey_pa_not_supported' | 'passkey_invalid_rpID_or_domain' | 'passkey_already_exists' | 'passkey_operation_aborted' | 'passkey_retrieval_cancelled' | 'passkey_retrieval_failed' | 'passkey_registration_cancelled' | 'passkey_registration_failed'; declare class ClerkWebAuthnError extends ClerkRuntimeError { /** * A unique code identifying the error, can be used for localization. */ code: ClerkWebAuthnErrorCode; constructor(message: string, { code }: { code: ClerkWebAuthnErrorCode; }); } export { ClerkAPIResponseError, ClerkRuntimeError, ClerkWebAuthnError, EmailLinkError, EmailLinkErrorCode, EmailLinkErrorCodeStatus, type ErrorThrower, type ErrorThrowerOptions, type MetamaskError, buildErrorThrower, errorToJSON, is4xxError, isCaptchaError, isClerkAPIResponseError, isClerkRuntimeError, isEmailLinkError, isKnownError, isMetamaskError, isNetworkError, isPasswordPwnedError, isUnauthorizedError, isUserLockedError, parseError, parseErrors };