@clerk/react-router 3.4.8-snapshot.v20260622234151 → 3.5.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.
- package/dist/client/ReactRouterClerkProvider.js +1 -1
- package/dist/server/clerkClient.js +1 -1
- package/dist/server/clerkMiddleware.d.ts +2 -7
- package/dist/server/clerkMiddleware.js +2 -7
- package/dist/server/clerkMiddleware.js.map +1 -1
- package/dist/server/utils.d.ts +9 -6
- package/dist/server/utils.js +1 -2
- package/dist/server/utils.js.map +1 -1
- package/dist/utils/env.d.ts +1 -3
- package/dist/utils/env.js.map +1 -1
- package/package.json +5 -5
|
@@ -8,7 +8,7 @@ import React from "react";
|
|
|
8
8
|
//#region src/client/ReactRouterClerkProvider.tsx
|
|
9
9
|
const SDK_METADATA = {
|
|
10
10
|
name: "@clerk/react-router",
|
|
11
|
-
version: "3.
|
|
11
|
+
version: "3.5.0"
|
|
12
12
|
};
|
|
13
13
|
/**
|
|
14
14
|
* React Router hydration errors should not stop Clerk navigation from working, as the components mount only after
|
|
@@ -16,14 +16,9 @@ declare const requestStateContext: import("react-router").RouterContext<RequestS
|
|
|
16
16
|
* It checks the request's cookies and headers for a session JWT and, if found,
|
|
17
17
|
* attaches the Auth object to a context.
|
|
18
18
|
*
|
|
19
|
-
*
|
|
20
|
-
* // react-router.config.ts
|
|
21
|
-
* export default {
|
|
22
|
-
* future: {
|
|
23
|
-
* v8_middleware: true,
|
|
24
|
-
* },
|
|
25
|
-
* }
|
|
19
|
+
* If you're using React Router v7, enable the v8_middleware future flag in your react-router.config.ts file.
|
|
26
20
|
*
|
|
21
|
+
* @example
|
|
27
22
|
* // root.tsx
|
|
28
23
|
* export const middleware: Route.MiddlewareFunction[] = [clerkMiddleware()]
|
|
29
24
|
*/
|
|
@@ -14,14 +14,9 @@ const requestStateContext = createContext(null);
|
|
|
14
14
|
* It checks the request's cookies and headers for a session JWT and, if found,
|
|
15
15
|
* attaches the Auth object to a context.
|
|
16
16
|
*
|
|
17
|
-
*
|
|
18
|
-
* // react-router.config.ts
|
|
19
|
-
* export default {
|
|
20
|
-
* future: {
|
|
21
|
-
* v8_middleware: true,
|
|
22
|
-
* },
|
|
23
|
-
* }
|
|
17
|
+
* If you're using React Router v7, enable the v8_middleware future flag in your react-router.config.ts file.
|
|
24
18
|
*
|
|
19
|
+
* @example
|
|
25
20
|
* // root.tsx
|
|
26
21
|
* export const middleware: Route.MiddlewareFunction[] = [clerkMiddleware()]
|
|
27
22
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clerkMiddleware.js","names":[],"sources":["../../src/server/clerkMiddleware.ts"],"sourcesContent":["import type { AuthObject } from '@clerk/backend';\nimport type { RequestState } from '@clerk/backend/internal';\nimport { AuthStatus, constants, createClerkRequest } from '@clerk/backend/internal';\nimport { handleNetlifyCacheInDevInstance } from '@clerk/shared/netlifyCacheHandler';\nimport type { PendingSessionOptions } from '@clerk/shared/types';\nimport type { MiddlewareFunction } from 'react-router';\nimport { createContext } from 'react-router';\n\nimport { clerkClient } from './clerkClient';\nimport { resolveKeysWithKeylessFallback } from './keyless/utils';\nimport { loadOptions } from './loadOptions';\nimport type { AdditionalStateOptions, ClerkMiddlewareOptions } from './types';\nimport { patchRequest } from './utils';\n\ntype RequestStateContextValue = {\n requestState: RequestState<any>;\n additionalState: AdditionalStateOptions;\n};\n\nexport const authFnContext = createContext<((options?: PendingSessionOptions) => AuthObject) | null>(null);\nexport const requestStateContext = createContext<RequestStateContextValue | null>(null);\n\n/**\n * Middleware that integrates Clerk authentication into your React Router application.\n * It checks the request's cookies and headers for a session JWT and, if found,\n * attaches the Auth object to a context.\n *\n *
|
|
1
|
+
{"version":3,"file":"clerkMiddleware.js","names":[],"sources":["../../src/server/clerkMiddleware.ts"],"sourcesContent":["import type { AuthObject } from '@clerk/backend';\nimport type { RequestState } from '@clerk/backend/internal';\nimport { AuthStatus, constants, createClerkRequest } from '@clerk/backend/internal';\nimport { handleNetlifyCacheInDevInstance } from '@clerk/shared/netlifyCacheHandler';\nimport type { PendingSessionOptions } from '@clerk/shared/types';\nimport type { MiddlewareFunction } from 'react-router';\nimport { createContext } from 'react-router';\n\nimport { clerkClient } from './clerkClient';\nimport { resolveKeysWithKeylessFallback } from './keyless/utils';\nimport { loadOptions } from './loadOptions';\nimport type { AdditionalStateOptions, ClerkMiddlewareOptions } from './types';\nimport { patchRequest } from './utils';\n\ntype RequestStateContextValue = {\n requestState: RequestState<any>;\n additionalState: AdditionalStateOptions;\n};\n\nexport const authFnContext = createContext<((options?: PendingSessionOptions) => AuthObject) | null>(null);\nexport const requestStateContext = createContext<RequestStateContextValue | null>(null);\n\n/**\n * Middleware that integrates Clerk authentication into your React Router application.\n * It checks the request's cookies and headers for a session JWT and, if found,\n * attaches the Auth object to a context.\n *\n * If you're using React Router v7, enable the v8_middleware future flag in your react-router.config.ts file.\n *\n * @example\n * // root.tsx\n * export const middleware: Route.MiddlewareFunction[] = [clerkMiddleware()]\n */\nexport const clerkMiddleware = (options?: ClerkMiddlewareOptions): MiddlewareFunction<Response> => {\n return async (args, next) => {\n const clerkRequest = createClerkRequest(patchRequest(args.request));\n const loadedOptions = loadOptions(args, options);\n\n const {\n publishableKey,\n secretKey,\n claimUrl: __keylessClaimUrl,\n apiKeysUrl: __keylessApiKeysUrl,\n } = await resolveKeysWithKeylessFallback(loadedOptions.publishableKey, loadedOptions.secretKey, args, options);\n\n if (publishableKey) {\n loadedOptions.publishableKey = publishableKey;\n }\n if (secretKey) {\n loadedOptions.secretKey = secretKey;\n }\n\n // Pick only the properties needed by authenticateRequest.\n // Used when manually providing options to the middleware.\n const {\n apiUrl,\n jwtKey,\n proxyUrl,\n isSatellite,\n domain,\n machineSecretKey,\n audience,\n authorizedParties,\n signInUrl,\n signUpUrl,\n organizationSyncOptions,\n } = loadedOptions;\n\n const requestState = await clerkClient(args, options).authenticateRequest(clerkRequest, {\n apiUrl,\n secretKey: loadedOptions.secretKey,\n jwtKey,\n proxyUrl,\n isSatellite,\n domain,\n publishableKey: loadedOptions.publishableKey,\n machineSecretKey,\n audience,\n authorizedParties,\n organizationSyncOptions,\n signInUrl,\n signUpUrl,\n acceptsToken: 'any',\n });\n\n const locationHeader = requestState.headers.get(constants.Headers.Location);\n if (locationHeader) {\n handleNetlifyCacheInDevInstance({\n locationHeader,\n requestStateHeaders: requestState.headers,\n publishableKey: requestState.publishableKey,\n });\n // Trigger a handshake redirect\n return new Response(null, { status: 307, headers: requestState.headers });\n }\n\n if (requestState.status === AuthStatus.Handshake) {\n throw new Error('Clerk: handshake status without redirect');\n }\n\n args.context.set(authFnContext, (opts?: PendingSessionOptions) => requestState.toAuth(opts));\n args.context.set(requestStateContext, {\n requestState,\n additionalState: {\n __keylessClaimUrl,\n __keylessApiKeysUrl,\n signInForceRedirectUrl: loadedOptions.signInForceRedirectUrl,\n signUpForceRedirectUrl: loadedOptions.signUpForceRedirectUrl,\n signInFallbackRedirectUrl: loadedOptions.signInFallbackRedirectUrl,\n signUpFallbackRedirectUrl: loadedOptions.signUpFallbackRedirectUrl,\n },\n });\n\n const response = await next();\n\n if (requestState.headers) {\n requestState.headers.forEach((value, key) => {\n response.headers.append(key, value);\n });\n }\n\n return response;\n };\n};\n"],"mappings":";;;;;;;;;AAmBA,MAAa,gBAAgB,cAAwE,IAAI;AACzG,MAAa,sBAAsB,cAA+C,IAAI;;;;;;;;;;;;AAatF,MAAa,mBAAmB,YAAmE;CACjG,OAAO,OAAO,MAAM,SAAS;EAC3B,MAAM,eAAe,mBAAmB,aAAa,KAAK,OAAO,CAAC;EAClE,MAAM,gBAAgB,YAAY,MAAM,OAAO;EAE/C,MAAM,EACJ,gBACA,WACA,UAAU,mBACV,YAAY,wBACV,MAAM,+BAA+B,cAAc,gBAAgB,cAAc,WAAW,MAAM,OAAO;EAE7G,IAAI,gBACF,cAAc,iBAAiB;EAEjC,IAAI,WACF,cAAc,YAAY;EAK5B,MAAM,EACJ,QACA,QACA,UACA,aACA,QACA,kBACA,UACA,mBACA,WACA,WACA,4BACE;EAEJ,MAAM,eAAe,MAAM,YAAY,MAAM,OAAO,CAAC,CAAC,oBAAoB,cAAc;GACtF;GACA,WAAW,cAAc;GACzB;GACA;GACA;GACA;GACA,gBAAgB,cAAc;GAC9B;GACA;GACA;GACA;GACA;GACA;GACA,cAAc;EAChB,CAAC;EAED,MAAM,iBAAiB,aAAa,QAAQ,IAAI,UAAU,QAAQ,QAAQ;EAC1E,IAAI,gBAAgB;GAClB,gCAAgC;IAC9B;IACA,qBAAqB,aAAa;IAClC,gBAAgB,aAAa;GAC/B,CAAC;GAED,OAAO,IAAI,SAAS,MAAM;IAAE,QAAQ;IAAK,SAAS,aAAa;GAAQ,CAAC;EAC1E;EAEA,IAAI,aAAa,WAAW,WAAW,WACrC,MAAM,IAAI,MAAM,0CAA0C;EAG5D,KAAK,QAAQ,IAAI,gBAAgB,SAAiC,aAAa,OAAO,IAAI,CAAC;EAC3F,KAAK,QAAQ,IAAI,qBAAqB;GACpC;GACA,iBAAiB;IACf;IACA;IACA,wBAAwB,cAAc;IACtC,wBAAwB,cAAc;IACtC,2BAA2B,cAAc;IACzC,2BAA2B,cAAc;GAC3C;EACF,CAAC;EAED,MAAM,WAAW,MAAM,KAAK;EAE5B,IAAI,aAAa,SACf,aAAa,QAAQ,SAAS,OAAO,QAAQ;GAC3C,SAAS,QAAQ,OAAO,KAAK,KAAK;EACpC,CAAC;EAGH,OAAO;CACT;AACF"}
|
package/dist/server/utils.d.ts
CHANGED
|
@@ -1,25 +1,28 @@
|
|
|
1
1
|
import { t as AdditionalStateOptions } from "../types-CkBFvMvW.js";
|
|
2
|
-
import {
|
|
2
|
+
import { UNSAFE_DataWithResponseInit } from "react-router";
|
|
3
3
|
import { RequestState } from "@clerk/backend/internal";
|
|
4
4
|
|
|
5
5
|
//#region src/server/utils.d.ts
|
|
6
|
+
type ReactRouterContext = Record<string, any> & {
|
|
7
|
+
get?: <T>(context: unknown) => T | undefined;
|
|
8
|
+
set?: <T>(context: unknown, value: T) => void;
|
|
9
|
+
};
|
|
6
10
|
declare function isResponse(value: any): value is Response;
|
|
7
11
|
declare function isDataWithResponseInit(value: any): value is UNSAFE_DataWithResponseInit<unknown>;
|
|
8
12
|
declare function isRedirect(res: Response): boolean;
|
|
9
13
|
declare const parseCookies: (req: Request) => Record<string, string | undefined>;
|
|
10
14
|
declare function assertValidHandlerResult(val: any, error?: string): asserts val is Record<string, unknown> | null;
|
|
11
15
|
/**
|
|
12
|
-
* `get` and `set` properties
|
|
13
|
-
* See: https://reactrouter.com/upgrading/future#futurev8_middleware
|
|
16
|
+
* `get` and `set` properties are available when React Router middleware is enabled.
|
|
14
17
|
*/
|
|
15
|
-
declare const IsOptIntoMiddleware: (context:
|
|
16
|
-
declare const injectRequestStateIntoResponse: (response: Response, requestState: RequestState, context:
|
|
18
|
+
declare const IsOptIntoMiddleware: (context: ReactRouterContext) => context is ReactRouterContext & Required<Pick<ReactRouterContext, "get" | "set">>;
|
|
19
|
+
declare const injectRequestStateIntoResponse: (response: Response, requestState: RequestState, context: ReactRouterContext, additionalStateOptions?: AdditionalStateOptions, includeClerkHeaders?: boolean) => Promise<Response>;
|
|
17
20
|
/**
|
|
18
21
|
* Returns the clerk state object and observability headers to be injected into a loader response.
|
|
19
22
|
*
|
|
20
23
|
* @internal
|
|
21
24
|
*/
|
|
22
|
-
declare function getResponseClerkState(requestState: RequestState, context:
|
|
25
|
+
declare function getResponseClerkState(requestState: RequestState, context: ReactRouterContext, additionalStateOptions?: AdditionalStateOptions): {
|
|
23
26
|
clerkState: {
|
|
24
27
|
clerkState: {
|
|
25
28
|
__internal_clerk_state: any;
|
package/dist/server/utils.js
CHANGED
|
@@ -20,8 +20,7 @@ function assertValidHandlerResult(val, error) {
|
|
|
20
20
|
if (val !== null && typeof val !== "object" || Array.isArray(val)) throw new Error(error || "");
|
|
21
21
|
}
|
|
22
22
|
/**
|
|
23
|
-
* `get` and `set` properties
|
|
24
|
-
* See: https://reactrouter.com/upgrading/future#futurev8_middleware
|
|
23
|
+
* `get` and `set` properties are available when React Router middleware is enabled.
|
|
25
24
|
*/
|
|
26
25
|
const IsOptIntoMiddleware = (context) => {
|
|
27
26
|
return "get" in context && "set" in context;
|
package/dist/server/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","names":["parseCookie"],"sources":["../../src/server/utils.ts"],"sourcesContent":["import type { RequestState } from '@clerk/backend/internal';\nimport { constants, debugRequestState } from '@clerk/backend/internal';\nimport { parse as parseCookie } from 'cookie';\nimport type {
|
|
1
|
+
{"version":3,"file":"utils.js","names":["parseCookie"],"sources":["../../src/server/utils.ts"],"sourcesContent":["import type { RequestState } from '@clerk/backend/internal';\nimport { constants, debugRequestState } from '@clerk/backend/internal';\nimport { parse as parseCookie } from 'cookie';\nimport type { UNSAFE_DataWithResponseInit } from 'react-router';\n\nimport { getPublicEnvVariables } from '../utils/env';\nimport { canUseKeyless } from '../utils/feature-flags';\nimport type { AdditionalStateOptions } from './types';\n\n// AppLoadContext was removed from React Router v8. Keep a structural type for the context shape we use.\ntype ReactRouterContext = Record<string, any> & {\n get?: <T>(context: unknown) => T | undefined;\n set?: <T>(context: unknown, value: T) => void;\n};\n\nexport function isResponse(value: any): value is Response {\n return (\n value != null &&\n typeof value.status === 'number' &&\n typeof value.statusText === 'string' &&\n typeof value.headers === 'object' &&\n typeof value.body !== 'undefined'\n );\n}\n\nexport function isDataWithResponseInit(value: any): value is UNSAFE_DataWithResponseInit<unknown> {\n return (\n typeof value === 'object' &&\n value != null &&\n 'type' in value &&\n 'data' in value &&\n 'init' in value &&\n value.type === 'DataWithResponseInit'\n );\n}\n\nexport function isRedirect(res: Response): boolean {\n return res.status >= 300 && res.status < 400;\n}\n\nexport const parseCookies = (req: Request) => {\n return parseCookie(req.headers.get('cookie') || '');\n};\n\nexport function assertValidHandlerResult(val: any, error?: string): asserts val is Record<string, unknown> | null {\n if ((val !== null && typeof val !== 'object') || Array.isArray(val)) {\n throw new Error(error || '');\n }\n}\n\n/**\n * `get` and `set` properties are available when React Router middleware is enabled.\n */\nexport const IsOptIntoMiddleware = (\n context: ReactRouterContext,\n): context is ReactRouterContext & Required<Pick<ReactRouterContext, 'get' | 'set'>> => {\n return 'get' in context && 'set' in context;\n};\n\nexport const injectRequestStateIntoResponse = async (\n response: Response,\n requestState: RequestState,\n context: ReactRouterContext,\n additionalStateOptions: AdditionalStateOptions = {},\n includeClerkHeaders = false,\n) => {\n const clone = new Response(response.body, response);\n const data = await clone.json();\n\n const { clerkState, headers } = getResponseClerkState(requestState, context, additionalStateOptions);\n\n // set the correct content-type header in case the user returned a `Response` directly\n clone.headers.set(constants.Headers.ContentType, constants.ContentTypes.Json);\n\n // Only add Clerk headers if requested\n if (includeClerkHeaders) {\n headers.forEach((value, key) => {\n clone.headers.append(key, value);\n });\n }\n\n return Response.json({ ...(data || {}), ...clerkState }, clone);\n};\n\n/**\n * Returns the clerk state object and observability headers to be injected into a loader response.\n *\n * @internal\n */\nexport function getResponseClerkState(\n requestState: RequestState,\n context: ReactRouterContext,\n additionalStateOptions: AdditionalStateOptions = {},\n) {\n const { reason, message, isSignedIn, ...rest } = requestState;\n const envVars = getPublicEnvVariables(context);\n const { __keylessClaimUrl, __keylessApiKeysUrl, ...redirectUrlOptions } = additionalStateOptions;\n\n const baseState: Record<string, unknown> = {\n __clerk_ssr_state: rest.toAuth(),\n __publishableKey: requestState.publishableKey,\n __proxyUrl: requestState.proxyUrl,\n __domain: requestState.domain,\n __isSatellite: requestState.isSatellite,\n __signInUrl: requestState.signInUrl,\n __signUpUrl: requestState.signUpUrl,\n __signInForceRedirectUrl: redirectUrlOptions.signInForceRedirectUrl,\n __signUpForceRedirectUrl: redirectUrlOptions.signUpForceRedirectUrl,\n __signInFallbackRedirectUrl: redirectUrlOptions.signInFallbackRedirectUrl,\n __signUpFallbackRedirectUrl: redirectUrlOptions.signUpFallbackRedirectUrl,\n __clerk_debug: debugRequestState(requestState),\n __clerkJSUrl: envVars.clerkJsUrl,\n __clerkJSVersion: envVars.clerkJsVersion,\n __clerkUIUrl: envVars.clerkUIUrl,\n __clerkUIVersion: envVars.clerkUIVersion,\n __prefetchUI: envVars.prefetchUI,\n __telemetryDisabled: envVars.telemetryDisabled,\n __telemetryDebug: envVars.telemetryDebug,\n __unsafeDisableDevelopmentModeConsoleWarning: envVars.unsafeDisableDevelopmentModeConsoleWarning,\n };\n\n if (canUseKeyless && __keylessClaimUrl) {\n baseState.__keylessClaimUrl = __keylessClaimUrl;\n baseState.__keylessApiKeysUrl = __keylessApiKeysUrl;\n }\n\n const clerkState = wrapWithClerkState(baseState);\n\n return {\n clerkState,\n headers: requestState.headers,\n };\n}\n\n/**\n * Wraps obscured clerk internals with a readable `clerkState` key.\n * This is intended to be passed by the user into <ClerkProvider>\n *\n * @internal\n */\nexport const wrapWithClerkState = (data: any) => {\n return { clerkState: { __internal_clerk_state: { ...data } } };\n};\n\n/**\n * Patches request to avoid duplex issues with unidici\n * For more information, see:\n * https://github.com/nodejs/node/issues/46221\n * https://github.com/whatwg/fetch/pull/1457\n * @internal\n */\nexport const patchRequest = (request: Request) => {\n // Omit `signal` from the clone: Node 24's bundled undici tightened the\n // instanceof AbortSignal check, which rejects cross-realm signals (e.g.\n // those carried by framework Request subclasses).\n const clonedRequest = new Request(request.url, {\n headers: request.headers,\n method: request.method,\n redirect: request.redirect,\n cache: request.cache,\n });\n\n // If duplex is not set, set it to 'half' to avoid duplex issues with unidici\n if (clonedRequest.method !== 'GET' && clonedRequest.body !== null && !('duplex' in clonedRequest)) {\n (clonedRequest as unknown as { duplex: 'half' }).duplex = 'half';\n }\n\n return clonedRequest;\n};\n"],"mappings":";;;;;;AAeA,SAAgB,WAAW,OAA+B;CACxD,OACE,SAAS,QACT,OAAO,MAAM,WAAW,YACxB,OAAO,MAAM,eAAe,YAC5B,OAAO,MAAM,YAAY,YACzB,OAAO,MAAM,SAAS;AAE1B;AAEA,SAAgB,uBAAuB,OAA2D;CAChG,OACE,OAAO,UAAU,YACjB,SAAS,QACT,UAAU,SACV,UAAU,SACV,UAAU,SACV,MAAM,SAAS;AAEnB;AAEA,SAAgB,WAAW,KAAwB;CACjD,OAAO,IAAI,UAAU,OAAO,IAAI,SAAS;AAC3C;AAEA,MAAa,gBAAgB,QAAiB;CAC5C,OAAOA,MAAY,IAAI,QAAQ,IAAI,QAAQ,KAAK,EAAE;AACpD;AAEA,SAAgB,yBAAyB,KAAU,OAA+D;CAChH,IAAK,QAAQ,QAAQ,OAAO,QAAQ,YAAa,MAAM,QAAQ,GAAG,GAChE,MAAM,IAAI,MAAM,SAAS,EAAE;AAE/B;;;;AAKA,MAAa,uBACX,YACsF;CACtF,OAAO,SAAS,WAAW,SAAS;AACtC;AAEA,MAAa,iCAAiC,OAC5C,UACA,cACA,SACA,yBAAiD,CAAC,GAClD,sBAAsB,UACnB;CACH,MAAM,QAAQ,IAAI,SAAS,SAAS,MAAM,QAAQ;CAClD,MAAM,OAAO,MAAM,MAAM,KAAK;CAE9B,MAAM,EAAE,YAAY,YAAY,sBAAsB,cAAc,SAAS,sBAAsB;CAGnG,MAAM,QAAQ,IAAI,UAAU,QAAQ,aAAa,UAAU,aAAa,IAAI;CAG5E,IAAI,qBACF,QAAQ,SAAS,OAAO,QAAQ;EAC9B,MAAM,QAAQ,OAAO,KAAK,KAAK;CACjC,CAAC;CAGH,OAAO,SAAS,KAAK;EAAE,GAAI,QAAQ,CAAC;EAAI,GAAG;CAAW,GAAG,KAAK;AAChE;;;;;;AAOA,SAAgB,sBACd,cACA,SACA,yBAAiD,CAAC,GAClD;CACA,MAAM,EAAE,QAAQ,SAAS,YAAY,GAAG,SAAS;CACjD,MAAM,UAAU,sBAAsB,OAAO;CAC7C,MAAM,EAAE,mBAAmB,qBAAqB,GAAG,uBAAuB;CAE1E,MAAM,YAAqC;EACzC,mBAAmB,KAAK,OAAO;EAC/B,kBAAkB,aAAa;EAC/B,YAAY,aAAa;EACzB,UAAU,aAAa;EACvB,eAAe,aAAa;EAC5B,aAAa,aAAa;EAC1B,aAAa,aAAa;EAC1B,0BAA0B,mBAAmB;EAC7C,0BAA0B,mBAAmB;EAC7C,6BAA6B,mBAAmB;EAChD,6BAA6B,mBAAmB;EAChD,eAAe,kBAAkB,YAAY;EAC7C,cAAc,QAAQ;EACtB,kBAAkB,QAAQ;EAC1B,cAAc,QAAQ;EACtB,kBAAkB,QAAQ;EAC1B,cAAc,QAAQ;EACtB,qBAAqB,QAAQ;EAC7B,kBAAkB,QAAQ;EAC1B,8CAA8C,QAAQ;CACxD;CAEA,IAAI,iBAAiB,mBAAmB;EACtC,UAAU,oBAAoB;EAC9B,UAAU,sBAAsB;CAClC;CAIA,OAAO;EACL,YAHiB,mBAAmB,SAG3B;EACT,SAAS,aAAa;CACxB;AACF;;;;;;;AAQA,MAAa,sBAAsB,SAAc;CAC/C,OAAO,EAAE,YAAY,EAAE,wBAAwB,EAAE,GAAG,KAAK,EAAE,EAAE;AAC/D;;;;;;;;AASA,MAAa,gBAAgB,YAAqB;CAIhD,MAAM,gBAAgB,IAAI,QAAQ,QAAQ,KAAK;EAC7C,SAAS,QAAQ;EACjB,QAAQ,QAAQ;EAChB,UAAU,QAAQ;EAClB,OAAO,QAAQ;CACjB,CAAC;CAGD,IAAI,cAAc,WAAW,SAAS,cAAc,SAAS,QAAQ,EAAE,YAAY,gBACjF,AAAC,cAAgD,SAAS;CAG5D,OAAO;AACT"}
|
package/dist/utils/env.d.ts
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
import { AppLoadContext } from "react-router";
|
|
2
|
-
|
|
3
1
|
//#region src/utils/env.d.ts
|
|
4
|
-
declare const getPublicEnvVariables: (context:
|
|
2
|
+
declare const getPublicEnvVariables: (context: object | undefined) => {
|
|
5
3
|
publishableKey: string;
|
|
6
4
|
domain: string;
|
|
7
5
|
isSatellite: boolean;
|
package/dist/utils/env.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env.js","names":[],"sources":["../../src/utils/env.ts"],"sourcesContent":["import { getEnvVariable } from '@clerk/shared/getEnvVariable';\nimport { isTruthy } from '@clerk/shared/underscore';\
|
|
1
|
+
{"version":3,"file":"env.js","names":[],"sources":["../../src/utils/env.ts"],"sourcesContent":["import { getEnvVariable } from '@clerk/shared/getEnvVariable';\nimport { isTruthy } from '@clerk/shared/underscore';\n\nexport const getPublicEnvVariables = (context: object | undefined) => {\n const getValue = (name: string): string => {\n return (\n getEnvVariable(`VITE_${name}`, context as Record<string, any>) ||\n getEnvVariable(name, context as Record<string, any>)\n );\n };\n\n return {\n publishableKey: getValue('CLERK_PUBLISHABLE_KEY'),\n domain: getValue('CLERK_DOMAIN'),\n isSatellite: isTruthy(getValue('CLERK_IS_SATELLITE')),\n proxyUrl: getValue('CLERK_PROXY_URL'),\n signInUrl: getValue('CLERK_SIGN_IN_URL'),\n signUpUrl: getValue('CLERK_SIGN_UP_URL'),\n clerkJsUrl: getValue('CLERK_JS_URL'),\n clerkJsVersion: getValue('CLERK_JS_VERSION'),\n clerkUIUrl: getValue('CLERK_UI_URL'),\n clerkUIVersion: getValue('CLERK_UI_VERSION'),\n prefetchUI: getValue('CLERK_PREFETCH_UI') === 'false' ? false : undefined,\n telemetryDisabled: isTruthy(getValue('CLERK_TELEMETRY_DISABLED')),\n telemetryDebug: isTruthy(getValue('CLERK_TELEMETRY_DEBUG')),\n unsafeDisableDevelopmentModeConsoleWarning: isTruthy(\n getValue('CLERK_UNSAFE_DISABLE_DEVELOPMENT_MODE_CONSOLE_WARNING'),\n ),\n signInForceRedirectUrl: getValue('CLERK_SIGN_IN_FORCE_REDIRECT_URL'),\n signUpForceRedirectUrl: getValue('CLERK_SIGN_UP_FORCE_REDIRECT_URL'),\n signInFallbackRedirectUrl: getValue('CLERK_SIGN_IN_FALLBACK_REDIRECT_URL'),\n signUpFallbackRedirectUrl: getValue('CLERK_SIGN_UP_FALLBACK_REDIRECT_URL'),\n afterSignInUrl: getValue('CLERK_AFTER_SIGN_IN_URL'),\n afterSignUpUrl: getValue('CLERK_AFTER_SIGN_UP_URL'),\n newSubscriptionRedirectUrl: getValue('CLERK_CHECKOUT_CONTINUE_URL'),\n };\n};\n"],"mappings":";;;;AAGA,MAAa,yBAAyB,YAAgC;CACpE,MAAM,YAAY,SAAyB;EACzC,OACE,eAAe,QAAQ,QAAQ,OAA8B,KAC7D,eAAe,MAAM,OAA8B;CAEvD;CAEA,OAAO;EACL,gBAAgB,SAAS,uBAAuB;EAChD,QAAQ,SAAS,cAAc;EAC/B,aAAa,SAAS,SAAS,oBAAoB,CAAC;EACpD,UAAU,SAAS,iBAAiB;EACpC,WAAW,SAAS,mBAAmB;EACvC,WAAW,SAAS,mBAAmB;EACvC,YAAY,SAAS,cAAc;EACnC,gBAAgB,SAAS,kBAAkB;EAC3C,YAAY,SAAS,cAAc;EACnC,gBAAgB,SAAS,kBAAkB;EAC3C,YAAY,SAAS,mBAAmB,MAAM,UAAU,QAAQ;EAChE,mBAAmB,SAAS,SAAS,0BAA0B,CAAC;EAChE,gBAAgB,SAAS,SAAS,uBAAuB,CAAC;EAC1D,4CAA4C,SAC1C,SAAS,uDAAuD,CAClE;EACA,wBAAwB,SAAS,kCAAkC;EACnE,wBAAwB,SAAS,kCAAkC;EACnE,2BAA2B,SAAS,qCAAqC;EACzE,2BAA2B,SAAS,qCAAqC;EACzE,gBAAgB,SAAS,yBAAyB;EAClD,gBAAgB,SAAS,yBAAyB;EAClD,4BAA4B,SAAS,6BAA6B;CACpE;AACF"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@clerk/react-router",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.5.0",
|
|
4
4
|
"description": "Clerk SDK for React Router",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"clerk",
|
|
@@ -87,9 +87,9 @@
|
|
|
87
87
|
"dependencies": {
|
|
88
88
|
"cookie": "1.0.2",
|
|
89
89
|
"tslib": "2.8.1",
|
|
90
|
-
"@clerk/backend": "3.8.3
|
|
91
|
-
"@clerk/react": "6.11.0
|
|
92
|
-
"@clerk/shared": "4.21.0
|
|
90
|
+
"@clerk/backend": "^3.8.3",
|
|
91
|
+
"@clerk/react": "^6.11.0",
|
|
92
|
+
"@clerk/shared": "^4.21.0"
|
|
93
93
|
},
|
|
94
94
|
"devDependencies": {
|
|
95
95
|
"esbuild-plugin-file-path-extensions": "^2.1.4",
|
|
@@ -98,7 +98,7 @@
|
|
|
98
98
|
"peerDependencies": {
|
|
99
99
|
"react": "^18.0.0 || ~19.0.3 || ~19.1.4 || ~19.2.3 || ~19.3.0-0",
|
|
100
100
|
"react-dom": "^18.0.0 || ~19.0.3 || ~19.1.4 || ~19.2.3 || ~19.3.0-0",
|
|
101
|
-
"react-router": "^7.9.0"
|
|
101
|
+
"react-router": "^7.9.0 || ^8.0.0"
|
|
102
102
|
},
|
|
103
103
|
"engines": {
|
|
104
104
|
"node": ">=20.9.0"
|