From dc04466adde7f8e0a6a76d4aa49e7e304e170975 Mon Sep 17 00:00:00 2001 From: Dimitris Klouvas Date: Thu, 2 Nov 2023 21:46:05 +0200 Subject: [PATCH 1/8] chore(clerk-sdk-node): Drop `CLERK_API_KEY` and `apiKey` --- .../sdk-node/examples/node/src/clients.ts | 2 +- packages/sdk-node/jest.setup.js | 3 +- .../__snapshots__/exports.test.ts.snap | 1 - .../sdk-node/src/authenticateRequest.test.ts | 5 +-- packages/sdk-node/src/authenticateRequest.ts | 8 ++--- packages/sdk-node/src/clerkClient.ts | 3 -- .../sdk-node/src/clerkExpressRequireAuth.ts | 7 +---- packages/sdk-node/src/clerkExpressWithAuth.ts | 3 +- packages/sdk-node/src/index.ts | 31 +++++++++---------- packages/sdk-node/src/types.ts | 4 --- packages/sdk-node/src/utils.ts | 7 +---- 11 files changed, 23 insertions(+), 51 deletions(-) diff --git a/packages/sdk-node/examples/node/src/clients.ts b/packages/sdk-node/examples/node/src/clients.ts index b07d7d94749..9dc3c38d521 100644 --- a/packages/sdk-node/examples/node/src/clients.ts +++ b/packages/sdk-node/examples/node/src/clients.ts @@ -31,7 +31,7 @@ try { try { console.log('Get client list with invalid API key'); - clerk.apiKey = 'snafu'; + clerk.secretKey = 'snafu'; const invalidClients = await clerk.clients.getClientList(); console.log(invalidClients); } catch (error) { diff --git a/packages/sdk-node/jest.setup.js b/packages/sdk-node/jest.setup.js index e43456250f7..1a5dcdc343c 100644 --- a/packages/sdk-node/jest.setup.js +++ b/packages/sdk-node/jest.setup.js @@ -1,2 +1 @@ -process.env.CLERK_API_KEY = 'TEST_API_KEY'; -process.env.CLERK_SECRET_KEY = 'TEST_API_KEY'; +process.env.CLERK_SECRET_KEY = 'TEST_SECRET_KEY'; diff --git a/packages/sdk-node/src/__tests__/__snapshots__/exports.test.ts.snap b/packages/sdk-node/src/__tests__/__snapshots__/exports.test.ts.snap index 3e396fa8449..c85573cf3d7 100644 --- a/packages/sdk-node/src/__tests__/__snapshots__/exports.test.ts.snap +++ b/packages/sdk-node/src/__tests__/__snapshots__/exports.test.ts.snap @@ -56,7 +56,6 @@ exports[`module exports should not change unless explicitly set 1`] = ` "requireAuth", "sanitizeAuthObject", "sessions", - "setClerkApiKey", "setClerkApiVersion", "setClerkHttpOptions", "setClerkServerApiUrl", diff --git a/packages/sdk-node/src/authenticateRequest.test.ts b/packages/sdk-node/src/authenticateRequest.test.ts index 7f66f43c749..9e8d06c2637 100644 --- a/packages/sdk-node/src/authenticateRequest.test.ts +++ b/packages/sdk-node/src/authenticateRequest.test.ts @@ -34,8 +34,7 @@ describe('authenticateRequest', () => { }; const clerkClient = mockClerkClient(); - const apiKey = 'apiKey'; - const secretKey = ''; + const secretKey = 'secretKey'; const frontendApi = 'frontendApi'; const publishableKey = 'publishableKey'; const searchParams = new URLSearchParams(); @@ -51,7 +50,6 @@ describe('authenticateRequest', () => { await authenticateRequest({ clerkClient: clerkClient as any, - apiKey, secretKey, frontendApi, publishableKey, @@ -61,7 +59,6 @@ describe('authenticateRequest', () => { expect(clerkClient.authenticateRequest).toHaveBeenCalledWith( expect.objectContaining({ authorizedParties: ['party1'], - apiKey: apiKey, secretKey: secretKey, frontendApi: frontendApi, publishableKey: publishableKey, diff --git a/packages/sdk-node/src/authenticateRequest.ts b/packages/sdk-node/src/authenticateRequest.ts index d710b243323..7e41f6ec336 100644 --- a/packages/sdk-node/src/authenticateRequest.ts +++ b/packages/sdk-node/src/authenticateRequest.ts @@ -37,7 +37,7 @@ export async function loadInterstitial({ } export const authenticateRequest = (opts: AuthenticateRequestParams) => { - const { clerkClient, apiKey, secretKey, frontendApi, publishableKey, req, options } = opts; + const { clerkClient, secretKey, frontendApi, publishableKey, req, options } = opts; const { jwtKey, authorizedParties, audience } = options || {}; const env = { ...loadApiEnv(), ...loadClientEnv() }; @@ -69,13 +69,12 @@ export const authenticateRequest = (opts: AuthenticateRequestParams) => { throw new Error(satelliteAndMissingProxyUrlAndDomain); } - if (isSatellite && !isHttpOrHttps(signInUrl) && isDevelopmentFromApiKey(secretKey || apiKey || '')) { + if (isSatellite && !isHttpOrHttps(signInUrl) && isDevelopmentFromApiKey(secretKey || '')) { throw new Error(satelliteAndMissingSignInUrl); } return clerkClient.authenticateRequest({ audience, - apiKey, secretKey, frontendApi, publishableKey, @@ -108,8 +107,7 @@ export const decorateResponseWithObservabilityHeaders = (res: ServerResponse, re requestState.status && res.setHeader(constants.Headers.AuthStatus, encodeURIComponent(requestState.status)); }; -const isDevelopmentFromApiKey = (apiKey: string): boolean => - apiKey.startsWith('test_') || apiKey.startsWith('sk_test_'); +const isDevelopmentFromApiKey = (secretKey: string): boolean => secretKey.startsWith('sk_test_'); const absoluteProxyUrl = (relativeOrAbsoluteUrl: string, baseUrl: string): string => { if (!relativeOrAbsoluteUrl || !isValidProxyUrl(relativeOrAbsoluteUrl) || !isProxyUrlRelative(relativeOrAbsoluteUrl)) { diff --git a/packages/sdk-node/src/clerkClient.ts b/packages/sdk-node/src/clerkClient.ts index b562f450791..9484bf8aaa4 100644 --- a/packages/sdk-node/src/clerkClient.ts +++ b/packages/sdk-node/src/clerkClient.ts @@ -90,9 +90,6 @@ export const ClerkExpressWithAuth = (...args: Parameters { - clerkClient.__unstable_options.apiKey = value; -}; export const setClerkServerApiUrl = (value: string) => { clerkClient.__unstable_options.apiUrl = value; diff --git a/packages/sdk-node/src/clerkExpressRequireAuth.ts b/packages/sdk-node/src/clerkExpressRequireAuth.ts index 32b6695dd9b..46422a0d929 100644 --- a/packages/sdk-node/src/clerkExpressRequireAuth.ts +++ b/packages/sdk-node/src/clerkExpressRequireAuth.ts @@ -11,10 +11,6 @@ import type { ClerkMiddlewareOptions, MiddlewareRequireAuthProp, RequireAuthProp export type CreateClerkExpressMiddlewareOptions = { clerkClient: ReturnType; - /** - * @deprecated Use `secretKey` instead. - */ - apiKey?: string; /* Secret Key */ secretKey?: string; /** @@ -26,13 +22,12 @@ export type CreateClerkExpressMiddlewareOptions = { }; export const createClerkExpressRequireAuth = (createOpts: CreateClerkExpressMiddlewareOptions) => { - const { clerkClient, frontendApi = '', apiKey = '', secretKey = '', publishableKey = '' } = createOpts; + const { clerkClient, frontendApi = '', secretKey = '', publishableKey = '' } = createOpts; return (options: ClerkMiddlewareOptions = {}): MiddlewareRequireAuthProp => { return async (req, res, next) => { const requestState = await authenticateRequest({ clerkClient, - apiKey, secretKey, frontendApi, publishableKey, diff --git a/packages/sdk-node/src/clerkExpressWithAuth.ts b/packages/sdk-node/src/clerkExpressWithAuth.ts index 1348d8295c5..b8c3f3d3743 100644 --- a/packages/sdk-node/src/clerkExpressWithAuth.ts +++ b/packages/sdk-node/src/clerkExpressWithAuth.ts @@ -9,12 +9,11 @@ import type { CreateClerkExpressMiddlewareOptions } from './clerkExpressRequireA import type { ClerkMiddlewareOptions, MiddlewareWithAuthProp, WithAuthProp } from './types'; export const createClerkExpressWithAuth = (createOpts: CreateClerkExpressMiddlewareOptions) => { - const { clerkClient, frontendApi = '', apiKey = '', secretKey = '', publishableKey = '' } = createOpts; + const { clerkClient, frontendApi = '', secretKey = '', publishableKey = '' } = createOpts; return (options: ClerkMiddlewareOptions = {}): MiddlewareWithAuthProp => { return async (req, res, next) => { const requestState = await authenticateRequest({ clerkClient, - apiKey, secretKey, frontendApi, publishableKey, diff --git a/packages/sdk-node/src/index.ts b/packages/sdk-node/src/index.ts index 5a0ff9f373d..d83b17238cd 100644 --- a/packages/sdk-node/src/index.ts +++ b/packages/sdk-node/src/index.ts @@ -4,7 +4,6 @@ import { ClerkExpressRequireAuth, ClerkExpressWithAuth, createClerkClient, - setClerkApiKey, setClerkApiVersion, setClerkHttpOptions, setClerkServerApiUrl, @@ -27,15 +26,14 @@ export * from '@clerk/backend'; * 2 additional apis: clerk.expressWithAuth, clerk.expressRequireAuth */ export { - createClerkClient, + Clerk, clerkClient, - setClerkApiKey, + ClerkExpressRequireAuth, + ClerkExpressWithAuth, + createClerkClient, setClerkApiVersion, setClerkHttpOptions, setClerkServerApiUrl, - Clerk, - ClerkExpressRequireAuth, - ClerkExpressWithAuth, }; const { @@ -53,25 +51,24 @@ const { } = clerkClient; export { - users, - smsMessages, - sessions, + allowlistIdentifiers, + clients, + domains, emailAddresses, - phoneNumbers, emails, invitations, organizations, - clients, - allowlistIdentifiers, - domains, + phoneNumbers, + sessions, + smsMessages, + users, }; export default clerkClient; -export type { LooseAuthProp, StrictAuthProp, WithAuthProp, RequireAuthProp, ClerkMiddleware, ClerkMiddlewareOptions }; +export type { ClerkMiddleware, ClerkMiddlewareOptions, LooseAuthProp, RequireAuthProp, StrictAuthProp, WithAuthProp }; -export { createClerkExpressRequireAuth }; -export { createClerkExpressWithAuth }; +export { createClerkExpressRequireAuth, createClerkExpressWithAuth }; -export { withAuth } from './withAuth'; export { requireAuth } from './requireAuth'; +export { withAuth } from './withAuth'; diff --git a/packages/sdk-node/src/types.ts b/packages/sdk-node/src/types.ts index 4fdc1c27d01..180765fabcd 100644 --- a/packages/sdk-node/src/types.ts +++ b/packages/sdk-node/src/types.ts @@ -46,10 +46,6 @@ export type AuthenticateRequestParams = { * @deprecated Use `publishableKey` instead. */ frontendApi?: string; - /** - * @deprecated Use `secretKey` instead. - */ - apiKey?: string; req: IncomingMessage; options?: ClerkMiddlewareOptions; }; diff --git a/packages/sdk-node/src/utils.ts b/packages/sdk-node/src/utils.ts index 73402175be6..49e06ca15ac 100644 --- a/packages/sdk-node/src/utils.ts +++ b/packages/sdk-node/src/utils.ts @@ -29,13 +29,8 @@ export const loadClientEnv = () => { }; export const loadApiEnv = () => { - if (process.env.CLERK_API_KEY) { - deprecated('CLERK_API_KEY', 'Use `CLERK_SECRET_KEY` instead.'); - } - return { - secretKey: process.env.CLERK_SECRET_KEY || process.env.CLERK_API_KEY || '', - apiKey: process.env.CLERK_API_KEY || '', + secretKey: process.env.CLERK_SECRET_KEY || '', apiUrl: process.env.CLERK_API_URL || 'https://api.clerk.com', apiVersion: process.env.CLERK_API_VERSION || 'v1', domain: process.env.CLERK_DOMAIN || '', From 444fac4e4447eebd6fdea3033c612b28488b1acb Mon Sep 17 00:00:00 2001 From: Dimitris Klouvas Date: Fri, 3 Nov 2023 01:39:48 +0200 Subject: [PATCH 2/8] chore(clerk-sdk-node): Drop `verifySessionToken` hotfix for Redwood --- packages/sdk-node/src/clerkClient.ts | 17 ++--------------- 1 file changed, 2 insertions(+), 15 deletions(-) diff --git a/packages/sdk-node/src/clerkClient.ts b/packages/sdk-node/src/clerkClient.ts index 9484bf8aaa4..5d8aa2e9845 100644 --- a/packages/sdk-node/src/clerkClient.ts +++ b/packages/sdk-node/src/clerkClient.ts @@ -1,5 +1,5 @@ import type { ClerkOptions, VerifyTokenOptions } from '@clerk/backend'; -import { Clerk as _Clerk, decodeJwt, verifyToken as _verifyToken } from '@clerk/backend'; +import { Clerk as _Clerk, verifyToken as _verifyToken } from '@clerk/backend'; import { createClerkExpressRequireAuth } from './clerkExpressRequireAuth'; import { createClerkExpressWithAuth } from './clerkExpressWithAuth'; @@ -9,7 +9,7 @@ type ExtendedClerk = ReturnType & { expressWithAuth: ReturnType; expressRequireAuth: ReturnType; verifyToken: typeof _verifyToken; -} & ReturnType; +}; /** * This needs to be a *named* function in order to support the older @@ -29,22 +29,9 @@ export function Clerk(options: ClerkOptions): ExtendedClerk { expressWithAuth, expressRequireAuth, verifyToken, - ...createBasePropForRedwoodCompatibility(), }); } -const createBasePropForRedwoodCompatibility = () => { - const verifySessionToken = (token: string) => { - const { jwtKey } = loadApiEnv(); - const { payload } = decodeJwt(token); - return _verifyToken(token, { - issuer: payload.iss, - jwtKey, - }); - }; - return { base: { verifySessionToken } }; -}; - export const createClerkClient = Clerk; let clerkClientSingleton = {} as unknown as ReturnType; From 69965c4648aa731d6205c367f9ca72ba8785cd5d Mon Sep 17 00:00:00 2001 From: Dimitris Klouvas Date: Fri, 3 Nov 2023 01:45:44 +0200 Subject: [PATCH 3/8] chore(clerk-sdk-node): Drop `CLERK_FRONTEND_API` and `frontendApi` --- packages/sdk-node/src/authenticateRequest.test.ts | 3 --- packages/sdk-node/src/authenticateRequest.ts | 12 +++++------- packages/sdk-node/src/clerkExpressRequireAuth.ts | 7 +------ packages/sdk-node/src/clerkExpressWithAuth.ts | 3 +-- packages/sdk-node/src/types.ts | 4 ---- packages/sdk-node/src/utils.ts | 6 ------ 6 files changed, 7 insertions(+), 28 deletions(-) diff --git a/packages/sdk-node/src/authenticateRequest.test.ts b/packages/sdk-node/src/authenticateRequest.test.ts index 9e8d06c2637..81013817d2c 100644 --- a/packages/sdk-node/src/authenticateRequest.test.ts +++ b/packages/sdk-node/src/authenticateRequest.test.ts @@ -35,7 +35,6 @@ describe('authenticateRequest', () => { const clerkClient = mockClerkClient(); const secretKey = 'secretKey'; - const frontendApi = 'frontendApi'; const publishableKey = 'publishableKey'; const searchParams = new URLSearchParams(); searchParams.set('__query', 'true'); @@ -51,7 +50,6 @@ describe('authenticateRequest', () => { await authenticateRequest({ clerkClient: clerkClient as any, secretKey, - frontendApi, publishableKey, req, options, @@ -60,7 +58,6 @@ describe('authenticateRequest', () => { expect.objectContaining({ authorizedParties: ['party1'], secretKey: secretKey, - frontendApi: frontendApi, publishableKey: publishableKey, jwtKey: 'jwtKey', isSatellite: false, diff --git a/packages/sdk-node/src/authenticateRequest.ts b/packages/sdk-node/src/authenticateRequest.ts index 7e41f6ec336..960918b9d38 100644 --- a/packages/sdk-node/src/authenticateRequest.ts +++ b/packages/sdk-node/src/authenticateRequest.ts @@ -16,14 +16,13 @@ export async function loadInterstitial({ }) { const { clerkJSVersion, clerkJSUrl } = loadClientEnv(); /** - * When publishable key or frontendApi is present utilize the localInterstitial method + * When publishable key is present utilize the localInterstitial method * and avoid the extra network call */ - if (requestState.publishableKey || requestState.frontendApi) { + if (requestState.publishableKey) { return clerkClient.localInterstitial({ - // Use frontendApi only when legacy frontendApi is used to avoid showing deprecation warning - // since the requestState always contains the frontendApi constructed by publishableKey. - frontendApi: requestState.publishableKey ? '' : requestState.frontendApi, + // TODO(@dimkl): use empty string for frontendApi until type is fixed in @clerk/backend to drop it + frontendApi: '', publishableKey: requestState.publishableKey, proxyUrl: requestState.proxyUrl, signInUrl: requestState.signInUrl, @@ -37,7 +36,7 @@ export async function loadInterstitial({ } export const authenticateRequest = (opts: AuthenticateRequestParams) => { - const { clerkClient, secretKey, frontendApi, publishableKey, req, options } = opts; + const { clerkClient, secretKey, publishableKey, req, options } = opts; const { jwtKey, authorizedParties, audience } = options || {}; const env = { ...loadApiEnv(), ...loadClientEnv() }; @@ -76,7 +75,6 @@ export const authenticateRequest = (opts: AuthenticateRequestParams) => { return clerkClient.authenticateRequest({ audience, secretKey, - frontendApi, publishableKey, jwtKey, authorizedParties, diff --git a/packages/sdk-node/src/clerkExpressRequireAuth.ts b/packages/sdk-node/src/clerkExpressRequireAuth.ts index 46422a0d929..884ad1a9038 100644 --- a/packages/sdk-node/src/clerkExpressRequireAuth.ts +++ b/packages/sdk-node/src/clerkExpressRequireAuth.ts @@ -13,23 +13,18 @@ export type CreateClerkExpressMiddlewareOptions = { clerkClient: ReturnType; /* Secret Key */ secretKey?: string; - /** - * @deprecated Use `publishableKey` instead. - */ - frontendApi?: string; publishableKey?: string; apiUrl?: string; }; export const createClerkExpressRequireAuth = (createOpts: CreateClerkExpressMiddlewareOptions) => { - const { clerkClient, frontendApi = '', secretKey = '', publishableKey = '' } = createOpts; + const { clerkClient, secretKey = '', publishableKey = '' } = createOpts; return (options: ClerkMiddlewareOptions = {}): MiddlewareRequireAuthProp => { return async (req, res, next) => { const requestState = await authenticateRequest({ clerkClient, secretKey, - frontendApi, publishableKey, req, options, diff --git a/packages/sdk-node/src/clerkExpressWithAuth.ts b/packages/sdk-node/src/clerkExpressWithAuth.ts index b8c3f3d3743..5d59ed3cf85 100644 --- a/packages/sdk-node/src/clerkExpressWithAuth.ts +++ b/packages/sdk-node/src/clerkExpressWithAuth.ts @@ -9,13 +9,12 @@ import type { CreateClerkExpressMiddlewareOptions } from './clerkExpressRequireA import type { ClerkMiddlewareOptions, MiddlewareWithAuthProp, WithAuthProp } from './types'; export const createClerkExpressWithAuth = (createOpts: CreateClerkExpressMiddlewareOptions) => { - const { clerkClient, frontendApi = '', secretKey = '', publishableKey = '' } = createOpts; + const { clerkClient, secretKey = '', publishableKey = '' } = createOpts; return (options: ClerkMiddlewareOptions = {}): MiddlewareWithAuthProp => { return async (req, res, next) => { const requestState = await authenticateRequest({ clerkClient, secretKey, - frontendApi, publishableKey, req, options, diff --git a/packages/sdk-node/src/types.ts b/packages/sdk-node/src/types.ts index 180765fabcd..a39dd5a291d 100644 --- a/packages/sdk-node/src/types.ts +++ b/packages/sdk-node/src/types.ts @@ -42,10 +42,6 @@ export type AuthenticateRequestParams = { clerkClient: ClerkClient; publishableKey?: string; secretKey?: string; - /** - * @deprecated Use `publishableKey` instead. - */ - frontendApi?: string; req: IncomingMessage; options?: ClerkMiddlewareOptions; }; diff --git a/packages/sdk-node/src/utils.ts b/packages/sdk-node/src/utils.ts index 49e06ca15ac..47c2af2f3b1 100644 --- a/packages/sdk-node/src/utils.ts +++ b/packages/sdk-node/src/utils.ts @@ -1,4 +1,3 @@ -import { deprecated } from '@clerk/shared/deprecated'; import { isTruthy } from '@clerk/shared/underscore'; import type { IncomingMessage, ServerResponse } from 'http'; @@ -16,13 +15,8 @@ export function runMiddleware(req: IncomingMessage, res: ServerResponse, fn: (.. } export const loadClientEnv = () => { - if (process.env.CLERK_FRONTEND_API) { - deprecated('CLERK_FRONTEND_API', 'Use `CLERK_PUBLISHABLE_KEY` instead.'); - } - return { publishableKey: process.env.CLERK_PUBLISHABLE_KEY || '', - frontendApi: process.env.CLERK_FRONTEND_API || '', clerkJSUrl: process.env.CLERK_JS || '', clerkJSVersion: process.env.CLERK_JS_VERSION || '', }; From 150f41097c008b8c842e3faea57860a1a0cbc254 Mon Sep 17 00:00:00 2001 From: Dimitris Klouvas Date: Fri, 3 Nov 2023 01:55:21 +0200 Subject: [PATCH 4/8] chore(clerk-sdk-node): Drop clerkClient exposed setters The dropped setters: `setClerkApiVersion`, `setClerkHttpOptions`, `setClerkServerApiUrl` --- .../examples/node/src/allowlistIdentifiers.ts | 9 +------- .../__snapshots__/exports.test.ts.snap | 3 --- packages/sdk-node/src/clerkClient.ts | 16 -------------- packages/sdk-node/src/index.ts | 22 ++----------------- 4 files changed, 3 insertions(+), 47 deletions(-) diff --git a/packages/sdk-node/examples/node/src/allowlistIdentifiers.ts b/packages/sdk-node/examples/node/src/allowlistIdentifiers.ts index 27cb15799a7..a6cb397986f 100644 --- a/packages/sdk-node/examples/node/src/allowlistIdentifiers.ts +++ b/packages/sdk-node/examples/node/src/allowlistIdentifiers.ts @@ -1,13 +1,6 @@ // Usage: // From examples/node, run files with "npm test ./src/allowlistIdentifiers.ts" -import { - allowlistIdentifiers, - setClerkServerApiUrl, -} from '@clerk/clerk-sdk-node'; - -const serverApiUrl = process.env.CLERK_API_URL || ''; - -setClerkServerApiUrl(serverApiUrl); +import { allowlistIdentifiers } from '@clerk/clerk-sdk-node'; // Add an allowlist identifier await allowlistIdentifiers.createAllowlistIdentifier({ diff --git a/packages/sdk-node/src/__tests__/__snapshots__/exports.test.ts.snap b/packages/sdk-node/src/__tests__/__snapshots__/exports.test.ts.snap index c85573cf3d7..e2f6a3a08fe 100644 --- a/packages/sdk-node/src/__tests__/__snapshots__/exports.test.ts.snap +++ b/packages/sdk-node/src/__tests__/__snapshots__/exports.test.ts.snap @@ -56,9 +56,6 @@ exports[`module exports should not change unless explicitly set 1`] = ` "requireAuth", "sanitizeAuthObject", "sessions", - "setClerkApiVersion", - "setClerkHttpOptions", - "setClerkServerApiUrl", "signJwt", "signedInAuthObject", "signedOutAuthObject", diff --git a/packages/sdk-node/src/clerkClient.ts b/packages/sdk-node/src/clerkClient.ts index 5d8aa2e9845..cbb6e61548b 100644 --- a/packages/sdk-node/src/clerkClient.ts +++ b/packages/sdk-node/src/clerkClient.ts @@ -73,19 +73,3 @@ export const ClerkExpressWithAuth = (...args: Parameters { - clerkClient.__unstable_options.apiUrl = value; -}; - -export const setClerkApiVersion = (value: string) => { - clerkClient.__unstable_options.apiVersion = value; -}; - -export const setClerkHttpOptions = (value: RequestInit) => { - clerkClient.__unstable_options.httpOptions = value; -}; diff --git a/packages/sdk-node/src/index.ts b/packages/sdk-node/src/index.ts index d83b17238cd..e032df59c21 100644 --- a/packages/sdk-node/src/index.ts +++ b/packages/sdk-node/src/index.ts @@ -1,13 +1,4 @@ -import { - Clerk, - clerkClient, - ClerkExpressRequireAuth, - ClerkExpressWithAuth, - createClerkClient, - setClerkApiVersion, - setClerkHttpOptions, - setClerkServerApiUrl, -} from './clerkClient'; +import { Clerk, clerkClient, ClerkExpressRequireAuth, ClerkExpressWithAuth, createClerkClient } from './clerkClient'; import { createClerkExpressRequireAuth } from './clerkExpressRequireAuth'; import { createClerkExpressWithAuth } from './clerkExpressWithAuth'; import type { @@ -25,16 +16,7 @@ export * from '@clerk/backend'; * to shadow the Clerk export from clerk/backend, because it needs to support * 2 additional apis: clerk.expressWithAuth, clerk.expressRequireAuth */ -export { - Clerk, - clerkClient, - ClerkExpressRequireAuth, - ClerkExpressWithAuth, - createClerkClient, - setClerkApiVersion, - setClerkHttpOptions, - setClerkServerApiUrl, -}; +export { Clerk, clerkClient, ClerkExpressRequireAuth, ClerkExpressWithAuth, createClerkClient }; const { users, From d04bb4241f7fd4d803592cb006ebbe2ef621fc6d Mon Sep 17 00:00:00 2001 From: Dimitris Klouvas Date: Fri, 3 Nov 2023 02:10:01 +0200 Subject: [PATCH 5/8] chore(clerk-sdk-node): Move tests under __tests__ directory for consistency --- .../sdk-node/src/{ => __tests__}/authenticateRequest.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename packages/sdk-node/src/{ => __tests__}/authenticateRequest.test.ts (96%) diff --git a/packages/sdk-node/src/authenticateRequest.test.ts b/packages/sdk-node/src/__tests__/authenticateRequest.test.ts similarity index 96% rename from packages/sdk-node/src/authenticateRequest.test.ts rename to packages/sdk-node/src/__tests__/authenticateRequest.test.ts index 81013817d2c..5ae3005c988 100644 --- a/packages/sdk-node/src/authenticateRequest.test.ts +++ b/packages/sdk-node/src/__tests__/authenticateRequest.test.ts @@ -1,7 +1,7 @@ import { constants, createIsomorphicRequest } from '@clerk/backend'; import type { Request } from 'express'; -import { authenticateRequest } from './authenticateRequest'; +import { authenticateRequest } from '../authenticateRequest'; const mockNext = jest.fn(); From fb4e85767b1edea986812b6b3ba0bb6f5d178a79 Mon Sep 17 00:00:00 2001 From: Dimitris Klouvas Date: Fri, 3 Nov 2023 02:32:26 +0200 Subject: [PATCH 6/8] fix(clerk-sdk-node): Fix package exports Changes: - drop subpath exports of /esm|cjs/instance --- packages/sdk-node/cjs/instance.d.ts | 2 -- packages/sdk-node/cjs/instance.js | 1 - packages/sdk-node/esm/instance.d.ts | 2 -- packages/sdk-node/esm/instance.js | 1 - packages/sdk-node/package.json | 34 ++++++++++------------------- packages/sdk-node/tsup.config.ts | 31 ++++---------------------- playground/express/tsconfig.json | 3 ++- 7 files changed, 17 insertions(+), 57 deletions(-) delete mode 100644 packages/sdk-node/cjs/instance.d.ts delete mode 100644 packages/sdk-node/cjs/instance.js delete mode 100644 packages/sdk-node/esm/instance.d.ts delete mode 100644 packages/sdk-node/esm/instance.js diff --git a/packages/sdk-node/cjs/instance.d.ts b/packages/sdk-node/cjs/instance.d.ts deleted file mode 100644 index 3b3f0f2d375..00000000000 --- a/packages/sdk-node/cjs/instance.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from '../dist/types/instance'; -export { default } from '../dist/types/instance'; diff --git a/packages/sdk-node/cjs/instance.js b/packages/sdk-node/cjs/instance.js deleted file mode 100644 index 7b9a9c0ee6f..00000000000 --- a/packages/sdk-node/cjs/instance.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./../dist/instance'); diff --git a/packages/sdk-node/esm/instance.d.ts b/packages/sdk-node/esm/instance.d.ts deleted file mode 100644 index 3b3f0f2d375..00000000000 --- a/packages/sdk-node/esm/instance.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from '../dist/types/instance'; -export { default } from '../dist/types/instance'; diff --git a/packages/sdk-node/esm/instance.js b/packages/sdk-node/esm/instance.js deleted file mode 100644 index b216a148d7e..00000000000 --- a/packages/sdk-node/esm/instance.js +++ /dev/null @@ -1 +0,0 @@ -export * from './../dist/instance.mjs'; diff --git a/packages/sdk-node/package.json b/packages/sdk-node/package.json index 58f2507820b..558b2433648 100644 --- a/packages/sdk-node/package.json +++ b/packages/sdk-node/package.json @@ -24,37 +24,25 @@ }, "exports": { ".": { - "types": "./dist/types/index.d.ts", - "require": "./dist/cjs/index.js", - "import": "./dist/esm/index.mjs", - "default": "./dist/cjs/index.js" + "import": { + "types": "./dist/index.d.mts", + "default": "./dist/index.mjs" + }, + "require": { + "types": "./dist/index.d.ts", + "default": "./dist/index.js" + } }, - "./esm/instance": { - "types": "./dist/types/instance.d.ts", - "require": "./dist/cjs/instance.js", - "import": "./dist/esm/instance.mjs", - "default": "./dist/cjs/instance.js" - }, - "./cjs/instance": { - "types": "./dist/types/instance.d.ts", - "require": "./dist/cjs/instance.js", - "import": "./dist/esm/instance.mjs", - "default": "./dist/cjs/instance.js" - } + "./package.json": "./package.json" }, - "main": "./dist/cjs/index.js", - "module": "./dist/esm/index.mjs", - "types": "./dist/types/index.d.ts", + "main": "./dist/index.js", "files": [ - "dist", - "esm", - "cjs" + "dist" ], "scripts": { "build": "npm run clean && tsup", "dev": "tsup --watch", "dev:publish": "npm run dev -- --env.publish", - "build:declarations": "tsc -p tsconfig.declarations.json", "publish:local": "npx yalc push --replace --sig", "clean": "rimraf ./dist", "lint": "eslint src/", diff --git a/packages/sdk-node/tsup.config.ts b/packages/sdk-node/tsup.config.ts index b63dedaeb75..f402b39bbd5 100644 --- a/packages/sdk-node/tsup.config.ts +++ b/packages/sdk-node/tsup.config.ts @@ -1,45 +1,22 @@ -import type { Options } from 'tsup'; import { defineConfig } from 'tsup'; -import { runAfterLast } from '../../scripts/utils'; -// @ts-ignore import { name, version } from './package.json'; export default defineConfig(overrideOptions => { const isWatch = !!overrideOptions.watch; - const shouldPublish = !!overrideOptions.env?.publish; - const common: Options = { - entry: ['src/index.ts', 'src/instance.ts'], + return { + entry: ['./src/index.ts'], + format: ['cjs', 'esm'], bundle: true, clean: true, minify: false, sourcemap: true, - legacyOutput: false, + dts: true, define: { PACKAGE_NAME: `"${name}"`, PACKAGE_VERSION: `"${version}"`, __DEV__: `${isWatch}`, }, }; - - // const onSuccess = (format: 'esm' | 'cjs') => { - // return `cp ./package.${format}.json ./dist/${format}/package.json`; - // }; - - const esm: Options = { - ...common, - format: 'esm', - outDir: './dist/esm', - // onSuccess: onSuccess('esm'), - }; - - const cjs: Options = { - ...common, - format: 'cjs', - outDir: './dist/cjs', - // onSuccess: onSuccess('cjs'), - }; - - return runAfterLast(['npm run build:declarations', shouldPublish && 'npm run publish:local'])(esm, cjs); }); diff --git a/playground/express/tsconfig.json b/playground/express/tsconfig.json index 6702ef852d4..064ad8da546 100644 --- a/playground/express/tsconfig.json +++ b/playground/express/tsconfig.json @@ -1,6 +1,7 @@ { "compilerOptions": { - "baseUrl": "" + "baseUrl": "", + "moduleResolution": "NodeNext" }, "exclude": ["node_modules", "tmp", "dist"], "extends": "../../tsconfig.json" From 5865824aea4279688b3a796b9e1f722c10e2d1f9 Mon Sep 17 00:00:00 2001 From: Dimitris Klouvas Date: Tue, 7 Nov 2023 13:42:05 +0200 Subject: [PATCH 7/8] chore(clerk-sdk-node): Drop unused info script - replaced by tsup --- packages/sdk-node/scripts/info.js | 12 ------------ packages/sdk-node/src/info.ts | 3 --- 2 files changed, 15 deletions(-) delete mode 100644 packages/sdk-node/scripts/info.js delete mode 100644 packages/sdk-node/src/info.ts diff --git a/packages/sdk-node/scripts/info.js b/packages/sdk-node/scripts/info.js deleted file mode 100644 index 5305fa0aa0c..00000000000 --- a/packages/sdk-node/scripts/info.js +++ /dev/null @@ -1,12 +0,0 @@ -const packageJson = require('../package.json'); -const fs = require('fs'); -const path = require('path'); - -fs.writeFileSync( - path.resolve(__dirname, '../src/info.ts'), - `/** DO NOT EDIT: This file is automatically generated by ../scripts/info.js */ -export const LIB_VERSION = '${packageJson.version}'; -export const LIB_NAME = '${packageJson.name}'; -`, - { encoding: 'utf-8' } -); diff --git a/packages/sdk-node/src/info.ts b/packages/sdk-node/src/info.ts deleted file mode 100644 index 8d7f7e90da7..00000000000 --- a/packages/sdk-node/src/info.ts +++ /dev/null @@ -1,3 +0,0 @@ -/** DO NOT EDIT: This file is automatically generated by ../scripts/info.js */ -export const LIB_VERSION = '4.10.3'; -export const LIB_NAME = '@clerk/clerk-sdk-node'; From 8148ca3b71f073a25cff5e0b600961aafa511547 Mon Sep 17 00:00:00 2001 From: Dimitris Klouvas Date: Fri, 3 Nov 2023 01:49:55 +0200 Subject: [PATCH 8/8] chore(repo): Add changeset --- .changeset/popular-singers-sort.md | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 .changeset/popular-singers-sort.md diff --git a/.changeset/popular-singers-sort.md b/.changeset/popular-singers-sort.md new file mode 100644 index 00000000000..f9273a0f91d --- /dev/null +++ b/.changeset/popular-singers-sort.md @@ -0,0 +1,21 @@ +--- +'@clerk/clerk-sdk-node': major +--- + +Drop deprecations. Migration steps: + +- use `CLERK_SECRET_KEY` instead of `CLERK_API_KEY` env variable +- use `secretKey` instead of `apiKey` +- use `CLERK_PUBLISHABLE_KEY` instead of `CLERK_FRONTEND_API` env variable +- use `publishableKey` instead of `frontendApi` +- drop Redwood hotfix (upgrade to latest version) +- use `createClerkClient` with options to create a new clerkClient instead of using + the following setters: + - `setClerkApiVersion` + - `setClerkHttpOptions` + - `setClerkServerApiUrl` + - `setClerkApiKey` +- use `@clerk/clerk-sdk-node` instead of `@clerk/clerk-sdk-node/{cjs|esm}/instance` + +Extra: +- bundle only index.ts and instance.ts \ No newline at end of file