From 4eb17879851ebeb867175f6f0c0ae03e22fea6e2 Mon Sep 17 00:00:00 2001 From: Tom Milewski Date: Mon, 11 Dec 2023 20:53:53 -0500 Subject: [PATCH 1/5] chore(backend): Replace `Clerk` with `createClerkClient` [SDK-1058] --- .changeset/fuzzy-years-taste.md | 37 +++++++++++++++++++ packages/backend/README.md | 10 ++--- .../src/api/endpoints/InvitationApi.ts | 4 +- packages/backend/src/exports.test.ts | 2 +- packages/backend/src/index.ts | 2 +- packages/fastify/src/clerkClient.test.ts | 6 +-- packages/fastify/src/clerkClient.ts | 4 +- .../fastify/src/withClerkMiddleware.test.ts | 2 +- .../src/ssr/clerkClient.ts | 11 ++---- .../__snapshots__/exports.test.ts.snap | 1 - packages/nextjs/src/server/clerkClient.ts | 11 ++---- packages/remix/src/api/index.ts | 6 --- packages/remix/src/ssr/authenticateRequest.ts | 4 +- packages/sdk-node/src/clerkClient.ts | 14 +++---- .../sdk-node/src/clerkExpressRequireAuth.ts | 4 +- packages/sdk-node/src/types.ts | 4 +- 16 files changed, 71 insertions(+), 51 deletions(-) create mode 100644 .changeset/fuzzy-years-taste.md diff --git a/.changeset/fuzzy-years-taste.md b/.changeset/fuzzy-years-taste.md new file mode 100644 index 00000000000..b6d67c85f17 --- /dev/null +++ b/.changeset/fuzzy-years-taste.md @@ -0,0 +1,37 @@ +--- +'@clerk/backend': major +'@clerk/gatsby-plugin-clerk': major +'@clerk/nextjs': major +'@clerk/remix': major +--- + +## Breaking Changes + +### @clerk/backend + +Replace `Clerk` with `createClerkClient` [SDK-1058] + + +```js +import { Clerk } from '@clerk/backend'; +const clerk = Clerk({ secretKey: '...' }); +``` + +now becomes: + +```js +import { createClerkClient } from '@clerk/backend'; +const clerk = createClerkClient({ secretKey: '...' }); +``` + +### @clerk/gatsby-plugin-clerk + +No longer returning `Clerk`. Please replace with `createClerkClient` + +### @clerk/nextjs + +No longer returning `Clerk`. Please replace with `createClerkClient` + +### @clerk/remix + +No longer returning `Clerk`. Please replace with `createClerkClient` diff --git a/packages/backend/README.md b/packages/backend/README.md index 6093b7ab386..797b8b788a5 100644 --- a/packages/backend/README.md +++ b/packages/backend/README.md @@ -55,23 +55,23 @@ npm install @clerk/backend ``` ``` -import { Clerk } from '@clerk/backend'; +import { createClerkClient } from '@clerk/backend'; -const clerk = Clerk({ secretKey: '...' }); +const clerk = createClerkClient({ secretKey: '...' }); await clerk.users.getUser("user_..."); ``` ### API -#### Clerk(options: ClerkOptions) +#### createClerkClient(options: ClerkOptions) Create Clerk SDK that includes an HTTP Rest client for the Backend API and session verification helpers. The clerk object contains the following APIs and methods: ```js -import { Clerk } from '@clerk/backend'; +import { createClerkClient } from '@clerk/backend'; -const clerk = Clerk({ secretKey: '...' }); +const clerk = createClerkClient({ secretKey: '...' }); await clerk.users.getUser('user_...'); diff --git a/packages/backend/src/api/endpoints/InvitationApi.ts b/packages/backend/src/api/endpoints/InvitationApi.ts index 232e7ae3820..85d0b73a77e 100644 --- a/packages/backend/src/api/endpoints/InvitationApi.ts +++ b/packages/backend/src/api/endpoints/InvitationApi.ts @@ -19,8 +19,8 @@ type GetInvitationListParams = { * @example * get all revoked invitations * - * import { Clerk } from '@clerk/backend'; - * const clerkClient = Clerk(...) + * import { createClerkClient } from '@clerk/backend'; + * const clerkClient = createClerkClient(...) * await clerkClient.invitations.getInvitationList({ status: 'revoked }) * */ diff --git a/packages/backend/src/exports.test.ts b/packages/backend/src/exports.test.ts index 7adea6c8e3a..2b8bca5c84a 100644 --- a/packages/backend/src/exports.test.ts +++ b/packages/backend/src/exports.test.ts @@ -10,7 +10,6 @@ export default (QUnit: QUnit) => { const exportedApiKeys = [ 'AllowlistIdentifier', 'AuthStatus', - 'Clerk', 'Client', 'DeletedObject', 'Email', @@ -37,6 +36,7 @@ export default (QUnit: QUnit) => { 'buildRequestUrl', 'constants', 'createAuthenticateRequest', + 'createClerkClient', 'createIsomorphicRequest', 'debugRequestState', 'decodeJwt', diff --git a/packages/backend/src/index.ts b/packages/backend/src/index.ts index f706fb7e374..4b1bcafe9c5 100644 --- a/packages/backend/src/index.ts +++ b/packages/backend/src/index.ts @@ -25,7 +25,7 @@ export type ClerkOptions = CreateBackendApiOptions & > > & { sdkMetadata?: SDKMetadata; telemetry?: Pick }; -export function Clerk(options: ClerkOptions) { +export function createClerkClient(options: ClerkOptions) { const opts = { ...options }; const apiClient = createBackendApiClient(opts); const requestState = createAuthenticateRequest({ options: opts, apiClient }); diff --git a/packages/fastify/src/clerkClient.test.ts b/packages/fastify/src/clerkClient.test.ts index ece8ccd2aeb..88cdff33ac9 100644 --- a/packages/fastify/src/clerkClient.test.ts +++ b/packages/fastify/src/clerkClient.test.ts @@ -1,11 +1,11 @@ -const ClerkMock = jest.fn(() => { +const createClerkClientMock = jest.fn(() => { return 'clerkClient'; }); jest.mock('@clerk/backend', () => { return { ...jest.requireActual('@clerk/backend'), - Clerk: ClerkMock, + createClerkClient: createClerkClientMock, }; }); @@ -17,7 +17,7 @@ describe('clerk', () => { }); test('initializes clerk with constants', () => { - expect(ClerkMock.mock.calls).toMatchSnapshot(); + expect(createClerkClientMock.mock.calls).toMatchSnapshot(); expect(clerkClient).toEqual('clerkClient'); }); }); diff --git a/packages/fastify/src/clerkClient.ts b/packages/fastify/src/clerkClient.ts index 3e31939e2eb..fc9ee1be39f 100644 --- a/packages/fastify/src/clerkClient.ts +++ b/packages/fastify/src/clerkClient.ts @@ -1,8 +1,8 @@ -import { Clerk } from '@clerk/backend'; +import { createClerkClient } from '@clerk/backend'; import { API_URL, API_VERSION, JWT_KEY, SDK_METADATA, SECRET_KEY } from './constants'; -export const createClerkClient = Clerk; +export { createClerkClient }; export const clerkClient = createClerkClient({ secretKey: SECRET_KEY, diff --git a/packages/fastify/src/withClerkMiddleware.test.ts b/packages/fastify/src/withClerkMiddleware.test.ts index f14f92a1bbf..39490e244c0 100644 --- a/packages/fastify/src/withClerkMiddleware.test.ts +++ b/packages/fastify/src/withClerkMiddleware.test.ts @@ -9,7 +9,7 @@ const localInterstitialMock = jest.fn(); jest.mock('@clerk/backend', () => { return { ...jest.requireActual('@clerk/backend'), - Clerk: () => { + createClerkClient: () => { return { authenticateRequest: (...args: any) => authenticateRequestMock(...args), localInterstitial: (...args: any) => localInterstitialMock(...args), diff --git a/packages/gatsby-plugin-clerk/src/ssr/clerkClient.ts b/packages/gatsby-plugin-clerk/src/ssr/clerkClient.ts index 6cb3e7799d9..ef4ab591462 100644 --- a/packages/gatsby-plugin-clerk/src/ssr/clerkClient.ts +++ b/packages/gatsby-plugin-clerk/src/ssr/clerkClient.ts @@ -1,8 +1,8 @@ -import { Clerk } from '@clerk/backend'; +import { createClerkClient } from '@clerk/backend'; import { API_URL, API_VERSION, SDK_METADATA, SECRET_KEY, TELEMETRY_DEBUG, TELEMETRY_DISABLED } from '../constants'; -const clerkClient = Clerk({ +const clerkClient = createClerkClient({ secretKey: SECRET_KEY, apiUrl: API_URL, apiVersion: API_VERSION, @@ -15,10 +15,5 @@ const clerkClient = Clerk({ }, }); -const createClerkClient = Clerk; - -// eslint-disable-next-line import/export -export { Clerk, clerkClient, createClerkClient }; - -// eslint-disable-next-line import/export +export { clerkClient }; export * from '@clerk/backend'; diff --git a/packages/nextjs/src/server/__tests__/__snapshots__/exports.test.ts.snap b/packages/nextjs/src/server/__tests__/__snapshots__/exports.test.ts.snap index 5c5d740ca18..6c43fefc75b 100644 --- a/packages/nextjs/src/server/__tests__/__snapshots__/exports.test.ts.snap +++ b/packages/nextjs/src/server/__tests__/__snapshots__/exports.test.ts.snap @@ -4,7 +4,6 @@ exports[`/server public exports should not include a breaking change 1`] = ` [ "AllowlistIdentifier", "AuthStatus", - "Clerk", "Client", "DeletedObject", "Email", diff --git a/packages/nextjs/src/server/clerkClient.ts b/packages/nextjs/src/server/clerkClient.ts index 53ac740b150..fc26200d9a4 100644 --- a/packages/nextjs/src/server/clerkClient.ts +++ b/packages/nextjs/src/server/clerkClient.ts @@ -1,4 +1,4 @@ -import { Clerk } from '@clerk/backend'; +import { createClerkClient } from '@clerk/backend'; import { API_URL, @@ -12,7 +12,7 @@ import { TELEMETRY_DISABLED, } from './constants'; -const clerkClient = Clerk({ +const clerkClient = createClerkClient({ secretKey: SECRET_KEY, apiUrl: API_URL, apiVersion: API_VERSION, @@ -28,10 +28,5 @@ const clerkClient = Clerk({ }, }); -const createClerkClient = Clerk; - -// eslint-disable-next-line import/export -export { Clerk, clerkClient, createClerkClient }; - -// eslint-disable-next-line import/export +export { clerkClient }; export * from '@clerk/backend'; diff --git a/packages/remix/src/api/index.ts b/packages/remix/src/api/index.ts index c04bf4af58b..f5ce35a683b 100644 --- a/packages/remix/src/api/index.ts +++ b/packages/remix/src/api/index.ts @@ -1,7 +1 @@ -import { Clerk } from '@clerk/backend'; - -const createClerkClient = Clerk; - -export { createClerkClient }; - export * from '@clerk/backend'; diff --git a/packages/remix/src/ssr/authenticateRequest.ts b/packages/remix/src/ssr/authenticateRequest.ts index 0e1199b0c30..fb04d5f2e80 100644 --- a/packages/remix/src/ssr/authenticateRequest.ts +++ b/packages/remix/src/ssr/authenticateRequest.ts @@ -1,5 +1,5 @@ import type { RequestState } from '@clerk/backend'; -import { buildRequestUrl, Clerk } from '@clerk/backend'; +import { buildRequestUrl, createClerkClient } from '@clerk/backend'; import { apiUrlFromPublishableKey } from '@clerk/shared/apiUrlFromPublishableKey'; import { handleValueOrFn } from '@clerk/shared/handleValueOrFn'; import { isDevelopmentFromSecretKey } from '@clerk/shared/keys'; @@ -73,7 +73,7 @@ export function authenticateRequest(args: LoaderFunctionArgs, opts: RootAuthLoad throw new Error(satelliteAndMissingSignInUrl); } - return Clerk({ apiUrl, secretKey, jwtKey, proxyUrl, isSatellite, domain }).authenticateRequest({ + return createClerkClient({ apiUrl, secretKey, jwtKey, proxyUrl, isSatellite, domain }).authenticateRequest({ audience, secretKey, jwtKey, diff --git a/packages/sdk-node/src/clerkClient.ts b/packages/sdk-node/src/clerkClient.ts index 01b01ee69d5..d92016af8dc 100644 --- a/packages/sdk-node/src/clerkClient.ts +++ b/packages/sdk-node/src/clerkClient.ts @@ -1,11 +1,11 @@ import type { ClerkOptions, VerifyTokenOptions } from '@clerk/backend'; -import { Clerk as _Clerk, verifyToken as _verifyToken } from '@clerk/backend'; +import { createClerkClient, verifyToken as _verifyToken } from '@clerk/backend'; import { createClerkExpressRequireAuth } from './clerkExpressRequireAuth'; import { createClerkExpressWithAuth } from './clerkExpressWithAuth'; import { loadApiEnv, loadClientEnv } from './utils'; -type ExtendedClerk = ReturnType & { +type ExtendedClerk = ReturnType & { expressWithAuth: ReturnType; expressRequireAuth: ReturnType; verifyToken: (token: string, verifyOpts?: Parameters[1]) => ReturnType; @@ -17,7 +17,7 @@ type ExtendedClerk = ReturnType & { * Arrow functions can never be called with the new keyword because they do not have the [[Construct]] method */ export function Clerk(options: ClerkOptions): ExtendedClerk { - const clerkClient = _Clerk(options); + const clerkClient = createClerkClient(options); const expressWithAuth = createClerkExpressWithAuth({ ...options, clerkClient }); const expressRequireAuth = createClerkExpressRequireAuth({ ...options, clerkClient }); const verifyToken = (token: string, verifyOpts?: VerifyTokenOptions) => { @@ -32,7 +32,7 @@ export function Clerk(options: ClerkOptions): ExtendedClerk { }); } -export const createClerkClient = Clerk; +export { createClerkClient } from '@clerk/backend'; let clerkClientSingleton = {} as unknown as ReturnType; @@ -40,18 +40,18 @@ export const clerkClient = new Proxy(clerkClientSingleton, { get(_target, property) { const hasBeenInitialised = !!clerkClientSingleton.authenticateRequest; if (hasBeenInitialised) { - // @ts-expect-error + // @ts-expect-error - Element implicitly has an 'any' type because expression of type 'string | symbol' can't be used to index type 'ExtendedClerk'. return clerkClientSingleton[property]; } const env = { ...loadApiEnv(), ...loadClientEnv() }; if (env.secretKey) { clerkClientSingleton = Clerk({ ...env, userAgent: '@clerk/clerk-sdk-node' }); - // @ts-expect-error + // @ts-expect-error - Element implicitly has an 'any' type because expression of type 'string | symbol' can't be used to index type 'ExtendedClerk'. return clerkClientSingleton[property]; } - // @ts-expect-error + // @ts-expect-error - Element implicitly has an 'any' type because expression of type 'string | symbol' can't be used to index type 'ExtendedClerk'. return Clerk({ ...env, userAgent: '@clerk/clerk-sdk-node' })[property]; }, set() { diff --git a/packages/sdk-node/src/clerkExpressRequireAuth.ts b/packages/sdk-node/src/clerkExpressRequireAuth.ts index 79ca8f56c90..89632974c34 100644 --- a/packages/sdk-node/src/clerkExpressRequireAuth.ts +++ b/packages/sdk-node/src/clerkExpressRequireAuth.ts @@ -1,4 +1,4 @@ -import type { Clerk } from '@clerk/backend'; +import type { createClerkClient } from '@clerk/backend'; import { authenticateRequest, @@ -10,7 +10,7 @@ import { import type { ClerkMiddlewareOptions, MiddlewareRequireAuthProp, RequireAuthProp } from './types'; export type CreateClerkExpressMiddlewareOptions = { - clerkClient: ReturnType; + clerkClient: ReturnType; secretKey?: string; publishableKey?: string; apiUrl?: string; diff --git a/packages/sdk-node/src/types.ts b/packages/sdk-node/src/types.ts index a39dd5a291d..a4e45e80ad7 100644 --- a/packages/sdk-node/src/types.ts +++ b/packages/sdk-node/src/types.ts @@ -1,4 +1,4 @@ -import type { AuthenticateRequestOptions, AuthObject, Clerk, SignedInAuthObject } from '@clerk/backend'; +import type { AuthenticateRequestOptions, AuthObject, createClerkClient, SignedInAuthObject } from '@clerk/backend'; import type { MultiDomainAndOrProxy } from '@clerk/types'; import type { NextFunction, Request, Response } from 'express'; import type { IncomingMessage } from 'http'; @@ -36,7 +36,7 @@ export type ClerkMiddlewareOptions = { signInUrl?: string; } & MultiDomainAndOrProxy; -export type ClerkClient = ReturnType; +export type ClerkClient = ReturnType; export type AuthenticateRequestParams = { clerkClient: ClerkClient; From 752673411f91cc5438b6fcaf63598611da001baa Mon Sep 17 00:00:00 2001 From: Tom Milewski Date: Mon, 11 Dec 2023 22:04:51 -0500 Subject: [PATCH 2/5] chore(*): Update changeset package name --- .changeset/fuzzy-years-taste.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/fuzzy-years-taste.md b/.changeset/fuzzy-years-taste.md index b6d67c85f17..e9c4b6d1fa2 100644 --- a/.changeset/fuzzy-years-taste.md +++ b/.changeset/fuzzy-years-taste.md @@ -1,8 +1,8 @@ --- '@clerk/backend': major -'@clerk/gatsby-plugin-clerk': major '@clerk/nextjs': major '@clerk/remix': major +'gatsby-plugin-clerk': major --- ## Breaking Changes From ba085166fdc8c4e05043e1e663ea8d62460e2d83 Mon Sep 17 00:00:00 2001 From: Tom Milewski Date: Tue, 12 Dec 2023 09:43:59 -0500 Subject: [PATCH 3/5] chore(*): Add individual changesets --- .changeset/eight-badgers-speak.md | 21 +++++++++++++++++++++ .changeset/fuzzy-years-taste.md | 23 ++++------------------- .changeset/metal-ears-cheat.md | 21 +++++++++++++++++++++ .changeset/shiny-pumas-share.md | 22 ++++++++++++++++++++++ .changeset/small-cats-check.md | 23 +++++++++++++++++++++++ .changeset/sour-avocados-sin.md | 22 ++++++++++++++++++++++ 6 files changed, 113 insertions(+), 19 deletions(-) create mode 100644 .changeset/eight-badgers-speak.md create mode 100644 .changeset/metal-ears-cheat.md create mode 100644 .changeset/shiny-pumas-share.md create mode 100644 .changeset/small-cats-check.md create mode 100644 .changeset/sour-avocados-sin.md diff --git a/.changeset/eight-badgers-speak.md b/.changeset/eight-badgers-speak.md new file mode 100644 index 00000000000..d70431b5686 --- /dev/null +++ b/.changeset/eight-badgers-speak.md @@ -0,0 +1,21 @@ +--- +'@clerk/clerk-sdk-node': major +--- + +## Breaking Changes + +(Note: This is only relevant if, in the unlikely case, you are using `Clerk` from `@clerk/clerk-sdk-node` directly. If not, you can safely ignore this change.) + +Remove the named `Clerk` import from `@clerk/clerk-sdk-node` and import `createClerkClient` instead. The latter is a factory method to create a Clerk client instance for you. This update aligns usage across our SDKs and will enable us to ship DX improvements better in the future. [SDK-1058] + +```js +import { Clerk } from '@clerk/clerk-sdk-node'; +const clerk = Clerk({ secretKey: '...' }); +``` + +You need to rename the import from `Clerk` to `createClerkClient` and change its usage: + +```js +import { createClerkClient } from '@clerk/clerk-sdk-node'; +const clerk = createClerkClient({ secretKey: '...' }); +``` diff --git a/.changeset/fuzzy-years-taste.md b/.changeset/fuzzy-years-taste.md index e9c4b6d1fa2..a922528199e 100644 --- a/.changeset/fuzzy-years-taste.md +++ b/.changeset/fuzzy-years-taste.md @@ -1,37 +1,22 @@ --- '@clerk/backend': major -'@clerk/nextjs': major -'@clerk/remix': major -'gatsby-plugin-clerk': major --- ## Breaking Changes -### @clerk/backend - -Replace `Clerk` with `createClerkClient` [SDK-1058] +Remove the named `Clerk` import from `@clerk/backend` and import `createClerkClient` instead. The latter is a factory method that will create a Clerk client instance for you. This aligns usage across our SDKs and will enable us to better ship DX improvements in the future. [SDK-1058] +Inside your code, search for occurrences like these: + ```js import { Clerk } from '@clerk/backend'; const clerk = Clerk({ secretKey: '...' }); ``` -now becomes: +You need to rename the import from `Clerk` to `createClerkClient` and change its usage: ```js import { createClerkClient } from '@clerk/backend'; const clerk = createClerkClient({ secretKey: '...' }); ``` - -### @clerk/gatsby-plugin-clerk - -No longer returning `Clerk`. Please replace with `createClerkClient` - -### @clerk/nextjs - -No longer returning `Clerk`. Please replace with `createClerkClient` - -### @clerk/remix - -No longer returning `Clerk`. Please replace with `createClerkClient` diff --git a/.changeset/metal-ears-cheat.md b/.changeset/metal-ears-cheat.md new file mode 100644 index 00000000000..cfba8029bf9 --- /dev/null +++ b/.changeset/metal-ears-cheat.md @@ -0,0 +1,21 @@ +--- +'gatsby-plugin-clerk': major +--- + +## Breaking Changes + +Remove the named `Clerk` import from `gatsby-plugin-clerk` and import `createClerkClient` instead. The latter is a factory method to create a Clerk client instance for you. This update aligns usage across our SDKs and will enable us to ship DX improvements better in the future. [SDK-1058] + +Inside your code, search for occurrences like these: + +```js +import { Clerk } from 'gatsby-plugin-clerk'; +const clerk = Clerk({ secretKey: '...' }); +``` + +You need to rename the import from `Clerk` to `createClerkClient` and change its usage: + +```js +import { createClerkClient } from 'gatsby-plugin-clerk'; +const clerk = createClerkClient({ secretKey: '...' }); +``` diff --git a/.changeset/shiny-pumas-share.md b/.changeset/shiny-pumas-share.md new file mode 100644 index 00000000000..4517811ef31 --- /dev/null +++ b/.changeset/shiny-pumas-share.md @@ -0,0 +1,22 @@ +--- +'@clerk/remix': major +--- + +## Breaking Changes + +(Note: This is only relevant if, in the unlikely case, you are using `Clerk` from `@clerk/remix` directly. If not, you can safely ignore this change.) + +Remove the named `Clerk` import from `@clerk/remix` and import `createClerkClient` instead. The latter is a factory method to create a Clerk client instance for you. This update aligns usage across our SDKs and will enable us to ship DX improvements better in the future. [SDK-1058] + +```js +import { Clerk } from '@clerk/remix'; +const clerk = Clerk({ secretKey: '...' }); +``` + +You need to rename the import from `Clerk` to `createClerkClient` and change its usage: + +```js +import { createClerkClient } from '@clerk/remix'; +const clerk = createClerkClient({ secretKey: '...' }); +``` + diff --git a/.changeset/small-cats-check.md b/.changeset/small-cats-check.md new file mode 100644 index 00000000000..565dd82ce74 --- /dev/null +++ b/.changeset/small-cats-check.md @@ -0,0 +1,23 @@ +--- +'@clerk/fastify': major +--- + +## Breaking Changes + +(Note: This is only relevant if, in the unlikely case, you are using `Clerk` from `@clerk/fastify` directly. If not, you can safely ignore this change.) + +Remove the named `Clerk` import from `@clerk/fastify` and import `createClerkClient` instead. The latter is a factory method to create a Clerk client instance for you. This update aligns usage across our SDKs and will enable us to ship DX improvements better in the future. [SDK-1058] + + +```js +import { Clerk } from '@clerk/fastify'; +const clerk = Clerk({ secretKey: '...' }); +``` + +You need to rename the import from `Clerk` to `createClerkClient` and change its usage: + +```js +import { createClerkClient } from '@clerk/fastify'; +const clerk = createClerkClient({ secretKey: '...' }); +``` + diff --git a/.changeset/sour-avocados-sin.md b/.changeset/sour-avocados-sin.md new file mode 100644 index 00000000000..7ae69cf1ecd --- /dev/null +++ b/.changeset/sour-avocados-sin.md @@ -0,0 +1,22 @@ +--- +'@clerk/nextjs': major +--- + +## Breaking Changes + +(Note: This is only relevant if, in the unlikely case, you are using `Clerk` from `@clerk/nextjs` directly. If not, you can safely ignore this change.) + +Remove the named `Clerk` import from `@clerk/nextjs` and import `createClerkClient` instead. The latter is a factory method to create a Clerk client instance for you. This update aligns usage across our SDKs and will enable us to ship DX improvements better in the future. [SDK-1058] + +```js +import { Clerk } from '@clerk/nextjs'; +const clerk = Clerk({ secretKey: '...' }); +``` + +You need to rename the import from `Clerk` to `createClerkClient` and change its usage: + +```js +import { createClerkClient } from '@clerk/nextjs'; +const clerk = createClerkClient({ secretKey: '...' }); +``` + From a63edbdab7d045417ce8ac84fde0b2d481443247 Mon Sep 17 00:00:00 2001 From: Tom Milewski Date: Tue, 12 Dec 2023 18:38:50 -0500 Subject: [PATCH 4/5] chore(*): Update .changesets --- .changeset/eight-badgers-speak.md | 4 +--- .changeset/fuzzy-years-taste.md | 4 +--- .changeset/metal-ears-cheat.md | 4 +--- .changeset/shiny-pumas-share.md | 4 +--- .changeset/small-cats-check.md | 4 +--- .changeset/sour-avocados-sin.md | 4 +--- 6 files changed, 6 insertions(+), 18 deletions(-) diff --git a/.changeset/eight-badgers-speak.md b/.changeset/eight-badgers-speak.md index d70431b5686..596dc350d17 100644 --- a/.changeset/eight-badgers-speak.md +++ b/.changeset/eight-badgers-speak.md @@ -2,11 +2,9 @@ '@clerk/clerk-sdk-node': major --- -## Breaking Changes - (Note: This is only relevant if, in the unlikely case, you are using `Clerk` from `@clerk/clerk-sdk-node` directly. If not, you can safely ignore this change.) -Remove the named `Clerk` import from `@clerk/clerk-sdk-node` and import `createClerkClient` instead. The latter is a factory method to create a Clerk client instance for you. This update aligns usage across our SDKs and will enable us to ship DX improvements better in the future. [SDK-1058] +Remove the named `Clerk` import from `@clerk/clerk-sdk-node` and import `createClerkClient` instead. The latter is a factory method to create a Clerk client instance for you. This update aligns usage across our SDKs and will enable us to ship DX improvements better in the future. ```js import { Clerk } from '@clerk/clerk-sdk-node'; diff --git a/.changeset/fuzzy-years-taste.md b/.changeset/fuzzy-years-taste.md index a922528199e..e1c45d07397 100644 --- a/.changeset/fuzzy-years-taste.md +++ b/.changeset/fuzzy-years-taste.md @@ -2,9 +2,7 @@ '@clerk/backend': major --- -## Breaking Changes - -Remove the named `Clerk` import from `@clerk/backend` and import `createClerkClient` instead. The latter is a factory method that will create a Clerk client instance for you. This aligns usage across our SDKs and will enable us to better ship DX improvements in the future. [SDK-1058] +Remove the named `Clerk` import from `@clerk/backend` and import `createClerkClient` instead. The latter is a factory method that will create a Clerk client instance for you. This aligns usage across our SDKs and will enable us to better ship DX improvements in the future. Inside your code, search for occurrences like these: diff --git a/.changeset/metal-ears-cheat.md b/.changeset/metal-ears-cheat.md index cfba8029bf9..c9de773d780 100644 --- a/.changeset/metal-ears-cheat.md +++ b/.changeset/metal-ears-cheat.md @@ -2,9 +2,7 @@ 'gatsby-plugin-clerk': major --- -## Breaking Changes - -Remove the named `Clerk` import from `gatsby-plugin-clerk` and import `createClerkClient` instead. The latter is a factory method to create a Clerk client instance for you. This update aligns usage across our SDKs and will enable us to ship DX improvements better in the future. [SDK-1058] +Remove the named `Clerk` import from `gatsby-plugin-clerk` and import `createClerkClient` instead. The latter is a factory method to create a Clerk client instance for you. This update aligns usage across our SDKs and will enable us to ship DX improvements better in the future. Inside your code, search for occurrences like these: diff --git a/.changeset/shiny-pumas-share.md b/.changeset/shiny-pumas-share.md index 4517811ef31..8dfb86b4d82 100644 --- a/.changeset/shiny-pumas-share.md +++ b/.changeset/shiny-pumas-share.md @@ -2,11 +2,9 @@ '@clerk/remix': major --- -## Breaking Changes - (Note: This is only relevant if, in the unlikely case, you are using `Clerk` from `@clerk/remix` directly. If not, you can safely ignore this change.) -Remove the named `Clerk` import from `@clerk/remix` and import `createClerkClient` instead. The latter is a factory method to create a Clerk client instance for you. This update aligns usage across our SDKs and will enable us to ship DX improvements better in the future. [SDK-1058] +Remove the named `Clerk` import from `@clerk/remix` and import `createClerkClient` instead. The latter is a factory method to create a Clerk client instance for you. This update aligns usage across our SDKs and will enable us to ship DX improvements better in the future. ```js import { Clerk } from '@clerk/remix'; diff --git a/.changeset/small-cats-check.md b/.changeset/small-cats-check.md index 565dd82ce74..3c980021e22 100644 --- a/.changeset/small-cats-check.md +++ b/.changeset/small-cats-check.md @@ -2,11 +2,9 @@ '@clerk/fastify': major --- -## Breaking Changes - (Note: This is only relevant if, in the unlikely case, you are using `Clerk` from `@clerk/fastify` directly. If not, you can safely ignore this change.) -Remove the named `Clerk` import from `@clerk/fastify` and import `createClerkClient` instead. The latter is a factory method to create a Clerk client instance for you. This update aligns usage across our SDKs and will enable us to ship DX improvements better in the future. [SDK-1058] +Remove the named `Clerk` import from `@clerk/fastify` and import `createClerkClient` instead. The latter is a factory method to create a Clerk client instance for you. This update aligns usage across our SDKs and will enable us to ship DX improvements better in the future. ```js diff --git a/.changeset/sour-avocados-sin.md b/.changeset/sour-avocados-sin.md index 7ae69cf1ecd..9435b24fee7 100644 --- a/.changeset/sour-avocados-sin.md +++ b/.changeset/sour-avocados-sin.md @@ -2,11 +2,9 @@ '@clerk/nextjs': major --- -## Breaking Changes - (Note: This is only relevant if, in the unlikely case, you are using `Clerk` from `@clerk/nextjs` directly. If not, you can safely ignore this change.) -Remove the named `Clerk` import from `@clerk/nextjs` and import `createClerkClient` instead. The latter is a factory method to create a Clerk client instance for you. This update aligns usage across our SDKs and will enable us to ship DX improvements better in the future. [SDK-1058] +Remove the named `Clerk` import from `@clerk/nextjs` and import `createClerkClient` instead. The latter is a factory method to create a Clerk client instance for you. This update aligns usage across our SDKs and will enable us to ship DX improvements better in the future. ```js import { Clerk } from '@clerk/nextjs'; From 884843c76e7fe377e42af557e9602109df24f61e Mon Sep 17 00:00:00 2001 From: Tom Milewski Date: Tue, 12 Dec 2023 22:50:14 -0500 Subject: [PATCH 5/5] chore(*): Update integration tests --- integration/cleanup/cleanup.setup.ts | 4 ++-- integration/testUtils/index.ts | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/integration/cleanup/cleanup.setup.ts b/integration/cleanup/cleanup.setup.ts index a3f9c40dee7..ef83b731bcf 100644 --- a/integration/cleanup/cleanup.setup.ts +++ b/integration/cleanup/cleanup.setup.ts @@ -1,5 +1,5 @@ import type { User } from '@clerk/backend'; -import { Clerk } from '@clerk/backend'; +import { createClerkClient } from '@clerk/backend'; import { test as setup } from '@playwright/test'; import { appConfigs } from '../presets/'; @@ -13,7 +13,7 @@ setup('cleanup instances ', async () => { for (const secretKey of secretKeys) { console.log(`Cleanup for ${secretKey.replace(/(sk_test_)(.+)(...)/, '$1***$3')}`); - const clerkClient = Clerk({ secretKey }); + const clerkClient = createClerkClient({ secretKey }); const { data: users, errors } = await clerkClient.users.getUserList({ orderBy: '-created_at', query: 'clerkcookie', diff --git a/integration/testUtils/index.ts b/integration/testUtils/index.ts index 40f63e55e2d..dca7e69139c 100644 --- a/integration/testUtils/index.ts +++ b/integration/testUtils/index.ts @@ -1,4 +1,4 @@ -import { Clerk } from '@clerk/backend'; +import { createClerkClient as backendCreateClerkClient } from '@clerk/backend'; import type { Browser, BrowserContext, Page } from '@playwright/test'; import type { Application } from '../models/application'; @@ -13,7 +13,7 @@ import { createUserService } from './usersService'; export type { FakeUser }; const createClerkClient = (app: Application) => { - return Clerk({ + return backendCreateClerkClient({ secretKey: app.env.privateVariables.get('CLERK_SECRET_KEY'), publishableKey: app.env.publicVariables.get('CLERK_PUBLISHABLE_KEY'), });