From b90513dd55d4634f527407b66589023af220d8bc Mon Sep 17 00:00:00 2001 From: Dimitris Klouvas Date: Tue, 19 Sep 2023 02:35:41 +0300 Subject: [PATCH 1/6] chore(nextjs): Warn about withClerkMiddleware deprecation --- packages/nextjs/src/server/withClerkMiddleware.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/packages/nextjs/src/server/withClerkMiddleware.ts b/packages/nextjs/src/server/withClerkMiddleware.ts index 656f7901302..0beca065c5b 100644 --- a/packages/nextjs/src/server/withClerkMiddleware.ts +++ b/packages/nextjs/src/server/withClerkMiddleware.ts @@ -1,5 +1,6 @@ import type { RequestState } from '@clerk/backend'; import { constants, debugRequestState } from '@clerk/backend'; +import { deprecated } from '@clerk/shared'; import type { NextFetchEvent, NextMiddleware, NextRequest } from 'next/server'; import { NextResponse } from 'next/server'; @@ -36,6 +37,11 @@ export const withClerkMiddleware: WithClerkMiddleware = (...args: unknown[]) => const noop = () => undefined; const [handler = noop, opts = {}] = args as [NextMiddleware, WithAuthOptions] | []; + deprecated( + 'withClerkMiddleware', + 'Use `authMiddleware` instead.\nFor more details, consult the middleware documentation: https://clerk.com/docs/nextjs/middleware', + ); + return async (req: NextRequest, event: NextFetchEvent) => { const { isSatellite, domain, signInUrl, proxyUrl } = handleMultiDomainAndProxy(req, opts); From 280dfc72fd099e6e1c76ad7d20b75d467c452e12 Mon Sep 17 00:00:00 2001 From: Dimitris Klouvas Date: Tue, 19 Sep 2023 02:41:55 +0300 Subject: [PATCH 2/6] chore(nextjs): Add deprecation JSDoc for server constants to be marked as internal --- packages/nextjs/src/server/clerkClient.ts | 23 ++++++----------------- packages/nextjs/src/server/constants.ts | 17 +++++++++++++++++ 2 files changed, 23 insertions(+), 17 deletions(-) create mode 100644 packages/nextjs/src/server/constants.ts diff --git a/packages/nextjs/src/server/clerkClient.ts b/packages/nextjs/src/server/clerkClient.ts index 2891ec5e132..5ec9ca27118 100644 --- a/packages/nextjs/src/server/clerkClient.ts +++ b/packages/nextjs/src/server/clerkClient.ts @@ -1,23 +1,7 @@ /* eslint-disable turbo/no-undeclared-env-vars */ import { Clerk } from '@clerk/backend'; -/** - * @deprecated - */ -export const JS_VERSION = process.env.CLERK_JS_VERSION || ''; -export const CLERK_JS_VERSION = process.env.NEXT_PUBLIC_CLERK_JS_VERSION || ''; -export const CLERK_JS_URL = process.env.NEXT_PUBLIC_CLERK_JS || ''; -export const API_URL = process.env.CLERK_API_URL || 'https://api.clerk.dev'; -export const API_VERSION = process.env.CLERK_API_VERSION || 'v1'; -export const API_KEY = process.env.CLERK_API_KEY || ''; -export const SECRET_KEY = process.env.CLERK_SECRET_KEY || ''; -export const FRONTEND_API = process.env.NEXT_PUBLIC_CLERK_FRONTEND_API || ''; -export const PUBLISHABLE_KEY = process.env.NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY || ''; -export const DOMAIN = process.env.NEXT_PUBLIC_CLERK_DOMAIN || ''; -export const PROXY_URL = process.env.NEXT_PUBLIC_CLERK_PROXY_URL || ''; -export const IS_SATELLITE = process.env.NEXT_PUBLIC_CLERK_IS_SATELLITE === 'true' || false; -export const SIGN_IN_URL = process.env.NEXT_PUBLIC_CLERK_SIGN_IN_URL || ''; -export const SIGN_UP_URL = process.env.NEXT_PUBLIC_CLERK_SIGN_UP_URL || ''; +import { API_KEY, API_URL, API_VERSION, DOMAIN, IS_SATELLITE, PROXY_URL, SECRET_KEY } from './constants'; const clerkClient = Clerk({ apiKey: API_KEY, @@ -36,3 +20,8 @@ const createClerkClient = Clerk; export { clerkClient, createClerkClient, Clerk }; export * from '@clerk/backend'; + +/** + * @deprecated Don't export the constants. Should be marked as internal + */ +export * from './constants'; diff --git a/packages/nextjs/src/server/constants.ts b/packages/nextjs/src/server/constants.ts new file mode 100644 index 00000000000..ede3e99b723 --- /dev/null +++ b/packages/nextjs/src/server/constants.ts @@ -0,0 +1,17 @@ +/** + * @deprecated + */ +export const JS_VERSION = process.env.CLERK_JS_VERSION || ''; +export const CLERK_JS_VERSION = process.env.NEXT_PUBLIC_CLERK_JS_VERSION || ''; +export const CLERK_JS_URL = process.env.NEXT_PUBLIC_CLERK_JS || ''; +export const API_URL = process.env.CLERK_API_URL || 'https://api.clerk.dev'; +export const API_VERSION = process.env.CLERK_API_VERSION || 'v1'; +export const API_KEY = process.env.CLERK_API_KEY || ''; +export const SECRET_KEY = process.env.CLERK_SECRET_KEY || ''; +export const FRONTEND_API = process.env.NEXT_PUBLIC_CLERK_FRONTEND_API || ''; +export const PUBLISHABLE_KEY = process.env.NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY || ''; +export const DOMAIN = process.env.NEXT_PUBLIC_CLERK_DOMAIN || ''; +export const PROXY_URL = process.env.NEXT_PUBLIC_CLERK_PROXY_URL || ''; +export const IS_SATELLITE = process.env.NEXT_PUBLIC_CLERK_IS_SATELLITE === 'true' || false; +export const SIGN_IN_URL = process.env.NEXT_PUBLIC_CLERK_SIGN_IN_URL || ''; +export const SIGN_UP_URL = process.env.NEXT_PUBLIC_CLERK_SIGN_UP_URL || ''; From dfd44ac2468cb8442252166f671b0b953dad32f2 Mon Sep 17 00:00:00 2001 From: Dimitris Klouvas Date: Tue, 19 Sep 2023 02:43:13 +0300 Subject: [PATCH 3/6] chore(nextjs): Warn about CLERK_JS_VERSION environment variable deprecation --- packages/nextjs/src/server/constants.ts | 7 ++++++- turbo.json | 21 ++++++++++++++++++++- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/packages/nextjs/src/server/constants.ts b/packages/nextjs/src/server/constants.ts index ede3e99b723..52228459335 100644 --- a/packages/nextjs/src/server/constants.ts +++ b/packages/nextjs/src/server/constants.ts @@ -1,7 +1,12 @@ +import { deprecated } from '@clerk/shared'; + /** - * @deprecated + * @deprecated Use `CLERK_JS_VERSION` instead. */ export const JS_VERSION = process.env.CLERK_JS_VERSION || ''; +if (JS_VERSION) { + deprecated('CLERK_JS_VERSION', 'Use `NEXT_PUBLIC_CLERK_JS_VERSION` environment variable instead.'); +} export const CLERK_JS_VERSION = process.env.NEXT_PUBLIC_CLERK_JS_VERSION || ''; export const CLERK_JS_URL = process.env.NEXT_PUBLIC_CLERK_JS || ''; export const API_URL = process.env.CLERK_API_URL || 'https://api.clerk.dev'; diff --git a/turbo.json b/turbo.json index 2ea2227a0c0..db1a2977d24 100644 --- a/turbo.json +++ b/turbo.json @@ -11,7 +11,26 @@ "tsconfig.json", "tsconfig.*.json" ], - "globalEnv": ["NODE_VERSION", "NPM_VERSION", "NODE_ENV", "VERCEL"], + "globalEnv": [ + "NODE_VERSION", + "NPM_VERSION", + "NODE_ENV", + "VERCEL", + "CLERK_JS_VERSION", + "CLERK_API_URL", + "CLERK_API_VERSION", + "CLERK_API_KEY", + "CLERK_SECRET_KEY", + "NEXT_PUBLIC_CLERK_JS_VERSION", + "NEXT_PUBLIC_CLERK_JS", + "NEXT_PUBLIC_CLERK_FRONTEND_API", + "NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY", + "NEXT_PUBLIC_CLERK_DOMAIN", + "NEXT_PUBLIC_CLERK_PROXY_URL", + "NEXT_PUBLIC_CLERK_IS_SATELLITE", + "NEXT_PUBLIC_CLERK_SIGN_IN_URL", + "NEXT_PUBLIC_CLERK_SIGN_UP_URL" + ], "pipeline": { "build": { "dependsOn": ["^build"], From 4f3f3324fc4995f26c93bd1946d6cdfbae4d6e68 Mon Sep 17 00:00:00 2001 From: Dimitris Klouvas Date: Tue, 19 Sep 2023 02:49:56 +0300 Subject: [PATCH 4/6] chore(nextjs): Warn about CLERK_API_KEY environment variable deprecation --- packages/nextjs/src/server/constants.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/packages/nextjs/src/server/constants.ts b/packages/nextjs/src/server/constants.ts index 52228459335..39630eebd6e 100644 --- a/packages/nextjs/src/server/constants.ts +++ b/packages/nextjs/src/server/constants.ts @@ -11,7 +11,13 @@ export const CLERK_JS_VERSION = process.env.NEXT_PUBLIC_CLERK_JS_VERSION || ''; export const CLERK_JS_URL = process.env.NEXT_PUBLIC_CLERK_JS || ''; export const API_URL = process.env.CLERK_API_URL || 'https://api.clerk.dev'; export const API_VERSION = process.env.CLERK_API_VERSION || 'v1'; +/** + * @deprecated Use `CLERK_SECRET_KEY` instead. + */ export const API_KEY = process.env.CLERK_API_KEY || ''; +if (API_KEY) { + deprecated('CLERK_API_KEY', 'Use `CLERK_SECRET_KEY` environment variable instead.'); +} export const SECRET_KEY = process.env.CLERK_SECRET_KEY || ''; export const FRONTEND_API = process.env.NEXT_PUBLIC_CLERK_FRONTEND_API || ''; export const PUBLISHABLE_KEY = process.env.NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY || ''; From 256181affb83a9719c88bc5d2db710cc462150d1 Mon Sep 17 00:00:00 2001 From: Dimitris Klouvas Date: Tue, 19 Sep 2023 02:50:27 +0300 Subject: [PATCH 5/6] chore(nextjs): Warn about NEXT_PUBLIC_CLERK_FRONTEND_API environment variable deprecation --- packages/nextjs/src/server/constants.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/packages/nextjs/src/server/constants.ts b/packages/nextjs/src/server/constants.ts index 39630eebd6e..c5c3eb71159 100644 --- a/packages/nextjs/src/server/constants.ts +++ b/packages/nextjs/src/server/constants.ts @@ -19,7 +19,13 @@ if (API_KEY) { deprecated('CLERK_API_KEY', 'Use `CLERK_SECRET_KEY` environment variable instead.'); } export const SECRET_KEY = process.env.CLERK_SECRET_KEY || ''; +/** + * @deprecated Use `PUBLISHABLE_KEY` instead. + */ export const FRONTEND_API = process.env.NEXT_PUBLIC_CLERK_FRONTEND_API || ''; +if (FRONTEND_API) { + deprecated('NEXT_PUBLIC_CLERK_FRONTEND_API', 'Use `NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY` environment variable instead.'); +} export const PUBLISHABLE_KEY = process.env.NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY || ''; export const DOMAIN = process.env.NEXT_PUBLIC_CLERK_DOMAIN || ''; export const PROXY_URL = process.env.NEXT_PUBLIC_CLERK_PROXY_URL || ''; From 4293442e87314d274cd0454587ab3c3aad69384d Mon Sep 17 00:00:00 2001 From: Dimitris Klouvas Date: Tue, 19 Sep 2023 03:06:51 +0300 Subject: [PATCH 6/6] chore(nextjs): Warn about withServerSideAuth deprecation --- .changeset/spicy-toys-change.md | 5 +++++ packages/nextjs/src/ssr/withServerSideAuth.ts | 5 +++++ 2 files changed, 10 insertions(+) create mode 100644 .changeset/spicy-toys-change.md diff --git a/.changeset/spicy-toys-change.md b/.changeset/spicy-toys-change.md new file mode 100644 index 00000000000..e79bd7a4cb4 --- /dev/null +++ b/.changeset/spicy-toys-change.md @@ -0,0 +1,5 @@ +--- +'@clerk/nextjs': patch +--- + +Warn about deprecations that will be dropped in next major version diff --git a/packages/nextjs/src/ssr/withServerSideAuth.ts b/packages/nextjs/src/ssr/withServerSideAuth.ts index e6d710314fd..409e47ba497 100644 --- a/packages/nextjs/src/ssr/withServerSideAuth.ts +++ b/packages/nextjs/src/ssr/withServerSideAuth.ts @@ -1,5 +1,6 @@ import type { RequestState } from '@clerk/backend'; import { constants, debugRequestState } from '@clerk/backend'; +import { deprecated } from '@clerk/shared'; import type { ServerResponse } from 'http'; import type { GetServerSidePropsContext, GetServerSidePropsResult } from 'next'; @@ -43,6 +44,10 @@ const decorateResponseWithObservabilityHeaders = (res: ServerResponse, requestSt export const withServerSideAuth: WithServerSideAuth = (cbOrOptions: any, options?: any): any => { const cb = typeof cbOrOptions === 'function' ? cbOrOptions : undefined; const opts = (options ? options : typeof cbOrOptions !== 'function' ? cbOrOptions : {}) || {}; + deprecated( + 'withServerSideAuth', + 'Use `authMiddleware` instead.\nFor more details, consult the middleware documentation: https://clerk.com/docs/nextjs/middleware', + ); // Support both loadOrganization and the older loadOrg option without breaking changes // TODO: Remove pre v5