@clerk/react 6.0.0-snapshot.v20251215212157 → 6.0.0-snapshot.v20251217162523
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.
- package/dist/{chunk-EMTY23UX.mjs → chunk-4F7CSI4T.mjs} +2 -2
- package/dist/{chunk-FDDR7URL.mjs → chunk-J32KHXBI.mjs} +1 -4
- package/dist/{chunk-FDDR7URL.mjs.map → chunk-J32KHXBI.mjs.map} +1 -1
- package/dist/{chunk-JPHCBAWH.mjs → chunk-YKGYOPLG.mjs} +2 -2
- package/dist/experimental.js +62 -65
- package/dist/experimental.js.map +1 -1
- package/dist/experimental.mjs +2 -2
- package/dist/index.d.mts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +99 -107
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +4 -8
- package/dist/index.mjs.map +1 -1
- package/dist/internal.js +11 -14
- package/dist/internal.js.map +1 -1
- package/dist/internal.mjs +2 -2
- package/package.json +6 -6
- /package/dist/{chunk-EMTY23UX.mjs.map → chunk-4F7CSI4T.mjs.map} +0 -0
- /package/dist/{chunk-JPHCBAWH.mjs.map → chunk-YKGYOPLG.mjs.map} +0 -0
package/dist/internal.js
CHANGED
|
@@ -51,7 +51,7 @@ function setErrorThrowerOptions(options) {
|
|
|
51
51
|
|
|
52
52
|
// src/components/controlComponents.tsx
|
|
53
53
|
var import_deprecated = require("@clerk/shared/deprecated");
|
|
54
|
-
var
|
|
54
|
+
var import_react10 = __toESM(require("react"));
|
|
55
55
|
|
|
56
56
|
// src/contexts/IsomorphicClerkContext.tsx
|
|
57
57
|
var import_react = require("@clerk/shared/react");
|
|
@@ -130,8 +130,7 @@ var import_react7 = require("react");
|
|
|
130
130
|
var import_react8 = require("@clerk/shared/react");
|
|
131
131
|
|
|
132
132
|
// src/components/withClerk.tsx
|
|
133
|
-
var import_react9 = require("
|
|
134
|
-
var import_react10 = __toESM(require("react"));
|
|
133
|
+
var import_react9 = __toESM(require("react"));
|
|
135
134
|
var withClerk = (Component, displayNameOrOptions) => {
|
|
136
135
|
const passedDisplayedName = typeof displayNameOrOptions === "string" ? displayNameOrOptions : displayNameOrOptions == null ? void 0 : displayNameOrOptions.component;
|
|
137
136
|
const displayName = passedDisplayedName || Component.displayName || Component.name || "Component";
|
|
@@ -140,14 +139,12 @@ var withClerk = (Component, displayNameOrOptions) => {
|
|
|
140
139
|
const HOC = (props) => {
|
|
141
140
|
useAssertWrappedByClerkProvider(displayName || "withClerk");
|
|
142
141
|
const clerk = useIsomorphicClerkContext();
|
|
143
|
-
const getContainer = (0, import_react9.usePortalRoot)();
|
|
144
142
|
if (!clerk.loaded && !(options == null ? void 0 : options.renderWhileLoading)) {
|
|
145
143
|
return null;
|
|
146
144
|
}
|
|
147
|
-
return /* @__PURE__ */
|
|
145
|
+
return /* @__PURE__ */ import_react9.default.createElement(
|
|
148
146
|
Component,
|
|
149
147
|
{
|
|
150
|
-
getContainer,
|
|
151
148
|
...props,
|
|
152
149
|
component: displayName,
|
|
153
150
|
clerk
|
|
@@ -163,7 +160,7 @@ var RedirectToSignIn = withClerk(({ clerk, ...props }) => {
|
|
|
163
160
|
var _a, _b;
|
|
164
161
|
const { client, session } = clerk;
|
|
165
162
|
const hasSignedInSessions = ((_b = (_a = client.signedInSessions) == null ? void 0 : _a.length) != null ? _b : 0) > 0;
|
|
166
|
-
|
|
163
|
+
import_react10.default.useEffect(() => {
|
|
167
164
|
if (session === null && hasSignedInSessions) {
|
|
168
165
|
void clerk.redirectToAfterSignOut();
|
|
169
166
|
} else {
|
|
@@ -173,33 +170,33 @@ var RedirectToSignIn = withClerk(({ clerk, ...props }) => {
|
|
|
173
170
|
return null;
|
|
174
171
|
}, "RedirectToSignIn");
|
|
175
172
|
var RedirectToSignUp = withClerk(({ clerk, ...props }) => {
|
|
176
|
-
|
|
173
|
+
import_react10.default.useEffect(() => {
|
|
177
174
|
void clerk.redirectToSignUp(props);
|
|
178
175
|
}, []);
|
|
179
176
|
return null;
|
|
180
177
|
}, "RedirectToSignUp");
|
|
181
178
|
var RedirectToTasks = withClerk(({ clerk, ...props }) => {
|
|
182
|
-
|
|
179
|
+
import_react10.default.useEffect(() => {
|
|
183
180
|
void clerk.redirectToTasks(props);
|
|
184
181
|
}, []);
|
|
185
182
|
return null;
|
|
186
183
|
}, "RedirectToTasks");
|
|
187
184
|
var RedirectToUserProfile = withClerk(({ clerk }) => {
|
|
188
|
-
|
|
185
|
+
import_react10.default.useEffect(() => {
|
|
189
186
|
(0, import_deprecated.deprecated)("RedirectToUserProfile", "Use the `redirectToUserProfile()` method instead.");
|
|
190
187
|
void clerk.redirectToUserProfile();
|
|
191
188
|
}, []);
|
|
192
189
|
return null;
|
|
193
190
|
}, "RedirectToUserProfile");
|
|
194
191
|
var RedirectToOrganizationProfile = withClerk(({ clerk }) => {
|
|
195
|
-
|
|
192
|
+
import_react10.default.useEffect(() => {
|
|
196
193
|
(0, import_deprecated.deprecated)("RedirectToOrganizationProfile", "Use the `redirectToOrganizationProfile()` method instead.");
|
|
197
194
|
void clerk.redirectToOrganizationProfile();
|
|
198
195
|
}, []);
|
|
199
196
|
return null;
|
|
200
197
|
}, "RedirectToOrganizationProfile");
|
|
201
198
|
var RedirectToCreateOrganization = withClerk(({ clerk }) => {
|
|
202
|
-
|
|
199
|
+
import_react10.default.useEffect(() => {
|
|
203
200
|
(0, import_deprecated.deprecated)("RedirectToCreateOrganization", "Use the `redirectToCreateOrganization()` method instead.");
|
|
204
201
|
void clerk.redirectToCreateOrganization();
|
|
205
202
|
}, []);
|
|
@@ -207,7 +204,7 @@ var RedirectToCreateOrganization = withClerk(({ clerk }) => {
|
|
|
207
204
|
}, "RedirectToCreateOrganization");
|
|
208
205
|
var AuthenticateWithRedirectCallback = withClerk(
|
|
209
206
|
({ clerk, ...handleRedirectCallbackParams }) => {
|
|
210
|
-
|
|
207
|
+
import_react10.default.useEffect(() => {
|
|
211
208
|
void clerk.handleRedirectCallback(handleRedirectCallbackParams);
|
|
212
209
|
}, []);
|
|
213
210
|
return null;
|
|
@@ -217,7 +214,7 @@ var AuthenticateWithRedirectCallback = withClerk(
|
|
|
217
214
|
var MultisessionAppSupport = ({ children }) => {
|
|
218
215
|
useAssertWrappedByClerkProvider("MultisessionAppSupport");
|
|
219
216
|
const session = (0, import_react2.useSessionContext)();
|
|
220
|
-
return /* @__PURE__ */
|
|
217
|
+
return /* @__PURE__ */ import_react10.default.createElement(import_react10.default.Fragment, { key: session ? session.id : "no-users" }, children);
|
|
221
218
|
};
|
|
222
219
|
|
|
223
220
|
// src/hooks/useRoutingProps.ts
|
package/dist/internal.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/internal.ts","../src/errors/errorThrower.ts","../src/components/controlComponents.tsx","../src/contexts/IsomorphicClerkContext.tsx","../src/contexts/SessionContext.tsx","../src/hooks/useAuth.ts","../src/contexts/AuthContext.ts","../src/errors/messages.ts","../src/hooks/useAssertWrappedByClerkProvider.ts","../src/hooks/useEmailLink.ts","../src/hooks/useClerkSignal.ts","../src/hooks/index.ts","../src/components/withClerk.tsx","../src/hooks/useRoutingProps.ts"],"sourcesContent":["export { setErrorThrowerOptions } from './errors/errorThrower';\nexport { MultisessionAppSupport } from './components/controlComponents';\nexport { useRoutingProps } from './hooks/useRoutingProps';\nexport { useDerivedAuth } from './hooks/useAuth';\n\nexport {\n clerkJsScriptUrl,\n buildClerkJsScriptAttributes,\n clerkUiScriptUrl,\n buildClerkUiScriptAttributes,\n setClerkJsLoadingErrorPackageName,\n} from '@clerk/shared/loadClerkJsScript';\n\nexport type { Ui } from '@clerk/ui/internal';\n","import type { ErrorThrowerOptions } from '@clerk/shared/error';\nimport { buildErrorThrower } from '@clerk/shared/error';\n\nconst errorThrower = buildErrorThrower({ packageName: '@clerk/react' });\n\nexport { errorThrower };\n\n/**\n * Overrides options of the internal errorThrower (eg setting packageName prefix).\n *\n * @internal\n */\nexport function setErrorThrowerOptions(options: ErrorThrowerOptions) {\n errorThrower.setMessages(options).setPackageName(options);\n}\n","import { deprecated } from '@clerk/shared/deprecated';\nimport type {\n HandleOAuthCallbackParams,\n PendingSessionOptions,\n ProtectProps as _ProtectProps,\n} from '@clerk/shared/types';\nimport React from 'react';\n\nimport { useIsomorphicClerkContext } from '../contexts/IsomorphicClerkContext';\nimport { useSessionContext } from '../contexts/SessionContext';\nimport { useAuth } from '../hooks';\nimport { useAssertWrappedByClerkProvider } from '../hooks/useAssertWrappedByClerkProvider';\nimport type { RedirectToSignInProps, RedirectToSignUpProps, RedirectToTasksProps, WithClerkProp } from '../types';\nimport { withClerk } from './withClerk';\n\nexport const SignedIn = ({ children, treatPendingAsSignedOut }: React.PropsWithChildren<PendingSessionOptions>) => {\n useAssertWrappedByClerkProvider('SignedIn');\n\n const { userId } = useAuth({ treatPendingAsSignedOut });\n if (userId) {\n return children;\n }\n return null;\n};\n\nexport const SignedOut = ({ children, treatPendingAsSignedOut }: React.PropsWithChildren<PendingSessionOptions>) => {\n useAssertWrappedByClerkProvider('SignedOut');\n\n const { userId } = useAuth({ treatPendingAsSignedOut });\n if (userId === null) {\n return children;\n }\n return null;\n};\n\nexport const ClerkLoaded = ({ children }: React.PropsWithChildren<unknown>) => {\n useAssertWrappedByClerkProvider('ClerkLoaded');\n\n const isomorphicClerk = useIsomorphicClerkContext();\n if (!isomorphicClerk.loaded) {\n return null;\n }\n return children;\n};\n\nexport const ClerkLoading = ({ children }: React.PropsWithChildren<unknown>) => {\n useAssertWrappedByClerkProvider('ClerkLoading');\n\n const isomorphicClerk = useIsomorphicClerkContext();\n if (isomorphicClerk.status !== 'loading') {\n return null;\n }\n return children;\n};\n\nexport const ClerkFailed = ({ children }: React.PropsWithChildren<unknown>) => {\n useAssertWrappedByClerkProvider('ClerkFailed');\n\n const isomorphicClerk = useIsomorphicClerkContext();\n if (isomorphicClerk.status !== 'error') {\n return null;\n }\n return children;\n};\n\nexport const ClerkDegraded = ({ children }: React.PropsWithChildren<unknown>) => {\n useAssertWrappedByClerkProvider('ClerkDegraded');\n\n const isomorphicClerk = useIsomorphicClerkContext();\n if (isomorphicClerk.status !== 'degraded') {\n return null;\n }\n return children;\n};\n\nexport type ProtectProps = React.PropsWithChildren<\n _ProtectProps & {\n fallback?: React.ReactNode;\n } & PendingSessionOptions\n>;\n\n/**\n * Use `<Protect/>` in order to prevent unauthenticated or unauthorized users from accessing the children passed to the component.\n *\n * Examples:\n * ```\n * <Protect permission=\"a_permission_key\" />\n * <Protect role=\"a_role_key\" />\n * <Protect condition={(has) => has({permission:\"a_permission_key\"})} />\n * <Protect condition={(has) => has({role:\"a_role_key\"})} />\n * <Protect fallback={<p>Unauthorized</p>} />\n * ```\n */\nexport const Protect = ({ children, fallback, treatPendingAsSignedOut, ...restAuthorizedParams }: ProtectProps) => {\n useAssertWrappedByClerkProvider('Protect');\n\n const { isLoaded, has, userId } = useAuth({ treatPendingAsSignedOut });\n\n /**\n * Avoid flickering children or fallback while clerk is loading sessionId or userId\n */\n if (!isLoaded) {\n return null;\n }\n\n /**\n * Fallback to UI provided by user or `null` if authorization checks failed\n */\n const unauthorized = fallback ?? null;\n\n const authorized = children;\n\n if (!userId) {\n return unauthorized;\n }\n\n /**\n * Check against the results of `has` called inside the callback\n */\n if (typeof restAuthorizedParams.condition === 'function') {\n if (restAuthorizedParams.condition(has)) {\n return authorized;\n }\n return unauthorized;\n }\n\n if (\n restAuthorizedParams.role ||\n restAuthorizedParams.permission ||\n restAuthorizedParams.feature ||\n restAuthorizedParams.plan\n ) {\n if (has(restAuthorizedParams)) {\n return authorized;\n }\n return unauthorized;\n }\n\n /**\n * If neither of the authorization params are passed behave as the `<SignedIn/>`.\n * If fallback is present render that instead of rendering nothing.\n */\n return authorized;\n};\n\nexport const RedirectToSignIn = withClerk(({ clerk, ...props }: WithClerkProp<RedirectToSignInProps>) => {\n const { client, session } = clerk;\n\n const hasSignedInSessions = (client.signedInSessions?.length ?? 0) > 0;\n\n React.useEffect(() => {\n if (session === null && hasSignedInSessions) {\n void clerk.redirectToAfterSignOut();\n } else {\n void clerk.redirectToSignIn(props);\n }\n }, []);\n\n return null;\n}, 'RedirectToSignIn');\n\nexport const RedirectToSignUp = withClerk(({ clerk, ...props }: WithClerkProp<RedirectToSignUpProps>) => {\n React.useEffect(() => {\n void clerk.redirectToSignUp(props);\n }, []);\n\n return null;\n}, 'RedirectToSignUp');\n\nexport const RedirectToTasks = withClerk(({ clerk, ...props }: WithClerkProp<RedirectToTasksProps>) => {\n React.useEffect(() => {\n void clerk.redirectToTasks(props);\n }, []);\n\n return null;\n}, 'RedirectToTasks');\n\n/**\n * @function\n * @deprecated Use [`redirectToUserProfile()`](https://clerk.com/docs/reference/javascript/clerk#redirect-to-user-profile) instead.\n */\nexport const RedirectToUserProfile = withClerk(({ clerk }) => {\n React.useEffect(() => {\n deprecated('RedirectToUserProfile', 'Use the `redirectToUserProfile()` method instead.');\n void clerk.redirectToUserProfile();\n }, []);\n\n return null;\n}, 'RedirectToUserProfile');\n\n/**\n * @function\n * @deprecated Use [`redirectToOrganizationProfile()`](https://clerk.com/docs/reference/javascript/clerk#redirect-to-organization-profile) instead.\n */\nexport const RedirectToOrganizationProfile = withClerk(({ clerk }) => {\n React.useEffect(() => {\n deprecated('RedirectToOrganizationProfile', 'Use the `redirectToOrganizationProfile()` method instead.');\n void clerk.redirectToOrganizationProfile();\n }, []);\n\n return null;\n}, 'RedirectToOrganizationProfile');\n\n/**\n * @function\n * @deprecated Use [`redirectToCreateOrganization()`](https://clerk.com/docs/reference/javascript/clerk#redirect-to-create-organization) instead.\n */\nexport const RedirectToCreateOrganization = withClerk(({ clerk }) => {\n React.useEffect(() => {\n deprecated('RedirectToCreateOrganization', 'Use the `redirectToCreateOrganization()` method instead.');\n void clerk.redirectToCreateOrganization();\n }, []);\n\n return null;\n}, 'RedirectToCreateOrganization');\n\nexport const AuthenticateWithRedirectCallback = withClerk(\n ({ clerk, ...handleRedirectCallbackParams }: WithClerkProp<HandleOAuthCallbackParams>) => {\n React.useEffect(() => {\n void clerk.handleRedirectCallback(handleRedirectCallbackParams);\n }, []);\n\n return null;\n },\n 'AuthenticateWithRedirectCallback',\n);\n\nexport const MultisessionAppSupport = ({ children }: React.PropsWithChildren<unknown>) => {\n useAssertWrappedByClerkProvider('MultisessionAppSupport');\n\n const session = useSessionContext();\n return <React.Fragment key={session ? session.id : 'no-users'}>{children}</React.Fragment>;\n};\n","import { ClerkInstanceContext, useClerkInstanceContext } from '@clerk/shared/react';\n\nimport type { IsomorphicClerk } from '../isomorphicClerk';\n\nexport const IsomorphicClerkContext = ClerkInstanceContext;\nexport const useIsomorphicClerkContext = useClerkInstanceContext as unknown as () => IsomorphicClerk;\n","export { SessionContext, useSessionContext } from '@clerk/shared/react';\n","import { createCheckAuthorization, resolveAuthState } from '@clerk/shared/authorization';\nimport { eventMethodCalled } from '@clerk/shared/telemetry';\nimport type {\n CheckAuthorizationWithCustomPermissions,\n GetToken,\n JwtPayload,\n PendingSessionOptions,\n SignOut,\n UseAuthReturn,\n} from '@clerk/shared/types';\nimport { useCallback } from 'react';\n\nimport { useAuthContext } from '../contexts/AuthContext';\nimport { useIsomorphicClerkContext } from '../contexts/IsomorphicClerkContext';\nimport { errorThrower } from '../errors/errorThrower';\nimport { invalidStateError } from '../errors/messages';\nimport { useAssertWrappedByClerkProvider } from './useAssertWrappedByClerkProvider';\nimport { createGetToken, createSignOut } from './utils';\n\n/**\n * @inline\n */\ntype UseAuthOptions = Record<string, any> | PendingSessionOptions | undefined | null;\n\n/**\n * The `useAuth()` hook provides access to the current user's authentication state and methods to manage the active session.\n *\n * > [!NOTE]\n * > To access auth data server-side, see the [`Auth` object reference doc](https://clerk.com/docs/reference/backend/types/auth-object).\n *\n * <If sdk=\"nextjs\">\n * By default, Next.js opts all routes into static rendering. If you need to opt a route or routes into dynamic rendering because you need to access the authentication data at request time, you can create a boundary by passing the `dynamic` prop to `<ClerkProvider>`. See the [guide on rendering modes](https://clerk.com/docs/guides/development/rendering-modes) for more information, including code examples.\n * </If>\n *\n * @unionReturnHeadings\n * [\"Initialization\", \"Signed out\", \"Signed in (no active organization)\", \"Signed in (with active organization)\"]\n *\n * @param [initialAuthStateOrOptions] - An object containing the initial authentication state or options for the `useAuth()` hook. If not provided, the hook will attempt to derive the state from the context. `treatPendingAsSignedOut` is a boolean that indicates whether pending sessions are considered as signed out or not. Defaults to `true`.\n *\n * @function\n *\n * @example\n *\n * The following example demonstrates how to use the `useAuth()` hook to access the current auth state, like whether the user is signed in or not. It also includes a basic example for using the `getToken()` method to retrieve a session token for fetching data from an external resource.\n *\n * <Tabs items='React,Next.js'>\n * <Tab>\n *\n * ```tsx {{ filename: 'src/pages/ExternalDataPage.tsx' }}\n * import { useAuth } from '@clerk/react'\n *\n * export default function ExternalDataPage() {\n * const { userId, sessionId, getToken, isLoaded, isSignedIn } = useAuth()\n *\n * const fetchExternalData = async () => {\n * const token = await getToken()\n *\n * // Fetch data from an external API\n * const response = await fetch('https://api.example.com/data', {\n * headers: {\n * Authorization: `Bearer ${token}`,\n * },\n * })\n *\n * return response.json()\n * }\n *\n * if (!isLoaded) {\n * return <div>Loading...</div>\n * }\n *\n * if (!isSignedIn) {\n * return <div>Sign in to view this page</div>\n * }\n *\n * return (\n * <div>\n * <p>\n * Hello, {userId}! Your current active session is {sessionId}.\n * </p>\n * <button onClick={fetchExternalData}>Fetch Data</button>\n * </div>\n * )\n * }\n * ```\n *\n * </Tab>\n * <Tab>\n *\n * {@include ../../docs/use-auth.md#nextjs-01}\n *\n * </Tab>\n * </Tabs>\n */\nexport const useAuth = (initialAuthStateOrOptions: UseAuthOptions = {}): UseAuthReturn => {\n useAssertWrappedByClerkProvider('useAuth');\n\n const { treatPendingAsSignedOut, ...rest } = initialAuthStateOrOptions ?? {};\n const initialAuthState = rest as any;\n\n const authContextFromHook = useAuthContext();\n let authContext = authContextFromHook;\n\n if (authContext.sessionId === undefined && authContext.userId === undefined) {\n authContext = initialAuthState != null ? initialAuthState : {};\n }\n\n const isomorphicClerk = useIsomorphicClerkContext();\n const getToken: GetToken = useCallback(createGetToken(isomorphicClerk), [isomorphicClerk]);\n const signOut: SignOut = useCallback(createSignOut(isomorphicClerk), [isomorphicClerk]);\n\n isomorphicClerk.telemetry?.record(eventMethodCalled('useAuth', { treatPendingAsSignedOut }));\n\n return useDerivedAuth(\n {\n ...authContext,\n getToken,\n signOut,\n },\n {\n treatPendingAsSignedOut,\n },\n );\n};\n\n/**\n * A hook that derives and returns authentication state and utility functions based on the provided auth object.\n *\n * @param authObject - An object containing authentication-related properties and functions.\n *\n * @returns A derived authentication state with helper methods. If the authentication state is invalid, an error is thrown.\n *\n * @remarks\n * This hook inspects session, user, and organization information to determine the current authentication state.\n * It returns an object that includes various properties such as whether the state is loaded, if a user is signed in,\n * session and user identifiers, Organization Roles, and a `has` function for authorization checks.\n * Additionally, it provides `signOut` and `getToken` functions if applicable.\n *\n * @example\n * ```tsx\n * const {\n * isLoaded,\n * isSignedIn,\n * userId,\n * orgId,\n * has,\n * signOut,\n * getToken\n * } = useDerivedAuth(authObject);\n * ```\n */\nexport function useDerivedAuth(\n authObject: any,\n { treatPendingAsSignedOut = true }: PendingSessionOptions = {},\n): UseAuthReturn {\n const { userId, orgId, orgRole, has, signOut, getToken, orgPermissions, factorVerificationAge, sessionClaims } =\n authObject ?? {};\n\n const derivedHas = useCallback(\n (params: Parameters<CheckAuthorizationWithCustomPermissions>[0]) => {\n if (has) {\n return has(params);\n }\n return createCheckAuthorization({\n userId,\n orgId,\n orgRole,\n orgPermissions,\n factorVerificationAge,\n features: ((sessionClaims as JwtPayload | undefined)?.fea as string) || '',\n plans: ((sessionClaims as JwtPayload | undefined)?.pla as string) || '',\n })(params);\n },\n [has, userId, orgId, orgRole, orgPermissions, factorVerificationAge, sessionClaims],\n );\n\n const payload = resolveAuthState({\n authObject: {\n ...authObject,\n getToken,\n signOut,\n has: derivedHas,\n },\n options: {\n treatPendingAsSignedOut,\n },\n });\n\n if (!payload) {\n return errorThrower.throw(invalidStateError);\n }\n\n return payload;\n}\n","import { createContextAndHook } from '@clerk/shared/react';\nimport type {\n ActClaim,\n JwtPayload,\n OrganizationCustomPermissionKey,\n OrganizationCustomRoleKey,\n SessionStatusClaim,\n} from '@clerk/shared/types';\n\nexport type AuthContextValue = {\n userId: string | null | undefined;\n sessionId: string | null | undefined;\n sessionStatus: SessionStatusClaim | null | undefined;\n sessionClaims: JwtPayload | null | undefined;\n actor: ActClaim | null | undefined;\n orgId: string | null | undefined;\n orgRole: OrganizationCustomRoleKey | null | undefined;\n orgSlug: string | null | undefined;\n orgPermissions: OrganizationCustomPermissionKey[] | null | undefined;\n factorVerificationAge: [number, number] | null;\n};\n\nexport const [AuthContext, useAuthContext] = createContextAndHook<AuthContextValue>('AuthContext');\n","export const noClerkProviderError = 'You must wrap your application in a <ClerkProvider> component.';\n\nexport const multipleClerkProvidersError =\n \"You've added multiple <ClerkProvider> components in your React component tree. Wrap your components in a single <ClerkProvider>.\";\n\nexport const multipleChildrenInButtonComponent = (name: string) =>\n `You've passed multiple children components to <${name}/>. You can only pass a single child component or text.`;\n\nexport const invalidStateError =\n 'Invalid state. Feel free to submit a bug or reach out to support here: https://clerk.com/support';\n\nexport const unsupportedNonBrowserDomainOrProxyUrlFunction =\n 'Unsupported usage of isSatellite, domain or proxyUrl. The usage of isSatellite, domain or proxyUrl as function is not supported in non-browser environments.';\n\nexport const userProfilePageRenderedError =\n '<UserProfile.Page /> component needs to be a direct child of `<UserProfile />` or `<UserButton />`.';\nexport const userProfileLinkRenderedError =\n '<UserProfile.Link /> component needs to be a direct child of `<UserProfile />` or `<UserButton />`.';\n\nexport const organizationProfilePageRenderedError =\n '<OrganizationProfile.Page /> component needs to be a direct child of `<OrganizationProfile />` or `<OrganizationSwitcher />`.';\nexport const organizationProfileLinkRenderedError =\n '<OrganizationProfile.Link /> component needs to be a direct child of `<OrganizationProfile />` or `<OrganizationSwitcher />`.';\n\nexport const customPagesIgnoredComponent = (componentName: string) =>\n `<${componentName} /> can only accept <${componentName}.Page /> and <${componentName}.Link /> as its children. Any other provided component will be ignored. Additionally, please ensure that the component is rendered in a client component.`;\n\nexport const customPageWrongProps = (componentName: string) =>\n `Missing props. <${componentName}.Page /> component requires the following props: url, label, labelIcon, alongside with children to be rendered inside the page.`;\n\nexport const customLinkWrongProps = (componentName: string) =>\n `Missing props. <${componentName}.Link /> component requires the following props: url, label and labelIcon.`;\n\nexport const useAuthHasRequiresRoleOrPermission =\n 'Missing parameters. `has` from `useAuth` requires a permission or role key to be passed. Example usage: `has({permission: \"org:posts:edit\"`';\n\nexport const noPathProvidedError = (componentName: string) =>\n `The <${componentName}/> component uses path-based routing by default unless a different routing strategy is provided using the \\`routing\\` prop. When path-based routing is used, you need to provide the path where the component is mounted on by using the \\`path\\` prop. Example: <${componentName} path={'/my-path'} />`;\n\nexport const incompatibleRoutingWithPathProvidedError = (componentName: string) =>\n `The \\`path\\` prop will only be respected when the Clerk component uses path-based routing. To resolve this error, pass \\`routing='path'\\` to the <${componentName}/> component, or drop the \\`path\\` prop to switch to hash-based routing. For more details please refer to our docs: https://clerk.com/docs`;\n\nexport const userButtonIgnoredComponent = `<UserButton /> can only accept <UserButton.UserProfilePage />, <UserButton.UserProfileLink /> and <UserButton.MenuItems /> as its children. Any other provided component will be ignored. Additionally, please ensure that the component is rendered in a client component.`;\n\nexport const customMenuItemsIgnoredComponent =\n '<UserButton.MenuItems /> component can only accept <UserButton.Action /> and <UserButton.Link /> as its children. Any other provided component will be ignored. Additionally, please ensure that the component is rendered in a client component.';\n\nexport const userButtonMenuItemsRenderedError =\n '<UserButton.MenuItems /> component needs to be a direct child of `<UserButton />`.';\n\nexport const userButtonMenuActionRenderedError =\n '<UserButton.Action /> component needs to be a direct child of `<UserButton.MenuItems />`.';\n\nexport const userButtonMenuLinkRenderedError =\n '<UserButton.Link /> component needs to be a direct child of `<UserButton.MenuItems />`.';\n\nexport const userButtonMenuItemLinkWrongProps =\n 'Missing props. <UserButton.Link /> component requires the following props: href, label and labelIcon.';\n\nexport const userButtonMenuItemsActionWrongsProps =\n 'Missing props. <UserButton.Action /> component requires the following props: label.';\n","import { useAssertWrappedByClerkProvider as useSharedAssertWrappedByClerkProvider } from '@clerk/shared/react';\n\nimport { errorThrower } from '../errors/errorThrower';\n\nexport const useAssertWrappedByClerkProvider = (source: string): void => {\n useSharedAssertWrappedByClerkProvider(() => {\n errorThrower.throwMissingClerkProviderError({ source });\n });\n};\n","import type {\n CreateEmailLinkFlowReturn,\n EmailAddressResource,\n SignInResource,\n SignInStartEmailLinkFlowParams,\n SignUpResource,\n StartEmailLinkFlowParams,\n} from '@clerk/shared/types';\nimport React from 'react';\n\ntype EmailLinkable = SignUpResource | EmailAddressResource | SignInResource;\ntype UseEmailLinkSignInReturn = CreateEmailLinkFlowReturn<SignInStartEmailLinkFlowParams, SignInResource>;\ntype UseEmailLinkSignUpReturn = CreateEmailLinkFlowReturn<StartEmailLinkFlowParams, SignUpResource>;\ntype UseEmailLinkEmailAddressReturn = CreateEmailLinkFlowReturn<StartEmailLinkFlowParams, EmailAddressResource>;\n\nfunction useEmailLink(resource: SignInResource): UseEmailLinkSignInReturn;\nfunction useEmailLink(resource: SignUpResource): UseEmailLinkSignUpReturn;\nfunction useEmailLink(resource: EmailAddressResource): UseEmailLinkEmailAddressReturn;\nfunction useEmailLink(\n resource: EmailLinkable,\n): UseEmailLinkSignInReturn | UseEmailLinkSignUpReturn | UseEmailLinkEmailAddressReturn {\n const { startEmailLinkFlow, cancelEmailLinkFlow } = React.useMemo(() => resource.createEmailLinkFlow(), [resource]);\n\n React.useEffect(() => {\n return cancelEmailLinkFlow;\n }, []);\n\n return {\n startEmailLinkFlow,\n cancelEmailLinkFlow,\n } as UseEmailLinkSignInReturn | UseEmailLinkSignUpReturn | UseEmailLinkEmailAddressReturn;\n}\n\nexport { useEmailLink };\n","import { eventMethodCalled } from '@clerk/shared/telemetry';\nimport type { SignInSignalValue, SignUpSignalValue } from '@clerk/shared/types';\nimport { useCallback, useSyncExternalStore } from 'react';\n\nimport { useIsomorphicClerkContext } from '../contexts/IsomorphicClerkContext';\nimport { useAssertWrappedByClerkProvider } from './useAssertWrappedByClerkProvider';\n\nfunction useClerkSignal(signal: 'signIn'): SignInSignalValue;\nfunction useClerkSignal(signal: 'signUp'): SignUpSignalValue;\nfunction useClerkSignal(signal: 'signIn' | 'signUp'): SignInSignalValue | SignUpSignalValue {\n useAssertWrappedByClerkProvider('useClerkSignal');\n\n const clerk = useIsomorphicClerkContext();\n\n switch (signal) {\n case 'signIn':\n clerk.telemetry?.record(eventMethodCalled('useSignIn', { apiVersion: '2025-11' }));\n break;\n case 'signUp':\n clerk.telemetry?.record(eventMethodCalled('useSignUp', { apiVersion: '2025-11' }));\n break;\n default:\n break;\n }\n\n const subscribe = useCallback(\n (callback: () => void) => {\n if (!clerk.loaded) {\n return () => {};\n }\n\n return clerk.__internal_state.__internal_effect(() => {\n switch (signal) {\n case 'signIn':\n clerk.__internal_state.signInSignal();\n break;\n case 'signUp':\n clerk.__internal_state.signUpSignal();\n break;\n default:\n throw new Error(`Unknown signal: ${signal}`);\n }\n callback();\n });\n },\n [clerk, clerk.loaded, clerk.__internal_state],\n );\n const getSnapshot = useCallback(() => {\n switch (signal) {\n case 'signIn':\n return clerk.__internal_state.signInSignal() as SignInSignalValue;\n case 'signUp':\n return clerk.__internal_state.signUpSignal() as SignUpSignalValue;\n default:\n throw new Error(`Unknown signal: ${signal}`);\n }\n }, [clerk.__internal_state]);\n\n const value = useSyncExternalStore(subscribe, getSnapshot, getSnapshot);\n\n return value;\n}\n\n/**\n * This hook allows you to access the Signal-based `SignIn` resource.\n *\n * @example\n * import { useSignInSignal } from \"@clerk/react/experimental\";\n *\n * function SignInForm() {\n * const { signIn, errors, fetchStatus } = useSignInSignal();\n * //\n * }\n *\n * @experimental This experimental API is subject to change.\n */\nexport function useSignIn() {\n return useClerkSignal('signIn');\n}\n\n/**\n * This hook allows you to access the Signal-based `SignUp` resource.\n *\n * @example\n * import { useSignUpSignal } from \"@clerk/react/experimental\";\n *\n * function SignUpForm() {\n * const { signUp, errors, fetchStatus } = useSignUpSignal();\n * //\n * }\n *\n * @experimental This experimental API is subject to change.\n */\nexport function useSignUp() {\n return useClerkSignal('signUp');\n}\n","export { useAuth } from './useAuth';\nexport { useEmailLink } from './useEmailLink';\nexport { useSignIn, useSignUp } from './useClerkSignal';\nexport {\n useClerk,\n useOrganization,\n useOrganizationList,\n useSessionList,\n useUser,\n useSession,\n useReverification,\n __experimental_useCheckout,\n __experimental_CheckoutProvider,\n __experimental_usePaymentElement,\n __experimental_PaymentElementProvider,\n __experimental_PaymentElement,\n} from '@clerk/shared/react';\n","import { usePortalRoot } from '@clerk/shared/react';\nimport type { LoadedClerk, Without } from '@clerk/shared/types';\nimport React from 'react';\n\nimport { useIsomorphicClerkContext } from '../contexts/IsomorphicClerkContext';\nimport { useAssertWrappedByClerkProvider } from '../hooks/useAssertWrappedByClerkProvider';\n\nexport const withClerk = <P extends { clerk: LoadedClerk; component?: string }>(\n Component: React.ComponentType<P>,\n displayNameOrOptions?: string | { component: string; renderWhileLoading?: boolean },\n) => {\n const passedDisplayedName =\n typeof displayNameOrOptions === 'string' ? displayNameOrOptions : displayNameOrOptions?.component;\n const displayName = passedDisplayedName || Component.displayName || Component.name || 'Component';\n Component.displayName = displayName;\n\n const options = typeof displayNameOrOptions === 'string' ? undefined : displayNameOrOptions;\n\n const HOC = (props: Without<P, 'clerk'>) => {\n useAssertWrappedByClerkProvider(displayName || 'withClerk');\n\n const clerk = useIsomorphicClerkContext();\n const getContainer = usePortalRoot();\n\n if (!clerk.loaded && !options?.renderWhileLoading) {\n return null;\n }\n\n return (\n <Component\n getContainer={getContainer}\n {...(props as P)}\n component={displayName}\n clerk={clerk}\n />\n );\n };\n HOC.displayName = `withClerk(${displayName})`;\n return HOC;\n};\n","import type { RoutingOptions } from '@clerk/shared/types';\n\nimport { errorThrower } from '../errors/errorThrower';\nimport { incompatibleRoutingWithPathProvidedError, noPathProvidedError } from '../errors/messages';\n\nexport function useRoutingProps<T extends RoutingOptions>(\n componentName: string,\n props: T,\n routingOptions?: RoutingOptions,\n): T {\n const path = props.path || routingOptions?.path;\n const routing = props.routing || routingOptions?.routing || 'path';\n\n if (routing === 'path') {\n if (!path) {\n return errorThrower.throw(noPathProvidedError(componentName));\n }\n\n return {\n ...routingOptions,\n ...props,\n routing: 'path',\n };\n }\n\n if (props.path) {\n return errorThrower.throw(incompatibleRoutingWithPathProvidedError(componentName));\n }\n\n return {\n ...routingOptions,\n ...props,\n path: undefined,\n };\n}\n"],"mappings":"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","names":["import_react","import_react","import_react","import_react","import_react","useSharedAssertWrappedByClerkProvider","import_react","import_telemetry","import_react","import_react","import_react","React","React"]}
|
|
1
|
+
{"version":3,"sources":["../src/internal.ts","../src/errors/errorThrower.ts","../src/components/controlComponents.tsx","../src/contexts/IsomorphicClerkContext.tsx","../src/contexts/SessionContext.tsx","../src/hooks/useAuth.ts","../src/contexts/AuthContext.ts","../src/errors/messages.ts","../src/hooks/useAssertWrappedByClerkProvider.ts","../src/hooks/useEmailLink.ts","../src/hooks/useClerkSignal.ts","../src/hooks/index.ts","../src/components/withClerk.tsx","../src/hooks/useRoutingProps.ts"],"sourcesContent":["export { setErrorThrowerOptions } from './errors/errorThrower';\nexport { MultisessionAppSupport } from './components/controlComponents';\nexport { useRoutingProps } from './hooks/useRoutingProps';\nexport { useDerivedAuth } from './hooks/useAuth';\n\nexport {\n clerkJsScriptUrl,\n buildClerkJsScriptAttributes,\n clerkUiScriptUrl,\n buildClerkUiScriptAttributes,\n setClerkJsLoadingErrorPackageName,\n} from '@clerk/shared/loadClerkJsScript';\n\nexport type { Ui } from '@clerk/ui/internal';\n","import type { ErrorThrowerOptions } from '@clerk/shared/error';\nimport { buildErrorThrower } from '@clerk/shared/error';\n\nconst errorThrower = buildErrorThrower({ packageName: '@clerk/react' });\n\nexport { errorThrower };\n\n/**\n * Overrides options of the internal errorThrower (eg setting packageName prefix).\n *\n * @internal\n */\nexport function setErrorThrowerOptions(options: ErrorThrowerOptions) {\n errorThrower.setMessages(options).setPackageName(options);\n}\n","import { deprecated } from '@clerk/shared/deprecated';\nimport type {\n HandleOAuthCallbackParams,\n PendingSessionOptions,\n ProtectProps as _ProtectProps,\n} from '@clerk/shared/types';\nimport React from 'react';\n\nimport { useIsomorphicClerkContext } from '../contexts/IsomorphicClerkContext';\nimport { useSessionContext } from '../contexts/SessionContext';\nimport { useAuth } from '../hooks';\nimport { useAssertWrappedByClerkProvider } from '../hooks/useAssertWrappedByClerkProvider';\nimport type { RedirectToSignInProps, RedirectToSignUpProps, RedirectToTasksProps, WithClerkProp } from '../types';\nimport { withClerk } from './withClerk';\n\nexport const SignedIn = ({ children, treatPendingAsSignedOut }: React.PropsWithChildren<PendingSessionOptions>) => {\n useAssertWrappedByClerkProvider('SignedIn');\n\n const { userId } = useAuth({ treatPendingAsSignedOut });\n if (userId) {\n return children;\n }\n return null;\n};\n\nexport const SignedOut = ({ children, treatPendingAsSignedOut }: React.PropsWithChildren<PendingSessionOptions>) => {\n useAssertWrappedByClerkProvider('SignedOut');\n\n const { userId } = useAuth({ treatPendingAsSignedOut });\n if (userId === null) {\n return children;\n }\n return null;\n};\n\nexport const ClerkLoaded = ({ children }: React.PropsWithChildren<unknown>) => {\n useAssertWrappedByClerkProvider('ClerkLoaded');\n\n const isomorphicClerk = useIsomorphicClerkContext();\n if (!isomorphicClerk.loaded) {\n return null;\n }\n return children;\n};\n\nexport const ClerkLoading = ({ children }: React.PropsWithChildren<unknown>) => {\n useAssertWrappedByClerkProvider('ClerkLoading');\n\n const isomorphicClerk = useIsomorphicClerkContext();\n if (isomorphicClerk.status !== 'loading') {\n return null;\n }\n return children;\n};\n\nexport const ClerkFailed = ({ children }: React.PropsWithChildren<unknown>) => {\n useAssertWrappedByClerkProvider('ClerkFailed');\n\n const isomorphicClerk = useIsomorphicClerkContext();\n if (isomorphicClerk.status !== 'error') {\n return null;\n }\n return children;\n};\n\nexport const ClerkDegraded = ({ children }: React.PropsWithChildren<unknown>) => {\n useAssertWrappedByClerkProvider('ClerkDegraded');\n\n const isomorphicClerk = useIsomorphicClerkContext();\n if (isomorphicClerk.status !== 'degraded') {\n return null;\n }\n return children;\n};\n\nexport type ProtectProps = React.PropsWithChildren<\n _ProtectProps & {\n fallback?: React.ReactNode;\n } & PendingSessionOptions\n>;\n\n/**\n * Use `<Protect/>` in order to prevent unauthenticated or unauthorized users from accessing the children passed to the component.\n *\n * Examples:\n * ```\n * <Protect permission=\"a_permission_key\" />\n * <Protect role=\"a_role_key\" />\n * <Protect condition={(has) => has({permission:\"a_permission_key\"})} />\n * <Protect condition={(has) => has({role:\"a_role_key\"})} />\n * <Protect fallback={<p>Unauthorized</p>} />\n * ```\n */\nexport const Protect = ({ children, fallback, treatPendingAsSignedOut, ...restAuthorizedParams }: ProtectProps) => {\n useAssertWrappedByClerkProvider('Protect');\n\n const { isLoaded, has, userId } = useAuth({ treatPendingAsSignedOut });\n\n /**\n * Avoid flickering children or fallback while clerk is loading sessionId or userId\n */\n if (!isLoaded) {\n return null;\n }\n\n /**\n * Fallback to UI provided by user or `null` if authorization checks failed\n */\n const unauthorized = fallback ?? null;\n\n const authorized = children;\n\n if (!userId) {\n return unauthorized;\n }\n\n /**\n * Check against the results of `has` called inside the callback\n */\n if (typeof restAuthorizedParams.condition === 'function') {\n if (restAuthorizedParams.condition(has)) {\n return authorized;\n }\n return unauthorized;\n }\n\n if (\n restAuthorizedParams.role ||\n restAuthorizedParams.permission ||\n restAuthorizedParams.feature ||\n restAuthorizedParams.plan\n ) {\n if (has(restAuthorizedParams)) {\n return authorized;\n }\n return unauthorized;\n }\n\n /**\n * If neither of the authorization params are passed behave as the `<SignedIn/>`.\n * If fallback is present render that instead of rendering nothing.\n */\n return authorized;\n};\n\nexport const RedirectToSignIn = withClerk(({ clerk, ...props }: WithClerkProp<RedirectToSignInProps>) => {\n const { client, session } = clerk;\n\n const hasSignedInSessions = (client.signedInSessions?.length ?? 0) > 0;\n\n React.useEffect(() => {\n if (session === null && hasSignedInSessions) {\n void clerk.redirectToAfterSignOut();\n } else {\n void clerk.redirectToSignIn(props);\n }\n }, []);\n\n return null;\n}, 'RedirectToSignIn');\n\nexport const RedirectToSignUp = withClerk(({ clerk, ...props }: WithClerkProp<RedirectToSignUpProps>) => {\n React.useEffect(() => {\n void clerk.redirectToSignUp(props);\n }, []);\n\n return null;\n}, 'RedirectToSignUp');\n\nexport const RedirectToTasks = withClerk(({ clerk, ...props }: WithClerkProp<RedirectToTasksProps>) => {\n React.useEffect(() => {\n void clerk.redirectToTasks(props);\n }, []);\n\n return null;\n}, 'RedirectToTasks');\n\n/**\n * @function\n * @deprecated Use [`redirectToUserProfile()`](https://clerk.com/docs/reference/javascript/clerk#redirect-to-user-profile) instead.\n */\nexport const RedirectToUserProfile = withClerk(({ clerk }) => {\n React.useEffect(() => {\n deprecated('RedirectToUserProfile', 'Use the `redirectToUserProfile()` method instead.');\n void clerk.redirectToUserProfile();\n }, []);\n\n return null;\n}, 'RedirectToUserProfile');\n\n/**\n * @function\n * @deprecated Use [`redirectToOrganizationProfile()`](https://clerk.com/docs/reference/javascript/clerk#redirect-to-organization-profile) instead.\n */\nexport const RedirectToOrganizationProfile = withClerk(({ clerk }) => {\n React.useEffect(() => {\n deprecated('RedirectToOrganizationProfile', 'Use the `redirectToOrganizationProfile()` method instead.');\n void clerk.redirectToOrganizationProfile();\n }, []);\n\n return null;\n}, 'RedirectToOrganizationProfile');\n\n/**\n * @function\n * @deprecated Use [`redirectToCreateOrganization()`](https://clerk.com/docs/reference/javascript/clerk#redirect-to-create-organization) instead.\n */\nexport const RedirectToCreateOrganization = withClerk(({ clerk }) => {\n React.useEffect(() => {\n deprecated('RedirectToCreateOrganization', 'Use the `redirectToCreateOrganization()` method instead.');\n void clerk.redirectToCreateOrganization();\n }, []);\n\n return null;\n}, 'RedirectToCreateOrganization');\n\nexport const AuthenticateWithRedirectCallback = withClerk(\n ({ clerk, ...handleRedirectCallbackParams }: WithClerkProp<HandleOAuthCallbackParams>) => {\n React.useEffect(() => {\n void clerk.handleRedirectCallback(handleRedirectCallbackParams);\n }, []);\n\n return null;\n },\n 'AuthenticateWithRedirectCallback',\n);\n\nexport const MultisessionAppSupport = ({ children }: React.PropsWithChildren<unknown>) => {\n useAssertWrappedByClerkProvider('MultisessionAppSupport');\n\n const session = useSessionContext();\n return <React.Fragment key={session ? session.id : 'no-users'}>{children}</React.Fragment>;\n};\n","import { ClerkInstanceContext, useClerkInstanceContext } from '@clerk/shared/react';\n\nimport type { IsomorphicClerk } from '../isomorphicClerk';\n\nexport const IsomorphicClerkContext = ClerkInstanceContext;\nexport const useIsomorphicClerkContext = useClerkInstanceContext as unknown as () => IsomorphicClerk;\n","export { SessionContext, useSessionContext } from '@clerk/shared/react';\n","import { createCheckAuthorization, resolveAuthState } from '@clerk/shared/authorization';\nimport { eventMethodCalled } from '@clerk/shared/telemetry';\nimport type {\n CheckAuthorizationWithCustomPermissions,\n GetToken,\n JwtPayload,\n PendingSessionOptions,\n SignOut,\n UseAuthReturn,\n} from '@clerk/shared/types';\nimport { useCallback } from 'react';\n\nimport { useAuthContext } from '../contexts/AuthContext';\nimport { useIsomorphicClerkContext } from '../contexts/IsomorphicClerkContext';\nimport { errorThrower } from '../errors/errorThrower';\nimport { invalidStateError } from '../errors/messages';\nimport { useAssertWrappedByClerkProvider } from './useAssertWrappedByClerkProvider';\nimport { createGetToken, createSignOut } from './utils';\n\n/**\n * @inline\n */\ntype UseAuthOptions = Record<string, any> | PendingSessionOptions | undefined | null;\n\n/**\n * The `useAuth()` hook provides access to the current user's authentication state and methods to manage the active session.\n *\n * > [!NOTE]\n * > To access auth data server-side, see the [`Auth` object reference doc](https://clerk.com/docs/reference/backend/types/auth-object).\n *\n * <If sdk=\"nextjs\">\n * By default, Next.js opts all routes into static rendering. If you need to opt a route or routes into dynamic rendering because you need to access the authentication data at request time, you can create a boundary by passing the `dynamic` prop to `<ClerkProvider>`. See the [guide on rendering modes](https://clerk.com/docs/guides/development/rendering-modes) for more information, including code examples.\n * </If>\n *\n * @unionReturnHeadings\n * [\"Initialization\", \"Signed out\", \"Signed in (no active organization)\", \"Signed in (with active organization)\"]\n *\n * @param [initialAuthStateOrOptions] - An object containing the initial authentication state or options for the `useAuth()` hook. If not provided, the hook will attempt to derive the state from the context. `treatPendingAsSignedOut` is a boolean that indicates whether pending sessions are considered as signed out or not. Defaults to `true`.\n *\n * @function\n *\n * @example\n *\n * The following example demonstrates how to use the `useAuth()` hook to access the current auth state, like whether the user is signed in or not. It also includes a basic example for using the `getToken()` method to retrieve a session token for fetching data from an external resource.\n *\n * <Tabs items='React,Next.js'>\n * <Tab>\n *\n * ```tsx {{ filename: 'src/pages/ExternalDataPage.tsx' }}\n * import { useAuth } from '@clerk/react'\n *\n * export default function ExternalDataPage() {\n * const { userId, sessionId, getToken, isLoaded, isSignedIn } = useAuth()\n *\n * const fetchExternalData = async () => {\n * const token = await getToken()\n *\n * // Fetch data from an external API\n * const response = await fetch('https://api.example.com/data', {\n * headers: {\n * Authorization: `Bearer ${token}`,\n * },\n * })\n *\n * return response.json()\n * }\n *\n * if (!isLoaded) {\n * return <div>Loading...</div>\n * }\n *\n * if (!isSignedIn) {\n * return <div>Sign in to view this page</div>\n * }\n *\n * return (\n * <div>\n * <p>\n * Hello, {userId}! Your current active session is {sessionId}.\n * </p>\n * <button onClick={fetchExternalData}>Fetch Data</button>\n * </div>\n * )\n * }\n * ```\n *\n * </Tab>\n * <Tab>\n *\n * {@include ../../docs/use-auth.md#nextjs-01}\n *\n * </Tab>\n * </Tabs>\n */\nexport const useAuth = (initialAuthStateOrOptions: UseAuthOptions = {}): UseAuthReturn => {\n useAssertWrappedByClerkProvider('useAuth');\n\n const { treatPendingAsSignedOut, ...rest } = initialAuthStateOrOptions ?? {};\n const initialAuthState = rest as any;\n\n const authContextFromHook = useAuthContext();\n let authContext = authContextFromHook;\n\n if (authContext.sessionId === undefined && authContext.userId === undefined) {\n authContext = initialAuthState != null ? initialAuthState : {};\n }\n\n const isomorphicClerk = useIsomorphicClerkContext();\n const getToken: GetToken = useCallback(createGetToken(isomorphicClerk), [isomorphicClerk]);\n const signOut: SignOut = useCallback(createSignOut(isomorphicClerk), [isomorphicClerk]);\n\n isomorphicClerk.telemetry?.record(eventMethodCalled('useAuth', { treatPendingAsSignedOut }));\n\n return useDerivedAuth(\n {\n ...authContext,\n getToken,\n signOut,\n },\n {\n treatPendingAsSignedOut,\n },\n );\n};\n\n/**\n * A hook that derives and returns authentication state and utility functions based on the provided auth object.\n *\n * @param authObject - An object containing authentication-related properties and functions.\n *\n * @returns A derived authentication state with helper methods. If the authentication state is invalid, an error is thrown.\n *\n * @remarks\n * This hook inspects session, user, and organization information to determine the current authentication state.\n * It returns an object that includes various properties such as whether the state is loaded, if a user is signed in,\n * session and user identifiers, Organization Roles, and a `has` function for authorization checks.\n * Additionally, it provides `signOut` and `getToken` functions if applicable.\n *\n * @example\n * ```tsx\n * const {\n * isLoaded,\n * isSignedIn,\n * userId,\n * orgId,\n * has,\n * signOut,\n * getToken\n * } = useDerivedAuth(authObject);\n * ```\n */\nexport function useDerivedAuth(\n authObject: any,\n { treatPendingAsSignedOut = true }: PendingSessionOptions = {},\n): UseAuthReturn {\n const { userId, orgId, orgRole, has, signOut, getToken, orgPermissions, factorVerificationAge, sessionClaims } =\n authObject ?? {};\n\n const derivedHas = useCallback(\n (params: Parameters<CheckAuthorizationWithCustomPermissions>[0]) => {\n if (has) {\n return has(params);\n }\n return createCheckAuthorization({\n userId,\n orgId,\n orgRole,\n orgPermissions,\n factorVerificationAge,\n features: ((sessionClaims as JwtPayload | undefined)?.fea as string) || '',\n plans: ((sessionClaims as JwtPayload | undefined)?.pla as string) || '',\n })(params);\n },\n [has, userId, orgId, orgRole, orgPermissions, factorVerificationAge, sessionClaims],\n );\n\n const payload = resolveAuthState({\n authObject: {\n ...authObject,\n getToken,\n signOut,\n has: derivedHas,\n },\n options: {\n treatPendingAsSignedOut,\n },\n });\n\n if (!payload) {\n return errorThrower.throw(invalidStateError);\n }\n\n return payload;\n}\n","import { createContextAndHook } from '@clerk/shared/react';\nimport type {\n ActClaim,\n JwtPayload,\n OrganizationCustomPermissionKey,\n OrganizationCustomRoleKey,\n SessionStatusClaim,\n} from '@clerk/shared/types';\n\nexport type AuthContextValue = {\n userId: string | null | undefined;\n sessionId: string | null | undefined;\n sessionStatus: SessionStatusClaim | null | undefined;\n sessionClaims: JwtPayload | null | undefined;\n actor: ActClaim | null | undefined;\n orgId: string | null | undefined;\n orgRole: OrganizationCustomRoleKey | null | undefined;\n orgSlug: string | null | undefined;\n orgPermissions: OrganizationCustomPermissionKey[] | null | undefined;\n factorVerificationAge: [number, number] | null;\n};\n\nexport const [AuthContext, useAuthContext] = createContextAndHook<AuthContextValue>('AuthContext');\n","export const noClerkProviderError = 'You must wrap your application in a <ClerkProvider> component.';\n\nexport const multipleClerkProvidersError =\n \"You've added multiple <ClerkProvider> components in your React component tree. Wrap your components in a single <ClerkProvider>.\";\n\nexport const multipleChildrenInButtonComponent = (name: string) =>\n `You've passed multiple children components to <${name}/>. You can only pass a single child component or text.`;\n\nexport const invalidStateError =\n 'Invalid state. Feel free to submit a bug or reach out to support here: https://clerk.com/support';\n\nexport const unsupportedNonBrowserDomainOrProxyUrlFunction =\n 'Unsupported usage of isSatellite, domain or proxyUrl. The usage of isSatellite, domain or proxyUrl as function is not supported in non-browser environments.';\n\nexport const userProfilePageRenderedError =\n '<UserProfile.Page /> component needs to be a direct child of `<UserProfile />` or `<UserButton />`.';\nexport const userProfileLinkRenderedError =\n '<UserProfile.Link /> component needs to be a direct child of `<UserProfile />` or `<UserButton />`.';\n\nexport const organizationProfilePageRenderedError =\n '<OrganizationProfile.Page /> component needs to be a direct child of `<OrganizationProfile />` or `<OrganizationSwitcher />`.';\nexport const organizationProfileLinkRenderedError =\n '<OrganizationProfile.Link /> component needs to be a direct child of `<OrganizationProfile />` or `<OrganizationSwitcher />`.';\n\nexport const customPagesIgnoredComponent = (componentName: string) =>\n `<${componentName} /> can only accept <${componentName}.Page /> and <${componentName}.Link /> as its children. Any other provided component will be ignored. Additionally, please ensure that the component is rendered in a client component.`;\n\nexport const customPageWrongProps = (componentName: string) =>\n `Missing props. <${componentName}.Page /> component requires the following props: url, label, labelIcon, alongside with children to be rendered inside the page.`;\n\nexport const customLinkWrongProps = (componentName: string) =>\n `Missing props. <${componentName}.Link /> component requires the following props: url, label and labelIcon.`;\n\nexport const useAuthHasRequiresRoleOrPermission =\n 'Missing parameters. `has` from `useAuth` requires a permission or role key to be passed. Example usage: `has({permission: \"org:posts:edit\"`';\n\nexport const noPathProvidedError = (componentName: string) =>\n `The <${componentName}/> component uses path-based routing by default unless a different routing strategy is provided using the \\`routing\\` prop. When path-based routing is used, you need to provide the path where the component is mounted on by using the \\`path\\` prop. Example: <${componentName} path={'/my-path'} />`;\n\nexport const incompatibleRoutingWithPathProvidedError = (componentName: string) =>\n `The \\`path\\` prop will only be respected when the Clerk component uses path-based routing. To resolve this error, pass \\`routing='path'\\` to the <${componentName}/> component, or drop the \\`path\\` prop to switch to hash-based routing. For more details please refer to our docs: https://clerk.com/docs`;\n\nexport const userButtonIgnoredComponent = `<UserButton /> can only accept <UserButton.UserProfilePage />, <UserButton.UserProfileLink /> and <UserButton.MenuItems /> as its children. Any other provided component will be ignored. Additionally, please ensure that the component is rendered in a client component.`;\n\nexport const customMenuItemsIgnoredComponent =\n '<UserButton.MenuItems /> component can only accept <UserButton.Action /> and <UserButton.Link /> as its children. Any other provided component will be ignored. Additionally, please ensure that the component is rendered in a client component.';\n\nexport const userButtonMenuItemsRenderedError =\n '<UserButton.MenuItems /> component needs to be a direct child of `<UserButton />`.';\n\nexport const userButtonMenuActionRenderedError =\n '<UserButton.Action /> component needs to be a direct child of `<UserButton.MenuItems />`.';\n\nexport const userButtonMenuLinkRenderedError =\n '<UserButton.Link /> component needs to be a direct child of `<UserButton.MenuItems />`.';\n\nexport const userButtonMenuItemLinkWrongProps =\n 'Missing props. <UserButton.Link /> component requires the following props: href, label and labelIcon.';\n\nexport const userButtonMenuItemsActionWrongsProps =\n 'Missing props. <UserButton.Action /> component requires the following props: label.';\n","import { useAssertWrappedByClerkProvider as useSharedAssertWrappedByClerkProvider } from '@clerk/shared/react';\n\nimport { errorThrower } from '../errors/errorThrower';\n\nexport const useAssertWrappedByClerkProvider = (source: string): void => {\n useSharedAssertWrappedByClerkProvider(() => {\n errorThrower.throwMissingClerkProviderError({ source });\n });\n};\n","import type {\n CreateEmailLinkFlowReturn,\n EmailAddressResource,\n SignInResource,\n SignInStartEmailLinkFlowParams,\n SignUpResource,\n StartEmailLinkFlowParams,\n} from '@clerk/shared/types';\nimport React from 'react';\n\ntype EmailLinkable = SignUpResource | EmailAddressResource | SignInResource;\ntype UseEmailLinkSignInReturn = CreateEmailLinkFlowReturn<SignInStartEmailLinkFlowParams, SignInResource>;\ntype UseEmailLinkSignUpReturn = CreateEmailLinkFlowReturn<StartEmailLinkFlowParams, SignUpResource>;\ntype UseEmailLinkEmailAddressReturn = CreateEmailLinkFlowReturn<StartEmailLinkFlowParams, EmailAddressResource>;\n\nfunction useEmailLink(resource: SignInResource): UseEmailLinkSignInReturn;\nfunction useEmailLink(resource: SignUpResource): UseEmailLinkSignUpReturn;\nfunction useEmailLink(resource: EmailAddressResource): UseEmailLinkEmailAddressReturn;\nfunction useEmailLink(\n resource: EmailLinkable,\n): UseEmailLinkSignInReturn | UseEmailLinkSignUpReturn | UseEmailLinkEmailAddressReturn {\n const { startEmailLinkFlow, cancelEmailLinkFlow } = React.useMemo(() => resource.createEmailLinkFlow(), [resource]);\n\n React.useEffect(() => {\n return cancelEmailLinkFlow;\n }, []);\n\n return {\n startEmailLinkFlow,\n cancelEmailLinkFlow,\n } as UseEmailLinkSignInReturn | UseEmailLinkSignUpReturn | UseEmailLinkEmailAddressReturn;\n}\n\nexport { useEmailLink };\n","import { eventMethodCalled } from '@clerk/shared/telemetry';\nimport type { SignInSignalValue, SignUpSignalValue } from '@clerk/shared/types';\nimport { useCallback, useSyncExternalStore } from 'react';\n\nimport { useIsomorphicClerkContext } from '../contexts/IsomorphicClerkContext';\nimport { useAssertWrappedByClerkProvider } from './useAssertWrappedByClerkProvider';\n\nfunction useClerkSignal(signal: 'signIn'): SignInSignalValue;\nfunction useClerkSignal(signal: 'signUp'): SignUpSignalValue;\nfunction useClerkSignal(signal: 'signIn' | 'signUp'): SignInSignalValue | SignUpSignalValue {\n useAssertWrappedByClerkProvider('useClerkSignal');\n\n const clerk = useIsomorphicClerkContext();\n\n switch (signal) {\n case 'signIn':\n clerk.telemetry?.record(eventMethodCalled('useSignIn', { apiVersion: '2025-11' }));\n break;\n case 'signUp':\n clerk.telemetry?.record(eventMethodCalled('useSignUp', { apiVersion: '2025-11' }));\n break;\n default:\n break;\n }\n\n const subscribe = useCallback(\n (callback: () => void) => {\n if (!clerk.loaded) {\n return () => {};\n }\n\n return clerk.__internal_state.__internal_effect(() => {\n switch (signal) {\n case 'signIn':\n clerk.__internal_state.signInSignal();\n break;\n case 'signUp':\n clerk.__internal_state.signUpSignal();\n break;\n default:\n throw new Error(`Unknown signal: ${signal}`);\n }\n callback();\n });\n },\n [clerk, clerk.loaded, clerk.__internal_state],\n );\n const getSnapshot = useCallback(() => {\n switch (signal) {\n case 'signIn':\n return clerk.__internal_state.signInSignal() as SignInSignalValue;\n case 'signUp':\n return clerk.__internal_state.signUpSignal() as SignUpSignalValue;\n default:\n throw new Error(`Unknown signal: ${signal}`);\n }\n }, [clerk.__internal_state]);\n\n const value = useSyncExternalStore(subscribe, getSnapshot, getSnapshot);\n\n return value;\n}\n\n/**\n * This hook allows you to access the Signal-based `SignIn` resource.\n *\n * @example\n * import { useSignInSignal } from \"@clerk/react/experimental\";\n *\n * function SignInForm() {\n * const { signIn, errors, fetchStatus } = useSignInSignal();\n * //\n * }\n *\n * @experimental This experimental API is subject to change.\n */\nexport function useSignIn() {\n return useClerkSignal('signIn');\n}\n\n/**\n * This hook allows you to access the Signal-based `SignUp` resource.\n *\n * @example\n * import { useSignUpSignal } from \"@clerk/react/experimental\";\n *\n * function SignUpForm() {\n * const { signUp, errors, fetchStatus } = useSignUpSignal();\n * //\n * }\n *\n * @experimental This experimental API is subject to change.\n */\nexport function useSignUp() {\n return useClerkSignal('signUp');\n}\n","export { useAuth } from './useAuth';\nexport { useEmailLink } from './useEmailLink';\nexport { useSignIn, useSignUp } from './useClerkSignal';\nexport {\n useClerk,\n useOrganization,\n useOrganizationList,\n useSessionList,\n useUser,\n useSession,\n useReverification,\n __experimental_useCheckout,\n __experimental_CheckoutProvider,\n __experimental_usePaymentElement,\n __experimental_PaymentElementProvider,\n __experimental_PaymentElement,\n} from '@clerk/shared/react';\n","import type { LoadedClerk, Without } from '@clerk/shared/types';\nimport React from 'react';\n\nimport { useIsomorphicClerkContext } from '../contexts/IsomorphicClerkContext';\nimport { useAssertWrappedByClerkProvider } from '../hooks/useAssertWrappedByClerkProvider';\n\nexport const withClerk = <P extends { clerk: LoadedClerk; component?: string }>(\n Component: React.ComponentType<P>,\n displayNameOrOptions?: string | { component: string; renderWhileLoading?: boolean },\n) => {\n const passedDisplayedName =\n typeof displayNameOrOptions === 'string' ? displayNameOrOptions : displayNameOrOptions?.component;\n const displayName = passedDisplayedName || Component.displayName || Component.name || 'Component';\n Component.displayName = displayName;\n\n const options = typeof displayNameOrOptions === 'string' ? undefined : displayNameOrOptions;\n\n const HOC = (props: Without<P, 'clerk'>) => {\n useAssertWrappedByClerkProvider(displayName || 'withClerk');\n\n const clerk = useIsomorphicClerkContext();\n\n if (!clerk.loaded && !options?.renderWhileLoading) {\n return null;\n }\n\n return (\n <Component\n {...(props as P)}\n component={displayName}\n clerk={clerk}\n />\n );\n };\n HOC.displayName = `withClerk(${displayName})`;\n return HOC;\n};\n","import type { RoutingOptions } from '@clerk/shared/types';\n\nimport { errorThrower } from '../errors/errorThrower';\nimport { incompatibleRoutingWithPathProvidedError, noPathProvidedError } from '../errors/messages';\n\nexport function useRoutingProps<T extends RoutingOptions>(\n componentName: string,\n props: T,\n routingOptions?: RoutingOptions,\n): T {\n const path = props.path || routingOptions?.path;\n const routing = props.routing || routingOptions?.routing || 'path';\n\n if (routing === 'path') {\n if (!path) {\n return errorThrower.throw(noPathProvidedError(componentName));\n }\n\n return {\n ...routingOptions,\n ...props,\n routing: 'path',\n };\n }\n\n if (props.path) {\n return errorThrower.throw(incompatibleRoutingWithPathProvidedError(componentName));\n }\n\n return {\n ...routingOptions,\n ...props,\n path: undefined,\n };\n}\n"],"mappings":"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","names":["import_react","import_react","import_react","import_react","import_react","useSharedAssertWrappedByClerkProvider","import_react","import_telemetry","import_react","import_react","import_react","React","React"]}
|
package/dist/internal.mjs
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
2
|
MultisessionAppSupport
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-4F7CSI4T.mjs";
|
|
4
4
|
import {
|
|
5
5
|
incompatibleRoutingWithPathProvidedError,
|
|
6
6
|
noPathProvidedError,
|
|
7
7
|
useDerivedAuth
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-J32KHXBI.mjs";
|
|
9
9
|
import {
|
|
10
10
|
errorThrower,
|
|
11
11
|
setErrorThrowerOptions
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@clerk/react",
|
|
3
|
-
"version": "6.0.0-snapshot.
|
|
3
|
+
"version": "6.0.0-snapshot.v20251217162523",
|
|
4
4
|
"description": "Clerk React library",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"clerk",
|
|
@@ -81,16 +81,16 @@
|
|
|
81
81
|
],
|
|
82
82
|
"dependencies": {
|
|
83
83
|
"tslib": "2.8.1",
|
|
84
|
-
"@clerk/shared": "4.0.0-snapshot.
|
|
84
|
+
"@clerk/shared": "4.0.0-snapshot.v20251217162523"
|
|
85
85
|
},
|
|
86
86
|
"devDependencies": {
|
|
87
87
|
"@types/semver": "^7.7.1",
|
|
88
|
-
"@clerk/localizations": "4.0.0-snapshot.
|
|
89
|
-
"@clerk/ui": "1.0.0-snapshot.
|
|
88
|
+
"@clerk/localizations": "4.0.0-snapshot.v20251217162523",
|
|
89
|
+
"@clerk/ui": "1.0.0-snapshot.v20251217162523"
|
|
90
90
|
},
|
|
91
91
|
"peerDependencies": {
|
|
92
|
-
"react": "^18.0.0 || ^19.0.
|
|
93
|
-
"react-dom": "^18.0.0 || ^19.0.
|
|
92
|
+
"react": "^18.0.0 || ^19.0.3 || ^19.1.4 || ^19.2.3 || ^19.3.0-0",
|
|
93
|
+
"react-dom": "^18.0.0 || ^19.0.3 || ^19.1.4 || ^19.2.3 || ^19.3.0-0"
|
|
94
94
|
},
|
|
95
95
|
"engines": {
|
|
96
96
|
"node": ">=20.9.0"
|
|
File without changes
|
|
File without changes
|