@clerk/nextjs 6.36.10 → 6.37.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/dist/cjs/app-router/server/auth.js +2 -1
  2. package/dist/cjs/app-router/server/auth.js.map +1 -1
  3. package/dist/cjs/client-boundary/hooks.js +2 -0
  4. package/dist/cjs/client-boundary/hooks.js.map +1 -1
  5. package/dist/cjs/index.js +2 -0
  6. package/dist/cjs/index.js.map +1 -1
  7. package/dist/cjs/server/constants.js +1 -1
  8. package/dist/cjs/server/createClerkClient.js +1 -1
  9. package/dist/cjs/server/createClerkClient.js.map +1 -1
  10. package/dist/cjs/server/fs/middleware-location.js +9 -4
  11. package/dist/cjs/server/fs/middleware-location.js.map +1 -1
  12. package/dist/cjs/utils/debugLogger.js +1 -1
  13. package/dist/cjs/utils/debugLogger.js.map +1 -1
  14. package/dist/cjs/utils/sdk-versions.js +14 -2
  15. package/dist/cjs/utils/sdk-versions.js.map +1 -1
  16. package/dist/esm/app-router/server/auth.js +3 -2
  17. package/dist/esm/app-router/server/auth.js.map +1 -1
  18. package/dist/esm/client-boundary/hooks.js +2 -0
  19. package/dist/esm/client-boundary/hooks.js.map +1 -1
  20. package/dist/esm/index.js +2 -0
  21. package/dist/esm/index.js.map +1 -1
  22. package/dist/esm/server/constants.js +1 -1
  23. package/dist/esm/server/createClerkClient.js +1 -1
  24. package/dist/esm/server/createClerkClient.js.map +1 -1
  25. package/dist/esm/server/fs/middleware-location.js +9 -4
  26. package/dist/esm/server/fs/middleware-location.js.map +1 -1
  27. package/dist/esm/utils/debugLogger.js +1 -1
  28. package/dist/esm/utils/debugLogger.js.map +1 -1
  29. package/dist/esm/utils/sdk-versions.js +13 -2
  30. package/dist/esm/utils/sdk-versions.js.map +1 -1
  31. package/dist/types/app-router/server/auth.d.ts.map +1 -1
  32. package/dist/types/client-boundary/hooks.d.ts +2 -1
  33. package/dist/types/client-boundary/hooks.d.ts.map +1 -1
  34. package/dist/types/index.d.ts +2 -1
  35. package/dist/types/index.d.ts.map +1 -1
  36. package/dist/types/server/fs/middleware-location.d.ts.map +1 -1
  37. package/dist/types/utils/sdk-versions.d.ts +5 -1
  38. package/dist/types/utils/sdk-versions.d.ts.map +1 -1
  39. package/package.json +5 -5
@@ -52,7 +52,8 @@ const auth = (async (options) => {
52
52
  }
53
53
  try {
54
54
  const isSrcAppDir = await import("../../server/fs/middleware-location.js").then((m) => m.hasSrcAppDir());
55
- return [`Your Middleware exists at ./${isSrcAppDir ? "src/" : ""}middleware.(ts|js)`];
55
+ const fileName = import_sdk_versions.isNext16OrHigher ? "middleware.(ts|js) or proxy.(ts|js)" : "middleware.(ts|js)";
56
+ return [`Your Middleware exists at ./${isSrcAppDir ? "src/" : ""}${fileName}`];
56
57
  } catch {
57
58
  return [];
58
59
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/app-router/server/auth.ts"],"sourcesContent":["import type { SessionAuthObject } from '@clerk/backend';\nimport type { AuthOptions, GetAuthFnNoRequest, RedirectFun } from '@clerk/backend/internal';\nimport { constants, createClerkRequest, createRedirect, TokenType } from '@clerk/backend/internal';\nimport { notFound, redirect } from 'next/navigation';\n\nimport { PUBLISHABLE_KEY, SIGN_IN_URL, SIGN_UP_URL } from '../../server/constants';\nimport { createAsyncGetAuth } from '../../server/createGetAuth';\nimport { authAuthHeaderMissing } from '../../server/errors';\nimport { getAuthKeyFromRequest, getHeader } from '../../server/headers-utils';\nimport { unauthorized } from '../../server/nextErrors';\nimport type { AuthProtect } from '../../server/protect';\nimport { createProtect } from '../../server/protect';\nimport { decryptClerkRequestData } from '../../server/utils';\nimport { isNextWithUnstableServerActions } from '../../utils/sdk-versions';\nimport { buildRequestLike } from './utils';\n\n/**\n * `Auth` object of the currently active user and the `redirectToSignIn()` method.\n */\nexport type SessionAuthWithRedirect = SessionAuthObject & {\n /**\n * The `auth()` helper returns the `redirectToSignIn()` method, which you can use to redirect the user to the sign-in page.\n *\n * @param [returnBackUrl] {string | URL} - The URL to redirect the user back to after they sign in.\n *\n * > [!NOTE]\n * > `auth()` on the server-side can only access redirect URLs defined via [environment variables](https://clerk.com/docs/guides/development/clerk-environment-variables#sign-in-and-sign-up-redirects) or [`clerkMiddleware` dynamic keys](https://clerk.com/docs/reference/nextjs/clerk-middleware#dynamic-keys).\n */\n redirectToSignIn: RedirectFun<ReturnType<typeof redirect>>;\n\n /**\n * The `auth()` helper returns the `redirectToSignUp()` method, which you can use to redirect the user to the sign-up page.\n *\n * @param [returnBackUrl] {string | URL} - The URL to redirect the user back to after they sign up.\n *\n * > [!NOTE]\n * > `auth()` on the server-side can only access redirect URLs defined via [environment variables](https://clerk.com/docs/guides/development/clerk-environment-variables#sign-in-and-sign-up-redirects) or [`clerkMiddleware` dynamic keys](https://clerk.com/docs/reference/nextjs/clerk-middleware#dynamic-keys).\n */\n redirectToSignUp: RedirectFun<ReturnType<typeof redirect>>;\n};\n\nexport type AuthFn = GetAuthFnNoRequest<SessionAuthWithRedirect, true> & {\n /**\n * `auth` includes a single property, the `protect()` method, which you can use in two ways:\n * - to check if a user is authenticated (signed in)\n * - to check if a user is authorized (has the correct roles or permissions) to access something, such as a component or a route handler\n *\n * The following table describes how auth.protect() behaves based on user authentication or authorization status:\n *\n * | Authenticated | Authorized | `auth.protect()` will |\n * | - | - | - |\n * | Yes | Yes | Return the [`Auth`](https://clerk.com/docs/reference/backend/types/auth-object) object. |\n * | Yes | No | Return a `404` error. |\n * | No | No | Redirect the user to the sign-in page\\*. |\n *\n * > [!IMPORTANT]\n * > \\*For non-document requests, such as API requests, `auth.protect()` returns a `404` error to users who aren't authenticated.\n *\n * `auth.protect()` can be used to check if a user is authenticated or authorized to access certain parts of your application or even entire routes. See detailed examples in the [dedicated guide](https://clerk.com/docs/organizations/verify-user-permissions).\n */\n protect: AuthProtect;\n};\n\n/**\n * The `auth()` helper returns the [`Auth`](https://clerk.com/docs/reference/backend/types/auth-object) object of the currently active user, as well as the [`redirectToSignIn()`](https://clerk.com/docs/reference/nextjs/app-router/auth#redirect-to-sign-in) method.\n *\n * - Only available for App Router.\n * - Only works on the server-side, such as in Server Components, Route Handlers, and Server Actions.\n * - Requires [`clerkMiddleware()`](https://clerk.com/docs/reference/nextjs/clerk-middleware) to be configured.\n */\nexport const auth: AuthFn = (async (options?: AuthOptions) => {\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n require('server-only');\n\n const request = await buildRequestLike();\n\n const stepsBasedOnSrcDirectory = async () => {\n if (isNextWithUnstableServerActions) {\n return [];\n }\n\n try {\n const isSrcAppDir = await import('../../server/fs/middleware-location.js').then(m => m.hasSrcAppDir());\n return [`Your Middleware exists at ./${isSrcAppDir ? 'src/' : ''}middleware.(ts|js)`];\n } catch {\n return [];\n }\n };\n const authObject = await createAsyncGetAuth({\n debugLoggerName: 'auth()',\n noAuthStatusMessage: authAuthHeaderMissing('auth', await stepsBasedOnSrcDirectory()),\n })(request, {\n treatPendingAsSignedOut: options?.treatPendingAsSignedOut,\n acceptsToken: options?.acceptsToken ?? TokenType.SessionToken,\n });\n\n const clerkUrl = getAuthKeyFromRequest(request, 'ClerkUrl');\n\n const createRedirectForRequest = (...args: Parameters<RedirectFun<never>>) => {\n const { returnBackUrl } = args[0] || {};\n const clerkRequest = createClerkRequest(request);\n const devBrowserToken =\n clerkRequest.clerkUrl.searchParams.get(constants.QueryParameters.DevBrowser) ||\n clerkRequest.cookies.get(constants.Cookies.DevBrowser);\n\n const encryptedRequestData = getHeader(request, constants.Headers.ClerkRequestData);\n const decryptedRequestData = decryptClerkRequestData(encryptedRequestData);\n return [\n createRedirect({\n redirectAdapter: redirect,\n devBrowserToken: devBrowserToken,\n baseUrl: clerkRequest.clerkUrl.toString(),\n publishableKey: decryptedRequestData.publishableKey || PUBLISHABLE_KEY,\n signInUrl: decryptedRequestData.signInUrl || SIGN_IN_URL,\n signUpUrl: decryptedRequestData.signUpUrl || SIGN_UP_URL,\n sessionStatus: authObject.tokenType === TokenType.SessionToken ? authObject.sessionStatus : null,\n }),\n returnBackUrl === null ? '' : returnBackUrl || clerkUrl?.toString(),\n ] as const;\n };\n\n const redirectToSignIn: RedirectFun<never> = (opts = {}) => {\n const [r, returnBackUrl] = createRedirectForRequest(opts);\n return r.redirectToSignIn({\n returnBackUrl,\n });\n };\n\n const redirectToSignUp: RedirectFun<never> = (opts = {}) => {\n const [r, returnBackUrl] = createRedirectForRequest(opts);\n return r.redirectToSignUp({\n returnBackUrl,\n });\n };\n\n if (authObject.tokenType === TokenType.SessionToken) {\n return Object.assign(authObject, { redirectToSignIn, redirectToSignUp });\n }\n\n return authObject;\n}) as AuthFn;\n\nauth.protect = async (...args: any[]) => {\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n require('server-only');\n\n const request = await buildRequestLike();\n const requestedToken = args?.[0]?.token || args?.[1]?.token || TokenType.SessionToken;\n const authObject = await auth({ acceptsToken: requestedToken });\n\n const protect = createProtect({\n request,\n authObject,\n redirectToSignIn: authObject.redirectToSignIn,\n notFound,\n redirect,\n unauthorized,\n });\n\n return protect(...args);\n};\n"],"mappings":"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","names":["import_utils"]}
1
+ {"version":3,"sources":["../../../../src/app-router/server/auth.ts"],"sourcesContent":["import type { SessionAuthObject } from '@clerk/backend';\nimport type { AuthOptions, GetAuthFnNoRequest, RedirectFun } from '@clerk/backend/internal';\nimport { constants, createClerkRequest, createRedirect, TokenType } from '@clerk/backend/internal';\nimport { notFound, redirect } from 'next/navigation';\n\nimport { PUBLISHABLE_KEY, SIGN_IN_URL, SIGN_UP_URL } from '../../server/constants';\nimport { createAsyncGetAuth } from '../../server/createGetAuth';\nimport { authAuthHeaderMissing } from '../../server/errors';\nimport { getAuthKeyFromRequest, getHeader } from '../../server/headers-utils';\nimport { unauthorized } from '../../server/nextErrors';\nimport type { AuthProtect } from '../../server/protect';\nimport { createProtect } from '../../server/protect';\nimport { decryptClerkRequestData } from '../../server/utils';\nimport { isNext16OrHigher, isNextWithUnstableServerActions } from '../../utils/sdk-versions';\nimport { buildRequestLike } from './utils';\n\n/**\n * `Auth` object of the currently active user and the `redirectToSignIn()` method.\n */\nexport type SessionAuthWithRedirect = SessionAuthObject & {\n /**\n * The `auth()` helper returns the `redirectToSignIn()` method, which you can use to redirect the user to the sign-in page.\n *\n * @param [returnBackUrl] {string | URL} - The URL to redirect the user back to after they sign in.\n *\n * > [!NOTE]\n * > `auth()` on the server-side can only access redirect URLs defined via [environment variables](https://clerk.com/docs/guides/development/clerk-environment-variables#sign-in-and-sign-up-redirects) or [`clerkMiddleware` dynamic keys](https://clerk.com/docs/reference/nextjs/clerk-middleware#dynamic-keys).\n */\n redirectToSignIn: RedirectFun<ReturnType<typeof redirect>>;\n\n /**\n * The `auth()` helper returns the `redirectToSignUp()` method, which you can use to redirect the user to the sign-up page.\n *\n * @param [returnBackUrl] {string | URL} - The URL to redirect the user back to after they sign up.\n *\n * > [!NOTE]\n * > `auth()` on the server-side can only access redirect URLs defined via [environment variables](https://clerk.com/docs/guides/development/clerk-environment-variables#sign-in-and-sign-up-redirects) or [`clerkMiddleware` dynamic keys](https://clerk.com/docs/reference/nextjs/clerk-middleware#dynamic-keys).\n */\n redirectToSignUp: RedirectFun<ReturnType<typeof redirect>>;\n};\n\nexport type AuthFn = GetAuthFnNoRequest<SessionAuthWithRedirect, true> & {\n /**\n * `auth` includes a single property, the `protect()` method, which you can use in two ways:\n * - to check if a user is authenticated (signed in)\n * - to check if a user is authorized (has the correct roles or permissions) to access something, such as a component or a route handler\n *\n * The following table describes how auth.protect() behaves based on user authentication or authorization status:\n *\n * | Authenticated | Authorized | `auth.protect()` will |\n * | - | - | - |\n * | Yes | Yes | Return the [`Auth`](https://clerk.com/docs/reference/backend/types/auth-object) object. |\n * | Yes | No | Return a `404` error. |\n * | No | No | Redirect the user to the sign-in page\\*. |\n *\n * > [!IMPORTANT]\n * > \\*For non-document requests, such as API requests, `auth.protect()` returns a `404` error to users who aren't authenticated.\n *\n * `auth.protect()` can be used to check if a user is authenticated or authorized to access certain parts of your application or even entire routes. See detailed examples in the [dedicated guide](https://clerk.com/docs/organizations/verify-user-permissions).\n */\n protect: AuthProtect;\n};\n\n/**\n * The `auth()` helper returns the [`Auth`](https://clerk.com/docs/reference/backend/types/auth-object) object of the currently active user, as well as the [`redirectToSignIn()`](https://clerk.com/docs/reference/nextjs/app-router/auth#redirect-to-sign-in) method.\n *\n * - Only available for App Router.\n * - Only works on the server-side, such as in Server Components, Route Handlers, and Server Actions.\n * - Requires [`clerkMiddleware()`](https://clerk.com/docs/reference/nextjs/clerk-middleware) to be configured.\n */\nexport const auth: AuthFn = (async (options?: AuthOptions) => {\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n require('server-only');\n\n const request = await buildRequestLike();\n\n const stepsBasedOnSrcDirectory = async () => {\n if (isNextWithUnstableServerActions) {\n return [];\n }\n\n try {\n const isSrcAppDir = await import('../../server/fs/middleware-location.js').then(m => m.hasSrcAppDir());\n const fileName = isNext16OrHigher ? 'middleware.(ts|js) or proxy.(ts|js)' : 'middleware.(ts|js)';\n return [`Your Middleware exists at ./${isSrcAppDir ? 'src/' : ''}${fileName}`];\n } catch {\n return [];\n }\n };\n const authObject = await createAsyncGetAuth({\n debugLoggerName: 'auth()',\n noAuthStatusMessage: authAuthHeaderMissing('auth', await stepsBasedOnSrcDirectory()),\n })(request, {\n treatPendingAsSignedOut: options?.treatPendingAsSignedOut,\n acceptsToken: options?.acceptsToken ?? TokenType.SessionToken,\n });\n\n const clerkUrl = getAuthKeyFromRequest(request, 'ClerkUrl');\n\n const createRedirectForRequest = (...args: Parameters<RedirectFun<never>>) => {\n const { returnBackUrl } = args[0] || {};\n const clerkRequest = createClerkRequest(request);\n const devBrowserToken =\n clerkRequest.clerkUrl.searchParams.get(constants.QueryParameters.DevBrowser) ||\n clerkRequest.cookies.get(constants.Cookies.DevBrowser);\n\n const encryptedRequestData = getHeader(request, constants.Headers.ClerkRequestData);\n const decryptedRequestData = decryptClerkRequestData(encryptedRequestData);\n return [\n createRedirect({\n redirectAdapter: redirect,\n devBrowserToken: devBrowserToken,\n baseUrl: clerkRequest.clerkUrl.toString(),\n publishableKey: decryptedRequestData.publishableKey || PUBLISHABLE_KEY,\n signInUrl: decryptedRequestData.signInUrl || SIGN_IN_URL,\n signUpUrl: decryptedRequestData.signUpUrl || SIGN_UP_URL,\n sessionStatus: authObject.tokenType === TokenType.SessionToken ? authObject.sessionStatus : null,\n }),\n returnBackUrl === null ? '' : returnBackUrl || clerkUrl?.toString(),\n ] as const;\n };\n\n const redirectToSignIn: RedirectFun<never> = (opts = {}) => {\n const [r, returnBackUrl] = createRedirectForRequest(opts);\n return r.redirectToSignIn({\n returnBackUrl,\n });\n };\n\n const redirectToSignUp: RedirectFun<never> = (opts = {}) => {\n const [r, returnBackUrl] = createRedirectForRequest(opts);\n return r.redirectToSignUp({\n returnBackUrl,\n });\n };\n\n if (authObject.tokenType === TokenType.SessionToken) {\n return Object.assign(authObject, { redirectToSignIn, redirectToSignUp });\n }\n\n return authObject;\n}) as AuthFn;\n\nauth.protect = async (...args: any[]) => {\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n require('server-only');\n\n const request = await buildRequestLike();\n const requestedToken = args?.[0]?.token || args?.[1]?.token || TokenType.SessionToken;\n const authObject = await auth({ acceptsToken: requestedToken });\n\n const protect = createProtect({\n request,\n authObject,\n redirectToSignIn: authObject.redirectToSignIn,\n notFound,\n redirect,\n unauthorized,\n });\n\n return protect(...args);\n};\n"],"mappings":"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","names":["import_utils"]}
@@ -31,6 +31,7 @@ __export(hooks_exports, {
31
31
  useClerk: () => import_clerk_react.useClerk,
32
32
  useEmailLink: () => import_clerk_react.useEmailLink,
33
33
  useOrganization: () => import_clerk_react.useOrganization,
34
+ useOrganizationCreationDefaults: () => import_clerk_react.useOrganizationCreationDefaults,
34
35
  useOrganizationList: () => import_clerk_react.useOrganizationList,
35
36
  useReverification: () => import_clerk_react.useReverification,
36
37
  useSession: () => import_clerk_react.useSession,
@@ -57,6 +58,7 @@ var import_PromisifiedAuthProvider = require("./PromisifiedAuthProvider");
57
58
  useClerk,
58
59
  useEmailLink,
59
60
  useOrganization,
61
+ useOrganizationCreationDefaults,
60
62
  useOrganizationList,
61
63
  useReverification,
62
64
  useSession,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/client-boundary/hooks.ts"],"sourcesContent":["'use client';\n\nexport {\n useClerk,\n useEmailLink,\n useOrganization,\n useOrganizationList,\n useSession,\n useSessionList,\n useSignIn,\n useSignUp,\n useUser,\n useReverification,\n} from '@clerk/clerk-react';\n\nexport {\n isClerkAPIResponseError,\n isClerkRuntimeError,\n isEmailLinkError,\n isKnownError,\n isMetamaskError,\n isReverificationCancelledError,\n EmailLinkErrorCode,\n EmailLinkErrorCodeStatus,\n} from '@clerk/clerk-react/errors';\n\nexport { usePromisifiedAuth as useAuth } from './PromisifiedAuthProvider';\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,yBAWO;AAEP,oBASO;AAEP,qCAA8C;","names":[]}
1
+ {"version":3,"sources":["../../../src/client-boundary/hooks.ts"],"sourcesContent":["'use client';\n\nexport {\n useClerk,\n useEmailLink,\n useOrganization,\n useOrganizationCreationDefaults,\n useOrganizationList,\n useSession,\n useSessionList,\n useSignIn,\n useSignUp,\n useUser,\n useReverification,\n} from '@clerk/clerk-react';\nexport type { UseOrganizationCreationDefaultsParams, UseOrganizationCreationDefaultsReturn } from '@clerk/clerk-react';\n\nexport {\n isClerkAPIResponseError,\n isClerkRuntimeError,\n isEmailLinkError,\n isKnownError,\n isMetamaskError,\n isReverificationCancelledError,\n EmailLinkErrorCode,\n EmailLinkErrorCodeStatus,\n} from '@clerk/clerk-react/errors';\n\nexport { usePromisifiedAuth as useAuth } from './PromisifiedAuthProvider';\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,yBAYO;AAGP,oBASO;AAEP,qCAA8C;","names":[]}
package/dist/cjs/index.js CHANGED
@@ -66,6 +66,7 @@ __export(index_exports, {
66
66
  useClerk: () => import_hooks.useClerk,
67
67
  useEmailLink: () => import_hooks.useEmailLink,
68
68
  useOrganization: () => import_hooks.useOrganization,
69
+ useOrganizationCreationDefaults: () => import_hooks.useOrganizationCreationDefaults,
69
70
  useOrganizationList: () => import_hooks.useOrganizationList,
70
71
  useReverification: () => import_hooks.useReverification,
71
72
  useSession: () => import_hooks.useSession,
@@ -123,6 +124,7 @@ const Protect = ComponentsModule.Protect;
123
124
  useClerk,
124
125
  useEmailLink,
125
126
  useOrganization,
127
+ useOrganizationCreationDefaults,
126
128
  useOrganizationList,
127
129
  useReverification,
128
130
  useSession,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts"],"sourcesContent":["/**\n * These need to be explicitly listed. Do not use an * here.\n * If you do, app router will break.\n */\nexport {\n AuthenticateWithRedirectCallback,\n ClerkDegraded,\n ClerkFailed,\n ClerkLoaded,\n ClerkLoading,\n RedirectToCreateOrganization,\n RedirectToOrganizationProfile,\n RedirectToSignIn,\n RedirectToSignUp,\n RedirectToTasks,\n RedirectToUserProfile,\n} from './client-boundary/controlComponents';\n\n/**\n * These need to be explicitly listed. Do not use an * here.\n * If you do, app router will break.\n */\nexport {\n APIKeys,\n CreateOrganization,\n GoogleOneTap,\n OrganizationList,\n OrganizationProfile,\n OrganizationSwitcher,\n PricingTable,\n SignIn,\n SignInButton,\n SignInWithMetamaskButton,\n SignOutButton,\n SignUp,\n SignUpButton,\n TaskChooseOrganization,\n TaskResetPassword,\n UserAvatar,\n UserButton,\n UserProfile,\n Waitlist,\n} from './client-boundary/uiComponents';\n\n/**\n * These need to be explicitly listed. Do not use an * here.\n * If you do, app router will break.\n */\nexport {\n useAuth,\n useClerk,\n useEmailLink,\n useOrganization,\n useOrganizationList,\n useReverification,\n useSession,\n useSessionList,\n useSignIn,\n useSignUp,\n useUser,\n} from './client-boundary/hooks';\n\n/**\n * Conditionally export components that exhibit different behavior\n * when used in /app vs /pages.\n * We defined the runtime and the type values explicitly,\n * because TS will not recognize the subpath import unless the HOST\n * application sets moduleResolution to 'NodeNext'.\n */\n// @ts-ignore\nimport * as ComponentsModule from '#components';\n\nimport type { ServerComponentsServerModuleTypes } from './components.server';\n\nexport const ClerkProvider = ComponentsModule.ClerkProvider as ServerComponentsServerModuleTypes['ClerkProvider'];\nexport const SignedIn = ComponentsModule.SignedIn as ServerComponentsServerModuleTypes['SignedIn'];\nexport const SignedOut = ComponentsModule.SignedOut as ServerComponentsServerModuleTypes['SignedOut'];\nexport const Protect = ComponentsModule.Protect as ServerComponentsServerModuleTypes['Protect'];\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA,+BAYO;AAMP,0BAoBO;AAMP,mBAYO;AAUP,uBAAkC;AAI3B,MAAM,gBAAgB,iBAAiB;AACvC,MAAM,WAAW,iBAAiB;AAClC,MAAM,YAAY,iBAAiB;AACnC,MAAM,UAAU,iBAAiB;","names":[]}
1
+ {"version":3,"sources":["../../src/index.ts"],"sourcesContent":["/**\n * These need to be explicitly listed. Do not use an * here.\n * If you do, app router will break.\n */\nexport {\n AuthenticateWithRedirectCallback,\n ClerkDegraded,\n ClerkFailed,\n ClerkLoaded,\n ClerkLoading,\n RedirectToCreateOrganization,\n RedirectToOrganizationProfile,\n RedirectToSignIn,\n RedirectToSignUp,\n RedirectToTasks,\n RedirectToUserProfile,\n} from './client-boundary/controlComponents';\n\n/**\n * These need to be explicitly listed. Do not use an * here.\n * If you do, app router will break.\n */\nexport {\n APIKeys,\n CreateOrganization,\n GoogleOneTap,\n OrganizationList,\n OrganizationProfile,\n OrganizationSwitcher,\n PricingTable,\n SignIn,\n SignInButton,\n SignInWithMetamaskButton,\n SignOutButton,\n SignUp,\n SignUpButton,\n TaskChooseOrganization,\n TaskResetPassword,\n UserAvatar,\n UserButton,\n UserProfile,\n Waitlist,\n} from './client-boundary/uiComponents';\n\n/**\n * These need to be explicitly listed. Do not use an * here.\n * If you do, app router will break.\n */\nexport {\n useAuth,\n useClerk,\n useEmailLink,\n useOrganization,\n useOrganizationCreationDefaults,\n useOrganizationList,\n useReverification,\n useSession,\n useSessionList,\n useSignIn,\n useSignUp,\n useUser,\n} from './client-boundary/hooks';\nexport type {\n UseOrganizationCreationDefaultsParams,\n UseOrganizationCreationDefaultsReturn,\n} from './client-boundary/hooks';\n\n/**\n * Conditionally export components that exhibit different behavior\n * when used in /app vs /pages.\n * We defined the runtime and the type values explicitly,\n * because TS will not recognize the subpath import unless the HOST\n * application sets moduleResolution to 'NodeNext'.\n */\n// @ts-ignore\nimport * as ComponentsModule from '#components';\n\nimport type { ServerComponentsServerModuleTypes } from './components.server';\n\nexport const ClerkProvider = ComponentsModule.ClerkProvider as ServerComponentsServerModuleTypes['ClerkProvider'];\nexport const SignedIn = ComponentsModule.SignedIn as ServerComponentsServerModuleTypes['SignedIn'];\nexport const SignedOut = ComponentsModule.SignedOut as ServerComponentsServerModuleTypes['SignedOut'];\nexport const Protect = ComponentsModule.Protect as ServerComponentsServerModuleTypes['Protect'];\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA,+BAYO;AAMP,0BAoBO;AAMP,mBAaO;AAcP,uBAAkC;AAI3B,MAAM,gBAAgB,iBAAiB;AACvC,MAAM,WAAW,iBAAiB;AAClC,MAAM,YAAY,iBAAiB;AACnC,MAAM,UAAU,iBAAiB;","names":[]}
@@ -54,7 +54,7 @@ const SIGN_IN_URL = process.env.NEXT_PUBLIC_CLERK_SIGN_IN_URL || "";
54
54
  const SIGN_UP_URL = process.env.NEXT_PUBLIC_CLERK_SIGN_UP_URL || "";
55
55
  const SDK_METADATA = {
56
56
  name: "@clerk/nextjs",
57
- version: "6.36.10",
57
+ version: "6.37.0",
58
58
  environment: process.env.NODE_ENV
59
59
  };
60
60
  const TELEMETRY_DISABLED = (0, import_underscore.isTruthy)(process.env.NEXT_PUBLIC_CLERK_TELEMETRY_DISABLED);
@@ -28,7 +28,7 @@ const clerkClientDefaultOptions = {
28
28
  publishableKey: import_constants.PUBLISHABLE_KEY,
29
29
  apiUrl: import_constants.API_URL,
30
30
  apiVersion: import_constants.API_VERSION,
31
- userAgent: `${"@clerk/nextjs"}@${"6.36.10"}`,
31
+ userAgent: `${"@clerk/nextjs"}@${"6.37.0"}`,
32
32
  proxyUrl: import_constants.PROXY_URL,
33
33
  domain: import_constants.DOMAIN,
34
34
  isSatellite: import_constants.IS_SATELLITE,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/server/createClerkClient.ts"],"sourcesContent":["import { createClerkClient } from '@clerk/backend';\n\nimport {\n API_URL,\n API_VERSION,\n DOMAIN,\n IS_SATELLITE,\n MACHINE_SECRET_KEY,\n PROXY_URL,\n PUBLISHABLE_KEY,\n SDK_METADATA,\n SECRET_KEY,\n TELEMETRY_DEBUG,\n TELEMETRY_DISABLED,\n} from './constants';\n\nconst clerkClientDefaultOptions = {\n secretKey: SECRET_KEY,\n publishableKey: PUBLISHABLE_KEY,\n apiUrl: API_URL,\n apiVersion: API_VERSION,\n userAgent: `${PACKAGE_NAME}@${PACKAGE_VERSION}`,\n proxyUrl: PROXY_URL,\n domain: DOMAIN,\n isSatellite: IS_SATELLITE,\n machineSecretKey: MACHINE_SECRET_KEY,\n sdkMetadata: SDK_METADATA,\n telemetry: {\n disabled: TELEMETRY_DISABLED,\n debug: TELEMETRY_DEBUG,\n },\n};\n\nexport const createClerkClientWithOptions: typeof createClerkClient = options =>\n createClerkClient({ ...clerkClientDefaultOptions, ...options });\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAAkC;AAElC,uBAYO;AAEP,MAAM,4BAA4B;AAAA,EAChC,WAAW;AAAA,EACX,gBAAgB;AAAA,EAChB,QAAQ;AAAA,EACR,YAAY;AAAA,EACZ,WAAW,GAAG,eAAY,IAAI,SAAe;AAAA,EAC7C,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,kBAAkB;AAAA,EAClB,aAAa;AAAA,EACb,WAAW;AAAA,IACT,UAAU;AAAA,IACV,OAAO;AAAA,EACT;AACF;AAEO,MAAM,+BAAyD,iBACpE,kCAAkB,EAAE,GAAG,2BAA2B,GAAG,QAAQ,CAAC;","names":[]}
1
+ {"version":3,"sources":["../../../src/server/createClerkClient.ts"],"sourcesContent":["import { createClerkClient } from '@clerk/backend';\n\nimport {\n API_URL,\n API_VERSION,\n DOMAIN,\n IS_SATELLITE,\n MACHINE_SECRET_KEY,\n PROXY_URL,\n PUBLISHABLE_KEY,\n SDK_METADATA,\n SECRET_KEY,\n TELEMETRY_DEBUG,\n TELEMETRY_DISABLED,\n} from './constants';\n\nconst clerkClientDefaultOptions = {\n secretKey: SECRET_KEY,\n publishableKey: PUBLISHABLE_KEY,\n apiUrl: API_URL,\n apiVersion: API_VERSION,\n userAgent: `${PACKAGE_NAME}@${PACKAGE_VERSION}`,\n proxyUrl: PROXY_URL,\n domain: DOMAIN,\n isSatellite: IS_SATELLITE,\n machineSecretKey: MACHINE_SECRET_KEY,\n sdkMetadata: SDK_METADATA,\n telemetry: {\n disabled: TELEMETRY_DISABLED,\n debug: TELEMETRY_DEBUG,\n },\n};\n\nexport const createClerkClientWithOptions: typeof createClerkClient = options =>\n createClerkClient({ ...clerkClientDefaultOptions, ...options });\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAAkC;AAElC,uBAYO;AAEP,MAAM,4BAA4B;AAAA,EAChC,WAAW;AAAA,EACX,gBAAgB;AAAA,EAChB,QAAQ;AAAA,EACR,YAAY;AAAA,EACZ,WAAW,GAAG,eAAY,IAAI,QAAe;AAAA,EAC7C,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,kBAAkB;AAAA,EAClB,aAAa;AAAA,EACb,WAAW;AAAA,IACT,UAAU;AAAA,IACV,OAAO;AAAA,EACT;AACF;AAEO,MAAM,+BAAyD,iBACpE,kCAAkB,EAAE,GAAG,2BAA2B,GAAG,QAAQ,CAAC;","names":[]}
@@ -22,6 +22,7 @@ __export(middleware_location_exports, {
22
22
  suggestMiddlewareLocation: () => suggestMiddlewareLocation
23
23
  });
24
24
  module.exports = __toCommonJS(middleware_location_exports);
25
+ var import_sdk_versions = require("../../utils/sdk-versions");
25
26
  var import_utils = require("./utils");
26
27
  function hasSrcAppDir() {
27
28
  const { existsSync } = (0, import_utils.nodeFsOrThrow)();
@@ -32,16 +33,20 @@ function hasSrcAppDir() {
32
33
  }
33
34
  function suggestMiddlewareLocation() {
34
35
  const fileExtensions = ["ts", "js"];
35
- const suggestionMessage = (extension, to, from) => `Clerk: clerkMiddleware() was not run, your middleware file might be misplaced. Move your middleware file to ./${to}middleware.${extension}. Currently located at ./${from}middleware.${extension}`;
36
+ const fileNames = import_sdk_versions.isNext16OrHigher ? ["middleware", "proxy"] : ["middleware"];
37
+ const fileNameDisplay = import_sdk_versions.isNext16OrHigher ? "middleware or proxy" : "middleware";
38
+ const suggestionMessage = (fileName, extension, to, from) => `Clerk: clerkMiddleware() was not run, your ${fileNameDisplay} file might be misplaced. Move your ${fileNameDisplay} file to ./${to}${fileName}.${extension}. Currently located at ./${from}${fileName}.${extension}`;
36
39
  const { existsSync } = (0, import_utils.nodeFsOrThrow)();
37
40
  const path = (0, import_utils.nodePathOrThrow)();
38
41
  const cwd = (0, import_utils.nodeCwdOrThrow)();
39
42
  const projectWithAppSrcPath = path.join(cwd(), "src", "app");
40
43
  const projectWithAppPath = path.join(cwd(), "app");
41
44
  const checkMiddlewareLocation = (basePath, to, from) => {
42
- for (const fileExtension of fileExtensions) {
43
- if (existsSync(path.join(basePath, `middleware.${fileExtension}`))) {
44
- return suggestionMessage(fileExtension, to, from);
45
+ for (const fileName of fileNames) {
46
+ for (const fileExtension of fileExtensions) {
47
+ if (existsSync(path.join(basePath, `${fileName}.${fileExtension}`))) {
48
+ return suggestionMessage(fileName, fileExtension, to, from);
49
+ }
45
50
  }
46
51
  }
47
52
  return void 0;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/server/fs/middleware-location.ts"],"sourcesContent":["import { nodeCwdOrThrow, nodeFsOrThrow, nodePathOrThrow } from './utils';\n\nfunction hasSrcAppDir() {\n const { existsSync } = nodeFsOrThrow();\n const path = nodePathOrThrow();\n const cwd = nodeCwdOrThrow();\n\n const projectWithAppSrc = path.join(cwd(), 'src', 'app');\n\n return !!existsSync(projectWithAppSrc);\n}\n\nfunction suggestMiddlewareLocation() {\n const fileExtensions = ['ts', 'js'] as const;\n const suggestionMessage = (\n extension: (typeof fileExtensions)[number],\n to: 'src/' | '',\n from: 'src/app/' | 'app/' | '',\n ) =>\n `Clerk: clerkMiddleware() was not run, your middleware file might be misplaced. Move your middleware file to ./${to}middleware.${extension}. Currently located at ./${from}middleware.${extension}`;\n\n const { existsSync } = nodeFsOrThrow();\n const path = nodePathOrThrow();\n const cwd = nodeCwdOrThrow();\n\n const projectWithAppSrcPath = path.join(cwd(), 'src', 'app');\n const projectWithAppPath = path.join(cwd(), 'app');\n\n const checkMiddlewareLocation = (\n basePath: string,\n to: 'src/' | '',\n from: 'src/app/' | 'app/' | '',\n ): string | undefined => {\n for (const fileExtension of fileExtensions) {\n if (existsSync(path.join(basePath, `middleware.${fileExtension}`))) {\n return suggestionMessage(fileExtension, to, from);\n }\n }\n return undefined;\n };\n\n if (existsSync(projectWithAppSrcPath)) {\n return (\n checkMiddlewareLocation(projectWithAppSrcPath, 'src/', 'src/app/') || checkMiddlewareLocation(cwd(), 'src/', '')\n );\n }\n\n if (existsSync(projectWithAppPath)) {\n return checkMiddlewareLocation(projectWithAppPath, '', 'app/');\n }\n\n return undefined;\n}\n\nexport { suggestMiddlewareLocation, hasSrcAppDir };\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAA+D;AAE/D,SAAS,eAAe;AACtB,QAAM,EAAE,WAAW,QAAI,4BAAc;AACrC,QAAM,WAAO,8BAAgB;AAC7B,QAAM,UAAM,6BAAe;AAE3B,QAAM,oBAAoB,KAAK,KAAK,IAAI,GAAG,OAAO,KAAK;AAEvD,SAAO,CAAC,CAAC,WAAW,iBAAiB;AACvC;AAEA,SAAS,4BAA4B;AACnC,QAAM,iBAAiB,CAAC,MAAM,IAAI;AAClC,QAAM,oBAAoB,CACxB,WACA,IACA,SAEA,iHAAiH,EAAE,cAAc,SAAS,4BAA4B,IAAI,cAAc,SAAS;AAEnM,QAAM,EAAE,WAAW,QAAI,4BAAc;AACrC,QAAM,WAAO,8BAAgB;AAC7B,QAAM,UAAM,6BAAe;AAE3B,QAAM,wBAAwB,KAAK,KAAK,IAAI,GAAG,OAAO,KAAK;AAC3D,QAAM,qBAAqB,KAAK,KAAK,IAAI,GAAG,KAAK;AAEjD,QAAM,0BAA0B,CAC9B,UACA,IACA,SACuB;AACvB,eAAW,iBAAiB,gBAAgB;AAC1C,UAAI,WAAW,KAAK,KAAK,UAAU,cAAc,aAAa,EAAE,CAAC,GAAG;AAClE,eAAO,kBAAkB,eAAe,IAAI,IAAI;AAAA,MAClD;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAEA,MAAI,WAAW,qBAAqB,GAAG;AACrC,WACE,wBAAwB,uBAAuB,QAAQ,UAAU,KAAK,wBAAwB,IAAI,GAAG,QAAQ,EAAE;AAAA,EAEnH;AAEA,MAAI,WAAW,kBAAkB,GAAG;AAClC,WAAO,wBAAwB,oBAAoB,IAAI,MAAM;AAAA,EAC/D;AAEA,SAAO;AACT;","names":[]}
1
+ {"version":3,"sources":["../../../../src/server/fs/middleware-location.ts"],"sourcesContent":["import { isNext16OrHigher } from '../../utils/sdk-versions';\nimport { nodeCwdOrThrow, nodeFsOrThrow, nodePathOrThrow } from './utils';\n\nfunction hasSrcAppDir() {\n const { existsSync } = nodeFsOrThrow();\n const path = nodePathOrThrow();\n const cwd = nodeCwdOrThrow();\n\n const projectWithAppSrc = path.join(cwd(), 'src', 'app');\n\n return !!existsSync(projectWithAppSrc);\n}\n\nfunction suggestMiddlewareLocation() {\n const fileExtensions = ['ts', 'js'] as const;\n // Next.js 16+ supports both middleware.ts (Edge runtime) and proxy.ts (Node.js runtime)\n const fileNames = isNext16OrHigher ? ['middleware', 'proxy'] : ['middleware'];\n const fileNameDisplay = isNext16OrHigher ? 'middleware or proxy' : 'middleware';\n\n const suggestionMessage = (\n fileName: string,\n extension: (typeof fileExtensions)[number],\n to: 'src/' | '',\n from: 'src/app/' | 'app/' | '',\n ) =>\n `Clerk: clerkMiddleware() was not run, your ${fileNameDisplay} file might be misplaced. Move your ${fileNameDisplay} file to ./${to}${fileName}.${extension}. Currently located at ./${from}${fileName}.${extension}`;\n\n const { existsSync } = nodeFsOrThrow();\n const path = nodePathOrThrow();\n const cwd = nodeCwdOrThrow();\n\n const projectWithAppSrcPath = path.join(cwd(), 'src', 'app');\n const projectWithAppPath = path.join(cwd(), 'app');\n\n const checkMiddlewareLocation = (\n basePath: string,\n to: 'src/' | '',\n from: 'src/app/' | 'app/' | '',\n ): string | undefined => {\n for (const fileName of fileNames) {\n for (const fileExtension of fileExtensions) {\n if (existsSync(path.join(basePath, `${fileName}.${fileExtension}`))) {\n return suggestionMessage(fileName, fileExtension, to, from);\n }\n }\n }\n return undefined;\n };\n\n if (existsSync(projectWithAppSrcPath)) {\n return (\n checkMiddlewareLocation(projectWithAppSrcPath, 'src/', 'src/app/') || checkMiddlewareLocation(cwd(), 'src/', '')\n );\n }\n\n if (existsSync(projectWithAppPath)) {\n return checkMiddlewareLocation(projectWithAppPath, '', 'app/');\n }\n\n return undefined;\n}\n\nexport { suggestMiddlewareLocation, hasSrcAppDir };\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0BAAiC;AACjC,mBAA+D;AAE/D,SAAS,eAAe;AACtB,QAAM,EAAE,WAAW,QAAI,4BAAc;AACrC,QAAM,WAAO,8BAAgB;AAC7B,QAAM,UAAM,6BAAe;AAE3B,QAAM,oBAAoB,KAAK,KAAK,IAAI,GAAG,OAAO,KAAK;AAEvD,SAAO,CAAC,CAAC,WAAW,iBAAiB;AACvC;AAEA,SAAS,4BAA4B;AACnC,QAAM,iBAAiB,CAAC,MAAM,IAAI;AAElC,QAAM,YAAY,uCAAmB,CAAC,cAAc,OAAO,IAAI,CAAC,YAAY;AAC5E,QAAM,kBAAkB,uCAAmB,wBAAwB;AAEnE,QAAM,oBAAoB,CACxB,UACA,WACA,IACA,SAEA,8CAA8C,eAAe,uCAAuC,eAAe,cAAc,EAAE,GAAG,QAAQ,IAAI,SAAS,4BAA4B,IAAI,GAAG,QAAQ,IAAI,SAAS;AAErN,QAAM,EAAE,WAAW,QAAI,4BAAc;AACrC,QAAM,WAAO,8BAAgB;AAC7B,QAAM,UAAM,6BAAe;AAE3B,QAAM,wBAAwB,KAAK,KAAK,IAAI,GAAG,OAAO,KAAK;AAC3D,QAAM,qBAAqB,KAAK,KAAK,IAAI,GAAG,KAAK;AAEjD,QAAM,0BAA0B,CAC9B,UACA,IACA,SACuB;AACvB,eAAW,YAAY,WAAW;AAChC,iBAAW,iBAAiB,gBAAgB;AAC1C,YAAI,WAAW,KAAK,KAAK,UAAU,GAAG,QAAQ,IAAI,aAAa,EAAE,CAAC,GAAG;AACnE,iBAAO,kBAAkB,UAAU,eAAe,IAAI,IAAI;AAAA,QAC5D;AAAA,MACF;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAEA,MAAI,WAAW,qBAAqB,GAAG;AACrC,WACE,wBAAwB,uBAAuB,QAAQ,UAAU,KAAK,wBAAwB,IAAI,GAAG,QAAQ,EAAE;AAAA,EAEnH;AAEA,MAAI,WAAW,kBAAkB,GAAG;AAClC,WAAO,wBAAwB,oBAAoB,IAAI,MAAM;AAAA,EAC/D;AAEA,SAAO;AACT;","names":[]}
@@ -90,7 +90,7 @@ function debugLogHeader(name) {
90
90
  return `[clerk debug start: ${name}]`;
91
91
  }
92
92
  function debugLogFooter(name) {
93
- return `[clerk debug end: ${name}] (@clerk/nextjs=${"6.36.10"},next=${import_package.default.version},timestamp=${Math.round((/* @__PURE__ */ new Date()).getTime() / 1e3)})`;
93
+ return `[clerk debug end: ${name}] (@clerk/nextjs=${"6.37.0"},next=${import_package.default.version},timestamp=${Math.round((/* @__PURE__ */ new Date()).getTime() / 1e3)})`;
94
94
  }
95
95
  function truncate(str, maxLength) {
96
96
  const encoder = new TextEncoder();
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/utils/debugLogger.ts"],"sourcesContent":["// TODO: Replace with a more sophisticated logging solution\n\nimport nextPkg from 'next/package.json';\n\nimport { logFormatter } from './logFormatter';\n\nexport type Log = string | Record<string, unknown>;\nexport type LogEntry = Log | Log[];\nexport type Logger<L = Log> = {\n commit: () => void;\n debug: (...args: Array<L | (() => L)>) => void;\n enable: () => void;\n};\nexport type LoggerNoCommit<L = Logger> = Omit<L, 'commit'>;\n\nexport const createDebugLogger = (name: string, formatter: (val: LogEntry) => string) => (): Logger => {\n const entries: LogEntry[] = [];\n let isEnabled = false;\n\n return {\n enable: () => {\n isEnabled = true;\n },\n debug: (...args) => {\n if (isEnabled) {\n entries.push(args.map(arg => (typeof arg === 'function' ? arg() : arg)));\n }\n },\n commit: () => {\n if (isEnabled) {\n console.log(debugLogHeader(name));\n\n /**\n * We buffer each collected log entry so we can format them and log them all at once.\n * Individual console.log calls are used to ensure we don't hit platform-specific log limits (Vercel and Netlify are 4kb).\n */\n for (const log of entries) {\n let output = formatter(log);\n\n output = output\n .split('\\n')\n .map(l => ` ${l}`)\n .join('\\n');\n\n // Vercel errors if the output is > 4kb, so we truncate it\n if (process.env.VERCEL) {\n output = truncate(output, 4096);\n }\n\n console.log(output);\n }\n\n console.log(debugLogFooter(name));\n }\n },\n };\n};\n\ntype WithLogger = <L extends Logger, H extends (...args: any[]) => any>(\n loggerFactoryOrName: string | (() => L),\n handlerCtor: (logger: LoggerNoCommit<L>) => H,\n) => H;\n\nexport const withLogger: WithLogger = (loggerFactoryOrName, handlerCtor) => {\n return ((...args: any) => {\n const factory =\n typeof loggerFactoryOrName === 'string'\n ? createDebugLogger(loggerFactoryOrName, logFormatter)\n : loggerFactoryOrName;\n\n const logger = factory();\n const handler = handlerCtor(logger as any);\n\n try {\n const res = handler(...args);\n if (typeof res === 'object' && 'then' in res && typeof res.then === 'function') {\n return res\n .then((val: any) => {\n logger.commit();\n return val;\n })\n .catch((err: any) => {\n logger.commit();\n throw err;\n });\n }\n // handle sync methods\n logger.commit();\n return res;\n } catch (err: any) {\n logger.commit();\n throw err;\n }\n }) as ReturnType<typeof handlerCtor>;\n};\n\nfunction debugLogHeader(name: string) {\n return `[clerk debug start: ${name}]`;\n}\n\nfunction debugLogFooter(name: string) {\n return `[clerk debug end: ${name}] (@clerk/nextjs=${PACKAGE_VERSION},next=${nextPkg.version},timestamp=${Math.round(new Date().getTime() / 1_000)})`;\n}\n\n// ref: https://stackoverflow.com/questions/57769465/javascript-truncate-text-by-bytes-length\nfunction truncate(str: string, maxLength: number) {\n const encoder = new TextEncoder();\n const decoder = new TextDecoder('utf-8');\n\n const encodedString = encoder.encode(str);\n const truncatedString = encodedString.slice(0, maxLength);\n\n // return the truncated string, removing any replacement characters that result from partially truncated characters\n return decoder.decode(truncatedString).replace(/\\uFFFD/g, '');\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,qBAAoB;AAEpB,0BAA6B;AAWtB,MAAM,oBAAoB,CAAC,MAAc,cAAyC,MAAc;AACrG,QAAM,UAAsB,CAAC;AAC7B,MAAI,YAAY;AAEhB,SAAO;AAAA,IACL,QAAQ,MAAM;AACZ,kBAAY;AAAA,IACd;AAAA,IACA,OAAO,IAAI,SAAS;AAClB,UAAI,WAAW;AACb,gBAAQ,KAAK,KAAK,IAAI,SAAQ,OAAO,QAAQ,aAAa,IAAI,IAAI,GAAI,CAAC;AAAA,MACzE;AAAA,IACF;AAAA,IACA,QAAQ,MAAM;AACZ,UAAI,WAAW;AACb,gBAAQ,IAAI,eAAe,IAAI,CAAC;AAMhC,mBAAW,OAAO,SAAS;AACzB,cAAI,SAAS,UAAU,GAAG;AAE1B,mBAAS,OACN,MAAM,IAAI,EACV,IAAI,OAAK,KAAK,CAAC,EAAE,EACjB,KAAK,IAAI;AAGZ,cAAI,QAAQ,IAAI,QAAQ;AACtB,qBAAS,SAAS,QAAQ,IAAI;AAAA,UAChC;AAEA,kBAAQ,IAAI,MAAM;AAAA,QACpB;AAEA,gBAAQ,IAAI,eAAe,IAAI,CAAC;AAAA,MAClC;AAAA,IACF;AAAA,EACF;AACF;AAOO,MAAM,aAAyB,CAAC,qBAAqB,gBAAgB;AAC1E,UAAQ,IAAI,SAAc;AACxB,UAAM,UACJ,OAAO,wBAAwB,WAC3B,kBAAkB,qBAAqB,gCAAY,IACnD;AAEN,UAAM,SAAS,QAAQ;AACvB,UAAM,UAAU,YAAY,MAAa;AAEzC,QAAI;AACF,YAAM,MAAM,QAAQ,GAAG,IAAI;AAC3B,UAAI,OAAO,QAAQ,YAAY,UAAU,OAAO,OAAO,IAAI,SAAS,YAAY;AAC9E,eAAO,IACJ,KAAK,CAAC,QAAa;AAClB,iBAAO,OAAO;AACd,iBAAO;AAAA,QACT,CAAC,EACA,MAAM,CAAC,QAAa;AACnB,iBAAO,OAAO;AACd,gBAAM;AAAA,QACR,CAAC;AAAA,MACL;AAEA,aAAO,OAAO;AACd,aAAO;AAAA,IACT,SAAS,KAAU;AACjB,aAAO,OAAO;AACd,YAAM;AAAA,IACR;AAAA,EACF;AACF;AAEA,SAAS,eAAe,MAAc;AACpC,SAAO,uBAAuB,IAAI;AACpC;AAEA,SAAS,eAAe,MAAc;AACpC,SAAO,qBAAqB,IAAI,oBAAoB,SAAe,SAAS,eAAAA,QAAQ,OAAO,cAAc,KAAK,OAAM,oBAAI,KAAK,GAAE,QAAQ,IAAI,GAAK,CAAC;AACnJ;AAGA,SAAS,SAAS,KAAa,WAAmB;AAChD,QAAM,UAAU,IAAI,YAAY;AAChC,QAAM,UAAU,IAAI,YAAY,OAAO;AAEvC,QAAM,gBAAgB,QAAQ,OAAO,GAAG;AACxC,QAAM,kBAAkB,cAAc,MAAM,GAAG,SAAS;AAGxD,SAAO,QAAQ,OAAO,eAAe,EAAE,QAAQ,WAAW,EAAE;AAC9D;","names":["nextPkg"]}
1
+ {"version":3,"sources":["../../../src/utils/debugLogger.ts"],"sourcesContent":["// TODO: Replace with a more sophisticated logging solution\n\nimport nextPkg from 'next/package.json';\n\nimport { logFormatter } from './logFormatter';\n\nexport type Log = string | Record<string, unknown>;\nexport type LogEntry = Log | Log[];\nexport type Logger<L = Log> = {\n commit: () => void;\n debug: (...args: Array<L | (() => L)>) => void;\n enable: () => void;\n};\nexport type LoggerNoCommit<L = Logger> = Omit<L, 'commit'>;\n\nexport const createDebugLogger = (name: string, formatter: (val: LogEntry) => string) => (): Logger => {\n const entries: LogEntry[] = [];\n let isEnabled = false;\n\n return {\n enable: () => {\n isEnabled = true;\n },\n debug: (...args) => {\n if (isEnabled) {\n entries.push(args.map(arg => (typeof arg === 'function' ? arg() : arg)));\n }\n },\n commit: () => {\n if (isEnabled) {\n console.log(debugLogHeader(name));\n\n /**\n * We buffer each collected log entry so we can format them and log them all at once.\n * Individual console.log calls are used to ensure we don't hit platform-specific log limits (Vercel and Netlify are 4kb).\n */\n for (const log of entries) {\n let output = formatter(log);\n\n output = output\n .split('\\n')\n .map(l => ` ${l}`)\n .join('\\n');\n\n // Vercel errors if the output is > 4kb, so we truncate it\n if (process.env.VERCEL) {\n output = truncate(output, 4096);\n }\n\n console.log(output);\n }\n\n console.log(debugLogFooter(name));\n }\n },\n };\n};\n\ntype WithLogger = <L extends Logger, H extends (...args: any[]) => any>(\n loggerFactoryOrName: string | (() => L),\n handlerCtor: (logger: LoggerNoCommit<L>) => H,\n) => H;\n\nexport const withLogger: WithLogger = (loggerFactoryOrName, handlerCtor) => {\n return ((...args: any) => {\n const factory =\n typeof loggerFactoryOrName === 'string'\n ? createDebugLogger(loggerFactoryOrName, logFormatter)\n : loggerFactoryOrName;\n\n const logger = factory();\n const handler = handlerCtor(logger as any);\n\n try {\n const res = handler(...args);\n if (typeof res === 'object' && 'then' in res && typeof res.then === 'function') {\n return res\n .then((val: any) => {\n logger.commit();\n return val;\n })\n .catch((err: any) => {\n logger.commit();\n throw err;\n });\n }\n // handle sync methods\n logger.commit();\n return res;\n } catch (err: any) {\n logger.commit();\n throw err;\n }\n }) as ReturnType<typeof handlerCtor>;\n};\n\nfunction debugLogHeader(name: string) {\n return `[clerk debug start: ${name}]`;\n}\n\nfunction debugLogFooter(name: string) {\n return `[clerk debug end: ${name}] (@clerk/nextjs=${PACKAGE_VERSION},next=${nextPkg.version},timestamp=${Math.round(new Date().getTime() / 1_000)})`;\n}\n\n// ref: https://stackoverflow.com/questions/57769465/javascript-truncate-text-by-bytes-length\nfunction truncate(str: string, maxLength: number) {\n const encoder = new TextEncoder();\n const decoder = new TextDecoder('utf-8');\n\n const encodedString = encoder.encode(str);\n const truncatedString = encodedString.slice(0, maxLength);\n\n // return the truncated string, removing any replacement characters that result from partially truncated characters\n return decoder.decode(truncatedString).replace(/\\uFFFD/g, '');\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,qBAAoB;AAEpB,0BAA6B;AAWtB,MAAM,oBAAoB,CAAC,MAAc,cAAyC,MAAc;AACrG,QAAM,UAAsB,CAAC;AAC7B,MAAI,YAAY;AAEhB,SAAO;AAAA,IACL,QAAQ,MAAM;AACZ,kBAAY;AAAA,IACd;AAAA,IACA,OAAO,IAAI,SAAS;AAClB,UAAI,WAAW;AACb,gBAAQ,KAAK,KAAK,IAAI,SAAQ,OAAO,QAAQ,aAAa,IAAI,IAAI,GAAI,CAAC;AAAA,MACzE;AAAA,IACF;AAAA,IACA,QAAQ,MAAM;AACZ,UAAI,WAAW;AACb,gBAAQ,IAAI,eAAe,IAAI,CAAC;AAMhC,mBAAW,OAAO,SAAS;AACzB,cAAI,SAAS,UAAU,GAAG;AAE1B,mBAAS,OACN,MAAM,IAAI,EACV,IAAI,OAAK,KAAK,CAAC,EAAE,EACjB,KAAK,IAAI;AAGZ,cAAI,QAAQ,IAAI,QAAQ;AACtB,qBAAS,SAAS,QAAQ,IAAI;AAAA,UAChC;AAEA,kBAAQ,IAAI,MAAM;AAAA,QACpB;AAEA,gBAAQ,IAAI,eAAe,IAAI,CAAC;AAAA,MAClC;AAAA,IACF;AAAA,EACF;AACF;AAOO,MAAM,aAAyB,CAAC,qBAAqB,gBAAgB;AAC1E,UAAQ,IAAI,SAAc;AACxB,UAAM,UACJ,OAAO,wBAAwB,WAC3B,kBAAkB,qBAAqB,gCAAY,IACnD;AAEN,UAAM,SAAS,QAAQ;AACvB,UAAM,UAAU,YAAY,MAAa;AAEzC,QAAI;AACF,YAAM,MAAM,QAAQ,GAAG,IAAI;AAC3B,UAAI,OAAO,QAAQ,YAAY,UAAU,OAAO,OAAO,IAAI,SAAS,YAAY;AAC9E,eAAO,IACJ,KAAK,CAAC,QAAa;AAClB,iBAAO,OAAO;AACd,iBAAO;AAAA,QACT,CAAC,EACA,MAAM,CAAC,QAAa;AACnB,iBAAO,OAAO;AACd,gBAAM;AAAA,QACR,CAAC;AAAA,MACL;AAEA,aAAO,OAAO;AACd,aAAO;AAAA,IACT,SAAS,KAAU;AACjB,aAAO,OAAO;AACd,YAAM;AAAA,IACR;AAAA,EACF;AACF;AAEA,SAAS,eAAe,MAAc;AACpC,SAAO,uBAAuB,IAAI;AACpC;AAEA,SAAS,eAAe,MAAc;AACpC,SAAO,qBAAqB,IAAI,oBAAoB,QAAe,SAAS,eAAAA,QAAQ,OAAO,cAAc,KAAK,OAAM,oBAAI,KAAK,GAAE,QAAQ,IAAI,GAAK,CAAC;AACnJ;AAGA,SAAS,SAAS,KAAa,WAAmB;AAChD,QAAM,UAAU,IAAI,YAAY;AAChC,QAAM,UAAU,IAAI,YAAY,OAAO;AAEvC,QAAM,gBAAgB,QAAQ,OAAO,GAAG;AACxC,QAAM,kBAAkB,cAAc,MAAM,GAAG,SAAS;AAGxD,SAAO,QAAQ,OAAO,eAAe,EAAE,QAAQ,WAAW,EAAE;AAC9D;","names":["nextPkg"]}
@@ -29,15 +29,27 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
29
29
  var sdk_versions_exports = {};
30
30
  __export(sdk_versions_exports, {
31
31
  isNext13: () => isNext13,
32
+ isNext16OrHigher: () => isNext16OrHigher,
32
33
  isNextWithUnstableServerActions: () => isNextWithUnstableServerActions
33
34
  });
34
35
  module.exports = __toCommonJS(sdk_versions_exports);
35
36
  var import_package = __toESM(require("next/package.json"));
36
- const isNext13 = import_package.default.version.startsWith("13.");
37
- const isNextWithUnstableServerActions = isNext13 || import_package.default.version.startsWith("14.0");
37
+ var _a, _b, _c, _d, _e, _f;
38
+ function meetsNextMinimumVersion(minimumMajorVersion) {
39
+ var _a2;
40
+ if (!((_a2 = import_package.default) == null ? void 0 : _a2.version)) {
41
+ return false;
42
+ }
43
+ const majorVersion = parseInt(import_package.default.version.split(".")[0], 10);
44
+ return !isNaN(majorVersion) && majorVersion >= minimumMajorVersion;
45
+ }
46
+ const isNext13 = (_c = (_b = (_a = import_package.default) == null ? void 0 : _a.version) == null ? void 0 : _b.startsWith("13.")) != null ? _c : false;
47
+ const isNextWithUnstableServerActions = isNext13 || ((_f = (_e = (_d = import_package.default) == null ? void 0 : _d.version) == null ? void 0 : _e.startsWith("14.0")) != null ? _f : false);
48
+ const isNext16OrHigher = meetsNextMinimumVersion(16);
38
49
  // Annotate the CommonJS export names for ESM import in node:
39
50
  0 && (module.exports = {
40
51
  isNext13,
52
+ isNext16OrHigher,
41
53
  isNextWithUnstableServerActions
42
54
  });
43
55
  //# sourceMappingURL=sdk-versions.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/utils/sdk-versions.ts"],"sourcesContent":["import nextPkg from 'next/package.json';\n\nconst isNext13 = nextPkg.version.startsWith('13.');\n\n/**\n * Those versions are affected by a bundling issue that will break the application if `node:fs` is used inside a server function.\n * The affected versions are >=next@13.5.4 and <=next@14.0.4\n */\nconst isNextWithUnstableServerActions = isNext13 || nextPkg.version.startsWith('14.0');\n\nexport { isNext13, isNextWithUnstableServerActions };\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAAoB;AAEpB,MAAM,WAAW,eAAAA,QAAQ,QAAQ,WAAW,KAAK;AAMjD,MAAM,kCAAkC,YAAY,eAAAA,QAAQ,QAAQ,WAAW,MAAM;","names":["nextPkg"]}
1
+ {"version":3,"sources":["../../../src/utils/sdk-versions.ts"],"sourcesContent":["import nextPkg from 'next/package.json';\n\nfunction meetsNextMinimumVersion(minimumMajorVersion: number) {\n if (!nextPkg?.version) {\n return false;\n }\n\n const majorVersion = parseInt(nextPkg.version.split('.')[0], 10);\n return !isNaN(majorVersion) && majorVersion >= minimumMajorVersion;\n}\n\nconst isNext13 = nextPkg?.version?.startsWith('13.') ?? false;\n\n/**\n * Those versions are affected by a bundling issue that will break the application if `node:fs` is used inside a server function.\n * The affected versions are >=next@13.5.4 and <=next@14.0.4\n */\nconst isNextWithUnstableServerActions = isNext13 || (nextPkg?.version?.startsWith('14.0') ?? false);\n\n/**\n * Next.js 16+ renamed middleware.ts to proxy.ts\n */\nconst isNext16OrHigher = meetsNextMinimumVersion(16);\n\nexport { isNext13, isNextWithUnstableServerActions, isNext16OrHigher };\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAAoB;AAApB;AAEA,SAAS,wBAAwB,qBAA6B;AAF9D,MAAAA;AAGE,MAAI,GAACA,MAAA,eAAAC,YAAA,gBAAAD,IAAS,UAAS;AACrB,WAAO;AAAA,EACT;AAEA,QAAM,eAAe,SAAS,eAAAC,QAAQ,QAAQ,MAAM,GAAG,EAAE,CAAC,GAAG,EAAE;AAC/D,SAAO,CAAC,MAAM,YAAY,KAAK,gBAAgB;AACjD;AAEA,MAAM,YAAW,gCAAAA,YAAA,mBAAS,YAAT,mBAAkB,WAAW,WAA7B,YAAuC;AAMxD,MAAM,kCAAkC,cAAa,gCAAAA,YAAA,mBAAS,YAAT,mBAAkB,WAAW,YAA7B,YAAwC;AAK7F,MAAM,mBAAmB,wBAAwB,EAAE;","names":["_a","nextPkg"]}
@@ -8,7 +8,7 @@ import { getAuthKeyFromRequest, getHeader } from "../../server/headers-utils";
8
8
  import { unauthorized } from "../../server/nextErrors";
9
9
  import { createProtect } from "../../server/protect";
10
10
  import { decryptClerkRequestData } from "../../server/utils";
11
- import { isNextWithUnstableServerActions } from "../../utils/sdk-versions";
11
+ import { isNext16OrHigher, isNextWithUnstableServerActions } from "../../utils/sdk-versions";
12
12
  import { buildRequestLike } from "./utils";
13
13
  const auth = (async (options) => {
14
14
  var _a;
@@ -20,7 +20,8 @@ const auth = (async (options) => {
20
20
  }
21
21
  try {
22
22
  const isSrcAppDir = await import("../../server/fs/middleware-location.js").then((m) => m.hasSrcAppDir());
23
- return [`Your Middleware exists at ./${isSrcAppDir ? "src/" : ""}middleware.(ts|js)`];
23
+ const fileName = isNext16OrHigher ? "middleware.(ts|js) or proxy.(ts|js)" : "middleware.(ts|js)";
24
+ return [`Your Middleware exists at ./${isSrcAppDir ? "src/" : ""}${fileName}`];
24
25
  } catch {
25
26
  return [];
26
27
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/app-router/server/auth.ts"],"sourcesContent":["import type { SessionAuthObject } from '@clerk/backend';\nimport type { AuthOptions, GetAuthFnNoRequest, RedirectFun } from '@clerk/backend/internal';\nimport { constants, createClerkRequest, createRedirect, TokenType } from '@clerk/backend/internal';\nimport { notFound, redirect } from 'next/navigation';\n\nimport { PUBLISHABLE_KEY, SIGN_IN_URL, SIGN_UP_URL } from '../../server/constants';\nimport { createAsyncGetAuth } from '../../server/createGetAuth';\nimport { authAuthHeaderMissing } from '../../server/errors';\nimport { getAuthKeyFromRequest, getHeader } from '../../server/headers-utils';\nimport { unauthorized } from '../../server/nextErrors';\nimport type { AuthProtect } from '../../server/protect';\nimport { createProtect } from '../../server/protect';\nimport { decryptClerkRequestData } from '../../server/utils';\nimport { isNextWithUnstableServerActions } from '../../utils/sdk-versions';\nimport { buildRequestLike } from './utils';\n\n/**\n * `Auth` object of the currently active user and the `redirectToSignIn()` method.\n */\nexport type SessionAuthWithRedirect = SessionAuthObject & {\n /**\n * The `auth()` helper returns the `redirectToSignIn()` method, which you can use to redirect the user to the sign-in page.\n *\n * @param [returnBackUrl] {string | URL} - The URL to redirect the user back to after they sign in.\n *\n * > [!NOTE]\n * > `auth()` on the server-side can only access redirect URLs defined via [environment variables](https://clerk.com/docs/guides/development/clerk-environment-variables#sign-in-and-sign-up-redirects) or [`clerkMiddleware` dynamic keys](https://clerk.com/docs/reference/nextjs/clerk-middleware#dynamic-keys).\n */\n redirectToSignIn: RedirectFun<ReturnType<typeof redirect>>;\n\n /**\n * The `auth()` helper returns the `redirectToSignUp()` method, which you can use to redirect the user to the sign-up page.\n *\n * @param [returnBackUrl] {string | URL} - The URL to redirect the user back to after they sign up.\n *\n * > [!NOTE]\n * > `auth()` on the server-side can only access redirect URLs defined via [environment variables](https://clerk.com/docs/guides/development/clerk-environment-variables#sign-in-and-sign-up-redirects) or [`clerkMiddleware` dynamic keys](https://clerk.com/docs/reference/nextjs/clerk-middleware#dynamic-keys).\n */\n redirectToSignUp: RedirectFun<ReturnType<typeof redirect>>;\n};\n\nexport type AuthFn = GetAuthFnNoRequest<SessionAuthWithRedirect, true> & {\n /**\n * `auth` includes a single property, the `protect()` method, which you can use in two ways:\n * - to check if a user is authenticated (signed in)\n * - to check if a user is authorized (has the correct roles or permissions) to access something, such as a component or a route handler\n *\n * The following table describes how auth.protect() behaves based on user authentication or authorization status:\n *\n * | Authenticated | Authorized | `auth.protect()` will |\n * | - | - | - |\n * | Yes | Yes | Return the [`Auth`](https://clerk.com/docs/reference/backend/types/auth-object) object. |\n * | Yes | No | Return a `404` error. |\n * | No | No | Redirect the user to the sign-in page\\*. |\n *\n * > [!IMPORTANT]\n * > \\*For non-document requests, such as API requests, `auth.protect()` returns a `404` error to users who aren't authenticated.\n *\n * `auth.protect()` can be used to check if a user is authenticated or authorized to access certain parts of your application or even entire routes. See detailed examples in the [dedicated guide](https://clerk.com/docs/organizations/verify-user-permissions).\n */\n protect: AuthProtect;\n};\n\n/**\n * The `auth()` helper returns the [`Auth`](https://clerk.com/docs/reference/backend/types/auth-object) object of the currently active user, as well as the [`redirectToSignIn()`](https://clerk.com/docs/reference/nextjs/app-router/auth#redirect-to-sign-in) method.\n *\n * - Only available for App Router.\n * - Only works on the server-side, such as in Server Components, Route Handlers, and Server Actions.\n * - Requires [`clerkMiddleware()`](https://clerk.com/docs/reference/nextjs/clerk-middleware) to be configured.\n */\nexport const auth: AuthFn = (async (options?: AuthOptions) => {\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n require('server-only');\n\n const request = await buildRequestLike();\n\n const stepsBasedOnSrcDirectory = async () => {\n if (isNextWithUnstableServerActions) {\n return [];\n }\n\n try {\n const isSrcAppDir = await import('../../server/fs/middleware-location.js').then(m => m.hasSrcAppDir());\n return [`Your Middleware exists at ./${isSrcAppDir ? 'src/' : ''}middleware.(ts|js)`];\n } catch {\n return [];\n }\n };\n const authObject = await createAsyncGetAuth({\n debugLoggerName: 'auth()',\n noAuthStatusMessage: authAuthHeaderMissing('auth', await stepsBasedOnSrcDirectory()),\n })(request, {\n treatPendingAsSignedOut: options?.treatPendingAsSignedOut,\n acceptsToken: options?.acceptsToken ?? TokenType.SessionToken,\n });\n\n const clerkUrl = getAuthKeyFromRequest(request, 'ClerkUrl');\n\n const createRedirectForRequest = (...args: Parameters<RedirectFun<never>>) => {\n const { returnBackUrl } = args[0] || {};\n const clerkRequest = createClerkRequest(request);\n const devBrowserToken =\n clerkRequest.clerkUrl.searchParams.get(constants.QueryParameters.DevBrowser) ||\n clerkRequest.cookies.get(constants.Cookies.DevBrowser);\n\n const encryptedRequestData = getHeader(request, constants.Headers.ClerkRequestData);\n const decryptedRequestData = decryptClerkRequestData(encryptedRequestData);\n return [\n createRedirect({\n redirectAdapter: redirect,\n devBrowserToken: devBrowserToken,\n baseUrl: clerkRequest.clerkUrl.toString(),\n publishableKey: decryptedRequestData.publishableKey || PUBLISHABLE_KEY,\n signInUrl: decryptedRequestData.signInUrl || SIGN_IN_URL,\n signUpUrl: decryptedRequestData.signUpUrl || SIGN_UP_URL,\n sessionStatus: authObject.tokenType === TokenType.SessionToken ? authObject.sessionStatus : null,\n }),\n returnBackUrl === null ? '' : returnBackUrl || clerkUrl?.toString(),\n ] as const;\n };\n\n const redirectToSignIn: RedirectFun<never> = (opts = {}) => {\n const [r, returnBackUrl] = createRedirectForRequest(opts);\n return r.redirectToSignIn({\n returnBackUrl,\n });\n };\n\n const redirectToSignUp: RedirectFun<never> = (opts = {}) => {\n const [r, returnBackUrl] = createRedirectForRequest(opts);\n return r.redirectToSignUp({\n returnBackUrl,\n });\n };\n\n if (authObject.tokenType === TokenType.SessionToken) {\n return Object.assign(authObject, { redirectToSignIn, redirectToSignUp });\n }\n\n return authObject;\n}) as AuthFn;\n\nauth.protect = async (...args: any[]) => {\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n require('server-only');\n\n const request = await buildRequestLike();\n const requestedToken = args?.[0]?.token || args?.[1]?.token || TokenType.SessionToken;\n const authObject = await auth({ acceptsToken: requestedToken });\n\n const protect = createProtect({\n request,\n authObject,\n redirectToSignIn: authObject.redirectToSignIn,\n notFound,\n redirect,\n unauthorized,\n });\n\n return protect(...args);\n};\n"],"mappings":";AAEA,SAAS,WAAW,oBAAoB,gBAAgB,iBAAiB;AACzE,SAAS,UAAU,gBAAgB;AAEnC,SAAS,iBAAiB,aAAa,mBAAmB;AAC1D,SAAS,0BAA0B;AACnC,SAAS,6BAA6B;AACtC,SAAS,uBAAuB,iBAAiB;AACjD,SAAS,oBAAoB;AAE7B,SAAS,qBAAqB;AAC9B,SAAS,+BAA+B;AACxC,SAAS,uCAAuC;AAChD,SAAS,wBAAwB;AAwD1B,MAAM,QAAgB,OAAO,YAA0B;AAtE9D;AAwEE,UAAQ,aAAa;AAErB,QAAM,UAAU,MAAM,iBAAiB;AAEvC,QAAM,2BAA2B,YAAY;AAC3C,QAAI,iCAAiC;AACnC,aAAO,CAAC;AAAA,IACV;AAEA,QAAI;AACF,YAAM,cAAc,MAAM,OAAO,wCAAwC,EAAE,KAAK,OAAK,EAAE,aAAa,CAAC;AACrG,aAAO,CAAC,+BAA+B,cAAc,SAAS,EAAE,oBAAoB;AAAA,IACtF,QAAQ;AACN,aAAO,CAAC;AAAA,IACV;AAAA,EACF;AACA,QAAM,aAAa,MAAM,mBAAmB;AAAA,IAC1C,iBAAiB;AAAA,IACjB,qBAAqB,sBAAsB,QAAQ,MAAM,yBAAyB,CAAC;AAAA,EACrF,CAAC,EAAE,SAAS;AAAA,IACV,yBAAyB,mCAAS;AAAA,IAClC,eAAc,wCAAS,iBAAT,YAAyB,UAAU;AAAA,EACnD,CAAC;AAED,QAAM,WAAW,sBAAsB,SAAS,UAAU;AAE1D,QAAM,2BAA2B,IAAI,SAAyC;AAC5E,UAAM,EAAE,cAAc,IAAI,KAAK,CAAC,KAAK,CAAC;AACtC,UAAM,eAAe,mBAAmB,OAAO;AAC/C,UAAM,kBACJ,aAAa,SAAS,aAAa,IAAI,UAAU,gBAAgB,UAAU,KAC3E,aAAa,QAAQ,IAAI,UAAU,QAAQ,UAAU;AAEvD,UAAM,uBAAuB,UAAU,SAAS,UAAU,QAAQ,gBAAgB;AAClF,UAAM,uBAAuB,wBAAwB,oBAAoB;AACzE,WAAO;AAAA,MACL,eAAe;AAAA,QACb,iBAAiB;AAAA,QACjB;AAAA,QACA,SAAS,aAAa,SAAS,SAAS;AAAA,QACxC,gBAAgB,qBAAqB,kBAAkB;AAAA,QACvD,WAAW,qBAAqB,aAAa;AAAA,QAC7C,WAAW,qBAAqB,aAAa;AAAA,QAC7C,eAAe,WAAW,cAAc,UAAU,eAAe,WAAW,gBAAgB;AAAA,MAC9F,CAAC;AAAA,MACD,kBAAkB,OAAO,KAAK,kBAAiB,qCAAU;AAAA,IAC3D;AAAA,EACF;AAEA,QAAM,mBAAuC,CAAC,OAAO,CAAC,MAAM;AAC1D,UAAM,CAAC,GAAG,aAAa,IAAI,yBAAyB,IAAI;AACxD,WAAO,EAAE,iBAAiB;AAAA,MACxB;AAAA,IACF,CAAC;AAAA,EACH;AAEA,QAAM,mBAAuC,CAAC,OAAO,CAAC,MAAM;AAC1D,UAAM,CAAC,GAAG,aAAa,IAAI,yBAAyB,IAAI;AACxD,WAAO,EAAE,iBAAiB;AAAA,MACxB;AAAA,IACF,CAAC;AAAA,EACH;AAEA,MAAI,WAAW,cAAc,UAAU,cAAc;AACnD,WAAO,OAAO,OAAO,YAAY,EAAE,kBAAkB,iBAAiB,CAAC;AAAA,EACzE;AAEA,SAAO;AACT;AAEA,KAAK,UAAU,UAAU,SAAgB;AA9IzC;AAgJE,UAAQ,aAAa;AAErB,QAAM,UAAU,MAAM,iBAAiB;AACvC,QAAM,mBAAiB,kCAAO,OAAP,mBAAW,YAAS,kCAAO,OAAP,mBAAW,UAAS,UAAU;AACzE,QAAM,aAAa,MAAM,KAAK,EAAE,cAAc,eAAe,CAAC;AAE9D,QAAM,UAAU,cAAc;AAAA,IAC5B;AAAA,IACA;AAAA,IACA,kBAAkB,WAAW;AAAA,IAC7B;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAED,SAAO,QAAQ,GAAG,IAAI;AACxB;","names":[]}
1
+ {"version":3,"sources":["../../../../src/app-router/server/auth.ts"],"sourcesContent":["import type { SessionAuthObject } from '@clerk/backend';\nimport type { AuthOptions, GetAuthFnNoRequest, RedirectFun } from '@clerk/backend/internal';\nimport { constants, createClerkRequest, createRedirect, TokenType } from '@clerk/backend/internal';\nimport { notFound, redirect } from 'next/navigation';\n\nimport { PUBLISHABLE_KEY, SIGN_IN_URL, SIGN_UP_URL } from '../../server/constants';\nimport { createAsyncGetAuth } from '../../server/createGetAuth';\nimport { authAuthHeaderMissing } from '../../server/errors';\nimport { getAuthKeyFromRequest, getHeader } from '../../server/headers-utils';\nimport { unauthorized } from '../../server/nextErrors';\nimport type { AuthProtect } from '../../server/protect';\nimport { createProtect } from '../../server/protect';\nimport { decryptClerkRequestData } from '../../server/utils';\nimport { isNext16OrHigher, isNextWithUnstableServerActions } from '../../utils/sdk-versions';\nimport { buildRequestLike } from './utils';\n\n/**\n * `Auth` object of the currently active user and the `redirectToSignIn()` method.\n */\nexport type SessionAuthWithRedirect = SessionAuthObject & {\n /**\n * The `auth()` helper returns the `redirectToSignIn()` method, which you can use to redirect the user to the sign-in page.\n *\n * @param [returnBackUrl] {string | URL} - The URL to redirect the user back to after they sign in.\n *\n * > [!NOTE]\n * > `auth()` on the server-side can only access redirect URLs defined via [environment variables](https://clerk.com/docs/guides/development/clerk-environment-variables#sign-in-and-sign-up-redirects) or [`clerkMiddleware` dynamic keys](https://clerk.com/docs/reference/nextjs/clerk-middleware#dynamic-keys).\n */\n redirectToSignIn: RedirectFun<ReturnType<typeof redirect>>;\n\n /**\n * The `auth()` helper returns the `redirectToSignUp()` method, which you can use to redirect the user to the sign-up page.\n *\n * @param [returnBackUrl] {string | URL} - The URL to redirect the user back to after they sign up.\n *\n * > [!NOTE]\n * > `auth()` on the server-side can only access redirect URLs defined via [environment variables](https://clerk.com/docs/guides/development/clerk-environment-variables#sign-in-and-sign-up-redirects) or [`clerkMiddleware` dynamic keys](https://clerk.com/docs/reference/nextjs/clerk-middleware#dynamic-keys).\n */\n redirectToSignUp: RedirectFun<ReturnType<typeof redirect>>;\n};\n\nexport type AuthFn = GetAuthFnNoRequest<SessionAuthWithRedirect, true> & {\n /**\n * `auth` includes a single property, the `protect()` method, which you can use in two ways:\n * - to check if a user is authenticated (signed in)\n * - to check if a user is authorized (has the correct roles or permissions) to access something, such as a component or a route handler\n *\n * The following table describes how auth.protect() behaves based on user authentication or authorization status:\n *\n * | Authenticated | Authorized | `auth.protect()` will |\n * | - | - | - |\n * | Yes | Yes | Return the [`Auth`](https://clerk.com/docs/reference/backend/types/auth-object) object. |\n * | Yes | No | Return a `404` error. |\n * | No | No | Redirect the user to the sign-in page\\*. |\n *\n * > [!IMPORTANT]\n * > \\*For non-document requests, such as API requests, `auth.protect()` returns a `404` error to users who aren't authenticated.\n *\n * `auth.protect()` can be used to check if a user is authenticated or authorized to access certain parts of your application or even entire routes. See detailed examples in the [dedicated guide](https://clerk.com/docs/organizations/verify-user-permissions).\n */\n protect: AuthProtect;\n};\n\n/**\n * The `auth()` helper returns the [`Auth`](https://clerk.com/docs/reference/backend/types/auth-object) object of the currently active user, as well as the [`redirectToSignIn()`](https://clerk.com/docs/reference/nextjs/app-router/auth#redirect-to-sign-in) method.\n *\n * - Only available for App Router.\n * - Only works on the server-side, such as in Server Components, Route Handlers, and Server Actions.\n * - Requires [`clerkMiddleware()`](https://clerk.com/docs/reference/nextjs/clerk-middleware) to be configured.\n */\nexport const auth: AuthFn = (async (options?: AuthOptions) => {\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n require('server-only');\n\n const request = await buildRequestLike();\n\n const stepsBasedOnSrcDirectory = async () => {\n if (isNextWithUnstableServerActions) {\n return [];\n }\n\n try {\n const isSrcAppDir = await import('../../server/fs/middleware-location.js').then(m => m.hasSrcAppDir());\n const fileName = isNext16OrHigher ? 'middleware.(ts|js) or proxy.(ts|js)' : 'middleware.(ts|js)';\n return [`Your Middleware exists at ./${isSrcAppDir ? 'src/' : ''}${fileName}`];\n } catch {\n return [];\n }\n };\n const authObject = await createAsyncGetAuth({\n debugLoggerName: 'auth()',\n noAuthStatusMessage: authAuthHeaderMissing('auth', await stepsBasedOnSrcDirectory()),\n })(request, {\n treatPendingAsSignedOut: options?.treatPendingAsSignedOut,\n acceptsToken: options?.acceptsToken ?? TokenType.SessionToken,\n });\n\n const clerkUrl = getAuthKeyFromRequest(request, 'ClerkUrl');\n\n const createRedirectForRequest = (...args: Parameters<RedirectFun<never>>) => {\n const { returnBackUrl } = args[0] || {};\n const clerkRequest = createClerkRequest(request);\n const devBrowserToken =\n clerkRequest.clerkUrl.searchParams.get(constants.QueryParameters.DevBrowser) ||\n clerkRequest.cookies.get(constants.Cookies.DevBrowser);\n\n const encryptedRequestData = getHeader(request, constants.Headers.ClerkRequestData);\n const decryptedRequestData = decryptClerkRequestData(encryptedRequestData);\n return [\n createRedirect({\n redirectAdapter: redirect,\n devBrowserToken: devBrowserToken,\n baseUrl: clerkRequest.clerkUrl.toString(),\n publishableKey: decryptedRequestData.publishableKey || PUBLISHABLE_KEY,\n signInUrl: decryptedRequestData.signInUrl || SIGN_IN_URL,\n signUpUrl: decryptedRequestData.signUpUrl || SIGN_UP_URL,\n sessionStatus: authObject.tokenType === TokenType.SessionToken ? authObject.sessionStatus : null,\n }),\n returnBackUrl === null ? '' : returnBackUrl || clerkUrl?.toString(),\n ] as const;\n };\n\n const redirectToSignIn: RedirectFun<never> = (opts = {}) => {\n const [r, returnBackUrl] = createRedirectForRequest(opts);\n return r.redirectToSignIn({\n returnBackUrl,\n });\n };\n\n const redirectToSignUp: RedirectFun<never> = (opts = {}) => {\n const [r, returnBackUrl] = createRedirectForRequest(opts);\n return r.redirectToSignUp({\n returnBackUrl,\n });\n };\n\n if (authObject.tokenType === TokenType.SessionToken) {\n return Object.assign(authObject, { redirectToSignIn, redirectToSignUp });\n }\n\n return authObject;\n}) as AuthFn;\n\nauth.protect = async (...args: any[]) => {\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n require('server-only');\n\n const request = await buildRequestLike();\n const requestedToken = args?.[0]?.token || args?.[1]?.token || TokenType.SessionToken;\n const authObject = await auth({ acceptsToken: requestedToken });\n\n const protect = createProtect({\n request,\n authObject,\n redirectToSignIn: authObject.redirectToSignIn,\n notFound,\n redirect,\n unauthorized,\n });\n\n return protect(...args);\n};\n"],"mappings":"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","names":[]}
@@ -4,6 +4,7 @@ import {
4
4
  useClerk,
5
5
  useEmailLink,
6
6
  useOrganization,
7
+ useOrganizationCreationDefaults,
7
8
  useOrganizationList,
8
9
  useSession,
9
10
  useSessionList,
@@ -36,6 +37,7 @@ export {
36
37
  useClerk,
37
38
  useEmailLink,
38
39
  useOrganization,
40
+ useOrganizationCreationDefaults,
39
41
  useOrganizationList,
40
42
  useReverification,
41
43
  useSession,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/client-boundary/hooks.ts"],"sourcesContent":["'use client';\n\nexport {\n useClerk,\n useEmailLink,\n useOrganization,\n useOrganizationList,\n useSession,\n useSessionList,\n useSignIn,\n useSignUp,\n useUser,\n useReverification,\n} from '@clerk/clerk-react';\n\nexport {\n isClerkAPIResponseError,\n isClerkRuntimeError,\n isEmailLinkError,\n isKnownError,\n isMetamaskError,\n isReverificationCancelledError,\n EmailLinkErrorCode,\n EmailLinkErrorCodeStatus,\n} from '@clerk/clerk-react/errors';\n\nexport { usePromisifiedAuth as useAuth } from './PromisifiedAuthProvider';\n"],"mappings":";;AAEA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP,SAA+B,0BAAe;","names":[]}
1
+ {"version":3,"sources":["../../../src/client-boundary/hooks.ts"],"sourcesContent":["'use client';\n\nexport {\n useClerk,\n useEmailLink,\n useOrganization,\n useOrganizationCreationDefaults,\n useOrganizationList,\n useSession,\n useSessionList,\n useSignIn,\n useSignUp,\n useUser,\n useReverification,\n} from '@clerk/clerk-react';\nexport type { UseOrganizationCreationDefaultsParams, UseOrganizationCreationDefaultsReturn } from '@clerk/clerk-react';\n\nexport {\n isClerkAPIResponseError,\n isClerkRuntimeError,\n isEmailLinkError,\n isKnownError,\n isMetamaskError,\n isReverificationCancelledError,\n EmailLinkErrorCode,\n EmailLinkErrorCodeStatus,\n} from '@clerk/clerk-react/errors';\n\nexport { usePromisifiedAuth as useAuth } from './PromisifiedAuthProvider';\n"],"mappings":";;AAEA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAGP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP,SAA+B,0BAAe;","names":[]}
package/dist/esm/index.js CHANGED
@@ -38,6 +38,7 @@ import {
38
38
  useClerk,
39
39
  useEmailLink,
40
40
  useOrganization,
41
+ useOrganizationCreationDefaults,
41
42
  useOrganizationList,
42
43
  useReverification,
43
44
  useSession,
@@ -90,6 +91,7 @@ export {
90
91
  useClerk,
91
92
  useEmailLink,
92
93
  useOrganization,
94
+ useOrganizationCreationDefaults,
93
95
  useOrganizationList,
94
96
  useReverification,
95
97
  useSession,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts"],"sourcesContent":["/**\n * These need to be explicitly listed. Do not use an * here.\n * If you do, app router will break.\n */\nexport {\n AuthenticateWithRedirectCallback,\n ClerkDegraded,\n ClerkFailed,\n ClerkLoaded,\n ClerkLoading,\n RedirectToCreateOrganization,\n RedirectToOrganizationProfile,\n RedirectToSignIn,\n RedirectToSignUp,\n RedirectToTasks,\n RedirectToUserProfile,\n} from './client-boundary/controlComponents';\n\n/**\n * These need to be explicitly listed. Do not use an * here.\n * If you do, app router will break.\n */\nexport {\n APIKeys,\n CreateOrganization,\n GoogleOneTap,\n OrganizationList,\n OrganizationProfile,\n OrganizationSwitcher,\n PricingTable,\n SignIn,\n SignInButton,\n SignInWithMetamaskButton,\n SignOutButton,\n SignUp,\n SignUpButton,\n TaskChooseOrganization,\n TaskResetPassword,\n UserAvatar,\n UserButton,\n UserProfile,\n Waitlist,\n} from './client-boundary/uiComponents';\n\n/**\n * These need to be explicitly listed. Do not use an * here.\n * If you do, app router will break.\n */\nexport {\n useAuth,\n useClerk,\n useEmailLink,\n useOrganization,\n useOrganizationList,\n useReverification,\n useSession,\n useSessionList,\n useSignIn,\n useSignUp,\n useUser,\n} from './client-boundary/hooks';\n\n/**\n * Conditionally export components that exhibit different behavior\n * when used in /app vs /pages.\n * We defined the runtime and the type values explicitly,\n * because TS will not recognize the subpath import unless the HOST\n * application sets moduleResolution to 'NodeNext'.\n */\n// @ts-ignore\nimport * as ComponentsModule from '#components';\n\nimport type { ServerComponentsServerModuleTypes } from './components.server';\n\nexport const ClerkProvider = ComponentsModule.ClerkProvider as ServerComponentsServerModuleTypes['ClerkProvider'];\nexport const SignedIn = ComponentsModule.SignedIn as ServerComponentsServerModuleTypes['SignedIn'];\nexport const SignedOut = ComponentsModule.SignedOut as ServerComponentsServerModuleTypes['SignedOut'];\nexport const Protect = ComponentsModule.Protect as ServerComponentsServerModuleTypes['Protect'];\n"],"mappings":";AAIA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAMP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAMP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAUP,YAAY,sBAAsB;AAI3B,MAAM,gBAAgB,iBAAiB;AACvC,MAAM,WAAW,iBAAiB;AAClC,MAAM,YAAY,iBAAiB;AACnC,MAAM,UAAU,iBAAiB;","names":[]}
1
+ {"version":3,"sources":["../../src/index.ts"],"sourcesContent":["/**\n * These need to be explicitly listed. Do not use an * here.\n * If you do, app router will break.\n */\nexport {\n AuthenticateWithRedirectCallback,\n ClerkDegraded,\n ClerkFailed,\n ClerkLoaded,\n ClerkLoading,\n RedirectToCreateOrganization,\n RedirectToOrganizationProfile,\n RedirectToSignIn,\n RedirectToSignUp,\n RedirectToTasks,\n RedirectToUserProfile,\n} from './client-boundary/controlComponents';\n\n/**\n * These need to be explicitly listed. Do not use an * here.\n * If you do, app router will break.\n */\nexport {\n APIKeys,\n CreateOrganization,\n GoogleOneTap,\n OrganizationList,\n OrganizationProfile,\n OrganizationSwitcher,\n PricingTable,\n SignIn,\n SignInButton,\n SignInWithMetamaskButton,\n SignOutButton,\n SignUp,\n SignUpButton,\n TaskChooseOrganization,\n TaskResetPassword,\n UserAvatar,\n UserButton,\n UserProfile,\n Waitlist,\n} from './client-boundary/uiComponents';\n\n/**\n * These need to be explicitly listed. Do not use an * here.\n * If you do, app router will break.\n */\nexport {\n useAuth,\n useClerk,\n useEmailLink,\n useOrganization,\n useOrganizationCreationDefaults,\n useOrganizationList,\n useReverification,\n useSession,\n useSessionList,\n useSignIn,\n useSignUp,\n useUser,\n} from './client-boundary/hooks';\nexport type {\n UseOrganizationCreationDefaultsParams,\n UseOrganizationCreationDefaultsReturn,\n} from './client-boundary/hooks';\n\n/**\n * Conditionally export components that exhibit different behavior\n * when used in /app vs /pages.\n * We defined the runtime and the type values explicitly,\n * because TS will not recognize the subpath import unless the HOST\n * application sets moduleResolution to 'NodeNext'.\n */\n// @ts-ignore\nimport * as ComponentsModule from '#components';\n\nimport type { ServerComponentsServerModuleTypes } from './components.server';\n\nexport const ClerkProvider = ComponentsModule.ClerkProvider as ServerComponentsServerModuleTypes['ClerkProvider'];\nexport const SignedIn = ComponentsModule.SignedIn as ServerComponentsServerModuleTypes['SignedIn'];\nexport const SignedOut = ComponentsModule.SignedOut as ServerComponentsServerModuleTypes['SignedOut'];\nexport const Protect = ComponentsModule.Protect as ServerComponentsServerModuleTypes['Protect'];\n"],"mappings":";AAIA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAMP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAMP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAcP,YAAY,sBAAsB;AAI3B,MAAM,gBAAgB,iBAAiB;AACvC,MAAM,WAAW,iBAAiB;AAClC,MAAM,YAAY,iBAAiB;AACnC,MAAM,UAAU,iBAAiB;","names":[]}
@@ -16,7 +16,7 @@ const SIGN_IN_URL = process.env.NEXT_PUBLIC_CLERK_SIGN_IN_URL || "";
16
16
  const SIGN_UP_URL = process.env.NEXT_PUBLIC_CLERK_SIGN_UP_URL || "";
17
17
  const SDK_METADATA = {
18
18
  name: "@clerk/nextjs",
19
- version: "6.36.10",
19
+ version: "6.37.0",
20
20
  environment: process.env.NODE_ENV
21
21
  };
22
22
  const TELEMETRY_DISABLED = isTruthy(process.env.NEXT_PUBLIC_CLERK_TELEMETRY_DISABLED);
@@ -18,7 +18,7 @@ const clerkClientDefaultOptions = {
18
18
  publishableKey: PUBLISHABLE_KEY,
19
19
  apiUrl: API_URL,
20
20
  apiVersion: API_VERSION,
21
- userAgent: `${"@clerk/nextjs"}@${"6.36.10"}`,
21
+ userAgent: `${"@clerk/nextjs"}@${"6.37.0"}`,
22
22
  proxyUrl: PROXY_URL,
23
23
  domain: DOMAIN,
24
24
  isSatellite: IS_SATELLITE,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/server/createClerkClient.ts"],"sourcesContent":["import { createClerkClient } from '@clerk/backend';\n\nimport {\n API_URL,\n API_VERSION,\n DOMAIN,\n IS_SATELLITE,\n MACHINE_SECRET_KEY,\n PROXY_URL,\n PUBLISHABLE_KEY,\n SDK_METADATA,\n SECRET_KEY,\n TELEMETRY_DEBUG,\n TELEMETRY_DISABLED,\n} from './constants';\n\nconst clerkClientDefaultOptions = {\n secretKey: SECRET_KEY,\n publishableKey: PUBLISHABLE_KEY,\n apiUrl: API_URL,\n apiVersion: API_VERSION,\n userAgent: `${PACKAGE_NAME}@${PACKAGE_VERSION}`,\n proxyUrl: PROXY_URL,\n domain: DOMAIN,\n isSatellite: IS_SATELLITE,\n machineSecretKey: MACHINE_SECRET_KEY,\n sdkMetadata: SDK_METADATA,\n telemetry: {\n disabled: TELEMETRY_DISABLED,\n debug: TELEMETRY_DEBUG,\n },\n};\n\nexport const createClerkClientWithOptions: typeof createClerkClient = options =>\n createClerkClient({ ...clerkClientDefaultOptions, ...options });\n"],"mappings":";AAAA,SAAS,yBAAyB;AAElC;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP,MAAM,4BAA4B;AAAA,EAChC,WAAW;AAAA,EACX,gBAAgB;AAAA,EAChB,QAAQ;AAAA,EACR,YAAY;AAAA,EACZ,WAAW,GAAG,eAAY,IAAI,SAAe;AAAA,EAC7C,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,kBAAkB;AAAA,EAClB,aAAa;AAAA,EACb,WAAW;AAAA,IACT,UAAU;AAAA,IACV,OAAO;AAAA,EACT;AACF;AAEO,MAAM,+BAAyD,aACpE,kBAAkB,EAAE,GAAG,2BAA2B,GAAG,QAAQ,CAAC;","names":[]}
1
+ {"version":3,"sources":["../../../src/server/createClerkClient.ts"],"sourcesContent":["import { createClerkClient } from '@clerk/backend';\n\nimport {\n API_URL,\n API_VERSION,\n DOMAIN,\n IS_SATELLITE,\n MACHINE_SECRET_KEY,\n PROXY_URL,\n PUBLISHABLE_KEY,\n SDK_METADATA,\n SECRET_KEY,\n TELEMETRY_DEBUG,\n TELEMETRY_DISABLED,\n} from './constants';\n\nconst clerkClientDefaultOptions = {\n secretKey: SECRET_KEY,\n publishableKey: PUBLISHABLE_KEY,\n apiUrl: API_URL,\n apiVersion: API_VERSION,\n userAgent: `${PACKAGE_NAME}@${PACKAGE_VERSION}`,\n proxyUrl: PROXY_URL,\n domain: DOMAIN,\n isSatellite: IS_SATELLITE,\n machineSecretKey: MACHINE_SECRET_KEY,\n sdkMetadata: SDK_METADATA,\n telemetry: {\n disabled: TELEMETRY_DISABLED,\n debug: TELEMETRY_DEBUG,\n },\n};\n\nexport const createClerkClientWithOptions: typeof createClerkClient = options =>\n createClerkClient({ ...clerkClientDefaultOptions, ...options });\n"],"mappings":";AAAA,SAAS,yBAAyB;AAElC;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP,MAAM,4BAA4B;AAAA,EAChC,WAAW;AAAA,EACX,gBAAgB;AAAA,EAChB,QAAQ;AAAA,EACR,YAAY;AAAA,EACZ,WAAW,GAAG,eAAY,IAAI,QAAe;AAAA,EAC7C,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,kBAAkB;AAAA,EAClB,aAAa;AAAA,EACb,WAAW;AAAA,IACT,UAAU;AAAA,IACV,OAAO;AAAA,EACT;AACF;AAEO,MAAM,+BAAyD,aACpE,kBAAkB,EAAE,GAAG,2BAA2B,GAAG,QAAQ,CAAC;","names":[]}
@@ -1,4 +1,5 @@
1
1
  import "../../chunk-BUSYA2B4.js";
2
+ import { isNext16OrHigher } from "../../utils/sdk-versions";
2
3
  import { nodeCwdOrThrow, nodeFsOrThrow, nodePathOrThrow } from "./utils";
3
4
  function hasSrcAppDir() {
4
5
  const { existsSync } = nodeFsOrThrow();
@@ -9,16 +10,20 @@ function hasSrcAppDir() {
9
10
  }
10
11
  function suggestMiddlewareLocation() {
11
12
  const fileExtensions = ["ts", "js"];
12
- const suggestionMessage = (extension, to, from) => `Clerk: clerkMiddleware() was not run, your middleware file might be misplaced. Move your middleware file to ./${to}middleware.${extension}. Currently located at ./${from}middleware.${extension}`;
13
+ const fileNames = isNext16OrHigher ? ["middleware", "proxy"] : ["middleware"];
14
+ const fileNameDisplay = isNext16OrHigher ? "middleware or proxy" : "middleware";
15
+ const suggestionMessage = (fileName, extension, to, from) => `Clerk: clerkMiddleware() was not run, your ${fileNameDisplay} file might be misplaced. Move your ${fileNameDisplay} file to ./${to}${fileName}.${extension}. Currently located at ./${from}${fileName}.${extension}`;
13
16
  const { existsSync } = nodeFsOrThrow();
14
17
  const path = nodePathOrThrow();
15
18
  const cwd = nodeCwdOrThrow();
16
19
  const projectWithAppSrcPath = path.join(cwd(), "src", "app");
17
20
  const projectWithAppPath = path.join(cwd(), "app");
18
21
  const checkMiddlewareLocation = (basePath, to, from) => {
19
- for (const fileExtension of fileExtensions) {
20
- if (existsSync(path.join(basePath, `middleware.${fileExtension}`))) {
21
- return suggestionMessage(fileExtension, to, from);
22
+ for (const fileName of fileNames) {
23
+ for (const fileExtension of fileExtensions) {
24
+ if (existsSync(path.join(basePath, `${fileName}.${fileExtension}`))) {
25
+ return suggestionMessage(fileName, fileExtension, to, from);
26
+ }
22
27
  }
23
28
  }
24
29
  return void 0;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/server/fs/middleware-location.ts"],"sourcesContent":["import { nodeCwdOrThrow, nodeFsOrThrow, nodePathOrThrow } from './utils';\n\nfunction hasSrcAppDir() {\n const { existsSync } = nodeFsOrThrow();\n const path = nodePathOrThrow();\n const cwd = nodeCwdOrThrow();\n\n const projectWithAppSrc = path.join(cwd(), 'src', 'app');\n\n return !!existsSync(projectWithAppSrc);\n}\n\nfunction suggestMiddlewareLocation() {\n const fileExtensions = ['ts', 'js'] as const;\n const suggestionMessage = (\n extension: (typeof fileExtensions)[number],\n to: 'src/' | '',\n from: 'src/app/' | 'app/' | '',\n ) =>\n `Clerk: clerkMiddleware() was not run, your middleware file might be misplaced. Move your middleware file to ./${to}middleware.${extension}. Currently located at ./${from}middleware.${extension}`;\n\n const { existsSync } = nodeFsOrThrow();\n const path = nodePathOrThrow();\n const cwd = nodeCwdOrThrow();\n\n const projectWithAppSrcPath = path.join(cwd(), 'src', 'app');\n const projectWithAppPath = path.join(cwd(), 'app');\n\n const checkMiddlewareLocation = (\n basePath: string,\n to: 'src/' | '',\n from: 'src/app/' | 'app/' | '',\n ): string | undefined => {\n for (const fileExtension of fileExtensions) {\n if (existsSync(path.join(basePath, `middleware.${fileExtension}`))) {\n return suggestionMessage(fileExtension, to, from);\n }\n }\n return undefined;\n };\n\n if (existsSync(projectWithAppSrcPath)) {\n return (\n checkMiddlewareLocation(projectWithAppSrcPath, 'src/', 'src/app/') || checkMiddlewareLocation(cwd(), 'src/', '')\n );\n }\n\n if (existsSync(projectWithAppPath)) {\n return checkMiddlewareLocation(projectWithAppPath, '', 'app/');\n }\n\n return undefined;\n}\n\nexport { suggestMiddlewareLocation, hasSrcAppDir };\n"],"mappings":";AAAA,SAAS,gBAAgB,eAAe,uBAAuB;AAE/D,SAAS,eAAe;AACtB,QAAM,EAAE,WAAW,IAAI,cAAc;AACrC,QAAM,OAAO,gBAAgB;AAC7B,QAAM,MAAM,eAAe;AAE3B,QAAM,oBAAoB,KAAK,KAAK,IAAI,GAAG,OAAO,KAAK;AAEvD,SAAO,CAAC,CAAC,WAAW,iBAAiB;AACvC;AAEA,SAAS,4BAA4B;AACnC,QAAM,iBAAiB,CAAC,MAAM,IAAI;AAClC,QAAM,oBAAoB,CACxB,WACA,IACA,SAEA,iHAAiH,EAAE,cAAc,SAAS,4BAA4B,IAAI,cAAc,SAAS;AAEnM,QAAM,EAAE,WAAW,IAAI,cAAc;AACrC,QAAM,OAAO,gBAAgB;AAC7B,QAAM,MAAM,eAAe;AAE3B,QAAM,wBAAwB,KAAK,KAAK,IAAI,GAAG,OAAO,KAAK;AAC3D,QAAM,qBAAqB,KAAK,KAAK,IAAI,GAAG,KAAK;AAEjD,QAAM,0BAA0B,CAC9B,UACA,IACA,SACuB;AACvB,eAAW,iBAAiB,gBAAgB;AAC1C,UAAI,WAAW,KAAK,KAAK,UAAU,cAAc,aAAa,EAAE,CAAC,GAAG;AAClE,eAAO,kBAAkB,eAAe,IAAI,IAAI;AAAA,MAClD;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAEA,MAAI,WAAW,qBAAqB,GAAG;AACrC,WACE,wBAAwB,uBAAuB,QAAQ,UAAU,KAAK,wBAAwB,IAAI,GAAG,QAAQ,EAAE;AAAA,EAEnH;AAEA,MAAI,WAAW,kBAAkB,GAAG;AAClC,WAAO,wBAAwB,oBAAoB,IAAI,MAAM;AAAA,EAC/D;AAEA,SAAO;AACT;","names":[]}
1
+ {"version":3,"sources":["../../../../src/server/fs/middleware-location.ts"],"sourcesContent":["import { isNext16OrHigher } from '../../utils/sdk-versions';\nimport { nodeCwdOrThrow, nodeFsOrThrow, nodePathOrThrow } from './utils';\n\nfunction hasSrcAppDir() {\n const { existsSync } = nodeFsOrThrow();\n const path = nodePathOrThrow();\n const cwd = nodeCwdOrThrow();\n\n const projectWithAppSrc = path.join(cwd(), 'src', 'app');\n\n return !!existsSync(projectWithAppSrc);\n}\n\nfunction suggestMiddlewareLocation() {\n const fileExtensions = ['ts', 'js'] as const;\n // Next.js 16+ supports both middleware.ts (Edge runtime) and proxy.ts (Node.js runtime)\n const fileNames = isNext16OrHigher ? ['middleware', 'proxy'] : ['middleware'];\n const fileNameDisplay = isNext16OrHigher ? 'middleware or proxy' : 'middleware';\n\n const suggestionMessage = (\n fileName: string,\n extension: (typeof fileExtensions)[number],\n to: 'src/' | '',\n from: 'src/app/' | 'app/' | '',\n ) =>\n `Clerk: clerkMiddleware() was not run, your ${fileNameDisplay} file might be misplaced. Move your ${fileNameDisplay} file to ./${to}${fileName}.${extension}. Currently located at ./${from}${fileName}.${extension}`;\n\n const { existsSync } = nodeFsOrThrow();\n const path = nodePathOrThrow();\n const cwd = nodeCwdOrThrow();\n\n const projectWithAppSrcPath = path.join(cwd(), 'src', 'app');\n const projectWithAppPath = path.join(cwd(), 'app');\n\n const checkMiddlewareLocation = (\n basePath: string,\n to: 'src/' | '',\n from: 'src/app/' | 'app/' | '',\n ): string | undefined => {\n for (const fileName of fileNames) {\n for (const fileExtension of fileExtensions) {\n if (existsSync(path.join(basePath, `${fileName}.${fileExtension}`))) {\n return suggestionMessage(fileName, fileExtension, to, from);\n }\n }\n }\n return undefined;\n };\n\n if (existsSync(projectWithAppSrcPath)) {\n return (\n checkMiddlewareLocation(projectWithAppSrcPath, 'src/', 'src/app/') || checkMiddlewareLocation(cwd(), 'src/', '')\n );\n }\n\n if (existsSync(projectWithAppPath)) {\n return checkMiddlewareLocation(projectWithAppPath, '', 'app/');\n }\n\n return undefined;\n}\n\nexport { suggestMiddlewareLocation, hasSrcAppDir };\n"],"mappings":";AAAA,SAAS,wBAAwB;AACjC,SAAS,gBAAgB,eAAe,uBAAuB;AAE/D,SAAS,eAAe;AACtB,QAAM,EAAE,WAAW,IAAI,cAAc;AACrC,QAAM,OAAO,gBAAgB;AAC7B,QAAM,MAAM,eAAe;AAE3B,QAAM,oBAAoB,KAAK,KAAK,IAAI,GAAG,OAAO,KAAK;AAEvD,SAAO,CAAC,CAAC,WAAW,iBAAiB;AACvC;AAEA,SAAS,4BAA4B;AACnC,QAAM,iBAAiB,CAAC,MAAM,IAAI;AAElC,QAAM,YAAY,mBAAmB,CAAC,cAAc,OAAO,IAAI,CAAC,YAAY;AAC5E,QAAM,kBAAkB,mBAAmB,wBAAwB;AAEnE,QAAM,oBAAoB,CACxB,UACA,WACA,IACA,SAEA,8CAA8C,eAAe,uCAAuC,eAAe,cAAc,EAAE,GAAG,QAAQ,IAAI,SAAS,4BAA4B,IAAI,GAAG,QAAQ,IAAI,SAAS;AAErN,QAAM,EAAE,WAAW,IAAI,cAAc;AACrC,QAAM,OAAO,gBAAgB;AAC7B,QAAM,MAAM,eAAe;AAE3B,QAAM,wBAAwB,KAAK,KAAK,IAAI,GAAG,OAAO,KAAK;AAC3D,QAAM,qBAAqB,KAAK,KAAK,IAAI,GAAG,KAAK;AAEjD,QAAM,0BAA0B,CAC9B,UACA,IACA,SACuB;AACvB,eAAW,YAAY,WAAW;AAChC,iBAAW,iBAAiB,gBAAgB;AAC1C,YAAI,WAAW,KAAK,KAAK,UAAU,GAAG,QAAQ,IAAI,aAAa,EAAE,CAAC,GAAG;AACnE,iBAAO,kBAAkB,UAAU,eAAe,IAAI,IAAI;AAAA,QAC5D;AAAA,MACF;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAEA,MAAI,WAAW,qBAAqB,GAAG;AACrC,WACE,wBAAwB,uBAAuB,QAAQ,UAAU,KAAK,wBAAwB,IAAI,GAAG,QAAQ,EAAE;AAAA,EAEnH;AAEA,MAAI,WAAW,kBAAkB,GAAG;AAClC,WAAO,wBAAwB,oBAAoB,IAAI,MAAM;AAAA,EAC/D;AAEA,SAAO;AACT;","names":[]}
@@ -57,7 +57,7 @@ function debugLogHeader(name) {
57
57
  return `[clerk debug start: ${name}]`;
58
58
  }
59
59
  function debugLogFooter(name) {
60
- return `[clerk debug end: ${name}] (@clerk/nextjs=${"6.36.10"},next=${nextPkg.version},timestamp=${Math.round((/* @__PURE__ */ new Date()).getTime() / 1e3)})`;
60
+ return `[clerk debug end: ${name}] (@clerk/nextjs=${"6.37.0"},next=${nextPkg.version},timestamp=${Math.round((/* @__PURE__ */ new Date()).getTime() / 1e3)})`;
61
61
  }
62
62
  function truncate(str, maxLength) {
63
63
  const encoder = new TextEncoder();
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/utils/debugLogger.ts"],"sourcesContent":["// TODO: Replace with a more sophisticated logging solution\n\nimport nextPkg from 'next/package.json';\n\nimport { logFormatter } from './logFormatter';\n\nexport type Log = string | Record<string, unknown>;\nexport type LogEntry = Log | Log[];\nexport type Logger<L = Log> = {\n commit: () => void;\n debug: (...args: Array<L | (() => L)>) => void;\n enable: () => void;\n};\nexport type LoggerNoCommit<L = Logger> = Omit<L, 'commit'>;\n\nexport const createDebugLogger = (name: string, formatter: (val: LogEntry) => string) => (): Logger => {\n const entries: LogEntry[] = [];\n let isEnabled = false;\n\n return {\n enable: () => {\n isEnabled = true;\n },\n debug: (...args) => {\n if (isEnabled) {\n entries.push(args.map(arg => (typeof arg === 'function' ? arg() : arg)));\n }\n },\n commit: () => {\n if (isEnabled) {\n console.log(debugLogHeader(name));\n\n /**\n * We buffer each collected log entry so we can format them and log them all at once.\n * Individual console.log calls are used to ensure we don't hit platform-specific log limits (Vercel and Netlify are 4kb).\n */\n for (const log of entries) {\n let output = formatter(log);\n\n output = output\n .split('\\n')\n .map(l => ` ${l}`)\n .join('\\n');\n\n // Vercel errors if the output is > 4kb, so we truncate it\n if (process.env.VERCEL) {\n output = truncate(output, 4096);\n }\n\n console.log(output);\n }\n\n console.log(debugLogFooter(name));\n }\n },\n };\n};\n\ntype WithLogger = <L extends Logger, H extends (...args: any[]) => any>(\n loggerFactoryOrName: string | (() => L),\n handlerCtor: (logger: LoggerNoCommit<L>) => H,\n) => H;\n\nexport const withLogger: WithLogger = (loggerFactoryOrName, handlerCtor) => {\n return ((...args: any) => {\n const factory =\n typeof loggerFactoryOrName === 'string'\n ? createDebugLogger(loggerFactoryOrName, logFormatter)\n : loggerFactoryOrName;\n\n const logger = factory();\n const handler = handlerCtor(logger as any);\n\n try {\n const res = handler(...args);\n if (typeof res === 'object' && 'then' in res && typeof res.then === 'function') {\n return res\n .then((val: any) => {\n logger.commit();\n return val;\n })\n .catch((err: any) => {\n logger.commit();\n throw err;\n });\n }\n // handle sync methods\n logger.commit();\n return res;\n } catch (err: any) {\n logger.commit();\n throw err;\n }\n }) as ReturnType<typeof handlerCtor>;\n};\n\nfunction debugLogHeader(name: string) {\n return `[clerk debug start: ${name}]`;\n}\n\nfunction debugLogFooter(name: string) {\n return `[clerk debug end: ${name}] (@clerk/nextjs=${PACKAGE_VERSION},next=${nextPkg.version},timestamp=${Math.round(new Date().getTime() / 1_000)})`;\n}\n\n// ref: https://stackoverflow.com/questions/57769465/javascript-truncate-text-by-bytes-length\nfunction truncate(str: string, maxLength: number) {\n const encoder = new TextEncoder();\n const decoder = new TextDecoder('utf-8');\n\n const encodedString = encoder.encode(str);\n const truncatedString = encodedString.slice(0, maxLength);\n\n // return the truncated string, removing any replacement characters that result from partially truncated characters\n return decoder.decode(truncatedString).replace(/\\uFFFD/g, '');\n}\n"],"mappings":";AAEA,OAAO,aAAa;AAEpB,SAAS,oBAAoB;AAWtB,MAAM,oBAAoB,CAAC,MAAc,cAAyC,MAAc;AACrG,QAAM,UAAsB,CAAC;AAC7B,MAAI,YAAY;AAEhB,SAAO;AAAA,IACL,QAAQ,MAAM;AACZ,kBAAY;AAAA,IACd;AAAA,IACA,OAAO,IAAI,SAAS;AAClB,UAAI,WAAW;AACb,gBAAQ,KAAK,KAAK,IAAI,SAAQ,OAAO,QAAQ,aAAa,IAAI,IAAI,GAAI,CAAC;AAAA,MACzE;AAAA,IACF;AAAA,IACA,QAAQ,MAAM;AACZ,UAAI,WAAW;AACb,gBAAQ,IAAI,eAAe,IAAI,CAAC;AAMhC,mBAAW,OAAO,SAAS;AACzB,cAAI,SAAS,UAAU,GAAG;AAE1B,mBAAS,OACN,MAAM,IAAI,EACV,IAAI,OAAK,KAAK,CAAC,EAAE,EACjB,KAAK,IAAI;AAGZ,cAAI,QAAQ,IAAI,QAAQ;AACtB,qBAAS,SAAS,QAAQ,IAAI;AAAA,UAChC;AAEA,kBAAQ,IAAI,MAAM;AAAA,QACpB;AAEA,gBAAQ,IAAI,eAAe,IAAI,CAAC;AAAA,MAClC;AAAA,IACF;AAAA,EACF;AACF;AAOO,MAAM,aAAyB,CAAC,qBAAqB,gBAAgB;AAC1E,UAAQ,IAAI,SAAc;AACxB,UAAM,UACJ,OAAO,wBAAwB,WAC3B,kBAAkB,qBAAqB,YAAY,IACnD;AAEN,UAAM,SAAS,QAAQ;AACvB,UAAM,UAAU,YAAY,MAAa;AAEzC,QAAI;AACF,YAAM,MAAM,QAAQ,GAAG,IAAI;AAC3B,UAAI,OAAO,QAAQ,YAAY,UAAU,OAAO,OAAO,IAAI,SAAS,YAAY;AAC9E,eAAO,IACJ,KAAK,CAAC,QAAa;AAClB,iBAAO,OAAO;AACd,iBAAO;AAAA,QACT,CAAC,EACA,MAAM,CAAC,QAAa;AACnB,iBAAO,OAAO;AACd,gBAAM;AAAA,QACR,CAAC;AAAA,MACL;AAEA,aAAO,OAAO;AACd,aAAO;AAAA,IACT,SAAS,KAAU;AACjB,aAAO,OAAO;AACd,YAAM;AAAA,IACR;AAAA,EACF;AACF;AAEA,SAAS,eAAe,MAAc;AACpC,SAAO,uBAAuB,IAAI;AACpC;AAEA,SAAS,eAAe,MAAc;AACpC,SAAO,qBAAqB,IAAI,oBAAoB,SAAe,SAAS,QAAQ,OAAO,cAAc,KAAK,OAAM,oBAAI,KAAK,GAAE,QAAQ,IAAI,GAAK,CAAC;AACnJ;AAGA,SAAS,SAAS,KAAa,WAAmB;AAChD,QAAM,UAAU,IAAI,YAAY;AAChC,QAAM,UAAU,IAAI,YAAY,OAAO;AAEvC,QAAM,gBAAgB,QAAQ,OAAO,GAAG;AACxC,QAAM,kBAAkB,cAAc,MAAM,GAAG,SAAS;AAGxD,SAAO,QAAQ,OAAO,eAAe,EAAE,QAAQ,WAAW,EAAE;AAC9D;","names":[]}
1
+ {"version":3,"sources":["../../../src/utils/debugLogger.ts"],"sourcesContent":["// TODO: Replace with a more sophisticated logging solution\n\nimport nextPkg from 'next/package.json';\n\nimport { logFormatter } from './logFormatter';\n\nexport type Log = string | Record<string, unknown>;\nexport type LogEntry = Log | Log[];\nexport type Logger<L = Log> = {\n commit: () => void;\n debug: (...args: Array<L | (() => L)>) => void;\n enable: () => void;\n};\nexport type LoggerNoCommit<L = Logger> = Omit<L, 'commit'>;\n\nexport const createDebugLogger = (name: string, formatter: (val: LogEntry) => string) => (): Logger => {\n const entries: LogEntry[] = [];\n let isEnabled = false;\n\n return {\n enable: () => {\n isEnabled = true;\n },\n debug: (...args) => {\n if (isEnabled) {\n entries.push(args.map(arg => (typeof arg === 'function' ? arg() : arg)));\n }\n },\n commit: () => {\n if (isEnabled) {\n console.log(debugLogHeader(name));\n\n /**\n * We buffer each collected log entry so we can format them and log them all at once.\n * Individual console.log calls are used to ensure we don't hit platform-specific log limits (Vercel and Netlify are 4kb).\n */\n for (const log of entries) {\n let output = formatter(log);\n\n output = output\n .split('\\n')\n .map(l => ` ${l}`)\n .join('\\n');\n\n // Vercel errors if the output is > 4kb, so we truncate it\n if (process.env.VERCEL) {\n output = truncate(output, 4096);\n }\n\n console.log(output);\n }\n\n console.log(debugLogFooter(name));\n }\n },\n };\n};\n\ntype WithLogger = <L extends Logger, H extends (...args: any[]) => any>(\n loggerFactoryOrName: string | (() => L),\n handlerCtor: (logger: LoggerNoCommit<L>) => H,\n) => H;\n\nexport const withLogger: WithLogger = (loggerFactoryOrName, handlerCtor) => {\n return ((...args: any) => {\n const factory =\n typeof loggerFactoryOrName === 'string'\n ? createDebugLogger(loggerFactoryOrName, logFormatter)\n : loggerFactoryOrName;\n\n const logger = factory();\n const handler = handlerCtor(logger as any);\n\n try {\n const res = handler(...args);\n if (typeof res === 'object' && 'then' in res && typeof res.then === 'function') {\n return res\n .then((val: any) => {\n logger.commit();\n return val;\n })\n .catch((err: any) => {\n logger.commit();\n throw err;\n });\n }\n // handle sync methods\n logger.commit();\n return res;\n } catch (err: any) {\n logger.commit();\n throw err;\n }\n }) as ReturnType<typeof handlerCtor>;\n};\n\nfunction debugLogHeader(name: string) {\n return `[clerk debug start: ${name}]`;\n}\n\nfunction debugLogFooter(name: string) {\n return `[clerk debug end: ${name}] (@clerk/nextjs=${PACKAGE_VERSION},next=${nextPkg.version},timestamp=${Math.round(new Date().getTime() / 1_000)})`;\n}\n\n// ref: https://stackoverflow.com/questions/57769465/javascript-truncate-text-by-bytes-length\nfunction truncate(str: string, maxLength: number) {\n const encoder = new TextEncoder();\n const decoder = new TextDecoder('utf-8');\n\n const encodedString = encoder.encode(str);\n const truncatedString = encodedString.slice(0, maxLength);\n\n // return the truncated string, removing any replacement characters that result from partially truncated characters\n return decoder.decode(truncatedString).replace(/\\uFFFD/g, '');\n}\n"],"mappings":";AAEA,OAAO,aAAa;AAEpB,SAAS,oBAAoB;AAWtB,MAAM,oBAAoB,CAAC,MAAc,cAAyC,MAAc;AACrG,QAAM,UAAsB,CAAC;AAC7B,MAAI,YAAY;AAEhB,SAAO;AAAA,IACL,QAAQ,MAAM;AACZ,kBAAY;AAAA,IACd;AAAA,IACA,OAAO,IAAI,SAAS;AAClB,UAAI,WAAW;AACb,gBAAQ,KAAK,KAAK,IAAI,SAAQ,OAAO,QAAQ,aAAa,IAAI,IAAI,GAAI,CAAC;AAAA,MACzE;AAAA,IACF;AAAA,IACA,QAAQ,MAAM;AACZ,UAAI,WAAW;AACb,gBAAQ,IAAI,eAAe,IAAI,CAAC;AAMhC,mBAAW,OAAO,SAAS;AACzB,cAAI,SAAS,UAAU,GAAG;AAE1B,mBAAS,OACN,MAAM,IAAI,EACV,IAAI,OAAK,KAAK,CAAC,EAAE,EACjB,KAAK,IAAI;AAGZ,cAAI,QAAQ,IAAI,QAAQ;AACtB,qBAAS,SAAS,QAAQ,IAAI;AAAA,UAChC;AAEA,kBAAQ,IAAI,MAAM;AAAA,QACpB;AAEA,gBAAQ,IAAI,eAAe,IAAI,CAAC;AAAA,MAClC;AAAA,IACF;AAAA,EACF;AACF;AAOO,MAAM,aAAyB,CAAC,qBAAqB,gBAAgB;AAC1E,UAAQ,IAAI,SAAc;AACxB,UAAM,UACJ,OAAO,wBAAwB,WAC3B,kBAAkB,qBAAqB,YAAY,IACnD;AAEN,UAAM,SAAS,QAAQ;AACvB,UAAM,UAAU,YAAY,MAAa;AAEzC,QAAI;AACF,YAAM,MAAM,QAAQ,GAAG,IAAI;AAC3B,UAAI,OAAO,QAAQ,YAAY,UAAU,OAAO,OAAO,IAAI,SAAS,YAAY;AAC9E,eAAO,IACJ,KAAK,CAAC,QAAa;AAClB,iBAAO,OAAO;AACd,iBAAO;AAAA,QACT,CAAC,EACA,MAAM,CAAC,QAAa;AACnB,iBAAO,OAAO;AACd,gBAAM;AAAA,QACR,CAAC;AAAA,MACL;AAEA,aAAO,OAAO;AACd,aAAO;AAAA,IACT,SAAS,KAAU;AACjB,aAAO,OAAO;AACd,YAAM;AAAA,IACR;AAAA,EACF;AACF;AAEA,SAAS,eAAe,MAAc;AACpC,SAAO,uBAAuB,IAAI;AACpC;AAEA,SAAS,eAAe,MAAc;AACpC,SAAO,qBAAqB,IAAI,oBAAoB,QAAe,SAAS,QAAQ,OAAO,cAAc,KAAK,OAAM,oBAAI,KAAK,GAAE,QAAQ,IAAI,GAAK,CAAC;AACnJ;AAGA,SAAS,SAAS,KAAa,WAAmB;AAChD,QAAM,UAAU,IAAI,YAAY;AAChC,QAAM,UAAU,IAAI,YAAY,OAAO;AAEvC,QAAM,gBAAgB,QAAQ,OAAO,GAAG;AACxC,QAAM,kBAAkB,cAAc,MAAM,GAAG,SAAS;AAGxD,SAAO,QAAQ,OAAO,eAAe,EAAE,QAAQ,WAAW,EAAE;AAC9D;","names":[]}
@@ -1,9 +1,20 @@
1
1
  import "../chunk-BUSYA2B4.js";
2
+ var _a, _b, _c, _d, _e, _f;
2
3
  import nextPkg from "next/package.json";
3
- const isNext13 = nextPkg.version.startsWith("13.");
4
- const isNextWithUnstableServerActions = isNext13 || nextPkg.version.startsWith("14.0");
4
+ function meetsNextMinimumVersion(minimumMajorVersion) {
5
+ var _a2;
6
+ if (!((_a2 = nextPkg) == null ? void 0 : _a2.version)) {
7
+ return false;
8
+ }
9
+ const majorVersion = parseInt(nextPkg.version.split(".")[0], 10);
10
+ return !isNaN(majorVersion) && majorVersion >= minimumMajorVersion;
11
+ }
12
+ const isNext13 = (_c = (_b = (_a = nextPkg) == null ? void 0 : _a.version) == null ? void 0 : _b.startsWith("13.")) != null ? _c : false;
13
+ const isNextWithUnstableServerActions = isNext13 || ((_f = (_e = (_d = nextPkg) == null ? void 0 : _d.version) == null ? void 0 : _e.startsWith("14.0")) != null ? _f : false);
14
+ const isNext16OrHigher = meetsNextMinimumVersion(16);
5
15
  export {
6
16
  isNext13,
17
+ isNext16OrHigher,
7
18
  isNextWithUnstableServerActions
8
19
  };
9
20
  //# sourceMappingURL=sdk-versions.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/utils/sdk-versions.ts"],"sourcesContent":["import nextPkg from 'next/package.json';\n\nconst isNext13 = nextPkg.version.startsWith('13.');\n\n/**\n * Those versions are affected by a bundling issue that will break the application if `node:fs` is used inside a server function.\n * The affected versions are >=next@13.5.4 and <=next@14.0.4\n */\nconst isNextWithUnstableServerActions = isNext13 || nextPkg.version.startsWith('14.0');\n\nexport { isNext13, isNextWithUnstableServerActions };\n"],"mappings":";AAAA,OAAO,aAAa;AAEpB,MAAM,WAAW,QAAQ,QAAQ,WAAW,KAAK;AAMjD,MAAM,kCAAkC,YAAY,QAAQ,QAAQ,WAAW,MAAM;","names":[]}
1
+ {"version":3,"sources":["../../../src/utils/sdk-versions.ts"],"sourcesContent":["import nextPkg from 'next/package.json';\n\nfunction meetsNextMinimumVersion(minimumMajorVersion: number) {\n if (!nextPkg?.version) {\n return false;\n }\n\n const majorVersion = parseInt(nextPkg.version.split('.')[0], 10);\n return !isNaN(majorVersion) && majorVersion >= minimumMajorVersion;\n}\n\nconst isNext13 = nextPkg?.version?.startsWith('13.') ?? false;\n\n/**\n * Those versions are affected by a bundling issue that will break the application if `node:fs` is used inside a server function.\n * The affected versions are >=next@13.5.4 and <=next@14.0.4\n */\nconst isNextWithUnstableServerActions = isNext13 || (nextPkg?.version?.startsWith('14.0') ?? false);\n\n/**\n * Next.js 16+ renamed middleware.ts to proxy.ts\n */\nconst isNext16OrHigher = meetsNextMinimumVersion(16);\n\nexport { isNext13, isNextWithUnstableServerActions, isNext16OrHigher };\n"],"mappings":";AAAA;AAAA,OAAO,aAAa;AAEpB,SAAS,wBAAwB,qBAA6B;AAF9D,MAAAA;AAGE,MAAI,GAACA,MAAA,4BAAAA,IAAS,UAAS;AACrB,WAAO;AAAA,EACT;AAEA,QAAM,eAAe,SAAS,QAAQ,QAAQ,MAAM,GAAG,EAAE,CAAC,GAAG,EAAE;AAC/D,SAAO,CAAC,MAAM,YAAY,KAAK,gBAAgB;AACjD;AAEA,MAAM,YAAW,gDAAS,YAAT,mBAAkB,WAAW,WAA7B,YAAuC;AAMxD,MAAM,kCAAkC,cAAa,gDAAS,YAAT,mBAAkB,WAAW,YAA7B,YAAwC;AAK7F,MAAM,mBAAmB,wBAAwB,EAAE;","names":["_a"]}
@@ -1 +1 @@
1
- {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../../src/app-router/server/auth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,KAAK,EAAe,kBAAkB,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAE5F,OAAO,EAAY,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAOrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAMxD;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG,iBAAiB,GAAG;IACxD;;;;;;;OAOG;IACH,gBAAgB,EAAE,WAAW,CAAC,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC,CAAC;IAE3D;;;;;;;OAOG;IACH,gBAAgB,EAAE,WAAW,CAAC,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC,CAAC;CAC5D,CAAC;AAEF,MAAM,MAAM,MAAM,GAAG,kBAAkB,CAAC,uBAAuB,EAAE,IAAI,CAAC,GAAG;IACvE;;;;;;;;;;;;;;;;;OAiBG;IACH,OAAO,EAAE,WAAW,CAAC;CACtB,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,IAAI,EAAE,MAsEP,CAAC"}
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../../src/app-router/server/auth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,KAAK,EAAe,kBAAkB,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAE5F,OAAO,EAAY,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAOrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAMxD;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG,iBAAiB,GAAG;IACxD;;;;;;;OAOG;IACH,gBAAgB,EAAE,WAAW,CAAC,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC,CAAC;IAE3D;;;;;;;OAOG;IACH,gBAAgB,EAAE,WAAW,CAAC,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC,CAAC;CAC5D,CAAC;AAEF,MAAM,MAAM,MAAM,GAAG,kBAAkB,CAAC,uBAAuB,EAAE,IAAI,CAAC,GAAG;IACvE;;;;;;;;;;;;;;;;;OAiBG;IACH,OAAO,EAAE,WAAW,CAAC;CACtB,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,IAAI,EAAE,MAuEP,CAAC"}
@@ -1,4 +1,5 @@
1
- export { useClerk, useEmailLink, useOrganization, useOrganizationList, useSession, useSessionList, useSignIn, useSignUp, useUser, useReverification, } from '@clerk/clerk-react';
1
+ export { useClerk, useEmailLink, useOrganization, useOrganizationCreationDefaults, useOrganizationList, useSession, useSessionList, useSignIn, useSignUp, useUser, useReverification, } from '@clerk/clerk-react';
2
+ export type { UseOrganizationCreationDefaultsParams, UseOrganizationCreationDefaultsReturn } from '@clerk/clerk-react';
2
3
  export { isClerkAPIResponseError, isClerkRuntimeError, isEmailLinkError, isKnownError, isMetamaskError, isReverificationCancelledError, EmailLinkErrorCode, EmailLinkErrorCodeStatus, } from '@clerk/clerk-react/errors';
3
4
  export { usePromisifiedAuth as useAuth } from './PromisifiedAuthProvider';
4
5
  //# sourceMappingURL=hooks.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../../src/client-boundary/hooks.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,QAAQ,EACR,YAAY,EACZ,eAAe,EACf,mBAAmB,EACnB,UAAU,EACV,cAAc,EACd,SAAS,EACT,SAAS,EACT,OAAO,EACP,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,uBAAuB,EACvB,mBAAmB,EACnB,gBAAgB,EAChB,YAAY,EACZ,eAAe,EACf,8BAA8B,EAC9B,kBAAkB,EAClB,wBAAwB,GACzB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,kBAAkB,IAAI,OAAO,EAAE,MAAM,2BAA2B,CAAC"}
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../../src/client-boundary/hooks.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,QAAQ,EACR,YAAY,EACZ,eAAe,EACf,+BAA+B,EAC/B,mBAAmB,EACnB,UAAU,EACV,cAAc,EACd,SAAS,EACT,SAAS,EACT,OAAO,EACP,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EAAE,qCAAqC,EAAE,qCAAqC,EAAE,MAAM,oBAAoB,CAAC;AAEvH,OAAO,EACL,uBAAuB,EACvB,mBAAmB,EACnB,gBAAgB,EAChB,YAAY,EACZ,eAAe,EACf,8BAA8B,EAC9B,kBAAkB,EAClB,wBAAwB,GACzB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,kBAAkB,IAAI,OAAO,EAAE,MAAM,2BAA2B,CAAC"}
@@ -12,7 +12,8 @@ export { APIKeys, CreateOrganization, GoogleOneTap, OrganizationList, Organizati
12
12
  * These need to be explicitly listed. Do not use an * here.
13
13
  * If you do, app router will break.
14
14
  */
15
- export { useAuth, useClerk, useEmailLink, useOrganization, useOrganizationList, useReverification, useSession, useSessionList, useSignIn, useSignUp, useUser, } from './client-boundary/hooks';
15
+ export { useAuth, useClerk, useEmailLink, useOrganization, useOrganizationCreationDefaults, useOrganizationList, useReverification, useSession, useSessionList, useSignIn, useSignUp, useUser, } from './client-boundary/hooks';
16
+ export type { UseOrganizationCreationDefaultsParams, UseOrganizationCreationDefaultsReturn, } from './client-boundary/hooks';
16
17
  import type { ServerComponentsServerModuleTypes } from './components.server';
17
18
  export declare const ClerkProvider: ServerComponentsServerModuleTypes["ClerkProvider"];
18
19
  export declare const SignedIn: ServerComponentsServerModuleTypes["SignedIn"];
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EACL,gCAAgC,EAChC,aAAa,EACb,WAAW,EACX,WAAW,EACX,YAAY,EACZ,4BAA4B,EAC5B,6BAA6B,EAC7B,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,qBAAqB,GACtB,MAAM,qCAAqC,CAAC;AAE7C;;;GAGG;AACH,OAAO,EACL,OAAO,EACP,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,EAChB,mBAAmB,EACnB,oBAAoB,EACpB,YAAY,EACZ,MAAM,EACN,YAAY,EACZ,wBAAwB,EACxB,aAAa,EACb,MAAM,EACN,YAAY,EACZ,sBAAsB,EACtB,iBAAiB,EACjB,UAAU,EACV,UAAU,EACV,WAAW,EACX,QAAQ,GACT,MAAM,gCAAgC,CAAC;AAExC;;;GAGG;AACH,OAAO,EACL,OAAO,EACP,QAAQ,EACR,YAAY,EACZ,eAAe,EACf,mBAAmB,EACnB,iBAAiB,EACjB,UAAU,EACV,cAAc,EACd,SAAS,EACT,SAAS,EACT,OAAO,GACR,MAAM,yBAAyB,CAAC;AAYjC,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,qBAAqB,CAAC;AAE7E,eAAO,MAAM,aAAa,EAAqC,iCAAiC,CAAC,eAAe,CAAC,CAAC;AAClH,eAAO,MAAM,QAAQ,EAAgC,iCAAiC,CAAC,UAAU,CAAC,CAAC;AACnG,eAAO,MAAM,SAAS,EAAiC,iCAAiC,CAAC,WAAW,CAAC,CAAC;AACtG,eAAO,MAAM,OAAO,EAA+B,iCAAiC,CAAC,SAAS,CAAC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EACL,gCAAgC,EAChC,aAAa,EACb,WAAW,EACX,WAAW,EACX,YAAY,EACZ,4BAA4B,EAC5B,6BAA6B,EAC7B,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,qBAAqB,GACtB,MAAM,qCAAqC,CAAC;AAE7C;;;GAGG;AACH,OAAO,EACL,OAAO,EACP,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,EAChB,mBAAmB,EACnB,oBAAoB,EACpB,YAAY,EACZ,MAAM,EACN,YAAY,EACZ,wBAAwB,EACxB,aAAa,EACb,MAAM,EACN,YAAY,EACZ,sBAAsB,EACtB,iBAAiB,EACjB,UAAU,EACV,UAAU,EACV,WAAW,EACX,QAAQ,GACT,MAAM,gCAAgC,CAAC;AAExC;;;GAGG;AACH,OAAO,EACL,OAAO,EACP,QAAQ,EACR,YAAY,EACZ,eAAe,EACf,+BAA+B,EAC/B,mBAAmB,EACnB,iBAAiB,EACjB,UAAU,EACV,cAAc,EACd,SAAS,EACT,SAAS,EACT,OAAO,GACR,MAAM,yBAAyB,CAAC;AACjC,YAAY,EACV,qCAAqC,EACrC,qCAAqC,GACtC,MAAM,yBAAyB,CAAC;AAYjC,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,qBAAqB,CAAC;AAE7E,eAAO,MAAM,aAAa,EAAqC,iCAAiC,CAAC,eAAe,CAAC,CAAC;AAClH,eAAO,MAAM,QAAQ,EAAgC,iCAAiC,CAAC,UAAU,CAAC,CAAC;AACnG,eAAO,MAAM,SAAS,EAAiC,iCAAiC,CAAC,WAAW,CAAC,CAAC;AACtG,eAAO,MAAM,OAAO,EAA+B,iCAAiC,CAAC,SAAS,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"middleware-location.d.ts","sourceRoot":"","sources":["../../../../src/server/fs/middleware-location.ts"],"names":[],"mappings":"AAEA,iBAAS,YAAY,YAQpB;AAED,iBAAS,yBAAyB,uBAwCjC;AAED,OAAO,EAAE,yBAAyB,EAAE,YAAY,EAAE,CAAC"}
1
+ {"version":3,"file":"middleware-location.d.ts","sourceRoot":"","sources":["../../../../src/server/fs/middleware-location.ts"],"names":[],"mappings":"AAGA,iBAAS,YAAY,YAQpB;AAED,iBAAS,yBAAyB,uBA+CjC;AAED,OAAO,EAAE,yBAAyB,EAAE,YAAY,EAAE,CAAC"}
@@ -4,5 +4,9 @@ declare const isNext13: boolean;
4
4
  * The affected versions are >=next@13.5.4 and <=next@14.0.4
5
5
  */
6
6
  declare const isNextWithUnstableServerActions: boolean;
7
- export { isNext13, isNextWithUnstableServerActions };
7
+ /**
8
+ * Next.js 16+ renamed middleware.ts to proxy.ts
9
+ */
10
+ declare const isNext16OrHigher: boolean;
11
+ export { isNext13, isNextWithUnstableServerActions, isNext16OrHigher };
8
12
  //# sourceMappingURL=sdk-versions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sdk-versions.d.ts","sourceRoot":"","sources":["../../../src/utils/sdk-versions.ts"],"names":[],"mappings":"AAEA,QAAA,MAAM,QAAQ,SAAoC,CAAC;AAEnD;;;GAGG;AACH,QAAA,MAAM,+BAA+B,SAAiD,CAAC;AAEvF,OAAO,EAAE,QAAQ,EAAE,+BAA+B,EAAE,CAAC"}
1
+ {"version":3,"file":"sdk-versions.d.ts","sourceRoot":"","sources":["../../../src/utils/sdk-versions.ts"],"names":[],"mappings":"AAWA,QAAA,MAAM,QAAQ,SAA+C,CAAC;AAE9D;;;GAGG;AACH,QAAA,MAAM,+BAA+B,SAA8D,CAAC;AAEpG;;GAEG;AACH,QAAA,MAAM,gBAAgB,SAA8B,CAAC;AAErD,OAAO,EAAE,QAAQ,EAAE,+BAA+B,EAAE,gBAAgB,EAAE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@clerk/nextjs",
3
- "version": "6.36.10",
3
+ "version": "6.37.0",
4
4
  "description": "Clerk SDK for NextJS",
5
5
  "keywords": [
6
6
  "clerk",
@@ -66,10 +66,10 @@
66
66
  "dependencies": {
67
67
  "server-only": "0.0.1",
68
68
  "tslib": "2.8.1",
69
- "@clerk/backend": "^2.29.5",
70
- "@clerk/clerk-react": "^5.59.6",
71
- "@clerk/shared": "^3.43.2",
72
- "@clerk/types": "^4.101.13"
69
+ "@clerk/backend": "^2.29.6",
70
+ "@clerk/clerk-react": "^5.60.0",
71
+ "@clerk/shared": "^3.44.0",
72
+ "@clerk/types": "^4.101.14"
73
73
  },
74
74
  "devDependencies": {
75
75
  "crypto-es": "^2.1.0",