diff --git a/.changeset/mighty-frogs-brake.md b/.changeset/mighty-frogs-brake.md new file mode 100644 index 00000000000..a845151cc84 --- /dev/null +++ b/.changeset/mighty-frogs-brake.md @@ -0,0 +1,2 @@ +--- +--- diff --git a/.prettierignore b/.prettierignore index 51265795595..a2255587a97 100644 --- a/.prettierignore +++ b/.prettierignore @@ -20,5 +20,7 @@ package-lock.json pnpm-lock.yaml playground packages/backend/tests/**/*.js +packages/clerk-js/src/core/resources/internal.ts +packages/clerk-js/src/core/resources/index.ts /**/CHANGELOG.md renovate.json5 diff --git a/packages/clerk-js/src/core/__tests__/clerk.test.ts b/packages/clerk-js/src/core/__tests__/clerk.test.ts index 0142da8ad08..76072c2acfa 100644 --- a/packages/clerk-js/src/core/__tests__/clerk.test.ts +++ b/packages/clerk-js/src/core/__tests__/clerk.test.ts @@ -1,3 +1,4 @@ +import { EmailLinkErrorCodeStatus } from '@clerk/shared/error'; import type { ActiveSessionResource, PendingSessionResource, @@ -13,7 +14,7 @@ import type { DevBrowser } from '../auth/devBrowser'; import { Clerk } from '../clerk'; import { eventBus, events } from '../events'; import type { DisplayConfig, Organization } from '../resources/internal'; -import { BaseResource, Client, EmailLinkErrorCodeStatus, Environment, SignIn, SignUp } from '../resources/internal'; +import { BaseResource, Client, Environment, SignIn, SignUp } from '../resources/internal'; import { mockJwt } from '../test/fixtures'; const mockClientFetch = jest.fn(); diff --git a/packages/clerk-js/src/core/clerk.ts b/packages/clerk-js/src/core/clerk.ts index 25873adebd0..6e676e2d371 100644 --- a/packages/clerk-js/src/core/clerk.ts +++ b/packages/clerk-js/src/core/clerk.ts @@ -1,7 +1,14 @@ import { inBrowser as inClientSide, isValidBrowserOnline } from '@clerk/shared/browser'; import { clerkEvents, createClerkEventBus } from '@clerk/shared/clerkEventBus'; import { deprecated } from '@clerk/shared/deprecated'; -import { ClerkRuntimeError, EmailLinkErrorCodeStatus, is4xxError, isClerkAPIResponseError } from '@clerk/shared/error'; +import { + ClerkRuntimeError, + EmailLinkError, + EmailLinkErrorCodeStatus, + is4xxError, + isClerkAPIResponseError, + isClerkRuntimeError, +} from '@clerk/shared/error'; import { parsePublishableKey } from '@clerk/shared/keys'; import { LocalStorageBroadcastChannel } from '@clerk/shared/localStorageBroadcastChannel'; import { logger } from '@clerk/shared/logger'; @@ -149,15 +156,7 @@ import { createClientFromJwt } from './jwt-client'; import { APIKeys } from './modules/apiKeys'; import { Billing } from './modules/billing'; import { createCheckoutInstance } from './modules/checkout/instance'; -import { - BaseResource, - Client, - EmailLinkError, - Environment, - isClerkRuntimeError, - Organization, - Waitlist, -} from './resources/internal'; +import { BaseResource, Client, Environment, Organization, Waitlist } from './resources/internal'; import { getTaskEndpoint, navigateIfTaskExists, warnMissingPendingTaskHandlers } from './sessionTasks'; import { State } from './state'; import { warnings } from './warnings'; diff --git a/packages/clerk-js/src/core/fraudProtection.spec.ts b/packages/clerk-js/src/core/fraudProtection.spec.ts index 16139bdfccb..8bc2d43cc23 100644 --- a/packages/clerk-js/src/core/fraudProtection.spec.ts +++ b/packages/clerk-js/src/core/fraudProtection.spec.ts @@ -1,8 +1,8 @@ +import { ClerkAPIResponseError } from '@clerk/shared/error'; import { beforeEach, describe, expect, it, type Mock, vi } from 'vitest'; import { FraudProtection } from './fraudProtection'; import type { Clerk, Client } from './resources/internal'; -import { ClerkAPIResponseError } from './resources/internal'; describe('FraudProtectionService', () => { let sut: FraudProtection; diff --git a/packages/clerk-js/src/core/fraudProtection.ts b/packages/clerk-js/src/core/fraudProtection.ts index b6ac78ccc75..6051f5d8010 100644 --- a/packages/clerk-js/src/core/fraudProtection.ts +++ b/packages/clerk-js/src/core/fraudProtection.ts @@ -1,6 +1,8 @@ +import { ClerkRuntimeError, isClerkAPIResponseError } from '@clerk/shared/error'; + import { CaptchaChallenge } from '../utils/captcha/CaptchaChallenge'; import type { Clerk } from './resources/internal'; -import { ClerkRuntimeError, Client, isClerkAPIResponseError } from './resources/internal'; +import { Client } from './resources/internal'; export class FraudProtection { private static instance: FraudProtection; diff --git a/packages/clerk-js/src/core/modules/apiKeys/index.ts b/packages/clerk-js/src/core/modules/apiKeys/index.ts index f4b538ce893..09849c78fc2 100644 --- a/packages/clerk-js/src/core/modules/apiKeys/index.ts +++ b/packages/clerk-js/src/core/modules/apiKeys/index.ts @@ -1,3 +1,4 @@ +import { ClerkRuntimeError } from '@clerk/shared/error'; import type { ApiKeyJSON, APIKeyResource, @@ -9,7 +10,7 @@ import type { import type { FapiRequestInit } from '@/core/fapiClient'; -import { APIKey, BaseResource, ClerkRuntimeError } from '../../resources/internal'; +import { APIKey, BaseResource } from '../../resources/internal'; export class APIKeys implements APIKeysNamespace { /** diff --git a/packages/clerk-js/src/core/resources/Base.ts b/packages/clerk-js/src/core/resources/Base.ts index 7a9c5077465..89b85e53864 100644 --- a/packages/clerk-js/src/core/resources/Base.ts +++ b/packages/clerk-js/src/core/resources/Base.ts @@ -1,4 +1,5 @@ import { isValidBrowserOnline } from '@clerk/shared/browser'; +import { ClerkAPIResponseError, ClerkRuntimeError } from '@clerk/shared/error'; import { isProductionFromPublishableKey } from '@clerk/shared/keys'; import type { ClerkAPIErrorJSON, ClerkResourceJSON, ClerkResourceReloadParams, DeletedObjectJSON } from '@clerk/types'; @@ -6,7 +7,7 @@ import { clerkMissingFapiClientInResources } from '../errors'; import type { FapiClient, FapiRequestInit, FapiResponse, FapiResponseJSON, HTTPMethod } from '../fapiClient'; import { FraudProtection } from '../fraudProtection'; import type { Clerk } from './internal'; -import { ClerkAPIResponseError, ClerkRuntimeError, Client } from './internal'; +import { Client } from './internal'; export type BaseFetchOptions = ClerkResourceReloadParams & { forceUpdateClient?: boolean; diff --git a/packages/clerk-js/src/core/resources/BillingCheckout.ts b/packages/clerk-js/src/core/resources/BillingCheckout.ts index 4e3225b3d37..e4bde5ea84a 100644 --- a/packages/clerk-js/src/core/resources/BillingCheckout.ts +++ b/packages/clerk-js/src/core/resources/BillingCheckout.ts @@ -1,3 +1,4 @@ +import { isClerkAPIResponseError } from '@clerk/shared/error'; import { retry } from '@clerk/shared/retry'; import type { BillingCheckoutJSON, @@ -12,7 +13,7 @@ import { unixEpochToDate } from '@/utils/date'; import { billingTotalsFromJSON } from '../../utils'; import { BillingPayer } from './BillingPayer'; -import { BaseResource, BillingPaymentSource, BillingPlan, isClerkAPIResponseError } from './internal'; +import { BaseResource, BillingPaymentSource, BillingPlan } from './internal'; export class BillingCheckout extends BaseResource implements BillingCheckoutResource { id!: string; diff --git a/packages/clerk-js/src/core/resources/Error.ts b/packages/clerk-js/src/core/resources/Error.ts deleted file mode 100644 index 385fa95d69d..00000000000 --- a/packages/clerk-js/src/core/resources/Error.ts +++ /dev/null @@ -1,14 +0,0 @@ -export { - ClerkRuntimeError, - ClerkAPIResponseError, - EmailLinkError, - EmailLinkErrorCode, - EmailLinkErrorCodeStatus, - isClerkAPIResponseError, - isClerkRuntimeError, - isEmailLinkError, - isKnownError, - isMetamaskError, - isUserLockedError, -} from '@clerk/shared/error'; -export type { MetamaskError } from '@clerk/shared/error'; diff --git a/packages/clerk-js/src/core/resources/SignUp.ts b/packages/clerk-js/src/core/resources/SignUp.ts index 0636537ecf8..c29eaf9b99e 100644 --- a/packages/clerk-js/src/core/resources/SignUp.ts +++ b/packages/clerk-js/src/core/resources/SignUp.ts @@ -1,4 +1,4 @@ -import { isCaptchaError, isClerkAPIResponseError } from '@clerk/shared/error'; +import { ClerkRuntimeError, isCaptchaError, isClerkAPIResponseError } from '@clerk/shared/error'; import { Poller } from '@clerk/shared/poller'; import type { AttemptEmailAddressVerificationParams, @@ -63,7 +63,7 @@ import { clerkVerifyWeb3WalletCalledBeforeCreate, } from '../errors'; import { eventBus } from '../events'; -import { BaseResource, ClerkRuntimeError, SignUpVerifications } from './internal'; +import { BaseResource, SignUpVerifications } from './internal'; declare global { interface Window { diff --git a/packages/clerk-js/src/core/resources/index.ts b/packages/clerk-js/src/core/resources/index.ts index fea21101536..f49a5f0882e 100644 --- a/packages/clerk-js/src/core/resources/index.ts +++ b/packages/clerk-js/src/core/resources/index.ts @@ -4,7 +4,6 @@ export * from './DeletedObject'; export * from './DisplayConfig'; export * from './EmailAddress'; export * from './Environment'; -export * from './Error'; export * from './ExternalAccount'; export * from './IdentificationLink'; export * from './Image'; @@ -17,5 +16,6 @@ export * from './SignUp'; export * from './Token'; export * from './User'; export * from './Verification'; -export * from './Web3Wallet'; export * from './Waitlist'; +export * from './Web3Wallet'; + diff --git a/packages/clerk-js/src/core/resources/internal.ts b/packages/clerk-js/src/core/resources/internal.ts index 46dff0ad5be..82886d002ac 100644 --- a/packages/clerk-js/src/core/resources/internal.ts +++ b/packages/clerk-js/src/core/resources/internal.ts @@ -15,7 +15,6 @@ export * from './DeletedObject'; export * from './DisplayConfig'; export * from './EmailAddress'; export * from './Environment'; -export * from './Error'; export * from './ExternalAccount'; export * from './EnterpriseAccount'; export * from './IdentificationLink'; @@ -40,6 +39,6 @@ export * from './TOTP'; export * from './User'; export * from './UserOrganizationInvitation'; export * from './Verification'; -export * from './Web3Wallet'; +export * from './Web3Wallet'; export * from './Waitlist'; export * from './APIKey'; diff --git a/packages/clerk-js/src/index.headless.ts b/packages/clerk-js/src/index.headless.ts index 87941e579f5..3a056e06c27 100644 --- a/packages/clerk-js/src/index.headless.ts +++ b/packages/clerk-js/src/index.headless.ts @@ -2,7 +2,20 @@ import 'regenerator-runtime/runtime'; import { Clerk } from './core/clerk'; -export * from './core/resources/Error'; +export { + ClerkAPIResponseError, + ClerkRuntimeError, + EmailLinkError, + EmailLinkErrorCode, + EmailLinkErrorCodeStatus, + isClerkAPIResponseError, + isClerkRuntimeError, + isEmailLinkError, + isKnownError, + isMetamaskError, + isUserLockedError, + type MetamaskError, +} from '@clerk/shared/error'; export { Clerk }; diff --git a/packages/clerk-js/src/index.ts b/packages/clerk-js/src/index.ts index f10cd9f28a6..2f9acf96b6e 100644 --- a/packages/clerk-js/src/index.ts +++ b/packages/clerk-js/src/index.ts @@ -3,10 +3,23 @@ import 'regenerator-runtime/runtime'; import { Clerk } from './core/clerk'; import { mountComponentRenderer } from './ui/Components'; -export * from './core/resources/Error'; +export { + ClerkAPIResponseError, + ClerkRuntimeError, + EmailLinkError, + EmailLinkErrorCode, + EmailLinkErrorCodeStatus, + isClerkAPIResponseError, + isClerkRuntimeError, + isEmailLinkError, + isKnownError, + isMetamaskError, + isUserLockedError, + type MetamaskError, +} from '@clerk/shared/error'; +export { Clerk }; Clerk.mountComponentRenderer = mountComponentRenderer; -export { Clerk }; if (module.hot) { module.hot.accept(); diff --git a/packages/clerk-js/src/ui/components/OrganizationProfile/__tests__/InviteMembersPage.test.tsx b/packages/clerk-js/src/ui/components/OrganizationProfile/__tests__/InviteMembersPage.test.tsx index b32f6ffdc94..4307746d41c 100644 --- a/packages/clerk-js/src/ui/components/OrganizationProfile/__tests__/InviteMembersPage.test.tsx +++ b/packages/clerk-js/src/ui/components/OrganizationProfile/__tests__/InviteMembersPage.test.tsx @@ -1,9 +1,8 @@ +import { ClerkAPIResponseError } from '@clerk/shared/error'; import type { OrganizationInvitationResource } from '@clerk/types'; import { describe } from '@jest/globals'; import { waitFor } from '@testing-library/dom'; -import React from 'react'; -import { ClerkAPIResponseError } from '../../../../core/resources'; import { render } from '../../../../testUtils'; import { Action } from '../../../elements/Action'; import { clearFetchCache } from '../../../hooks'; diff --git a/packages/clerk-js/src/ui/components/SignIn/__tests__/SignInFactorOne.test.tsx b/packages/clerk-js/src/ui/components/SignIn/__tests__/SignInFactorOne.test.tsx index ccb475182e4..d200b02dd44 100644 --- a/packages/clerk-js/src/ui/components/SignIn/__tests__/SignInFactorOne.test.tsx +++ b/packages/clerk-js/src/ui/components/SignIn/__tests__/SignInFactorOne.test.tsx @@ -1,9 +1,8 @@ -import { parseError } from '@clerk/shared/error'; +import { ClerkAPIResponseError, parseError } from '@clerk/shared/error'; import type { SignInResource } from '@clerk/types'; import { describe, it, jest } from '@jest/globals'; import { waitFor } from '@testing-library/dom'; -import { ClerkAPIResponseError } from '../../../../core/resources'; import { act, mockWebAuthn, render, screen } from '../../../../testUtils'; import { bindCreateFixtures } from '../../../utils/test/createFixtures'; import { runFakeTimers } from '../../../utils/test/runFakeTimers'; diff --git a/packages/clerk-js/src/ui/components/SignIn/__tests__/SignInFactorTwo.test.tsx b/packages/clerk-js/src/ui/components/SignIn/__tests__/SignInFactorTwo.test.tsx index 12dbce2c3a3..1b13aa9914c 100644 --- a/packages/clerk-js/src/ui/components/SignIn/__tests__/SignInFactorTwo.test.tsx +++ b/packages/clerk-js/src/ui/components/SignIn/__tests__/SignInFactorTwo.test.tsx @@ -1,8 +1,7 @@ -import { parseError } from '@clerk/shared/error'; +import { ClerkAPIResponseError, parseError } from '@clerk/shared/error'; import type { SignInResource } from '@clerk/types'; import { describe, it, jest } from '@jest/globals'; -import { ClerkAPIResponseError } from '../../../../core/resources'; import { render, screen, waitFor } from '../../../../testUtils'; import { bindCreateFixtures } from '../../../utils/test/createFixtures'; import { runFakeTimers } from '../../../utils/test/runFakeTimers'; diff --git a/packages/clerk-js/src/ui/components/SignIn/__tests__/SignInStart.test.tsx b/packages/clerk-js/src/ui/components/SignIn/__tests__/SignInStart.test.tsx index 3483860d896..d00543e9d02 100644 --- a/packages/clerk-js/src/ui/components/SignIn/__tests__/SignInStart.test.tsx +++ b/packages/clerk-js/src/ui/components/SignIn/__tests__/SignInStart.test.tsx @@ -1,10 +1,10 @@ +import { ClerkAPIResponseError } from '@clerk/shared/error'; import { OAUTH_PROVIDERS } from '@clerk/shared/oauth'; import type { SignInResource } from '@clerk/types'; import { waitFor } from '@testing-library/react'; import { CardStateProvider } from '@/ui/elements/contexts'; -import { ClerkAPIResponseError } from '../../../../core/resources'; import { fireEvent, mockWebAuthn, render, screen } from '../../../../testUtils'; import { OptionsProvider } from '../../../contexts'; import { AppearanceProvider } from '../../../customizables'; diff --git a/packages/clerk-js/src/ui/components/SignUp/__tests__/SignUpEmailLinkFlowComplete.test.tsx b/packages/clerk-js/src/ui/components/SignUp/__tests__/SignUpEmailLinkFlowComplete.test.tsx index 7f4dbcf97ef..c36dbe1403f 100644 --- a/packages/clerk-js/src/ui/components/SignUp/__tests__/SignUpEmailLinkFlowComplete.test.tsx +++ b/packages/clerk-js/src/ui/components/SignUp/__tests__/SignUpEmailLinkFlowComplete.test.tsx @@ -1,6 +1,5 @@ -import React from 'react'; +import { EmailLinkError, EmailLinkErrorCodeStatus } from '@clerk/shared/error'; -import { EmailLinkError, EmailLinkErrorCodeStatus } from '../../../../core/resources'; import { render, runFakeTimers, screen, waitFor } from '../../../../testUtils'; import { SignUpEmailLinkFlowComplete } from '../../../common/EmailLinkCompleteFlowCard'; import { bindCreateFixtures } from '../../../utils/test/createFixtures'; diff --git a/packages/clerk-js/src/ui/utils/errorHandler.ts b/packages/clerk-js/src/ui/utils/errorHandler.ts index f7cef9b0820..c3987aecb98 100644 --- a/packages/clerk-js/src/ui/utils/errorHandler.ts +++ b/packages/clerk-js/src/ui/utils/errorHandler.ts @@ -1,12 +1,7 @@ +import { isClerkAPIResponseError, isClerkRuntimeError, isKnownError, isMetamaskError } from '@clerk/shared/error'; import { snakeToCamel } from '@clerk/shared/underscore'; import type { ClerkAPIError, ClerkRuntimeError } from '@clerk/types'; -import { - isClerkAPIResponseError, - isClerkRuntimeError, - isKnownError, - isMetamaskError, -} from '../../core/resources/internal'; import type { FormControlState } from './useFormControl'; interface ParserErrors { diff --git a/packages/clerk-js/src/utils/__tests__/errors.spec.ts b/packages/clerk-js/src/utils/__tests__/errors.spec.ts index f7c3477f5b8..ce811dc384e 100644 --- a/packages/clerk-js/src/utils/__tests__/errors.spec.ts +++ b/packages/clerk-js/src/utils/__tests__/errors.spec.ts @@ -1,6 +1,6 @@ +import type { ClerkAPIResponseError } from '@clerk/shared/error'; import { describe, expect, it } from 'vitest'; -import type { ClerkAPIResponseError } from '../../core/resources/Error'; import { isError } from '../errors'; describe('isError(err, code)', () => { diff --git a/packages/clerk-js/src/utils/errors.ts b/packages/clerk-js/src/utils/errors.ts index f37c16ddf07..ef842053910 100644 --- a/packages/clerk-js/src/utils/errors.ts +++ b/packages/clerk-js/src/utils/errors.ts @@ -1,7 +1,6 @@ +import type { ClerkAPIResponseError } from '@clerk/shared/error'; import type { ClerkAPIError } from '@clerk/types'; -import type { ClerkAPIResponseError } from '../core/resources/internal'; - export function isError(err: ClerkAPIResponseError, code = ''): boolean { return err.errors && !!err.errors.find((e: ClerkAPIError) => e.code === code); }