Skip to content

Commit 55d11d4

Browse files
committed
chore(backend): Replace Clerk with createClerkClient [SDK-1058]
1 parent 8e5cf6e commit 55d11d4

File tree

16 files changed

+71
-51
lines changed

16 files changed

+71
-51
lines changed

.changeset/fuzzy-years-taste.md

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
---
2+
'@clerk/backend': major
3+
'@clerk/gatsby-plugin-clerk': major
4+
'@clerk/nextjs': major
5+
'@clerk/remix': major
6+
---
7+
8+
## Breaking Changes
9+
10+
### @clerk/backend
11+
12+
Replace `Clerk` with `createClerkClient` [SDK-1058]
13+
14+
15+
```js
16+
import { Clerk } from '@clerk/backend';
17+
const clerk = Clerk({ secretKey: '...' });
18+
```
19+
20+
now becomes:
21+
22+
```js
23+
import { createClerkClient } from '@clerk/backend';
24+
const clerk = createClerkClient({ secretKey: '...' });
25+
```
26+
27+
### @clerk/gatsby-plugin-clerk
28+
29+
No longer returning `Clerk`. Please replace with `createClerkClient`
30+
31+
### @clerk/nextjs
32+
33+
No longer returning `Clerk`. Please replace with `createClerkClient`
34+
35+
### @clerk/remix
36+
37+
No longer returning `Clerk`. Please replace with `createClerkClient`

packages/backend/README.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -55,23 +55,23 @@ npm install @clerk/backend
5555
```
5656

5757
```
58-
import { Clerk } from '@clerk/backend';
58+
import { createClerkClient } from '@clerk/backend';
5959
60-
const clerk = Clerk({ secretKey: '...' });
60+
const clerk = createClerkClient({ secretKey: '...' });
6161
6262
await clerk.users.getUser("user_...");
6363
```
6464

6565
### API
6666

67-
#### Clerk(options: ClerkOptions)
67+
#### createClerkClient(options: ClerkOptions)
6868

6969
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:
7070

7171
```js
72-
import { Clerk } from '@clerk/backend';
72+
import { createClerkClient } from '@clerk/backend';
7373

74-
const clerk = Clerk({ secretKey: '...' });
74+
const clerk = createClerkClient({ secretKey: '...' });
7575

7676
await clerk.users.getUser('user_...');
7777

packages/backend/src/api/endpoints/InvitationApi.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ type GetInvitationListParams = {
1919
* @example
2020
* get all revoked invitations
2121
*
22-
* import { Clerk } from '@clerk/backend';
23-
* const clerkClient = Clerk(...)
22+
* import { createClerkClient } from '@clerk/backend';
23+
* const clerkClient = createClerkClient(...)
2424
* await clerkClient.invitations.getInvitationList({ status: 'revoked })
2525
*
2626
*/

packages/backend/src/exports.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ export default (QUnit: QUnit) => {
1010
const exportedApiKeys = [
1111
'AllowlistIdentifier',
1212
'AuthStatus',
13-
'Clerk',
1413
'Client',
1514
'DeletedObject',
1615
'Email',
@@ -37,6 +36,7 @@ export default (QUnit: QUnit) => {
3736
'buildRequestUrl',
3837
'constants',
3938
'createAuthenticateRequest',
39+
'createClerkClient',
4040
'createIsomorphicRequest',
4141
'debugRequestState',
4242
'decodeJwt',

packages/backend/src/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ export type ClerkOptions = CreateBackendApiOptions &
2525
>
2626
> & { sdkMetadata?: SDKMetadata; telemetry?: Pick<TelemetryCollectorOptions, 'disabled' | 'debug'> };
2727

28-
export function Clerk(options: ClerkOptions) {
28+
export function createClerkClient(options: ClerkOptions) {
2929
const opts = { ...options };
3030
const apiClient = createBackendApiClient(opts);
3131
const requestState = createAuthenticateRequest({ options: opts, apiClient });

packages/fastify/src/clerkClient.test.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
const ClerkMock = jest.fn(() => {
1+
const createClerkClientMock = jest.fn(() => {
22
return 'clerkClient';
33
});
44

55
jest.mock('@clerk/backend', () => {
66
return {
77
...jest.requireActual('@clerk/backend'),
8-
Clerk: ClerkMock,
8+
createClerkClient: createClerkClientMock,
99
};
1010
});
1111

@@ -17,7 +17,7 @@ describe('clerk', () => {
1717
});
1818

1919
test('initializes clerk with constants', () => {
20-
expect(ClerkMock.mock.calls).toMatchSnapshot();
20+
expect(createClerkClientMock.mock.calls).toMatchSnapshot();
2121
expect(clerkClient).toEqual('clerkClient');
2222
});
2323
});

packages/fastify/src/clerkClient.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
import { Clerk } from '@clerk/backend';
1+
import { createClerkClient } from '@clerk/backend';
22

33
import { API_URL, API_VERSION, JWT_KEY, SDK_METADATA, SECRET_KEY } from './constants';
44

5-
export const createClerkClient = Clerk;
5+
export { createClerkClient };
66

77
export const clerkClient = createClerkClient({
88
secretKey: SECRET_KEY,

packages/fastify/src/withClerkMiddleware.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ const localInterstitialMock = jest.fn();
99
jest.mock('@clerk/backend', () => {
1010
return {
1111
...jest.requireActual('@clerk/backend'),
12-
Clerk: () => {
12+
createClerkClient: () => {
1313
return {
1414
authenticateRequest: (...args: any) => authenticateRequestMock(...args),
1515
localInterstitial: (...args: any) => localInterstitialMock(...args),
Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
import { Clerk } from '@clerk/backend';
1+
import { createClerkClient } from '@clerk/backend';
22

33
import { API_URL, API_VERSION, SDK_METADATA, SECRET_KEY, TELEMETRY_DEBUG, TELEMETRY_DISABLED } from '../constants';
44

5-
const clerkClient = Clerk({
5+
const clerkClient = createClerkClient({
66
secretKey: SECRET_KEY,
77
apiUrl: API_URL,
88
apiVersion: API_VERSION,
@@ -15,10 +15,5 @@ const clerkClient = Clerk({
1515
},
1616
});
1717

18-
const createClerkClient = Clerk;
19-
20-
// eslint-disable-next-line import/export
21-
export { Clerk, clerkClient, createClerkClient };
22-
23-
// eslint-disable-next-line import/export
18+
export { clerkClient };
2419
export * from '@clerk/backend';

packages/nextjs/src/server/__tests__/__snapshots__/exports.test.ts.snap

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ exports[`/server public exports should not include a breaking change 1`] = `
44
[
55
"AllowlistIdentifier",
66
"AuthStatus",
7-
"Clerk",
87
"Client",
98
"DeletedObject",
109
"Email",

packages/nextjs/src/server/clerkClient.ts

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Clerk } from '@clerk/backend';
1+
import { createClerkClient } from '@clerk/backend';
22

33
import {
44
API_URL,
@@ -12,7 +12,7 @@ import {
1212
TELEMETRY_DISABLED,
1313
} from './constants';
1414

15-
const clerkClient = Clerk({
15+
const clerkClient = createClerkClient({
1616
secretKey: SECRET_KEY,
1717
apiUrl: API_URL,
1818
apiVersion: API_VERSION,
@@ -28,10 +28,5 @@ const clerkClient = Clerk({
2828
},
2929
});
3030

31-
const createClerkClient = Clerk;
32-
33-
// eslint-disable-next-line import/export
34-
export { Clerk, clerkClient, createClerkClient };
35-
36-
// eslint-disable-next-line import/export
31+
export { clerkClient };
3732
export * from '@clerk/backend';

packages/remix/src/api/index.ts

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1 @@
1-
import { Clerk } from '@clerk/backend';
2-
3-
const createClerkClient = Clerk;
4-
5-
export { createClerkClient };
6-
71
export * from '@clerk/backend';

packages/remix/src/ssr/authenticateRequest.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import type { RequestState } from '@clerk/backend';
2-
import { buildRequestUrl, Clerk } from '@clerk/backend';
2+
import { buildRequestUrl, createClerkClient } from '@clerk/backend';
33
import { apiUrlFromPublishableKey } from '@clerk/shared/apiUrlFromPublishableKey';
44
import { handleValueOrFn } from '@clerk/shared/handleValueOrFn';
55
import { isDevelopmentFromSecretKey } from '@clerk/shared/keys';
@@ -73,7 +73,7 @@ export function authenticateRequest(args: LoaderFunctionArgs, opts: RootAuthLoad
7373
throw new Error(satelliteAndMissingSignInUrl);
7474
}
7575

76-
return Clerk({ apiUrl, secretKey, jwtKey, proxyUrl, isSatellite, domain }).authenticateRequest({
76+
return createClerkClient({ apiUrl, secretKey, jwtKey, proxyUrl, isSatellite, domain }).authenticateRequest({
7777
audience,
7878
secretKey,
7979
jwtKey,

packages/sdk-node/src/clerkClient.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
import type { ClerkOptions, VerifyTokenOptions } from '@clerk/backend';
2-
import { Clerk as _Clerk, verifyToken as _verifyToken } from '@clerk/backend';
2+
import { createClerkClient, verifyToken as _verifyToken } from '@clerk/backend';
33

44
import { createClerkExpressRequireAuth } from './clerkExpressRequireAuth';
55
import { createClerkExpressWithAuth } from './clerkExpressWithAuth';
66
import { loadApiEnv, loadClientEnv } from './utils';
77

8-
type ExtendedClerk = ReturnType<typeof _Clerk> & {
8+
type ExtendedClerk = ReturnType<typeof createClerkClient> & {
99
expressWithAuth: ReturnType<typeof createClerkExpressWithAuth>;
1010
expressRequireAuth: ReturnType<typeof createClerkExpressRequireAuth>;
1111
verifyToken: (token: string, verifyOpts?: Parameters<typeof _verifyToken>[1]) => ReturnType<typeof _verifyToken>;
@@ -17,7 +17,7 @@ type ExtendedClerk = ReturnType<typeof _Clerk> & {
1717
* Arrow functions can never be called with the new keyword because they do not have the [[Construct]] method
1818
*/
1919
export function Clerk(options: ClerkOptions): ExtendedClerk {
20-
const clerkClient = _Clerk(options);
20+
const clerkClient = createClerkClient(options);
2121
const expressWithAuth = createClerkExpressWithAuth({ ...options, clerkClient });
2222
const expressRequireAuth = createClerkExpressRequireAuth({ ...options, clerkClient });
2323
const verifyToken = (token: string, verifyOpts?: VerifyTokenOptions) => {
@@ -32,26 +32,26 @@ export function Clerk(options: ClerkOptions): ExtendedClerk {
3232
});
3333
}
3434

35-
export const createClerkClient = Clerk;
35+
export { createClerkClient } from '@clerk/backend';
3636

3737
let clerkClientSingleton = {} as unknown as ReturnType<typeof Clerk>;
3838

3939
export const clerkClient = new Proxy(clerkClientSingleton, {
4040
get(_target, property) {
4141
const hasBeenInitialised = !!clerkClientSingleton.authenticateRequest;
4242
if (hasBeenInitialised) {
43-
// @ts-expect-error
43+
// @ts-expect-error - Element implicitly has an 'any' type because expression of type 'string | symbol' can't be used to index type 'ExtendedClerk'.
4444
return clerkClientSingleton[property];
4545
}
4646

4747
const env = { ...loadApiEnv(), ...loadClientEnv() };
4848
if (env.secretKey) {
4949
clerkClientSingleton = Clerk({ ...env, userAgent: '@clerk/clerk-sdk-node' });
50-
// @ts-expect-error
50+
// @ts-expect-error - Element implicitly has an 'any' type because expression of type 'string | symbol' can't be used to index type 'ExtendedClerk'.
5151
return clerkClientSingleton[property];
5252
}
5353

54-
// @ts-expect-error
54+
// @ts-expect-error - Element implicitly has an 'any' type because expression of type 'string | symbol' can't be used to index type 'ExtendedClerk'.
5555
return Clerk({ ...env, userAgent: '@clerk/clerk-sdk-node' })[property];
5656
},
5757
set() {

packages/sdk-node/src/clerkExpressRequireAuth.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import type { Clerk } from '@clerk/backend';
1+
import type { createClerkClient } from '@clerk/backend';
22

33
import {
44
authenticateRequest,
@@ -10,7 +10,7 @@ import {
1010
import type { ClerkMiddlewareOptions, MiddlewareRequireAuthProp, RequireAuthProp } from './types';
1111

1212
export type CreateClerkExpressMiddlewareOptions = {
13-
clerkClient: ReturnType<typeof Clerk>;
13+
clerkClient: ReturnType<typeof createClerkClient>;
1414
/* Secret Key */
1515
secretKey?: string;
1616
publishableKey?: string;

packages/sdk-node/src/types.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import type { AuthenticateRequestOptions, AuthObject, Clerk, SignedInAuthObject } from '@clerk/backend';
1+
import type { AuthenticateRequestOptions, AuthObject, createClerkClient, SignedInAuthObject } from '@clerk/backend';
22
import type { MultiDomainAndOrProxy } from '@clerk/types';
33
import type { NextFunction, Request, Response } from 'express';
44
import type { IncomingMessage } from 'http';
@@ -36,7 +36,7 @@ export type ClerkMiddlewareOptions = {
3636
signInUrl?: string;
3737
} & MultiDomainAndOrProxy;
3838

39-
export type ClerkClient = ReturnType<typeof Clerk>;
39+
export type ClerkClient = ReturnType<typeof createClerkClient>;
4040

4141
export type AuthenticateRequestParams = {
4242
clerkClient: ClerkClient;

0 commit comments

Comments
 (0)