@clerk/tanstack-react-start 1.6.0-snapshot.v20260921144734 → 1.6.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/ClerkProvider.js +1 -1
- package/dist/server/clerkClient.js +1 -1
- package/dist/server/clerkMiddleware.js +1 -6
- package/dist/server/clerkMiddleware.js.map +1 -1
- package/dist/server/constants.js +1 -1
- package/dist/server/loadOptions.js +1 -3
- package/dist/server/loadOptions.js.map +1 -1
- package/package.json +4 -4
- package/dist/utils/feature-flags.d.ts +0 -13
- package/dist/utils/feature-flags.js +0 -19
- package/dist/utils/feature-flags.js.map +0 -1
|
@@ -12,7 +12,7 @@ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
|
12
12
|
//#region src/client/ClerkProvider.tsx
|
|
13
13
|
const SDK_METADATA = {
|
|
14
14
|
name: "@clerk/tanstack-react-start",
|
|
15
|
-
version: "1.6.0
|
|
15
|
+
version: "1.6.0"
|
|
16
16
|
};
|
|
17
17
|
const awaitableNavigateRef = { current: void 0 };
|
|
18
18
|
function ClerkProvider({ children, ...providerProps }) {
|
|
@@ -10,7 +10,7 @@ const clerkClient = (options) => {
|
|
|
10
10
|
publishableKey: commonEnv.PUBLISHABLE_KEY,
|
|
11
11
|
apiUrl: commonEnv.API_URL,
|
|
12
12
|
apiVersion: commonEnv.API_VERSION,
|
|
13
|
-
userAgent: `@clerk/tanstack-react-start@1.6.0
|
|
13
|
+
userAgent: `@clerk/tanstack-react-start@1.6.0`,
|
|
14
14
|
proxyUrl: commonEnv.PROXY_URL,
|
|
15
15
|
domain: commonEnv.DOMAIN,
|
|
16
16
|
isSatellite: commonEnv.IS_SATELLITE,
|
|
@@ -10,12 +10,7 @@ import { patchRequest } from "@clerk/shared/patchRequest";
|
|
|
10
10
|
const clerkMiddleware = (options) => {
|
|
11
11
|
return createMiddleware().server(async ({ request, next }) => {
|
|
12
12
|
const clerkRequest = createClerkRequest(patchRequest(request));
|
|
13
|
-
const
|
|
14
|
-
const loadedOptions = loadOptions(clerkRequest, {
|
|
15
|
-
...resolvedOptions,
|
|
16
|
-
publishableKey: resolvedOptions?.publishableKey,
|
|
17
|
-
secretKey: resolvedOptions?.secretKey
|
|
18
|
-
});
|
|
13
|
+
const loadedOptions = loadOptions(clerkRequest, typeof options === "function" ? await options({ url: clerkRequest.clerkUrl }) : options);
|
|
19
14
|
const requestState = await clerkClient().authenticateRequest(clerkRequest, {
|
|
20
15
|
...loadedOptions,
|
|
21
16
|
acceptsToken: "any"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clerkMiddleware.js","names":[],"sources":["../../src/server/clerkMiddleware.ts"],"sourcesContent":["import type { RequestState } from '@clerk/backend/internal';\nimport { AuthStatus, constants, createClerkRequest } from '@clerk/backend/internal';\nimport { handleNetlifyCacheInDevInstance } from '@clerk/shared/netlifyCacheHandler';\nimport { patchRequest } from '@clerk/shared/patchRequest';\nimport type { PendingSessionOptions } from '@clerk/shared/types';\nimport type { AnyRequestMiddleware } from '@tanstack/react-start';\nimport { createMiddleware } from '@tanstack/react-start';\n\nimport { clerkClient } from './clerkClient';\nimport { loadOptions } from './loadOptions';\nimport type { ClerkMiddlewareOptions, ClerkMiddlewareOptionsCallback } from './types';\nimport { getResponseClerkState } from './utils';\n\nexport const clerkMiddleware = (\n options?: ClerkMiddlewareOptions | ClerkMiddlewareOptionsCallback,\n): AnyRequestMiddleware => {\n return createMiddleware().server(async ({ request, next }) => {\n const clerkRequest = createClerkRequest(patchRequest(request));\n\n // Resolve options: if function, call it with context object; otherwise use as-is\n const resolvedOptions = typeof options === 'function' ? await options({ url: clerkRequest.clerkUrl }) : options;\n\n
|
|
1
|
+
{"version":3,"file":"clerkMiddleware.js","names":[],"sources":["../../src/server/clerkMiddleware.ts"],"sourcesContent":["import type { RequestState } from '@clerk/backend/internal';\nimport { AuthStatus, constants, createClerkRequest } from '@clerk/backend/internal';\nimport { handleNetlifyCacheInDevInstance } from '@clerk/shared/netlifyCacheHandler';\nimport { patchRequest } from '@clerk/shared/patchRequest';\nimport type { PendingSessionOptions } from '@clerk/shared/types';\nimport type { AnyRequestMiddleware } from '@tanstack/react-start';\nimport { createMiddleware } from '@tanstack/react-start';\n\nimport { clerkClient } from './clerkClient';\nimport { loadOptions } from './loadOptions';\nimport type { ClerkMiddlewareOptions, ClerkMiddlewareOptionsCallback } from './types';\nimport { getResponseClerkState } from './utils';\n\nexport const clerkMiddleware = (\n options?: ClerkMiddlewareOptions | ClerkMiddlewareOptionsCallback,\n): AnyRequestMiddleware => {\n return createMiddleware().server(async ({ request, next }) => {\n const clerkRequest = createClerkRequest(patchRequest(request));\n\n // Resolve options: if function, call it with context object; otherwise use as-is\n const resolvedOptions = typeof options === 'function' ? await options({ url: clerkRequest.clerkUrl }) : options;\n\n const loadedOptions = loadOptions(clerkRequest, resolvedOptions);\n\n const requestState = await clerkClient().authenticateRequest(clerkRequest, {\n ...loadedOptions,\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 // eslint-disable-next-line @typescript-eslint/only-throw-error\n throw 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 const clerkInitialState = getResponseClerkState(requestState as RequestState, loadedOptions);\n\n const result = await next({\n context: {\n clerkInitialState,\n auth: (opts?: PendingSessionOptions) => requestState.toAuth(opts),\n },\n });\n\n if (requestState.headers) {\n requestState.headers.forEach((value, key) => {\n result.response.headers.append(key, value);\n });\n }\n\n return result;\n });\n};\n"],"mappings":";;;;;;;;;AAaA,MAAa,mBACX,YACyB;CACzB,OAAO,iBAAiB,CAAC,CAAC,OAAO,OAAO,EAAE,SAAS,WAAW;EAC5D,MAAM,eAAe,mBAAmB,aAAa,OAAO,CAAC;EAK7D,MAAM,gBAAgB,YAAY,cAFV,OAAO,YAAY,aAAa,MAAM,QAAQ,EAAE,KAAK,aAAa,SAAS,CAAC,IAAI,OAEzC;EAE/D,MAAM,eAAe,MAAM,YAAY,CAAC,CAAC,oBAAoB,cAAc;GACzE,GAAG;GACH,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;GAGD,MAAM,IAAI,SAAS,MAAM;IAAE,QAAQ;IAAK,SAAS,aAAa;GAAQ,CAAC;EACzE;EAEA,IAAI,aAAa,WAAW,WAAW,WACrC,MAAM,IAAI,MAAM,0CAA0C;EAK5D,MAAM,SAAS,MAAM,KAAK,EACxB,SAAS;GACP,mBAJsB,sBAAsB,cAA8B,aAI1D;GAChB,OAAO,SAAiC,aAAa,OAAO,IAAI;EAClE,EACF,CAAC;EAED,IAAI,aAAa,SACf,aAAa,QAAQ,SAAS,OAAO,QAAQ;GAC3C,OAAO,SAAS,QAAQ,OAAO,KAAK,KAAK;EAC3C,CAAC;EAGH,OAAO;CACT,CAAC;AACH"}
|
package/dist/server/constants.js
CHANGED
|
@@ -27,7 +27,7 @@ const commonEnvs = () => {
|
|
|
27
27
|
API_URL: getEnvVariable("CLERK_API_URL") || apiUrlFromPublishableKey(publicEnvs.publishableKey),
|
|
28
28
|
SDK_METADATA: {
|
|
29
29
|
name: "@clerk/tanstack-react-start",
|
|
30
|
-
version: "1.6.0
|
|
30
|
+
version: "1.6.0",
|
|
31
31
|
environment: getEnvVariable("NODE_ENV")
|
|
32
32
|
}
|
|
33
33
|
};
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { errorThrower } from "../utils/index.js";
|
|
2
2
|
import { commonEnvs } from "./constants.js";
|
|
3
|
-
import { canUseKeyless } from "../utils/feature-flags.js";
|
|
4
3
|
import { getEnvVariable } from "@clerk/shared/getEnvVariable";
|
|
5
4
|
import { apiUrlFromPublishableKey } from "@clerk/shared/apiUrlFromPublishableKey";
|
|
6
5
|
import { isDevelopmentFromSecretKey } from "@clerk/shared/keys";
|
|
@@ -23,8 +22,7 @@ const loadOptions = (request, overrides = {}) => {
|
|
|
23
22
|
let proxyUrl;
|
|
24
23
|
if (!!relativeOrAbsoluteProxyUrl && isProxyUrlRelative(relativeOrAbsoluteProxyUrl)) proxyUrl = new URL(relativeOrAbsoluteProxyUrl, request.clerkUrl).toString();
|
|
25
24
|
else proxyUrl = relativeOrAbsoluteProxyUrl;
|
|
26
|
-
if (!secretKey
|
|
27
|
-
if (!secretKey && !canUseKeyless) throw errorThrower.throw("Clerk: no secret key provided");
|
|
25
|
+
if (!secretKey) errorThrower.throwMissingSecretKeyError();
|
|
28
26
|
if (isSatellite && !proxyUrl && !domain) throw errorThrower.throw("Clerk: satellite mode requires a proxy URL or domain");
|
|
29
27
|
if (isSatellite && secretKey && !isHttpOrHttps(signInUrl) && isDevelopmentFromSecretKey(secretKey)) throw errorThrower.throw("Clerk: satellite mode requires a sign-in URL in production");
|
|
30
28
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loadOptions.js","names":[],"sources":["../../src/server/loadOptions.ts"],"sourcesContent":["import type { ClerkRequest } from '@clerk/backend/internal';\nimport { apiUrlFromPublishableKey } from '@clerk/shared/apiUrlFromPublishableKey';\nimport { getEnvVariable } from '@clerk/shared/getEnvVariable';\nimport { isDevelopmentFromSecretKey } from '@clerk/shared/keys';\nimport { isHttpOrHttps, isProxyUrlRelative } from '@clerk/shared/proxy';\n\nimport { errorThrower } from '../utils';\nimport {
|
|
1
|
+
{"version":3,"file":"loadOptions.js","names":[],"sources":["../../src/server/loadOptions.ts"],"sourcesContent":["import type { ClerkRequest } from '@clerk/backend/internal';\nimport { apiUrlFromPublishableKey } from '@clerk/shared/apiUrlFromPublishableKey';\nimport { getEnvVariable } from '@clerk/shared/getEnvVariable';\nimport { isDevelopmentFromSecretKey } from '@clerk/shared/keys';\nimport { isHttpOrHttps, isProxyUrlRelative } from '@clerk/shared/proxy';\n\nimport { errorThrower } from '../utils';\nimport { commonEnvs } from './constants';\nimport type { LoaderOptions } from './types';\n\nexport const loadOptions = (request: ClerkRequest, overrides: LoaderOptions = {}) => {\n const commonEnv = commonEnvs();\n const secretKey = overrides.secretKey || commonEnv.SECRET_KEY;\n const machineSecretKey = overrides.machineSecretKey || commonEnv.MACHINE_SECRET_KEY;\n const publishableKey = overrides.publishableKey || commonEnv.PUBLISHABLE_KEY;\n const jwtKey = overrides.jwtKey || commonEnv.CLERK_JWT_KEY;\n const apiUrl = getEnvVariable('CLERK_API_URL') || apiUrlFromPublishableKey(publishableKey);\n const domain = overrides.domain || commonEnv.DOMAIN;\n const isSatellite = overrides.isSatellite || commonEnv.IS_SATELLITE;\n const relativeOrAbsoluteProxyUrl = overrides.proxyUrl || commonEnv.PROXY_URL;\n const signInUrl = overrides.signInUrl || commonEnv.SIGN_IN_URL;\n const signUpUrl = overrides.signUpUrl || commonEnv.SIGN_UP_URL;\n const satelliteAutoSync = overrides.satelliteAutoSync;\n\n let proxyUrl;\n if (!!relativeOrAbsoluteProxyUrl && isProxyUrlRelative(relativeOrAbsoluteProxyUrl)) {\n proxyUrl = new URL(relativeOrAbsoluteProxyUrl, request.clerkUrl).toString();\n } else {\n proxyUrl = relativeOrAbsoluteProxyUrl;\n }\n\n if (!secretKey) {\n errorThrower.throwMissingSecretKeyError();\n }\n\n if (isSatellite && !proxyUrl && !domain) {\n // eslint-disable-next-line @typescript-eslint/only-throw-error\n throw errorThrower.throw('Clerk: satellite mode requires a proxy URL or domain');\n }\n\n if (isSatellite && secretKey && !isHttpOrHttps(signInUrl) && isDevelopmentFromSecretKey(secretKey)) {\n // eslint-disable-next-line @typescript-eslint/only-throw-error\n throw errorThrower.throw('Clerk: satellite mode requires a sign-in URL in production');\n }\n\n return {\n // used to append options that are not initialized from env\n ...overrides,\n secretKey,\n machineSecretKey,\n publishableKey,\n jwtKey,\n apiUrl,\n domain,\n isSatellite,\n proxyUrl,\n signInUrl,\n signUpUrl,\n satelliteAutoSync,\n };\n};\n"],"mappings":";;;;;;;;AAUA,MAAa,eAAe,SAAuB,YAA2B,CAAC,MAAM;CACnF,MAAM,YAAY,WAAW;CAC7B,MAAM,YAAY,UAAU,aAAa,UAAU;CACnD,MAAM,mBAAmB,UAAU,oBAAoB,UAAU;CACjE,MAAM,iBAAiB,UAAU,kBAAkB,UAAU;CAC7D,MAAM,SAAS,UAAU,UAAU,UAAU;CAC7C,MAAM,SAAS,eAAe,eAAe,KAAK,yBAAyB,cAAc;CACzF,MAAM,SAAS,UAAU,UAAU,UAAU;CAC7C,MAAM,cAAc,UAAU,eAAe,UAAU;CACvD,MAAM,6BAA6B,UAAU,YAAY,UAAU;CACnE,MAAM,YAAY,UAAU,aAAa,UAAU;CACnD,MAAM,YAAY,UAAU,aAAa,UAAU;CACnD,MAAM,oBAAoB,UAAU;CAEpC,IAAI;CACJ,IAAI,CAAC,CAAC,8BAA8B,mBAAmB,0BAA0B,GAC/E,WAAW,IAAI,IAAI,4BAA4B,QAAQ,QAAQ,CAAC,CAAC,SAAS;MAE1E,WAAW;CAGb,IAAI,CAAC,WACH,aAAa,2BAA2B;CAG1C,IAAI,eAAe,CAAC,YAAY,CAAC,QAE/B,MAAM,aAAa,MAAM,sDAAsD;CAGjF,IAAI,eAAe,aAAa,CAAC,cAAc,SAAS,KAAK,2BAA2B,SAAS,GAE/F,MAAM,aAAa,MAAM,4DAA4D;CAGvF,OAAO;EAEL,GAAG;EACH;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF;AACF"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@clerk/tanstack-react-start",
|
|
3
|
-
"version": "1.6.0
|
|
3
|
+
"version": "1.6.0",
|
|
4
4
|
"description": "Clerk SDK for TanStack React Start",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"clerk",
|
|
@@ -67,9 +67,9 @@
|
|
|
67
67
|
],
|
|
68
68
|
"dependencies": {
|
|
69
69
|
"tslib": "2.8.1",
|
|
70
|
-
"@clerk/
|
|
71
|
-
"@clerk/
|
|
72
|
-
"@clerk/
|
|
70
|
+
"@clerk/backend": "^3.20.0",
|
|
71
|
+
"@clerk/react": "^6.17.1",
|
|
72
|
+
"@clerk/shared": "^4.35.0"
|
|
73
73
|
},
|
|
74
74
|
"devDependencies": {
|
|
75
75
|
"@tanstack/react-router": "1.170.19",
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
//#region src/utils/feature-flags.d.ts
|
|
2
|
-
/**
|
|
3
|
-
* Whether a missing key pair defers to `authenticateRequest`, so its CLI-pointing
|
|
4
|
-
* missing-publishable-key error surfaces. The SDK no longer activates keyless mode.
|
|
5
|
-
*
|
|
6
|
-
* True only in development, outside automated/CI environments, and unless either is set:
|
|
7
|
-
* - `VITE_CLERK_KEYLESS_DISABLED=1` (for Vite-based projects)
|
|
8
|
-
* - `CLERK_KEYLESS_DISABLED=1` (generic)
|
|
9
|
-
*/
|
|
10
|
-
declare const canUseKeyless: boolean;
|
|
11
|
-
//#endregion
|
|
12
|
-
export { canUseKeyless };
|
|
13
|
-
//# sourceMappingURL=feature-flags.d.ts.map
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { getEnvVariable } from "@clerk/shared/getEnvVariable";
|
|
2
|
-
import { isTruthy } from "@clerk/shared/underscore";
|
|
3
|
-
import { isAutomatedEnvironment, isDevelopmentEnvironment } from "@clerk/shared/utils";
|
|
4
|
-
|
|
5
|
-
//#region src/utils/feature-flags.ts
|
|
6
|
-
const KEYLESS_DISABLED = isTruthy(getEnvVariable("VITE_CLERK_KEYLESS_DISABLED")) || isTruthy(getEnvVariable("CLERK_KEYLESS_DISABLED")) || false;
|
|
7
|
-
/**
|
|
8
|
-
* Whether a missing key pair defers to `authenticateRequest`, so its CLI-pointing
|
|
9
|
-
* missing-publishable-key error surfaces. The SDK no longer activates keyless mode.
|
|
10
|
-
*
|
|
11
|
-
* True only in development, outside automated/CI environments, and unless either is set:
|
|
12
|
-
* - `VITE_CLERK_KEYLESS_DISABLED=1` (for Vite-based projects)
|
|
13
|
-
* - `CLERK_KEYLESS_DISABLED=1` (generic)
|
|
14
|
-
*/
|
|
15
|
-
const canUseKeyless = isDevelopmentEnvironment() && !isAutomatedEnvironment() && !KEYLESS_DISABLED;
|
|
16
|
-
|
|
17
|
-
//#endregion
|
|
18
|
-
export { canUseKeyless };
|
|
19
|
-
//# sourceMappingURL=feature-flags.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"feature-flags.js","names":[],"sources":["../../src/utils/feature-flags.ts"],"sourcesContent":["import { getEnvVariable } from '@clerk/shared/getEnvVariable';\nimport { isTruthy } from '@clerk/shared/underscore';\nimport { isAutomatedEnvironment, isDevelopmentEnvironment } from '@clerk/shared/utils';\n\n// Support both Vite-style and generic env var names\nconst KEYLESS_DISABLED =\n isTruthy(getEnvVariable('VITE_CLERK_KEYLESS_DISABLED')) ||\n isTruthy(getEnvVariable('CLERK_KEYLESS_DISABLED')) ||\n false;\n\n/**\n * Whether a missing key pair defers to `authenticateRequest`, so its CLI-pointing\n * missing-publishable-key error surfaces. The SDK no longer activates keyless mode.\n *\n * True only in development, outside automated/CI environments, and unless either is set:\n * - `VITE_CLERK_KEYLESS_DISABLED=1` (for Vite-based projects)\n * - `CLERK_KEYLESS_DISABLED=1` (generic)\n */\nexport const canUseKeyless = isDevelopmentEnvironment() && !isAutomatedEnvironment() && !KEYLESS_DISABLED;\n"],"mappings":";;;;;AAKA,MAAM,mBACJ,SAAS,eAAe,6BAA6B,CAAC,KACtD,SAAS,eAAe,wBAAwB,CAAC,KACjD;;;;;;;;;AAUF,MAAa,gBAAgB,yBAAyB,KAAK,CAAC,uBAAuB,KAAK,CAAC"}
|