@clerk/tanstack-react-start 1.5.16-dispatch-test.v20260918112202 → 1.6.0-snapshot.v20260921144734

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.
@@ -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.5.16-dispatch-test.v20260918112202"
15
+ version: "1.6.0-snapshot.v20260921144734"
16
16
  };
17
17
  const awaitableNavigateRef = { current: void 0 };
18
18
  function ClerkProvider({ children, ...providerProps }) {
@@ -21,15 +21,11 @@ function ClerkProvider({ children, ...providerProps }) {
21
21
  useEffect(() => {
22
22
  awaitableNavigateRef.current = awaitableNavigate;
23
23
  }, [awaitableNavigate]);
24
- const { clerkSsrState, __keylessClaimUrl, __keylessApiKeysUrl, ...restInitState } = pickFromClerkInitState((isClient() ? window.__clerk_init_state : clerkInitialState)?.__internal_clerk_state);
24
+ const { clerkSsrState, ...restInitState } = pickFromClerkInitState((isClient() ? window.__clerk_init_state : clerkInitialState)?.__internal_clerk_state);
25
25
  const mergedProps = {
26
26
  ...mergeWithPublicEnvs(restInitState),
27
27
  ...providerProps
28
28
  };
29
- const keylessProps = __keylessClaimUrl ? {
30
- __internal_keyless_claimKeylessApplicationUrl: __keylessClaimUrl,
31
- __internal_keyless_copyInstanceKeysUrl: __keylessApiKeysUrl
32
- } : {};
33
29
  return /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(ScriptOnce, { children: `window.__clerk_init_state = ${htmlSafeJson(clerkInitialState)};` }), /* @__PURE__ */ jsx(ClerkOptionsProvider, {
34
30
  options: mergedProps,
35
31
  children: /* @__PURE__ */ jsx(InternalClerkProvider, {
@@ -54,7 +50,6 @@ function ClerkProvider({ children, ...providerProps }) {
54
50
  });
55
51
  },
56
52
  ...mergedProps,
57
- ...keylessProps,
58
53
  children
59
54
  })
60
55
  })] });
@@ -1 +1 @@
1
- {"version":3,"file":"ClerkProvider.js","names":["ReactClerkProvider"],"sources":["../../src/client/ClerkProvider.tsx"],"sourcesContent":["import { InternalClerkProvider as ReactClerkProvider, type Ui } from '@clerk/react/internal';\nimport { htmlSafeJson } from '@clerk/shared/htmlSafeJson';\nimport { ScriptOnce } from '@tanstack/react-router';\nimport { getGlobalStartContext } from '@tanstack/react-start';\nimport { useEffect } from 'react';\n\nimport { isClient } from '../utils';\nimport { ClerkOptionsProvider } from './OptionsContext';\nimport type { TanstackStartClerkProviderProps } from './types';\nimport { useAwaitableNavigate } from './useAwaitableNavigate';\nimport { mergeWithPublicEnvs, parseUrlForNavigation, pickFromClerkInitState } from './utils';\n\nconst SDK_METADATA = {\n name: PACKAGE_NAME,\n version: PACKAGE_VERSION,\n};\n\nconst awaitableNavigateRef: { current: ReturnType<typeof useAwaitableNavigate> | undefined } = { current: undefined };\n\nexport function ClerkProvider<TUi extends Ui = Ui>({\n children,\n ...providerProps\n}: TanstackStartClerkProviderProps<TUi>): JSX.Element {\n const awaitableNavigate = useAwaitableNavigate();\n // @ts-expect-error: Untyped internal Clerk initial state\n const clerkInitialState = getGlobalStartContext()?.clerkInitialState ?? {};\n\n useEffect(() => {\n awaitableNavigateRef.current = awaitableNavigate;\n }, [awaitableNavigate]);\n\n const clerkInitState = isClient() ? (window as any).__clerk_init_state : clerkInitialState;\n\n const { clerkSsrState, __keylessClaimUrl, __keylessApiKeysUrl, ...restInitState } = pickFromClerkInitState(\n clerkInitState?.__internal_clerk_state,\n );\n\n const mergedProps = {\n ...mergeWithPublicEnvs(restInitState),\n ...providerProps,\n };\n\n // Add keyless mode props if present\n const keylessProps = __keylessClaimUrl\n ? {\n __internal_keyless_claimKeylessApplicationUrl: __keylessClaimUrl,\n __internal_keyless_copyInstanceKeysUrl: __keylessApiKeysUrl,\n }\n : {};\n\n return (\n <>\n <ScriptOnce>{`window.__clerk_init_state = ${htmlSafeJson(clerkInitialState)};`}</ScriptOnce>\n <ClerkOptionsProvider options={mergedProps}>\n <ReactClerkProvider\n initialState={clerkSsrState}\n sdkMetadata={SDK_METADATA}\n routerPush={(to: string) => {\n const { search, hash, ...rest } = parseUrlForNavigation(to, window.location.origin);\n return awaitableNavigateRef.current?.({\n ...rest,\n search: search as any,\n hash,\n replace: false,\n });\n }}\n routerReplace={(to: string) => {\n const { search, hash, ...rest } = parseUrlForNavigation(to, window.location.origin);\n return awaitableNavigateRef.current?.({\n ...rest,\n search: search as any,\n hash,\n replace: true,\n });\n }}\n {...mergedProps}\n {...keylessProps}\n >\n {children}\n </ReactClerkProvider>\n </ClerkOptionsProvider>\n </>\n );\n}\nClerkProvider.displayName = 'ClerkProvider';\n"],"mappings":";;;;;;;;;;;;AAYA,MAAM,eAAe;CACnB;CACA;AACF;AAEA,MAAM,uBAAyF,EAAE,SAAS,OAAU;AAEpH,SAAgB,cAAmC,EACjD,UACA,GAAG,iBACiD;CACpD,MAAM,oBAAoB,qBAAqB;CAE/C,MAAM,oBAAoB,sBAAsB,CAAC,EAAE,qBAAqB,CAAC;CAEzE,gBAAgB;EACd,qBAAqB,UAAU;CACjC,GAAG,CAAC,iBAAiB,CAAC;CAItB,MAAM,EAAE,eAAe,mBAAmB,qBAAqB,GAAG,kBAAkB,wBAF7D,SAAS,IAAK,OAAe,qBAAqB,kBAGzD,EAAE,sBAClB;CAEA,MAAM,cAAc;EAClB,GAAG,oBAAoB,aAAa;EACpC,GAAG;CACL;CAGA,MAAM,eAAe,oBACjB;EACE,+CAA+C;EAC/C,wCAAwC;CAC1C,IACA,CAAC;CAEL,OACE,4CACE,oBAAC,YAAD,YAAa,+BAA+B,aAAa,iBAAiB,EAAE,GAAe,IAC3F,oBAAC,sBAAD;EAAsB,SAAS;YAC7B,oBAACA,uBAAD;GACE,cAAc;GACd,aAAa;GACb,aAAa,OAAe;IAC1B,MAAM,EAAE,QAAQ,MAAM,GAAG,SAAS,sBAAsB,IAAI,OAAO,SAAS,MAAM;IAClF,OAAO,qBAAqB,UAAU;KACpC,GAAG;KACK;KACR;KACA,SAAS;IACX,CAAC;GACH;GACA,gBAAgB,OAAe;IAC7B,MAAM,EAAE,QAAQ,MAAM,GAAG,SAAS,sBAAsB,IAAI,OAAO,SAAS,MAAM;IAClF,OAAO,qBAAqB,UAAU;KACpC,GAAG;KACK;KACR;KACA,SAAS;IACX,CAAC;GACH;GACA,GAAI;GACJ,GAAI;GAEH;EACiB;CACA,EACtB;AAEN;AACA,cAAc,cAAc"}
1
+ {"version":3,"file":"ClerkProvider.js","names":["ReactClerkProvider"],"sources":["../../src/client/ClerkProvider.tsx"],"sourcesContent":["import { InternalClerkProvider as ReactClerkProvider, type Ui } from '@clerk/react/internal';\nimport { htmlSafeJson } from '@clerk/shared/htmlSafeJson';\nimport { ScriptOnce } from '@tanstack/react-router';\nimport { getGlobalStartContext } from '@tanstack/react-start';\nimport { useEffect } from 'react';\n\nimport { isClient } from '../utils';\nimport { ClerkOptionsProvider } from './OptionsContext';\nimport type { TanstackStartClerkProviderProps } from './types';\nimport { useAwaitableNavigate } from './useAwaitableNavigate';\nimport { mergeWithPublicEnvs, parseUrlForNavigation, pickFromClerkInitState } from './utils';\n\nconst SDK_METADATA = {\n name: PACKAGE_NAME,\n version: PACKAGE_VERSION,\n};\n\nconst awaitableNavigateRef: { current: ReturnType<typeof useAwaitableNavigate> | undefined } = { current: undefined };\n\nexport function ClerkProvider<TUi extends Ui = Ui>({\n children,\n ...providerProps\n}: TanstackStartClerkProviderProps<TUi>): JSX.Element {\n const awaitableNavigate = useAwaitableNavigate();\n // @ts-expect-error: Untyped internal Clerk initial state\n const clerkInitialState = getGlobalStartContext()?.clerkInitialState ?? {};\n\n useEffect(() => {\n awaitableNavigateRef.current = awaitableNavigate;\n }, [awaitableNavigate]);\n\n const clerkInitState = isClient() ? (window as any).__clerk_init_state : clerkInitialState;\n\n const { clerkSsrState, ...restInitState } = pickFromClerkInitState(clerkInitState?.__internal_clerk_state);\n\n const mergedProps = {\n ...mergeWithPublicEnvs(restInitState),\n ...providerProps,\n };\n\n return (\n <>\n <ScriptOnce>{`window.__clerk_init_state = ${htmlSafeJson(clerkInitialState)};`}</ScriptOnce>\n <ClerkOptionsProvider options={mergedProps}>\n <ReactClerkProvider\n initialState={clerkSsrState}\n sdkMetadata={SDK_METADATA}\n routerPush={(to: string) => {\n const { search, hash, ...rest } = parseUrlForNavigation(to, window.location.origin);\n return awaitableNavigateRef.current?.({\n ...rest,\n search: search as any,\n hash,\n replace: false,\n });\n }}\n routerReplace={(to: string) => {\n const { search, hash, ...rest } = parseUrlForNavigation(to, window.location.origin);\n return awaitableNavigateRef.current?.({\n ...rest,\n search: search as any,\n hash,\n replace: true,\n });\n }}\n {...mergedProps}\n >\n {children}\n </ReactClerkProvider>\n </ClerkOptionsProvider>\n </>\n );\n}\nClerkProvider.displayName = 'ClerkProvider';\n"],"mappings":";;;;;;;;;;;;AAYA,MAAM,eAAe;CACnB;CACA;AACF;AAEA,MAAM,uBAAyF,EAAE,SAAS,OAAU;AAEpH,SAAgB,cAAmC,EACjD,UACA,GAAG,iBACiD;CACpD,MAAM,oBAAoB,qBAAqB;CAE/C,MAAM,oBAAoB,sBAAsB,CAAC,EAAE,qBAAqB,CAAC;CAEzE,gBAAgB;EACd,qBAAqB,UAAU;CACjC,GAAG,CAAC,iBAAiB,CAAC;CAItB,MAAM,EAAE,eAAe,GAAG,kBAAkB,wBAFrB,SAAS,IAAK,OAAe,qBAAqB,kBAEQ,EAAE,sBAAsB;CAEzG,MAAM,cAAc;EAClB,GAAG,oBAAoB,aAAa;EACpC,GAAG;CACL;CAEA,OACE,4CACE,oBAAC,YAAD,YAAa,+BAA+B,aAAa,iBAAiB,EAAE,GAAe,IAC3F,oBAAC,sBAAD;EAAsB,SAAS;YAC7B,oBAACA,uBAAD;GACE,cAAc;GACd,aAAa;GACb,aAAa,OAAe;IAC1B,MAAM,EAAE,QAAQ,MAAM,GAAG,SAAS,sBAAsB,IAAI,OAAO,SAAS,MAAM;IAClF,OAAO,qBAAqB,UAAU;KACpC,GAAG;KACK;KACR;KACA,SAAS;IACX,CAAC;GACH;GACA,gBAAgB,OAAe;IAC7B,MAAM,EAAE,QAAQ,MAAM,GAAG,SAAS,sBAAsB,IAAI,OAAO,SAAS,MAAM;IAClF,OAAO,qBAAqB,UAAU;KACpC,GAAG;KACK;KACR;KACA,SAAS;IACX,CAAC;GACH;GACA,GAAI;GAEH;EACiB;CACA,EACtB;AAEN;AACA,cAAc,cAAc"}
@@ -5,8 +5,6 @@ import { InternalClerkScriptProps } from "@clerk/shared/types";
5
5
  type TanStackProviderAndInitialProps = Omit<TanstackStartClerkProviderProps, 'children'>;
6
6
  declare const pickFromClerkInitState: (clerkInitState: any) => TanStackProviderAndInitialProps & InternalClerkScriptProps & {
7
7
  clerkSsrState: any;
8
- __keylessClaimUrl?: string;
9
- __keylessApiKeysUrl?: string;
10
8
  };
11
9
  declare const mergeWithPublicEnvs: (restInitState: any) => any;
12
10
  type ParsedNavigationUrl = {
@@ -2,7 +2,7 @@ import { getPublicEnvVariables } from "../utils/env.js";
2
2
 
3
3
  //#region src/client/utils.ts
4
4
  const pickFromClerkInitState = (clerkInitState) => {
5
- const { __clerk_ssr_state, __publishableKey, __proxyUrl, __domain, __isSatellite, __signInUrl, __signUpUrl, __clerkJSUrl, __clerkJSVersion, __clerkUIUrl, __clerkUIVersion, __telemetryDisabled, __telemetryDebug, __unsafeDisableDevelopmentModeConsoleWarning, __signInForceRedirectUrl, __signUpForceRedirectUrl, __signInFallbackRedirectUrl, __signUpFallbackRedirectUrl, __keylessClaimUrl, __keylessApiKeysUrl, __prefetchUI } = clerkInitState || {};
5
+ const { __clerk_ssr_state, __publishableKey, __proxyUrl, __domain, __isSatellite, __signInUrl, __signUpUrl, __clerkJSUrl, __clerkJSVersion, __clerkUIUrl, __clerkUIVersion, __telemetryDisabled, __telemetryDebug, __unsafeDisableDevelopmentModeConsoleWarning, __signInForceRedirectUrl, __signUpForceRedirectUrl, __signInFallbackRedirectUrl, __signUpFallbackRedirectUrl, __prefetchUI } = clerkInitState || {};
6
6
  return {
7
7
  clerkSsrState: __clerk_ssr_state,
8
8
  publishableKey: __publishableKey,
@@ -24,9 +24,7 @@ const pickFromClerkInitState = (clerkInitState) => {
24
24
  signInForceRedirectUrl: __signInForceRedirectUrl,
25
25
  signUpForceRedirectUrl: __signUpForceRedirectUrl,
26
26
  signInFallbackRedirectUrl: __signInFallbackRedirectUrl,
27
- signUpFallbackRedirectUrl: __signUpFallbackRedirectUrl,
28
- __keylessClaimUrl,
29
- __keylessApiKeysUrl
27
+ signUpFallbackRedirectUrl: __signUpFallbackRedirectUrl
30
28
  };
31
29
  };
32
30
  const mergeWithPublicEnvs = (restInitState) => {
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","names":[],"sources":["../../src/client/utils.ts"],"sourcesContent":["import type { InternalClerkScriptProps } from '@clerk/shared/types';\n\nimport { getPublicEnvVariables } from '../utils/env';\nimport type { TanstackStartClerkProviderProps } from './types';\n\ntype TanStackProviderAndInitialProps = Omit<TanstackStartClerkProviderProps, 'children'>;\n\nexport const pickFromClerkInitState = (\n clerkInitState: any,\n): TanStackProviderAndInitialProps &\n InternalClerkScriptProps & {\n clerkSsrState: any;\n __keylessClaimUrl?: string;\n __keylessApiKeysUrl?: string;\n } => {\n const {\n __clerk_ssr_state,\n __publishableKey,\n __proxyUrl,\n __domain,\n __isSatellite,\n __signInUrl,\n __signUpUrl,\n __clerkJSUrl,\n __clerkJSVersion,\n __clerkUIUrl,\n __clerkUIVersion,\n __telemetryDisabled,\n __telemetryDebug,\n __unsafeDisableDevelopmentModeConsoleWarning,\n __signInForceRedirectUrl,\n __signUpForceRedirectUrl,\n __signInFallbackRedirectUrl,\n __signUpFallbackRedirectUrl,\n __keylessClaimUrl,\n __keylessApiKeysUrl,\n __prefetchUI,\n } = clerkInitState || {};\n\n return {\n clerkSsrState: __clerk_ssr_state,\n publishableKey: __publishableKey,\n proxyUrl: __proxyUrl,\n domain: __domain,\n isSatellite: !!__isSatellite,\n signInUrl: __signInUrl,\n signUpUrl: __signUpUrl,\n __internal_clerkJSUrl: __clerkJSUrl,\n __internal_clerkJSVersion: __clerkJSVersion,\n __internal_clerkUIUrl: __clerkUIUrl,\n __internal_clerkUIVersion: __clerkUIVersion,\n prefetchUI: __prefetchUI,\n telemetry: {\n disabled: __telemetryDisabled,\n debug: __telemetryDebug,\n },\n unsafe_disableDevelopmentModeConsoleWarning: __unsafeDisableDevelopmentModeConsoleWarning,\n signInForceRedirectUrl: __signInForceRedirectUrl,\n signUpForceRedirectUrl: __signUpForceRedirectUrl,\n signInFallbackRedirectUrl: __signInFallbackRedirectUrl,\n signUpFallbackRedirectUrl: __signUpFallbackRedirectUrl,\n __keylessClaimUrl,\n __keylessApiKeysUrl,\n };\n};\n\nexport const mergeWithPublicEnvs = (restInitState: any) => {\n const envVars = getPublicEnvVariables();\n return {\n ...restInitState,\n publishableKey: restInitState.publishableKey || envVars.publishableKey,\n domain: restInitState.domain || envVars.domain,\n isSatellite: restInitState.isSatellite || envVars.isSatellite,\n signInUrl: restInitState.signInUrl || envVars.signInUrl,\n signUpUrl: restInitState.signUpUrl || envVars.signUpUrl,\n __internal_clerkJSUrl: restInitState.__internal_clerkJSUrl || envVars.clerkJsUrl,\n __internal_clerkJSVersion: restInitState.__internal_clerkJSVersion || envVars.clerkJsVersion,\n __internal_clerkUIUrl: restInitState.__internal_clerkUIUrl || envVars.clerkUIUrl,\n __internal_clerkUIVersion: restInitState.__internal_clerkUIVersion || envVars.clerkUIVersion,\n signInForceRedirectUrl: restInitState.signInForceRedirectUrl,\n prefetchUI: restInitState.prefetchUI ?? envVars.prefetchUI,\n unsafe_disableDevelopmentModeConsoleWarning:\n restInitState.unsafe_disableDevelopmentModeConsoleWarning ?? envVars.unsafeDisableDevelopmentModeConsoleWarning,\n };\n};\n\nexport type ParsedNavigationUrl = {\n to: string;\n search?: Record<string, string>;\n hash?: string;\n};\n\n/**\n * Parses a URL string into TanStack Router navigation options.\n * TanStack Router doesn't parse query strings from the `to` parameter,\n * so we need to extract pathname, search params, and hash separately.\n */\nexport function parseUrlForNavigation(to: string, baseUrl: string): ParsedNavigationUrl {\n const url = new URL(to, baseUrl);\n const searchParams = Object.fromEntries(url.searchParams);\n return {\n to: url.pathname,\n search: Object.keys(searchParams).length > 0 ? searchParams : undefined,\n hash: url.hash ? url.hash.slice(1) : undefined,\n };\n}\n"],"mappings":";;;AAOA,MAAa,0BACX,mBAMK;CACL,MAAM,EACJ,mBACA,kBACA,YACA,UACA,eACA,aACA,aACA,cACA,kBACA,cACA,kBACA,qBACA,kBACA,8CACA,0BACA,0BACA,6BACA,6BACA,mBACA,qBACA,iBACE,kBAAkB,CAAC;CAEvB,OAAO;EACL,eAAe;EACf,gBAAgB;EAChB,UAAU;EACV,QAAQ;EACR,aAAa,CAAC,CAAC;EACf,WAAW;EACX,WAAW;EACX,uBAAuB;EACvB,2BAA2B;EAC3B,uBAAuB;EACvB,2BAA2B;EAC3B,YAAY;EACZ,WAAW;GACT,UAAU;GACV,OAAO;EACT;EACA,6CAA6C;EAC7C,wBAAwB;EACxB,wBAAwB;EACxB,2BAA2B;EAC3B,2BAA2B;EAC3B;EACA;CACF;AACF;AAEA,MAAa,uBAAuB,kBAAuB;CACzD,MAAM,UAAU,sBAAsB;CACtC,OAAO;EACL,GAAG;EACH,gBAAgB,cAAc,kBAAkB,QAAQ;EACxD,QAAQ,cAAc,UAAU,QAAQ;EACxC,aAAa,cAAc,eAAe,QAAQ;EAClD,WAAW,cAAc,aAAa,QAAQ;EAC9C,WAAW,cAAc,aAAa,QAAQ;EAC9C,uBAAuB,cAAc,yBAAyB,QAAQ;EACtE,2BAA2B,cAAc,6BAA6B,QAAQ;EAC9E,uBAAuB,cAAc,yBAAyB,QAAQ;EACtE,2BAA2B,cAAc,6BAA6B,QAAQ;EAC9E,wBAAwB,cAAc;EACtC,YAAY,cAAc,cAAc,QAAQ;EAChD,6CACE,cAAc,+CAA+C,QAAQ;CACzE;AACF;;;;;;AAaA,SAAgB,sBAAsB,IAAY,SAAsC;CACtF,MAAM,MAAM,IAAI,IAAI,IAAI,OAAO;CAC/B,MAAM,eAAe,OAAO,YAAY,IAAI,YAAY;CACxD,OAAO;EACL,IAAI,IAAI;EACR,QAAQ,OAAO,KAAK,YAAY,CAAC,CAAC,SAAS,IAAI,eAAe;EAC9D,MAAM,IAAI,OAAO,IAAI,KAAK,MAAM,CAAC,IAAI;CACvC;AACF"}
1
+ {"version":3,"file":"utils.js","names":[],"sources":["../../src/client/utils.ts"],"sourcesContent":["import type { InternalClerkScriptProps } from '@clerk/shared/types';\n\nimport { getPublicEnvVariables } from '../utils/env';\nimport type { TanstackStartClerkProviderProps } from './types';\n\ntype TanStackProviderAndInitialProps = Omit<TanstackStartClerkProviderProps, 'children'>;\n\nexport const pickFromClerkInitState = (\n clerkInitState: any,\n): TanStackProviderAndInitialProps &\n InternalClerkScriptProps & {\n clerkSsrState: any;\n } => {\n const {\n __clerk_ssr_state,\n __publishableKey,\n __proxyUrl,\n __domain,\n __isSatellite,\n __signInUrl,\n __signUpUrl,\n __clerkJSUrl,\n __clerkJSVersion,\n __clerkUIUrl,\n __clerkUIVersion,\n __telemetryDisabled,\n __telemetryDebug,\n __unsafeDisableDevelopmentModeConsoleWarning,\n __signInForceRedirectUrl,\n __signUpForceRedirectUrl,\n __signInFallbackRedirectUrl,\n __signUpFallbackRedirectUrl,\n __prefetchUI,\n } = clerkInitState || {};\n\n return {\n clerkSsrState: __clerk_ssr_state,\n publishableKey: __publishableKey,\n proxyUrl: __proxyUrl,\n domain: __domain,\n isSatellite: !!__isSatellite,\n signInUrl: __signInUrl,\n signUpUrl: __signUpUrl,\n __internal_clerkJSUrl: __clerkJSUrl,\n __internal_clerkJSVersion: __clerkJSVersion,\n __internal_clerkUIUrl: __clerkUIUrl,\n __internal_clerkUIVersion: __clerkUIVersion,\n prefetchUI: __prefetchUI,\n telemetry: {\n disabled: __telemetryDisabled,\n debug: __telemetryDebug,\n },\n unsafe_disableDevelopmentModeConsoleWarning: __unsafeDisableDevelopmentModeConsoleWarning,\n signInForceRedirectUrl: __signInForceRedirectUrl,\n signUpForceRedirectUrl: __signUpForceRedirectUrl,\n signInFallbackRedirectUrl: __signInFallbackRedirectUrl,\n signUpFallbackRedirectUrl: __signUpFallbackRedirectUrl,\n };\n};\n\nexport const mergeWithPublicEnvs = (restInitState: any) => {\n const envVars = getPublicEnvVariables();\n return {\n ...restInitState,\n publishableKey: restInitState.publishableKey || envVars.publishableKey,\n domain: restInitState.domain || envVars.domain,\n isSatellite: restInitState.isSatellite || envVars.isSatellite,\n signInUrl: restInitState.signInUrl || envVars.signInUrl,\n signUpUrl: restInitState.signUpUrl || envVars.signUpUrl,\n __internal_clerkJSUrl: restInitState.__internal_clerkJSUrl || envVars.clerkJsUrl,\n __internal_clerkJSVersion: restInitState.__internal_clerkJSVersion || envVars.clerkJsVersion,\n __internal_clerkUIUrl: restInitState.__internal_clerkUIUrl || envVars.clerkUIUrl,\n __internal_clerkUIVersion: restInitState.__internal_clerkUIVersion || envVars.clerkUIVersion,\n signInForceRedirectUrl: restInitState.signInForceRedirectUrl,\n prefetchUI: restInitState.prefetchUI ?? envVars.prefetchUI,\n unsafe_disableDevelopmentModeConsoleWarning:\n restInitState.unsafe_disableDevelopmentModeConsoleWarning ?? envVars.unsafeDisableDevelopmentModeConsoleWarning,\n };\n};\n\nexport type ParsedNavigationUrl = {\n to: string;\n search?: Record<string, string>;\n hash?: string;\n};\n\n/**\n * Parses a URL string into TanStack Router navigation options.\n * TanStack Router doesn't parse query strings from the `to` parameter,\n * so we need to extract pathname, search params, and hash separately.\n */\nexport function parseUrlForNavigation(to: string, baseUrl: string): ParsedNavigationUrl {\n const url = new URL(to, baseUrl);\n const searchParams = Object.fromEntries(url.searchParams);\n return {\n to: url.pathname,\n search: Object.keys(searchParams).length > 0 ? searchParams : undefined,\n hash: url.hash ? url.hash.slice(1) : undefined,\n };\n}\n"],"mappings":";;;AAOA,MAAa,0BACX,mBAIK;CACL,MAAM,EACJ,mBACA,kBACA,YACA,UACA,eACA,aACA,aACA,cACA,kBACA,cACA,kBACA,qBACA,kBACA,8CACA,0BACA,0BACA,6BACA,6BACA,iBACE,kBAAkB,CAAC;CAEvB,OAAO;EACL,eAAe;EACf,gBAAgB;EAChB,UAAU;EACV,QAAQ;EACR,aAAa,CAAC,CAAC;EACf,WAAW;EACX,WAAW;EACX,uBAAuB;EACvB,2BAA2B;EAC3B,uBAAuB;EACvB,2BAA2B;EAC3B,YAAY;EACZ,WAAW;GACT,UAAU;GACV,OAAO;EACT;EACA,6CAA6C;EAC7C,wBAAwB;EACxB,wBAAwB;EACxB,2BAA2B;EAC3B,2BAA2B;CAC7B;AACF;AAEA,MAAa,uBAAuB,kBAAuB;CACzD,MAAM,UAAU,sBAAsB;CACtC,OAAO;EACL,GAAG;EACH,gBAAgB,cAAc,kBAAkB,QAAQ;EACxD,QAAQ,cAAc,UAAU,QAAQ;EACxC,aAAa,cAAc,eAAe,QAAQ;EAClD,WAAW,cAAc,aAAa,QAAQ;EAC9C,WAAW,cAAc,aAAa,QAAQ;EAC9C,uBAAuB,cAAc,yBAAyB,QAAQ;EACtE,2BAA2B,cAAc,6BAA6B,QAAQ;EAC9E,uBAAuB,cAAc,yBAAyB,QAAQ;EACtE,2BAA2B,cAAc,6BAA6B,QAAQ;EAC9E,wBAAwB,cAAc;EACtC,YAAY,cAAc,cAAc,QAAQ;EAChD,6CACE,cAAc,+CAA+C,QAAQ;CACzE;AACF;;;;;;AAaA,SAAgB,sBAAsB,IAAY,SAAsC;CACtF,MAAM,MAAM,IAAI,IAAI,IAAI,OAAO;CAC/B,MAAM,eAAe,OAAO,YAAY,IAAI,YAAY;CACxD,OAAO;EACL,IAAI,IAAI;EACR,QAAQ,OAAO,KAAK,YAAY,CAAC,CAAC,SAAS,IAAI,eAAe;EAC9D,MAAM,IAAI,OAAO,IAAI,KAAK,MAAM,CAAC,IAAI;CACvC;AACF"}
@@ -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.5.16-dispatch-test.v20260918112202`,
13
+ userAgent: `@clerk/tanstack-react-start@1.6.0-snapshot.v20260921144734`,
14
14
  proxyUrl: commonEnv.PROXY_URL,
15
15
  domain: commonEnv.DOMAIN,
16
16
  isSatellite: commonEnv.IS_SATELLITE,
@@ -1,6 +1,4 @@
1
1
  import { clerkClient } from "./clerkClient.js";
2
- import { canUseKeyless } from "../utils/feature-flags.js";
3
- import { resolveKeysWithKeylessFallback } from "./keyless/utils.js";
4
2
  import { loadOptions } from "./loadOptions.js";
5
3
  import { getResponseClerkState } from "./utils/index.js";
6
4
  import { createMiddleware } from "@tanstack/react-start";
@@ -18,9 +16,6 @@ const clerkMiddleware = (options) => {
18
16
  publishableKey: resolvedOptions?.publishableKey,
19
17
  secretKey: resolvedOptions?.secretKey
20
18
  });
21
- const { publishableKey, secretKey, claimUrl: keylessClaimUrl, apiKeysUrl: keylessApiKeysUrl } = await resolveKeysWithKeylessFallback(loadedOptions.publishableKey, loadedOptions.secretKey);
22
- if (publishableKey) loadedOptions.publishableKey = publishableKey;
23
- if (secretKey) loadedOptions.secretKey = secretKey;
24
19
  const requestState = await clerkClient().authenticateRequest(clerkRequest, {
25
20
  ...loadedOptions,
26
21
  acceptsToken: "any"
@@ -38,14 +33,8 @@ const clerkMiddleware = (options) => {
38
33
  });
39
34
  }
40
35
  if (requestState.status === AuthStatus.Handshake) throw new Error("Clerk: handshake status without redirect");
41
- const clerkInitialState = getResponseClerkState(requestState, loadedOptions);
42
- if (canUseKeyless && keylessClaimUrl) clerkInitialState.__internal_clerk_state = {
43
- ...clerkInitialState.__internal_clerk_state,
44
- __keylessClaimUrl: keylessClaimUrl,
45
- __keylessApiKeysUrl: keylessApiKeysUrl
46
- };
47
36
  const result = await next({ context: {
48
- clerkInitialState,
37
+ clerkInitialState: getResponseClerkState(requestState, loadedOptions),
49
38
  auth: (opts) => requestState.toAuth(opts)
50
39
  } });
51
40
  if (requestState.headers) requestState.headers.forEach((value, key) => {
@@ -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 { canUseKeyless } from '../utils/feature-flags';\nimport { clerkClient } from './clerkClient';\nimport { resolveKeysWithKeylessFallback } from './keyless/utils';\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 // Load options with resolved keys\n const loadedOptions = loadOptions(clerkRequest, {\n ...resolvedOptions,\n publishableKey: resolvedOptions?.publishableKey,\n secretKey: resolvedOptions?.secretKey,\n });\n\n // Get keys - either from options, env, or keyless mode\n const {\n publishableKey,\n secretKey,\n claimUrl: keylessClaimUrl,\n apiKeysUrl: keylessApiKeysUrl,\n } = await resolveKeysWithKeylessFallback(loadedOptions.publishableKey, loadedOptions.secretKey);\n\n if (publishableKey) {\n loadedOptions.publishableKey = publishableKey;\n }\n if (secretKey) {\n loadedOptions.secretKey = secretKey;\n }\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 // Include keyless mode URLs if applicable\n if (canUseKeyless && keylessClaimUrl) {\n (clerkInitialState as Record<string, unknown>).__internal_clerk_state = {\n ...((clerkInitialState as Record<string, unknown>).__internal_clerk_state as Record<string, unknown>),\n __keylessClaimUrl: keylessClaimUrl,\n __keylessApiKeysUrl: keylessApiKeysUrl,\n };\n }\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":";;;;;;;;;;;AAeA,MAAa,mBACX,YACyB;CACzB,OAAO,iBAAiB,CAAC,CAAC,OAAO,OAAO,EAAE,SAAS,WAAW;EAC5D,MAAM,eAAe,mBAAmB,aAAa,OAAO,CAAC;EAG7D,MAAM,kBAAkB,OAAO,YAAY,aAAa,MAAM,QAAQ,EAAE,KAAK,aAAa,SAAS,CAAC,IAAI;EAGxG,MAAM,gBAAgB,YAAY,cAAc;GAC9C,GAAG;GACH,gBAAgB,iBAAiB;GACjC,WAAW,iBAAiB;EAC9B,CAAC;EAGD,MAAM,EACJ,gBACA,WACA,UAAU,iBACV,YAAY,sBACV,MAAM,+BAA+B,cAAc,gBAAgB,cAAc,SAAS;EAE9F,IAAI,gBACF,cAAc,iBAAiB;EAEjC,IAAI,WACF,cAAc,YAAY;EAG5B,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;EAG5D,MAAM,oBAAoB,sBAAsB,cAA8B,aAAa;EAG3F,IAAI,iBAAiB,iBACnB,AAAC,kBAA8C,yBAAyB;GACtE,GAAK,kBAA8C;GACnD,mBAAmB;GACnB,qBAAqB;EACvB;EAGF,MAAM,SAAS,MAAM,KAAK,EACxB,SAAS;GACP;GACA,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"}
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 // Load options with resolved keys\n const loadedOptions = loadOptions(clerkRequest, {\n ...resolvedOptions,\n publishableKey: resolvedOptions?.publishableKey,\n secretKey: resolvedOptions?.secretKey,\n });\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;EAG7D,MAAM,kBAAkB,OAAO,YAAY,aAAa,MAAM,QAAQ,EAAE,KAAK,aAAa,SAAS,CAAC,IAAI;EAGxG,MAAM,gBAAgB,YAAY,cAAc;GAC9C,GAAG;GACH,gBAAgB,iBAAiB;GACjC,WAAW,iBAAiB;EAC9B,CAAC;EAED,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"}
@@ -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.5.16-dispatch-test.v20260918112202",
30
+ version: "1.6.0-snapshot.v20260921144734",
31
31
  environment: getEnvVariable("NODE_ENV")
32
32
  }
33
33
  };
@@ -23,6 +23,7 @@ const loadOptions = (request, overrides = {}) => {
23
23
  let proxyUrl;
24
24
  if (!!relativeOrAbsoluteProxyUrl && isProxyUrlRelative(relativeOrAbsoluteProxyUrl)) proxyUrl = new URL(relativeOrAbsoluteProxyUrl, request.clerkUrl).toString();
25
25
  else proxyUrl = relativeOrAbsoluteProxyUrl;
26
+ if (!secretKey && publishableKey) errorThrower.throwMissingSecretKeyError();
26
27
  if (!secretKey && !canUseKeyless) throw errorThrower.throw("Clerk: no secret key provided");
27
28
  if (isSatellite && !proxyUrl && !domain) throw errorThrower.throw("Clerk: satellite mode requires a proxy URL or domain");
28
29
  if (isSatellite && secretKey && !isHttpOrHttps(signInUrl) && isDevelopmentFromSecretKey(secretKey)) throw errorThrower.throw("Clerk: satellite mode requires a sign-in URL in production");
@@ -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 { canUseKeyless } from '../utils/feature-flags';\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 // In keyless mode, don't throw if secretKey is missing - ClerkProvider will handle it\n if (!secretKey && !canUseKeyless) {\n // eslint-disable-next-line @typescript-eslint/only-throw-error\n throw errorThrower.throw('Clerk: no secret key provided');\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":";;;;;;;;;AAWA,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;CAIb,IAAI,CAAC,aAAa,CAAC,eAEjB,MAAM,aAAa,MAAM,+BAA+B;CAG1D,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"}
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 { canUseKeyless } from '../utils/feature-flags';\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 && publishableKey) {\n errorThrower.throwMissingSecretKeyError();\n }\n\n // In development with no keys at all, defer to authenticateRequest so its CLI-pointing missing-publishable-key error surfaces\n if (!secretKey && !canUseKeyless) {\n // eslint-disable-next-line @typescript-eslint/only-throw-error\n throw errorThrower.throw('Clerk: no secret key provided');\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":";;;;;;;;;AAWA,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,aAAa,gBAChB,aAAa,2BAA2B;CAI1C,IAAI,CAAC,aAAa,CAAC,eAEjB,MAAM,aAAa,MAAM,+BAA+B;CAG1D,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"}
@@ -1,10 +1,9 @@
1
1
  //#region src/utils/feature-flags.d.ts
2
2
  /**
3
- * Whether keyless mode can be used in the current environment.
4
- * Keyless mode is only available in development, when not explicitly disabled,
5
- * and when not running in an automated/CI environment.
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.
6
5
  *
7
- * To disable keyless mode, set either:
6
+ * True only in development, outside automated/CI environments, and unless either is set:
8
7
  * - `VITE_CLERK_KEYLESS_DISABLED=1` (for Vite-based projects)
9
8
  * - `CLERK_KEYLESS_DISABLED=1` (generic)
10
9
  */
@@ -5,11 +5,10 @@ import { isAutomatedEnvironment, isDevelopmentEnvironment } from "@clerk/shared/
5
5
  //#region src/utils/feature-flags.ts
6
6
  const KEYLESS_DISABLED = isTruthy(getEnvVariable("VITE_CLERK_KEYLESS_DISABLED")) || isTruthy(getEnvVariable("CLERK_KEYLESS_DISABLED")) || false;
7
7
  /**
8
- * Whether keyless mode can be used in the current environment.
9
- * Keyless mode is only available in development, when not explicitly disabled,
10
- * and when not running in an automated/CI environment.
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.
11
10
  *
12
- * To disable keyless mode, set either:
11
+ * True only in development, outside automated/CI environments, and unless either is set:
13
12
  * - `VITE_CLERK_KEYLESS_DISABLED=1` (for Vite-based projects)
14
13
  * - `CLERK_KEYLESS_DISABLED=1` (generic)
15
14
  */
@@ -1 +1 @@
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 for disabling keyless mode\nconst KEYLESS_DISABLED =\n isTruthy(getEnvVariable('VITE_CLERK_KEYLESS_DISABLED')) ||\n isTruthy(getEnvVariable('CLERK_KEYLESS_DISABLED')) ||\n false;\n\n/**\n * Whether keyless mode can be used in the current environment.\n * Keyless mode is only available in development, when not explicitly disabled,\n * and when not running in an automated/CI environment.\n *\n * To disable keyless mode, set either:\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;;;;;;;;;;AAWF,MAAa,gBAAgB,yBAAyB,KAAK,CAAC,uBAAuB,KAAK,CAAC"}
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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@clerk/tanstack-react-start",
3
- "version": "1.5.16-dispatch-test.v20260918112202",
3
+ "version": "1.6.0-snapshot.v20260921144734",
4
4
  "description": "Clerk SDK for TanStack React Start",
5
5
  "keywords": [
6
6
  "clerk",
@@ -58,6 +58,8 @@
58
58
  "types": "dist/index.d.ts",
59
59
  "files": [
60
60
  "dist",
61
+ "!dist/**/*.d.ts.map",
62
+ "!dist/**/*.d.mts.map",
61
63
  "errors",
62
64
  "server",
63
65
  "webhooks",
@@ -65,9 +67,9 @@
65
67
  ],
66
68
  "dependencies": {
67
69
  "tslib": "2.8.1",
68
- "@clerk/backend": "3.18.2-dispatch-test.v20260918112202",
69
- "@clerk/shared": "4.34.0-dispatch-test.v20260918112202",
70
- "@clerk/react": "6.16.2-dispatch-test.v20260918112202"
70
+ "@clerk/react": "6.17.0-snapshot.v20260921144734",
71
+ "@clerk/shared": "4.34.0-snapshot.v20260921144734",
72
+ "@clerk/backend": "3.18.2-snapshot.v20260921144734"
71
73
  },
72
74
  "devDependencies": {
73
75
  "@tanstack/react-router": "1.170.19",
@@ -1,10 +0,0 @@
1
- import { KeylessStorage } from "@clerk/shared/keyless";
2
-
3
- //#region src/server/keyless/fileStorage.d.ts
4
- interface FileStorageOptions {
5
- cwd?: () => string;
6
- }
7
- declare function createFileStorage(options?: FileStorageOptions): KeylessStorage;
8
- //#endregion
9
- export { FileStorageOptions, type KeylessStorage, createFileStorage };
10
- //# sourceMappingURL=fileStorage.d.ts.map
@@ -1,16 +0,0 @@
1
- import { createNodeFileStorage } from "@clerk/shared/keyless";
2
- import * as fs from "node:fs";
3
- import * as path from "node:path";
4
-
5
- //#region src/server/keyless/fileStorage.ts
6
- function createFileStorage(options = {}) {
7
- const { cwd = () => process.cwd() } = options;
8
- return createNodeFileStorage(fs, path, {
9
- cwd,
10
- frameworkPackageName: "@clerk/tanstack-react-start"
11
- });
12
- }
13
-
14
- //#endregion
15
- export { createFileStorage };
16
- //# sourceMappingURL=fileStorage.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fileStorage.js","names":[],"sources":["../../../src/server/keyless/fileStorage.ts"],"sourcesContent":["import * as fs from 'node:fs';\nimport * as path from 'node:path';\n\nimport { createNodeFileStorage, type KeylessStorage } from '@clerk/shared/keyless';\n\nexport type { KeylessStorage };\n\nexport interface FileStorageOptions {\n cwd?: () => string;\n}\n\nexport function createFileStorage(options: FileStorageOptions = {}): KeylessStorage {\n const { cwd = () => process.cwd() } = options;\n\n return createNodeFileStorage(fs, path, {\n cwd,\n frameworkPackageName: '@clerk/tanstack-react-start',\n });\n}\n"],"mappings":";;;;;AAWA,SAAgB,kBAAkB,UAA8B,CAAC,GAAmB;CAClF,MAAM,EAAE,YAAY,QAAQ,IAAI,MAAM;CAEtC,OAAO,sBAAsB,IAAI,MAAM;EACrC;EACA,sBAAsB;CACxB,CAAC;AACH"}
@@ -1,5 +0,0 @@
1
- //#region src/server/keyless/index.d.ts
2
- declare function keyless(): import("@clerk/shared/keyless").KeylessService;
3
- //#endregion
4
- export { keyless };
5
- //# sourceMappingURL=index.d.ts.map
@@ -1,39 +0,0 @@
1
- import { clerkClient } from "../clerkClient.js";
2
- import { createFileStorage } from "./fileStorage.js";
3
- import { createKeylessService } from "@clerk/shared/keyless";
4
-
5
- //#region src/server/keyless/index.ts
6
- let keylessServiceInstance = null;
7
- function keyless() {
8
- if (!keylessServiceInstance) keylessServiceInstance = createKeylessService({
9
- storage: createFileStorage(),
10
- api: {
11
- async createAccountlessApplication(requestHeaders, source) {
12
- try {
13
- return await clerkClient().__experimental_accountlessApplications.createAccountlessApplication({
14
- requestHeaders,
15
- source
16
- });
17
- } catch {
18
- return null;
19
- }
20
- },
21
- async completeOnboarding(requestHeaders, source) {
22
- try {
23
- return await clerkClient().__experimental_accountlessApplications.completeAccountlessApplicationOnboarding({
24
- requestHeaders,
25
- source
26
- });
27
- } catch {
28
- return null;
29
- }
30
- }
31
- },
32
- framework: "tanstack-react-start"
33
- });
34
- return keylessServiceInstance;
35
- }
36
-
37
- //#endregion
38
- export { keyless };
39
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../src/server/keyless/index.ts"],"sourcesContent":["import { createKeylessService } from '@clerk/shared/keyless';\n\nimport { clerkClient } from '../clerkClient';\nimport { createFileStorage } from './fileStorage';\n\n// Lazily initialized keyless service singleton\nlet keylessServiceInstance: ReturnType<typeof createKeylessService> | null = null;\n\nexport function keyless() {\n if (!keylessServiceInstance) {\n keylessServiceInstance = createKeylessService({\n storage: createFileStorage(),\n api: {\n async createAccountlessApplication(requestHeaders?: Headers, source?: string) {\n try {\n return await clerkClient().__experimental_accountlessApplications.createAccountlessApplication({\n requestHeaders,\n source,\n });\n } catch {\n return null;\n }\n },\n async completeOnboarding(requestHeaders?: Headers, source?: string) {\n try {\n return await clerkClient().__experimental_accountlessApplications.completeAccountlessApplicationOnboarding({\n requestHeaders,\n source,\n });\n } catch {\n return null;\n }\n },\n },\n framework: 'tanstack-react-start',\n });\n }\n return keylessServiceInstance;\n}\n"],"mappings":";;;;;AAMA,IAAI,yBAAyE;AAE7E,SAAgB,UAAU;CACxB,IAAI,CAAC,wBACH,yBAAyB,qBAAqB;EAC5C,SAAS,kBAAkB;EAC3B,KAAK;GACH,MAAM,6BAA6B,gBAA0B,QAAiB;IAC5E,IAAI;KACF,OAAO,MAAM,YAAY,CAAC,CAAC,uCAAuC,6BAA6B;MAC7F;MACA;KACF,CAAC;IACH,QAAQ;KACN,OAAO;IACT;GACF;GACA,MAAM,mBAAmB,gBAA0B,QAAiB;IAClE,IAAI;KACF,OAAO,MAAM,YAAY,CAAC,CAAC,uCAAuC,yCAAyC;MACzG;MACA;KACF,CAAC;IACH,QAAQ;KACN,OAAO;IACT;GACF;EACF;EACA,WAAW;CACb,CAAC;CAEH,OAAO;AACT"}
@@ -1,14 +0,0 @@
1
- import { KeylessResult } from "@clerk/shared/keyless";
2
-
3
- //#region src/server/keyless/utils.d.ts
4
- /**
5
- * Resolves Clerk keys, falling back to keyless mode in development if configured keys are missing.
6
- *
7
- * @param configuredPublishableKey - The publishable key from options or environment
8
- * @param configuredSecretKey - The secret key from options or environment
9
- * @returns The resolved keys (either configured or from keyless mode)
10
- */
11
- declare function resolveKeysWithKeylessFallback(configuredPublishableKey: string | undefined, configuredSecretKey: string | undefined): Promise<import("@clerk/shared/keyless").KeylessResult>;
12
- //#endregion
13
- export { type KeylessResult, resolveKeysWithKeylessFallback };
14
- //# sourceMappingURL=utils.d.ts.map
@@ -1,19 +0,0 @@
1
- import { canUseKeyless } from "../../utils/feature-flags.js";
2
- import { keyless } from "./index.js";
3
- import { resolveKeysWithKeylessFallback as resolveKeysWithKeylessFallback$1 } from "@clerk/shared/keyless";
4
-
5
- //#region src/server/keyless/utils.ts
6
- /**
7
- * Resolves Clerk keys, falling back to keyless mode in development if configured keys are missing.
8
- *
9
- * @param configuredPublishableKey - The publishable key from options or environment
10
- * @param configuredSecretKey - The secret key from options or environment
11
- * @returns The resolved keys (either configured or from keyless mode)
12
- */
13
- function resolveKeysWithKeylessFallback(configuredPublishableKey, configuredSecretKey) {
14
- return resolveKeysWithKeylessFallback$1(configuredPublishableKey, configuredSecretKey, keyless(), canUseKeyless);
15
- }
16
-
17
- //#endregion
18
- export { resolveKeysWithKeylessFallback };
19
- //# sourceMappingURL=utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.js","names":["sharedResolveKeysWithKeylessFallback"],"sources":["../../../src/server/keyless/utils.ts"],"sourcesContent":["import { resolveKeysWithKeylessFallback as sharedResolveKeysWithKeylessFallback } from '@clerk/shared/keyless';\nexport type { KeylessResult } from '@clerk/shared/keyless';\n\nimport { canUseKeyless } from '../../utils/feature-flags';\nimport { keyless } from './index';\n\n/**\n * Resolves Clerk keys, falling back to keyless mode in development if configured keys are missing.\n *\n * @param configuredPublishableKey - The publishable key from options or environment\n * @param configuredSecretKey - The secret key from options or environment\n * @returns The resolved keys (either configured or from keyless mode)\n */\nexport function resolveKeysWithKeylessFallback(\n configuredPublishableKey: string | undefined,\n configuredSecretKey: string | undefined,\n) {\n return sharedResolveKeysWithKeylessFallback(configuredPublishableKey, configuredSecretKey, keyless(), canUseKeyless);\n}\n"],"mappings":";;;;;;;;;;;;AAaA,SAAgB,+BACd,0BACA,qBACA;CACA,OAAOA,iCAAqC,0BAA0B,qBAAqB,QAAQ,GAAG,aAAa;AACrH"}