@clerk/tanstack-react-start 0.25.4-canary.v20251009174145 → 0.26.0-canary.v20251010143932

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/dist/client/ClerkProvider.js +6 -7
  2. package/dist/client/ClerkProvider.js.map +1 -1
  3. package/dist/server/auth.d.ts +6 -0
  4. package/dist/server/auth.js +18 -0
  5. package/dist/server/auth.js.map +1 -0
  6. package/dist/server/clerkClient.js +1 -1
  7. package/dist/server/clerkMiddleware.d.ts +9 -0
  8. package/dist/server/clerkMiddleware.js +46 -0
  9. package/dist/server/clerkMiddleware.js.map +1 -0
  10. package/dist/server/constants.js +1 -1
  11. package/dist/server/index.d.ts +4 -5
  12. package/dist/server/index.js +2 -2
  13. package/dist/server/loadOptions.d.ts +4 -0
  14. package/dist/server/types.d.ts +5 -2
  15. package/dist/server/utils/index.d.ts +1 -4
  16. package/dist/server/utils/index.js +1 -4
  17. package/dist/server/utils/index.js.map +1 -1
  18. package/dist/utils/env.d.ts +1 -3
  19. package/dist/utils/env.js +2 -2
  20. package/dist/utils/env.js.map +1 -1
  21. package/dist/utils/errors.d.ts +2 -2
  22. package/dist/utils/errors.js +4 -7
  23. package/dist/utils/errors.js.map +1 -1
  24. package/package.json +9 -9
  25. package/dist/server/authenticateRequest.d.ts +0 -5
  26. package/dist/server/authenticateRequest.js +0 -33
  27. package/dist/server/authenticateRequest.js.map +0 -1
  28. package/dist/server/errors.d.ts +0 -7
  29. package/dist/server/errors.js +0 -15
  30. package/dist/server/errors.js.map +0 -1
  31. package/dist/server/getAuth.d.ts +0 -5
  32. package/dist/server/getAuth.js +0 -21
  33. package/dist/server/getAuth.js.map +0 -1
  34. package/dist/server/middlewareHandler.d.ts +0 -9
  35. package/dist/server/middlewareHandler.js +0 -51
  36. package/dist/server/middlewareHandler.js.map +0 -1
@@ -1,6 +1,7 @@
1
1
  import { ClerkProvider as ClerkProvider$1 } from '@clerk/clerk-react';
2
2
  export * from '@clerk/clerk-react';
3
- import { useRouteContext, ScriptOnce } from '@tanstack/react-router';
3
+ import { ScriptOnce } from '@tanstack/react-router';
4
+ import { getGlobalStartContext } from '@tanstack/react-start';
4
5
  import { useEffect } from 'react';
5
6
  import { isClient } from '../utils/index.js';
6
7
  import { ClerkOptionsProvider } from './OptionsContext.js';
@@ -11,25 +12,23 @@ import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
11
12
  // src/client/ClerkProvider.tsx
12
13
  var SDK_METADATA = {
13
14
  name: "@clerk/tanstack-react-start",
14
- version: "0.25.4-canary.v20251009174145"
15
+ version: "0.26.0-canary.v20251010143932"
15
16
  };
16
17
  var awaitableNavigateRef = { current: void 0 };
17
18
  function ClerkProvider({ children, ...providerProps }) {
18
19
  const awaitableNavigate = useAwaitableNavigate();
19
- const routerContext = useRouteContext({
20
- strict: false
21
- });
20
+ const clerkInitialState = getGlobalStartContext()?.clerkInitialState ?? {};
22
21
  useEffect(() => {
23
22
  awaitableNavigateRef.current = awaitableNavigate;
24
23
  }, [awaitableNavigate]);
25
- const clerkInitState = isClient() ? window.__clerk_init_state : routerContext?.clerkInitialState;
24
+ const clerkInitState = isClient() ? window.__clerk_init_state : clerkInitialState;
26
25
  const { clerkSsrState, ...restInitState } = pickFromClerkInitState(clerkInitState?.__internal_clerk_state);
27
26
  const mergedProps = {
28
27
  ...mergeWithPublicEnvs(restInitState),
29
28
  ...providerProps
30
29
  };
31
30
  return /* @__PURE__ */ jsxs(Fragment, { children: [
32
- /* @__PURE__ */ jsx(ScriptOnce, { children: `window.__clerk_init_state = ${JSON.stringify(routerContext?.clerkInitialState)};` }),
31
+ /* @__PURE__ */ jsx(ScriptOnce, { children: `window.__clerk_init_state = ${JSON.stringify(clerkInitialState)};` }),
33
32
  /* @__PURE__ */ jsx(ClerkOptionsProvider, { options: mergedProps, children: /* @__PURE__ */ jsx(
34
33
  ClerkProvider$1,
35
34
  {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/client/ClerkProvider.tsx"],"names":["ReactClerkProvider"],"mappings":";;;;;;;;;;;AAYA,IAAM,YAAA,GAAe;AAAA,EACnB,IAAA,EAAM,6BAAA;AAAA,EACN,OAAA,EAAS;AACX,CAAA;AAEA,IAAM,oBAAA,GAAyF,EAAE,OAAA,EAAS,MAAA,EAAU;AAE7G,SAAS,aAAA,CAAc,EAAE,QAAA,EAAU,GAAG,eAAc,EAAiD;AAC1G,EAAA,MAAM,oBAAoB,oBAAA,EAAqB;AAC/C,EAAA,MAAM,gBAAgB,eAAA,CAAgB;AAAA,IACpC,MAAA,EAAQ;AAAA,GACT,CAAA;AAED,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,oBAAA,CAAqB,OAAA,GAAU,iBAAA;AAAA,EACjC,CAAA,EAAG,CAAC,iBAAiB,CAAC,CAAA;AAEtB,EAAA,MAAM,cAAA,GAAiB,QAAA,EAAS,GAAK,MAAA,CAAe,qBAAqB,aAAA,EAAe,iBAAA;AAExF,EAAA,MAAM,EAAE,aAAA,EAAe,GAAG,eAAc,GAAI,sBAAA,CAAuB,gBAAgB,sBAAsB,CAAA;AAEzG,EAAA,MAAM,WAAA,GAAc;AAAA,IAClB,GAAG,oBAAoB,aAAa,CAAA;AAAA,IACpC,GAAG;AAAA,GACL;AAEA,EAAA,uBACE,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,cAAY,QAAA,EAAA,CAAA,4BAAA,EAA+B,IAAA,CAAK,UAAU,aAAA,EAAe,iBAAiB,CAAC,CAAA,CAAA,CAAA,EAAI,CAAA;AAAA,oBAChG,GAAA,CAAC,oBAAA,EAAA,EAAqB,OAAA,EAAS,WAAA,EAC7B,QAAA,kBAAA,GAAA;AAAA,MAACA,eAAA;AAAA,MAAA;AAAA,QACC,YAAA,EAAc,aAAA;AAAA,QACd,WAAA,EAAa,YAAA;AAAA,QACb,UAAA,EAAY,CAAC,EAAA,KACX,oBAAA,CAAqB,OAAA,GAAU;AAAA,UAC7B,EAAA;AAAA,UACA,OAAA,EAAS;AAAA,SACV,CAAA;AAAA,QAEH,aAAA,EAAe,CAAC,EAAA,KACd,oBAAA,CAAqB,OAAA,GAAU;AAAA,UAC7B,EAAA;AAAA,UACA,OAAA,EAAS;AAAA,SACV,CAAA;AAAA,QAEF,GAAG,WAAA;AAAA,QAEH;AAAA;AAAA,KACH,EACF;AAAA,GAAA,EACF,CAAA;AAEJ;AACA,aAAA,CAAc,WAAA,GAAc,eAAA","file":"ClerkProvider.js","sourcesContent":["import { ClerkProvider as ReactClerkProvider } from '@clerk/clerk-react';\nimport { ScriptOnce, useRouteContext } from '@tanstack/react-router';\nimport { useEffect } from 'react';\n\nimport { isClient } from '../utils';\nimport { ClerkOptionsProvider } from './OptionsContext';\nimport type { TanstackStartClerkProviderProps } from './types';\nimport { useAwaitableNavigate } from './useAwaitableNavigate';\nimport { mergeWithPublicEnvs, pickFromClerkInitState } from './utils';\n\nexport * from '@clerk/clerk-react';\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({ children, ...providerProps }: TanstackStartClerkProviderProps): JSX.Element {\n const awaitableNavigate = useAwaitableNavigate();\n const routerContext = useRouteContext({\n strict: false,\n });\n\n useEffect(() => {\n awaitableNavigateRef.current = awaitableNavigate;\n }, [awaitableNavigate]);\n\n const clerkInitState = isClient() ? (window as any).__clerk_init_state : routerContext?.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 = ${JSON.stringify(routerContext?.clerkInitialState)};`}</ScriptOnce>\n <ClerkOptionsProvider options={mergedProps}>\n <ReactClerkProvider\n initialState={clerkSsrState}\n sdkMetadata={SDK_METADATA}\n routerPush={(to: string) =>\n awaitableNavigateRef.current?.({\n to,\n replace: false,\n })\n }\n routerReplace={(to: string) =>\n awaitableNavigateRef.current?.({\n to,\n replace: true,\n })\n }\n {...mergedProps}\n >\n {children}\n </ReactClerkProvider>\n </ClerkOptionsProvider>\n </>\n );\n}\nClerkProvider.displayName = 'ClerkProvider';\n"]}
1
+ {"version":3,"sources":["../../src/client/ClerkProvider.tsx"],"names":["ReactClerkProvider"],"mappings":";;;;;;;;;;;;AAaA,IAAM,YAAA,GAAe;AAAA,EACnB,IAAA,EAAM,6BAAA;AAAA,EACN,OAAA,EAAS;AACX,CAAA;AAEA,IAAM,oBAAA,GAAyF,EAAE,OAAA,EAAS,MAAA,EAAU;AAE7G,SAAS,aAAA,CAAc,EAAE,QAAA,EAAU,GAAG,eAAc,EAAiD;AAC1G,EAAA,MAAM,oBAAoB,oBAAA,EAAqB;AAE/C,EAAA,MAAM,iBAAA,GAAoB,qBAAA,EAAsB,EAAG,iBAAA,IAAqB,EAAC;AAEzE,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,oBAAA,CAAqB,OAAA,GAAU,iBAAA;AAAA,EACjC,CAAA,EAAG,CAAC,iBAAiB,CAAC,CAAA;AAEtB,EAAA,MAAM,cAAA,GAAiB,QAAA,EAAS,GAAK,MAAA,CAAe,kBAAA,GAAqB,iBAAA;AAEzE,EAAA,MAAM,EAAE,aAAA,EAAe,GAAG,eAAc,GAAI,sBAAA,CAAuB,gBAAgB,sBAAsB,CAAA;AAEzG,EAAA,MAAM,WAAA,GAAc;AAAA,IAClB,GAAG,oBAAoB,aAAa,CAAA;AAAA,IACpC,GAAG;AAAA,GACL;AAEA,EAAA,uBACE,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,cAAY,QAAA,EAAA,CAAA,4BAAA,EAA+B,IAAA,CAAK,SAAA,CAAU,iBAAiB,CAAC,CAAA,CAAA,CAAA,EAAI,CAAA;AAAA,oBACjF,GAAA,CAAC,oBAAA,EAAA,EAAqB,OAAA,EAAS,WAAA,EAC7B,QAAA,kBAAA,GAAA;AAAA,MAACA,eAAA;AAAA,MAAA;AAAA,QACC,YAAA,EAAc,aAAA;AAAA,QACd,WAAA,EAAa,YAAA;AAAA,QACb,UAAA,EAAY,CAAC,EAAA,KACX,oBAAA,CAAqB,OAAA,GAAU;AAAA,UAC7B,EAAA;AAAA,UACA,OAAA,EAAS;AAAA,SACV,CAAA;AAAA,QAEH,aAAA,EAAe,CAAC,EAAA,KACd,oBAAA,CAAqB,OAAA,GAAU;AAAA,UAC7B,EAAA;AAAA,UACA,OAAA,EAAS;AAAA,SACV,CAAA;AAAA,QAEF,GAAG,WAAA;AAAA,QAEH;AAAA;AAAA,KACH,EACF;AAAA,GAAA,EACF,CAAA;AAEJ;AACA,aAAA,CAAc,WAAA,GAAc,eAAA","file":"ClerkProvider.js","sourcesContent":["import { ClerkProvider as ReactClerkProvider } from '@clerk/clerk-react';\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, pickFromClerkInitState } from './utils';\n\nexport * from '@clerk/clerk-react';\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({ children, ...providerProps }: TanstackStartClerkProviderProps): 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 = ${JSON.stringify(clerkInitialState)};`}</ScriptOnce>\n <ClerkOptionsProvider options={mergedProps}>\n <ReactClerkProvider\n initialState={clerkSsrState}\n sdkMetadata={SDK_METADATA}\n routerPush={(to: string) =>\n awaitableNavigateRef.current?.({\n to,\n replace: false,\n })\n }\n routerReplace={(to: string) =>\n awaitableNavigateRef.current?.({\n to,\n replace: true,\n })\n }\n {...mergedProps}\n >\n {children}\n </ReactClerkProvider>\n </ClerkOptionsProvider>\n </>\n );\n}\nClerkProvider.displayName = 'ClerkProvider';\n"]}
@@ -0,0 +1,6 @@
1
+ import { SessionAuthObject } from '@clerk/backend';
2
+ import { GetAuthFnNoRequest } from '@clerk/backend/internal';
3
+
4
+ declare const auth: GetAuthFnNoRequest<SessionAuthObject, true>;
5
+
6
+ export { auth };
@@ -0,0 +1,18 @@
1
+ import { getAuthObjectForAcceptedToken } from '@clerk/backend/internal';
2
+ import { getGlobalStartContext } from '@tanstack/react-start';
3
+ import { errorThrower } from '../utils/index.js';
4
+ import { clerkMiddlewareNotConfigured } from '../utils/errors.js';
5
+
6
+ // src/server/auth.ts
7
+ var auth = async (opts) => {
8
+ const authObjectFn = getGlobalStartContext().auth;
9
+ if (!authObjectFn) {
10
+ return errorThrower.throw(clerkMiddlewareNotConfigured);
11
+ }
12
+ const authObject = await Promise.resolve(authObjectFn({ treatPendingAsSignedOut: opts?.treatPendingAsSignedOut }));
13
+ return getAuthObjectForAcceptedToken({ authObject, acceptsToken: opts?.acceptsToken });
14
+ };
15
+
16
+ export { auth };
17
+ //# sourceMappingURL=auth.js.map
18
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/server/auth.ts"],"names":[],"mappings":";;;;;;AAQO,IAAM,IAAA,GAAqD,OAAO,IAAA,KAAuB;AAE9F,EAAA,MAAM,YAAA,GAAe,uBAAsB,CAAE,IAAA;AAE7C,EAAA,IAAI,CAAC,YAAA,EAAc;AACjB,IAAA,OAAO,YAAA,CAAa,MAAM,4BAA4B,CAAA;AAAA,EACxD;AAGA,EAAA,MAAM,UAAA,GAAa,MAAM,OAAA,CAAQ,OAAA,CAAQ,YAAA,CAAa,EAAE,uBAAA,EAAyB,IAAA,EAAM,uBAAA,EAAyB,CAAC,CAAA;AAEjH,EAAA,OAAO,8BAA8B,EAAE,UAAA,EAAY,YAAA,EAAc,IAAA,EAAM,cAAc,CAAA;AACvF","file":"auth.js","sourcesContent":["import type { SessionAuthObject } from '@clerk/backend';\nimport type { AuthOptions, GetAuthFnNoRequest } from '@clerk/backend/internal';\nimport { getAuthObjectForAcceptedToken } from '@clerk/backend/internal';\nimport { getGlobalStartContext } from '@tanstack/react-start';\n\nimport { errorThrower } from '../utils';\nimport { clerkMiddlewareNotConfigured } from '../utils/errors';\n\nexport const auth: GetAuthFnNoRequest<SessionAuthObject, true> = (async (opts?: AuthOptions) => {\n // @ts-expect-error: Untyped internal Clerk start context\n const authObjectFn = getGlobalStartContext().auth;\n\n if (!authObjectFn) {\n return errorThrower.throw(clerkMiddlewareNotConfigured);\n }\n\n // We're keeping it a promise for now for future changes\n const authObject = await Promise.resolve(authObjectFn({ treatPendingAsSignedOut: opts?.treatPendingAsSignedOut }));\n\n return getAuthObjectForAcceptedToken({ authObject, acceptsToken: opts?.acceptsToken });\n}) as GetAuthFnNoRequest<SessionAuthObject, true>;\n"]}
@@ -10,7 +10,7 @@ var 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"}@${"0.25.4-canary.v20251009174145"}`,
13
+ userAgent: `${"@clerk/tanstack-react-start"}@${"0.26.0-canary.v20251010143932"}`,
14
14
  proxyUrl: commonEnv.PROXY_URL,
15
15
  domain: commonEnv.DOMAIN,
16
16
  isSatellite: commonEnv.IS_SATELLITE,
@@ -0,0 +1,9 @@
1
+ import { AnyRequestMiddleware } from '@tanstack/react-start';
2
+ import { ClerkMiddlewareOptions } from './types.js';
3
+ import '@clerk/backend';
4
+ import '@clerk/backend/internal';
5
+ import '@clerk/types';
6
+
7
+ declare const clerkMiddleware: (options?: ClerkMiddlewareOptions) => AnyRequestMiddleware;
8
+
9
+ export { clerkMiddleware };
@@ -0,0 +1,46 @@
1
+ import { constants, AuthStatus } from '@clerk/backend/internal';
2
+ import { handleNetlifyCacheInDevInstance } from '@clerk/shared/netlifyCacheHandler';
3
+ import { createMiddleware, json } from '@tanstack/react-start';
4
+ import { clerkClient } from './clerkClient.js';
5
+ import { loadOptions } from './loadOptions.js';
6
+ import { getResponseClerkState } from './utils/index.js';
7
+
8
+ // src/server/clerkMiddleware.ts
9
+ var clerkMiddleware = (options) => {
10
+ return createMiddleware().server(async (args) => {
11
+ const loadedOptions = loadOptions(args.request, options);
12
+ const requestState = await clerkClient().authenticateRequest(args.request, {
13
+ ...loadedOptions,
14
+ acceptsToken: "any"
15
+ });
16
+ const locationHeader = requestState.headers.get(constants.Headers.Location);
17
+ if (locationHeader) {
18
+ handleNetlifyCacheInDevInstance({
19
+ locationHeader,
20
+ requestStateHeaders: requestState.headers,
21
+ publishableKey: requestState.publishableKey
22
+ });
23
+ throw json(null, { status: 307, headers: requestState.headers });
24
+ }
25
+ if (requestState.status === AuthStatus.Handshake) {
26
+ throw new Error("Clerk: handshake status without redirect");
27
+ }
28
+ const clerkInitialState = getResponseClerkState(requestState, loadedOptions);
29
+ const result = await args.next({
30
+ context: {
31
+ clerkInitialState,
32
+ auth: (opts) => requestState.toAuth(opts)
33
+ }
34
+ });
35
+ if (requestState.headers) {
36
+ requestState.headers.forEach((value, key) => {
37
+ result.response.headers.append(key, value);
38
+ });
39
+ }
40
+ return result;
41
+ });
42
+ };
43
+
44
+ export { clerkMiddleware };
45
+ //# sourceMappingURL=clerkMiddleware.js.map
46
+ //# sourceMappingURL=clerkMiddleware.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/server/clerkMiddleware.ts"],"names":[],"mappings":";;;;;;;;AAYO,IAAM,eAAA,GAAkB,CAAC,OAAA,KAA2D;AACzF,EAAA,OAAO,gBAAA,EAAiB,CAAE,MAAA,CAAO,OAAM,IAAA,KAAQ;AAC7C,IAAA,MAAM,aAAA,GAAgB,WAAA,CAAY,IAAA,CAAK,OAAA,EAAS,OAAO,CAAA;AACvD,IAAA,MAAM,eAAe,MAAM,WAAA,EAAY,CAAE,mBAAA,CAAoB,KAAK,OAAA,EAAS;AAAA,MACzE,GAAG,aAAA;AAAA,MACH,YAAA,EAAc;AAAA,KACf,CAAA;AAED,IAAA,MAAM,iBAAiB,YAAA,CAAa,OAAA,CAAQ,GAAA,CAAI,SAAA,CAAU,QAAQ,QAAQ,CAAA;AAC1E,IAAA,IAAI,cAAA,EAAgB;AAClB,MAAA,+BAAA,CAAgC;AAAA,QAC9B,cAAA;AAAA,QACA,qBAAqB,YAAA,CAAa,OAAA;AAAA,QAClC,gBAAgB,YAAA,CAAa;AAAA,OAC9B,CAAA;AAGD,MAAA,MAAM,IAAA,CAAK,MAAM,EAAE,MAAA,EAAQ,KAAK,OAAA,EAAS,YAAA,CAAa,SAAS,CAAA;AAAA,IACjE;AAEA,IAAA,IAAI,YAAA,CAAa,MAAA,KAAW,UAAA,CAAW,SAAA,EAAW;AAChD,MAAA,MAAM,IAAI,MAAM,0CAA0C,CAAA;AAAA,IAC5D;AAEA,IAAA,MAAM,iBAAA,GAAoB,qBAAA,CAAsB,YAAA,EAA8B,aAAa,CAAA;AAE3F,IAAA,MAAM,MAAA,GAAS,MAAM,IAAA,CAAK,IAAA,CAAK;AAAA,MAC7B,OAAA,EAAS;AAAA,QACP,iBAAA;AAAA,QACA,IAAA,EAAM,CAAC,IAAA,KAAiC,YAAA,CAAa,OAAO,IAAI;AAAA;AAClE,KACD,CAAA;AAED,IAAA,IAAI,aAAa,OAAA,EAAS;AACxB,MAAA,YAAA,CAAa,OAAA,CAAQ,OAAA,CAAQ,CAAC,KAAA,EAAO,GAAA,KAAQ;AAC3C,QAAA,MAAA,CAAO,QAAA,CAAS,OAAA,CAAQ,MAAA,CAAO,GAAA,EAAK,KAAK,CAAA;AAAA,MAC3C,CAAC,CAAA;AAAA,IACH;AAEA,IAAA,OAAO,MAAA;AAAA,EACT,CAAC,CAAA;AACH","file":"clerkMiddleware.js","sourcesContent":["import type { RequestState } from '@clerk/backend/internal';\nimport { AuthStatus, constants } from '@clerk/backend/internal';\nimport { handleNetlifyCacheInDevInstance } from '@clerk/shared/netlifyCacheHandler';\nimport type { PendingSessionOptions } from '@clerk/types';\nimport type { AnyRequestMiddleware } from '@tanstack/react-start';\nimport { createMiddleware, json } from '@tanstack/react-start';\n\nimport { clerkClient } from './clerkClient';\nimport { loadOptions } from './loadOptions';\nimport type { ClerkMiddlewareOptions } from './types';\nimport { getResponseClerkState } from './utils';\n\nexport const clerkMiddleware = (options?: ClerkMiddlewareOptions): AnyRequestMiddleware => {\n return createMiddleware().server(async args => {\n const loadedOptions = loadOptions(args.request, options);\n const requestState = await clerkClient().authenticateRequest(args.request, {\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 json(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 args.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"]}
@@ -26,7 +26,7 @@ var commonEnvs = () => {
26
26
  API_URL: getEnvVariable("CLERK_API_URL") || apiUrlFromPublishableKey(publicEnvs.publishableKey),
27
27
  SDK_METADATA: {
28
28
  name: "@clerk/tanstack-react-start",
29
- version: "0.25.4-canary.v20251009174145",
29
+ version: "0.26.0-canary.v20251010143932",
30
30
  environment: getEnvVariable("NODE_ENV")
31
31
  }
32
32
  };
@@ -1,9 +1,8 @@
1
- export { createClerkHandler } from './middlewareHandler.js';
2
- export { getAuth } from './getAuth.js';
1
+ export { auth } from './auth.js';
3
2
  export { clerkClient } from './clerkClient.js';
3
+ export { clerkMiddleware } from './clerkMiddleware.js';
4
4
  export { AllowlistIdentifier, Client, EmailAddress, ExternalAccount, Invitation, OauthAccessToken, Organization, OrganizationDomain, OrganizationInvitation, OrganizationMembership, OrganizationMembershipPublicUserData, OrganizationMembershipRole, PhoneNumber, SMSMessage, Session, SignInToken, Token, User, WebhookEvent, WebhookEventType } from '@clerk/backend';
5
- import '@tanstack/react-router';
6
- import '@tanstack/react-start/server';
5
+ import '@clerk/backend/internal';
6
+ import '@tanstack/react-start';
7
7
  import './types.js';
8
8
  import '@clerk/types';
9
- import '@clerk/backend/internal';
@@ -1,5 +1,5 @@
1
- export * from './middlewareHandler.js';
2
- export * from './getAuth.js';
1
+ export { auth } from './auth.js';
3
2
  export { clerkClient } from './clerkClient.js';
3
+ export { clerkMiddleware } from './clerkMiddleware.js';
4
4
  //# sourceMappingURL=index.js.map
5
5
  //# sourceMappingURL=index.js.map
@@ -1,3 +1,4 @@
1
+ import * as _clerk_backend_internal from '@clerk/backend/internal';
1
2
  import { LoaderOptions } from './types.js';
2
3
  import '@clerk/backend';
3
4
  import '@clerk/types';
@@ -15,6 +16,7 @@ declare const loadOptions: (request: Request, overrides?: LoaderOptions) => {
15
16
  signUpUrl: string;
16
17
  afterSignInUrl: string;
17
18
  afterSignUpUrl: string;
19
+ organizationSyncOptions?: _clerk_backend_internal.OrganizationSyncOptions;
18
20
  audience?: string | string[] | undefined;
19
21
  authorizedParties?: string[] | undefined;
20
22
  signInForceRedirectUrl?: string | null;
@@ -35,6 +37,7 @@ declare const loadOptions: (request: Request, overrides?: LoaderOptions) => {
35
37
  signUpUrl: string;
36
38
  afterSignInUrl: string;
37
39
  afterSignUpUrl: string;
40
+ organizationSyncOptions?: _clerk_backend_internal.OrganizationSyncOptions;
38
41
  audience?: string | string[] | undefined;
39
42
  authorizedParties?: string[] | undefined;
40
43
  signInForceRedirectUrl?: string | null;
@@ -55,6 +58,7 @@ declare const loadOptions: (request: Request, overrides?: LoaderOptions) => {
55
58
  signUpUrl: string;
56
59
  afterSignInUrl: string;
57
60
  afterSignUpUrl: string;
61
+ organizationSyncOptions?: _clerk_backend_internal.OrganizationSyncOptions;
58
62
  audience?: string | string[] | undefined;
59
63
  authorizedParties?: string[] | undefined;
60
64
  signInForceRedirectUrl?: string | null;
@@ -1,14 +1,17 @@
1
1
  import { VerifyTokenOptions } from '@clerk/backend';
2
+ import { OrganizationSyncOptions } from '@clerk/backend/internal';
2
3
  import { MultiDomainAndOrProxy, SignInForceRedirectUrl, SignInFallbackRedirectUrl, SignUpForceRedirectUrl, SignUpFallbackRedirectUrl, LegacyRedirectProps } from '@clerk/types';
3
4
 
4
- type LoaderOptions = {
5
+ type ClerkMiddlewareOptions = {
5
6
  publishableKey?: string;
6
7
  jwtKey?: string;
7
8
  secretKey?: string;
8
9
  machineSecretKey?: string;
9
10
  signInUrl?: string;
10
11
  signUpUrl?: string;
12
+ organizationSyncOptions?: OrganizationSyncOptions;
11
13
  } & Pick<VerifyTokenOptions, 'audience' | 'authorizedParties'> & MultiDomainAndOrProxy & SignInForceRedirectUrl & SignInFallbackRedirectUrl & SignUpForceRedirectUrl & SignUpFallbackRedirectUrl & LegacyRedirectProps;
14
+ type LoaderOptions = ClerkMiddlewareOptions;
12
15
  type AdditionalStateOptions = SignInFallbackRedirectUrl & SignUpFallbackRedirectUrl & SignInForceRedirectUrl & SignUpForceRedirectUrl;
13
16
 
14
- export type { AdditionalStateOptions, LoaderOptions };
17
+ export type { AdditionalStateOptions, ClerkMiddlewareOptions, LoaderOptions };
@@ -18,10 +18,7 @@ declare const wrapWithClerkState: (data: any) => {
18
18
  * @internal
19
19
  */
20
20
  declare function getResponseClerkState(requestState: RequestState, additionalStateOptions?: AdditionalStateOptions): {
21
- clerkInitialState: {
22
- __internal_clerk_state: any;
23
- };
24
- headers: Headers;
21
+ __internal_clerk_state: any;
25
22
  };
26
23
  /**
27
24
  * Patches request to avoid duplex issues with unidici
@@ -28,10 +28,7 @@ function getResponseClerkState(requestState, additionalStateOptions = {}) {
28
28
  __signInFallbackRedirectUrl: additionalStateOptions.signInFallbackRedirectUrl || getEnvVariable("CLERK_SIGN_IN_FALLBACK_REDIRECT_URL") || "",
29
29
  __signUpFallbackRedirectUrl: additionalStateOptions.signUpFallbackRedirectUrl || getEnvVariable("CLERK_SIGN_UP_FALLBACK_REDIRECT_URL") || ""
30
30
  });
31
- return {
32
- clerkInitialState,
33
- headers: requestState.headers
34
- };
31
+ return clerkInitialState;
35
32
  }
36
33
  var patchRequest = (request) => {
37
34
  const clonedRequest = new Request(request.url, {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/server/utils/index.ts"],"names":[],"mappings":";;;;;AAaO,IAAM,kBAAA,GAAqB,CAAC,IAAA,KAAc;AAC/C,EAAA,OAAO,EAAE,sBAAA,EAAwB,EAAE,GAAG,MAAK,EAAE;AAC/C;AAOO,SAAS,qBAAA,CAAsB,YAAA,EAA4B,sBAAA,GAAiD,EAAC,EAAG;AACrH,EAAA,MAAM,EAAE,MAAA,EAAQ,OAAA,EAAS,UAAA,EAAY,GAAG,MAAK,GAAI,YAAA;AAEjD,EAAA,MAAM,oBAAoB,kBAAA,CAAmB;AAAA,IAC3C,iBAAA,EAAmB,KAAK,MAAA,EAAO;AAAA,IAC/B,kBAAkB,YAAA,CAAa,cAAA;AAAA,IAC/B,YAAY,YAAA,CAAa,QAAA;AAAA,IACzB,UAAU,YAAA,CAAa,MAAA;AAAA,IACvB,eAAe,YAAA,CAAa,WAAA;AAAA,IAC5B,aAAa,YAAA,CAAa,SAAA;AAAA,IAC1B,aAAa,YAAA,CAAa,SAAA;AAAA,IAC1B,kBAAkB,YAAA,CAAa,cAAA;AAAA,IAC/B,kBAAkB,YAAA,CAAa,cAAA;AAAA,IAC/B,aAAA,EAAe,kBAAkB,YAAY,CAAA;AAAA,IAC7C,YAAA,EAAc,eAAe,UAAU,CAAA;AAAA,IACvC,gBAAA,EAAkB,eAAe,kBAAkB,CAAA;AAAA,IACnD,mBAAA,EAAqB,QAAA,CAAS,cAAA,CAAe,0BAA0B,CAAC,CAAA;AAAA,IACxE,gBAAA,EAAkB,QAAA,CAAS,cAAA,CAAe,uBAAuB,CAAC,CAAA;AAAA,IAClE,wBAAA,EACE,sBAAA,CAAuB,sBAAA,IAA0B,cAAA,CAAe,kCAAkC,CAAA,IAAK,EAAA;AAAA,IACzG,wBAAA,EACE,sBAAA,CAAuB,sBAAA,IAA0B,cAAA,CAAe,kCAAkC,CAAA,IAAK,EAAA;AAAA,IACzG,2BAAA,EACE,sBAAA,CAAuB,yBAAA,IAA6B,cAAA,CAAe,qCAAqC,CAAA,IAAK,EAAA;AAAA,IAC/G,2BAAA,EACE,sBAAA,CAAuB,yBAAA,IAA6B,cAAA,CAAe,qCAAqC,CAAA,IAAK;AAAA,GAChH,CAAA;AAED,EAAA,OAAO;AAAA,IACL,iBAAA;AAAA,IACA,SAAS,YAAA,CAAa;AAAA,GACxB;AACF;AASO,IAAM,YAAA,GAAe,CAAC,OAAA,KAAqB;AAChD,EAAA,MAAM,aAAA,GAAgB,IAAI,OAAA,CAAQ,OAAA,CAAQ,GAAA,EAAK;AAAA,IAC7C,SAAS,OAAA,CAAQ,OAAA;AAAA,IACjB,QAAQ,OAAA,CAAQ,MAAA;AAAA,IAChB,UAAU,OAAA,CAAQ,QAAA;AAAA,IAClB,OAAO,OAAA,CAAQ,KAAA;AAAA,IACf,QAAQ,OAAA,CAAQ;AAAA,GACjB,CAAA;AAGD,EAAA,IAAI,aAAA,CAAc,WAAW,KAAA,IAAS,aAAA,CAAc,SAAS,IAAA,IAAQ,EAAE,YAAY,aAAA,CAAA,EAAgB;AACjG,IAAC,cAAgD,MAAA,GAAS,MAAA;AAAA,EAC5D;AAEA,EAAA,OAAO,aAAA;AACT","file":"index.js","sourcesContent":["import type { RequestState } from '@clerk/backend/internal';\nimport { debugRequestState } from '@clerk/backend/internal';\nimport { getEnvVariable } from '@clerk/shared/getEnvVariable';\nimport { isTruthy } from '@clerk/shared/underscore';\n\nimport type { AdditionalStateOptions } from '../types';\n\n/**\n * Wraps obscured clerk internals with a readable `clerkState` key.\n * This is intended to be passed into <ClerkProvider>\n *\n * @internal\n */\nexport const wrapWithClerkState = (data: any) => {\n return { __internal_clerk_state: { ...data } };\n};\n\n/**\n * Returns the clerk state object and observability headers to be injected into a context.\n *\n * @internal\n */\nexport function getResponseClerkState(requestState: RequestState, additionalStateOptions: AdditionalStateOptions = {}) {\n const { reason, message, isSignedIn, ...rest } = requestState;\n\n const clerkInitialState = wrapWithClerkState({\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 __afterSignInUrl: requestState.afterSignInUrl,\n __afterSignUpUrl: requestState.afterSignUpUrl,\n __clerk_debug: debugRequestState(requestState),\n __clerkJSUrl: getEnvVariable('CLERK_JS'),\n __clerkJSVersion: getEnvVariable('CLERK_JS_VERSION'),\n __telemetryDisabled: isTruthy(getEnvVariable('CLERK_TELEMETRY_DISABLED')),\n __telemetryDebug: isTruthy(getEnvVariable('CLERK_TELEMETRY_DEBUG')),\n __signInForceRedirectUrl:\n additionalStateOptions.signInForceRedirectUrl || getEnvVariable('CLERK_SIGN_IN_FORCE_REDIRECT_URL') || '',\n __signUpForceRedirectUrl:\n additionalStateOptions.signUpForceRedirectUrl || getEnvVariable('CLERK_SIGN_UP_FORCE_REDIRECT_URL') || '',\n __signInFallbackRedirectUrl:\n additionalStateOptions.signInFallbackRedirectUrl || getEnvVariable('CLERK_SIGN_IN_FALLBACK_REDIRECT_URL') || '',\n __signUpFallbackRedirectUrl:\n additionalStateOptions.signUpFallbackRedirectUrl || getEnvVariable('CLERK_SIGN_UP_FALLBACK_REDIRECT_URL') || '',\n });\n\n return {\n clerkInitialState,\n headers: requestState.headers,\n };\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 const clonedRequest = new Request(request.url, {\n headers: request.headers,\n method: request.method,\n redirect: request.redirect,\n cache: request.cache,\n signal: request.signal,\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"]}
1
+ {"version":3,"sources":["../../../src/server/utils/index.ts"],"names":[],"mappings":";;;;;AAaO,IAAM,kBAAA,GAAqB,CAAC,IAAA,KAAc;AAC/C,EAAA,OAAO,EAAE,sBAAA,EAAwB,EAAE,GAAG,MAAK,EAAE;AAC/C;AAOO,SAAS,qBAAA,CAAsB,YAAA,EAA4B,sBAAA,GAAiD,EAAC,EAAG;AACrH,EAAA,MAAM,EAAE,MAAA,EAAQ,OAAA,EAAS,UAAA,EAAY,GAAG,MAAK,GAAI,YAAA;AAEjD,EAAA,MAAM,oBAAoB,kBAAA,CAAmB;AAAA,IAC3C,iBAAA,EAAmB,KAAK,MAAA,EAAO;AAAA,IAC/B,kBAAkB,YAAA,CAAa,cAAA;AAAA,IAC/B,YAAY,YAAA,CAAa,QAAA;AAAA,IACzB,UAAU,YAAA,CAAa,MAAA;AAAA,IACvB,eAAe,YAAA,CAAa,WAAA;AAAA,IAC5B,aAAa,YAAA,CAAa,SAAA;AAAA,IAC1B,aAAa,YAAA,CAAa,SAAA;AAAA,IAC1B,kBAAkB,YAAA,CAAa,cAAA;AAAA,IAC/B,kBAAkB,YAAA,CAAa,cAAA;AAAA,IAC/B,aAAA,EAAe,kBAAkB,YAAY,CAAA;AAAA,IAC7C,YAAA,EAAc,eAAe,UAAU,CAAA;AAAA,IACvC,gBAAA,EAAkB,eAAe,kBAAkB,CAAA;AAAA,IACnD,mBAAA,EAAqB,QAAA,CAAS,cAAA,CAAe,0BAA0B,CAAC,CAAA;AAAA,IACxE,gBAAA,EAAkB,QAAA,CAAS,cAAA,CAAe,uBAAuB,CAAC,CAAA;AAAA,IAClE,wBAAA,EACE,sBAAA,CAAuB,sBAAA,IAA0B,cAAA,CAAe,kCAAkC,CAAA,IAAK,EAAA;AAAA,IACzG,wBAAA,EACE,sBAAA,CAAuB,sBAAA,IAA0B,cAAA,CAAe,kCAAkC,CAAA,IAAK,EAAA;AAAA,IACzG,2BAAA,EACE,sBAAA,CAAuB,yBAAA,IAA6B,cAAA,CAAe,qCAAqC,CAAA,IAAK,EAAA;AAAA,IAC/G,2BAAA,EACE,sBAAA,CAAuB,yBAAA,IAA6B,cAAA,CAAe,qCAAqC,CAAA,IAAK;AAAA,GAChH,CAAA;AAED,EAAA,OAAO,iBAAA;AACT;AASO,IAAM,YAAA,GAAe,CAAC,OAAA,KAAqB;AAChD,EAAA,MAAM,aAAA,GAAgB,IAAI,OAAA,CAAQ,OAAA,CAAQ,GAAA,EAAK;AAAA,IAC7C,SAAS,OAAA,CAAQ,OAAA;AAAA,IACjB,QAAQ,OAAA,CAAQ,MAAA;AAAA,IAChB,UAAU,OAAA,CAAQ,QAAA;AAAA,IAClB,OAAO,OAAA,CAAQ,KAAA;AAAA,IACf,QAAQ,OAAA,CAAQ;AAAA,GACjB,CAAA;AAGD,EAAA,IAAI,aAAA,CAAc,WAAW,KAAA,IAAS,aAAA,CAAc,SAAS,IAAA,IAAQ,EAAE,YAAY,aAAA,CAAA,EAAgB;AACjG,IAAC,cAAgD,MAAA,GAAS,MAAA;AAAA,EAC5D;AAEA,EAAA,OAAO,aAAA;AACT","file":"index.js","sourcesContent":["import type { RequestState } from '@clerk/backend/internal';\nimport { debugRequestState } from '@clerk/backend/internal';\nimport { getEnvVariable } from '@clerk/shared/getEnvVariable';\nimport { isTruthy } from '@clerk/shared/underscore';\n\nimport type { AdditionalStateOptions } from '../types';\n\n/**\n * Wraps obscured clerk internals with a readable `clerkState` key.\n * This is intended to be passed into <ClerkProvider>\n *\n * @internal\n */\nexport const wrapWithClerkState = (data: any) => {\n return { __internal_clerk_state: { ...data } };\n};\n\n/**\n * Returns the clerk state object and observability headers to be injected into a context.\n *\n * @internal\n */\nexport function getResponseClerkState(requestState: RequestState, additionalStateOptions: AdditionalStateOptions = {}) {\n const { reason, message, isSignedIn, ...rest } = requestState;\n\n const clerkInitialState = wrapWithClerkState({\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 __afterSignInUrl: requestState.afterSignInUrl,\n __afterSignUpUrl: requestState.afterSignUpUrl,\n __clerk_debug: debugRequestState(requestState),\n __clerkJSUrl: getEnvVariable('CLERK_JS'),\n __clerkJSVersion: getEnvVariable('CLERK_JS_VERSION'),\n __telemetryDisabled: isTruthy(getEnvVariable('CLERK_TELEMETRY_DISABLED')),\n __telemetryDebug: isTruthy(getEnvVariable('CLERK_TELEMETRY_DEBUG')),\n __signInForceRedirectUrl:\n additionalStateOptions.signInForceRedirectUrl || getEnvVariable('CLERK_SIGN_IN_FORCE_REDIRECT_URL') || '',\n __signUpForceRedirectUrl:\n additionalStateOptions.signUpForceRedirectUrl || getEnvVariable('CLERK_SIGN_UP_FORCE_REDIRECT_URL') || '',\n __signInFallbackRedirectUrl:\n additionalStateOptions.signInFallbackRedirectUrl || getEnvVariable('CLERK_SIGN_IN_FALLBACK_REDIRECT_URL') || '',\n __signUpFallbackRedirectUrl:\n additionalStateOptions.signUpFallbackRedirectUrl || getEnvVariable('CLERK_SIGN_UP_FALLBACK_REDIRECT_URL') || '',\n });\n\n return clerkInitialState;\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 const clonedRequest = new Request(request.url, {\n headers: request.headers,\n method: request.method,\n redirect: request.redirect,\n cache: request.cache,\n signal: request.signal,\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"]}
@@ -1,6 +1,4 @@
1
- import { H3EventContext } from '@tanstack/react-start/server';
2
-
3
- declare const getPublicEnvVariables: (context?: H3EventContext) => {
1
+ declare const getPublicEnvVariables: () => {
4
2
  readonly publishableKey: string;
5
3
  readonly domain: string;
6
4
  readonly isSatellite: boolean;
package/dist/utils/env.js CHANGED
@@ -2,9 +2,9 @@ import { getEnvVariable } from '@clerk/shared/getEnvVariable';
2
2
  import { isTruthy } from '@clerk/shared/underscore';
3
3
 
4
4
  // src/utils/env.ts
5
- var getPublicEnvVariables = (context) => {
5
+ var getPublicEnvVariables = () => {
6
6
  const getValue = (name) => {
7
- return getEnvVariable(`VITE_${name}`, context) || getEnvVariable(name, context);
7
+ return getEnvVariable(`VITE_${name}`) || getEnvVariable(name);
8
8
  };
9
9
  return {
10
10
  publishableKey: getValue("CLERK_PUBLISHABLE_KEY"),
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utils/env.ts"],"names":[],"mappings":";;;;AAIO,IAAM,qBAAA,GAAwB,CAAC,OAAA,KAA6B;AACjE,EAAA,MAAM,QAAA,GAAW,CAAC,IAAA,KAAyB;AACzC,IAAA,OAAO,cAAA,CAAe,QAAQ,IAAI,CAAA,CAAA,EAAI,OAAO,CAAA,IAAK,cAAA,CAAe,MAAM,OAAO,CAAA;AAAA,EAChF,CAAA;AAEA,EAAA,OAAO;AAAA,IACL,cAAA,EAAgB,SAAS,uBAAuB,CAAA;AAAA,IAChD,MAAA,EAAQ,SAAS,cAAc,CAAA;AAAA,IAC/B,WAAA,EAAa,QAAA,CAAS,QAAA,CAAS,oBAAoB,CAAC,CAAA;AAAA,IACpD,QAAA,EAAU,SAAS,iBAAiB,CAAA;AAAA,IACpC,SAAA,EAAW,SAAS,mBAAmB,CAAA;AAAA,IACvC,SAAA,EAAW,SAAS,mBAAmB,CAAA;AAAA,IACvC,UAAA,EAAY,QAAA,CAAS,cAAc,CAAA,IAAK,SAAS,UAAU,CAAA;AAAA,IAC3D,cAAA,EAAgB,SAAS,kBAAkB,CAAA;AAAA,IAC3C,cAAA,EAAgB,SAAS,kBAAkB,CAAA;AAAA,IAC3C,iBAAA,EAAmB,QAAA,CAAS,QAAA,CAAS,0BAA0B,CAAC,CAAA;AAAA,IAChE,cAAA,EAAgB,QAAA,CAAS,QAAA,CAAS,uBAAuB,CAAC,CAAA;AAAA,IAC1D,cAAA,EAAgB,SAAS,yBAAyB,CAAA;AAAA,IAClD,cAAA,EAAgB,SAAS,yBAAyB,CAAA;AAAA,IAClD,0BAAA,EAA4B,SAAS,6BAA6B;AAAA,GACpE;AACF","file":"env.js","sourcesContent":["import { getEnvVariable } from '@clerk/shared/getEnvVariable';\nimport { isTruthy } from '@clerk/shared/underscore';\nimport type { H3EventContext } from '@tanstack/react-start/server';\n\nexport const getPublicEnvVariables = (context?: H3EventContext) => {\n const getValue = (name: string): string => {\n return getEnvVariable(`VITE_${name}`, context) || getEnvVariable(name, context);\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') || getValue('CLERK_JS'),\n clerkJsVariant: getValue('CLERK_JS_VARIANT') as '' | 'headless' | undefined,\n clerkJsVersion: getValue('CLERK_JS_VERSION'),\n telemetryDisabled: isTruthy(getValue('CLERK_TELEMETRY_DISABLED')),\n telemetryDebug: isTruthy(getValue('CLERK_TELEMETRY_DEBUG')),\n afterSignInUrl: getValue('CLERK_AFTER_SIGN_IN_URL'),\n afterSignUpUrl: getValue('CLERK_AFTER_SIGN_UP_URL'),\n newSubscriptionRedirectUrl: getValue('CLERK_CHECKOUT_CONTINUE_URL'),\n } as const;\n};\n"]}
1
+ {"version":3,"sources":["../../src/utils/env.ts"],"names":[],"mappings":";;;;AAGO,IAAM,wBAAwB,MAAM;AACzC,EAAA,MAAM,QAAA,GAAW,CAAC,IAAA,KAAyB;AACzC,IAAA,OAAO,eAAe,CAAA,KAAA,EAAQ,IAAI,CAAA,CAAE,CAAA,IAAK,eAAe,IAAI,CAAA;AAAA,EAC9D,CAAA;AAEA,EAAA,OAAO;AAAA,IACL,cAAA,EAAgB,SAAS,uBAAuB,CAAA;AAAA,IAChD,MAAA,EAAQ,SAAS,cAAc,CAAA;AAAA,IAC/B,WAAA,EAAa,QAAA,CAAS,QAAA,CAAS,oBAAoB,CAAC,CAAA;AAAA,IACpD,QAAA,EAAU,SAAS,iBAAiB,CAAA;AAAA,IACpC,SAAA,EAAW,SAAS,mBAAmB,CAAA;AAAA,IACvC,SAAA,EAAW,SAAS,mBAAmB,CAAA;AAAA,IACvC,UAAA,EAAY,QAAA,CAAS,cAAc,CAAA,IAAK,SAAS,UAAU,CAAA;AAAA,IAC3D,cAAA,EAAgB,SAAS,kBAAkB,CAAA;AAAA,IAC3C,cAAA,EAAgB,SAAS,kBAAkB,CAAA;AAAA,IAC3C,iBAAA,EAAmB,QAAA,CAAS,QAAA,CAAS,0BAA0B,CAAC,CAAA;AAAA,IAChE,cAAA,EAAgB,QAAA,CAAS,QAAA,CAAS,uBAAuB,CAAC,CAAA;AAAA,IAC1D,cAAA,EAAgB,SAAS,yBAAyB,CAAA;AAAA,IAClD,cAAA,EAAgB,SAAS,yBAAyB,CAAA;AAAA,IAClD,0BAAA,EAA4B,SAAS,6BAA6B;AAAA,GACpE;AACF","file":"env.js","sourcesContent":["import { getEnvVariable } from '@clerk/shared/getEnvVariable';\nimport { isTruthy } from '@clerk/shared/underscore';\n\nexport const getPublicEnvVariables = () => {\n const getValue = (name: string): string => {\n return getEnvVariable(`VITE_${name}`) || getEnvVariable(name);\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') || getValue('CLERK_JS'),\n clerkJsVariant: getValue('CLERK_JS_VARIANT') as '' | 'headless' | undefined,\n clerkJsVersion: getValue('CLERK_JS_VERSION'),\n telemetryDisabled: isTruthy(getValue('CLERK_TELEMETRY_DISABLED')),\n telemetryDebug: isTruthy(getValue('CLERK_TELEMETRY_DEBUG')),\n afterSignInUrl: getValue('CLERK_AFTER_SIGN_IN_URL'),\n afterSignUpUrl: getValue('CLERK_AFTER_SIGN_UP_URL'),\n newSubscriptionRedirectUrl: getValue('CLERK_CHECKOUT_CONTINUE_URL'),\n } as const;\n};\n"]}
@@ -1,4 +1,4 @@
1
1
  declare const noFetchFnCtxPassedInGetAuth: string;
2
- declare const clerkHandlerNotConfigured: string;
2
+ declare const clerkMiddlewareNotConfigured: string;
3
3
 
4
- export { clerkHandlerNotConfigured, noFetchFnCtxPassedInGetAuth };
4
+ export { clerkMiddlewareNotConfigured, noFetchFnCtxPassedInGetAuth };
@@ -17,14 +17,11 @@ var noFetchFnCtxPassedInGetAuth = createErrorMessage(`
17
17
  ...
18
18
  });
19
19
  `);
20
- var clerkHandlerNotConfigured = createErrorMessage(`
21
- It looks like you're trying to use Clerk without configuring the Clerk handler.
20
+ var clerkMiddlewareNotConfigured = createErrorMessage(`
21
+ It looks like you're trying to use Clerk without configuring the middleware.
22
22
 
23
- To fix this, make sure you have the \`createClerkHandler()\` configured in you custom server handler file (example: src/server.ts).
23
+ To fix this, make sure you have the \`clerkMiddleware()\` configured in your \`createStart()\` function in your \`src/start.ts\` file.`);
24
24
 
25
- For more info, check out the docs: https://clerk.com/docs/references/tanstack-react-start/create-clerk-handler,
26
- `);
27
-
28
- export { clerkHandlerNotConfigured, noFetchFnCtxPassedInGetAuth };
25
+ export { clerkMiddlewareNotConfigured, noFetchFnCtxPassedInGetAuth };
29
26
  //# sourceMappingURL=errors.js.map
30
27
  //# sourceMappingURL=errors.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utils/errors.ts"],"names":[],"mappings":";AAAA,IAAM,kBAAA,GAAqB,CAAC,GAAA,KAAgB;AAC1C,EAAA,OAAO,CAAA,iBAAA,EAAa,GAAA,CAAI,IAAA,EAAM;;AAAA;AAAA;;AAAA,CAAA;AAMhC,CAAA;AAEO,IAAM,8BAA8B,kBAAA,CAAmB;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAAA,CAS3D;AAEI,IAAM,4BAA4B,kBAAA,CAAmB;AAAA;;AAAA;;AAAA;AAAA,IAAA,CAMvD","file":"errors.js","sourcesContent":["const createErrorMessage = (msg: string) => {\n return `🔒 Clerk: ${msg.trim()}\n\nFor more info, check out the docs: https://clerk.com/docs,\nor come say hi in our discord server: https://clerk.com/discord\n\n`;\n};\n\nexport const noFetchFnCtxPassedInGetAuth = createErrorMessage(`\n You're calling 'getAuth()' from a server function, without providing the request object.\n Example:\n\n export const someServerFunction = createServerFn({ method: 'GET' }).handler(async () => {\n const request = getWebRequest()\n const auth = getAuth(request);\n ...\n });\n `);\n\nexport const clerkHandlerNotConfigured = createErrorMessage(`\nIt looks like you're trying to use Clerk without configuring the Clerk handler.\n\nTo fix this, make sure you have the \\`createClerkHandler()\\` configured in you custom server handler file (example: src/server.ts).\n\nFor more info, check out the docs: https://clerk.com/docs/references/tanstack-react-start/create-clerk-handler,\n `);\n"]}
1
+ {"version":3,"sources":["../../src/utils/errors.ts"],"names":[],"mappings":";AAAA,IAAM,kBAAA,GAAqB,CAAC,GAAA,KAAgB;AAC1C,EAAA,OAAO,CAAA,iBAAA,EAAa,GAAA,CAAI,IAAA,EAAM;;AAAA;AAAA;;AAAA,CAAA;AAMhC,CAAA;AAEO,IAAM,8BAA8B,kBAAA,CAAmB;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAAA,CAS3D;AAEI,IAAM,+BAA+B,kBAAA,CAAmB;AAAA;;AAAA,sIAAA,CAGwE","file":"errors.js","sourcesContent":["const createErrorMessage = (msg: string) => {\n return `🔒 Clerk: ${msg.trim()}\n\nFor more info, check out the docs: https://clerk.com/docs,\nor come say hi in our discord server: https://clerk.com/discord\n\n`;\n};\n\nexport const noFetchFnCtxPassedInGetAuth = createErrorMessage(`\n You're calling 'getAuth()' from a server function, without providing the request object.\n Example:\n\n export const someServerFunction = createServerFn({ method: 'GET' }).handler(async () => {\n const request = getWebRequest()\n const auth = getAuth(request);\n ...\n });\n `);\n\nexport const clerkMiddlewareNotConfigured = createErrorMessage(`\nIt looks like you're trying to use Clerk without configuring the middleware.\n\nTo fix this, make sure you have the \\`clerkMiddleware()\\` configured in your \\`createStart()\\` function in your \\`src/start.ts\\` file.`);\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@clerk/tanstack-react-start",
3
- "version": "0.25.4-canary.v20251009174145",
3
+ "version": "0.26.0-canary.v20251010143932",
4
4
  "description": "Clerk SDK for TanStack React Start",
5
5
  "keywords": [
6
6
  "clerk",
@@ -55,19 +55,19 @@
55
55
  ],
56
56
  "dependencies": {
57
57
  "tslib": "2.8.1",
58
- "@clerk/backend": "^2.18.0-canary.v20251009174145",
59
- "@clerk/clerk-react": "^5.52.0-canary.v20251009174145",
60
- "@clerk/shared": "^3.27.4-canary.v20251009174145",
61
- "@clerk/types": "^4.93.0-canary.v20251009174145"
58
+ "@clerk/backend": "^2.18.0-canary.v20251010143932",
59
+ "@clerk/clerk-react": "^5.52.0-canary.v20251010143932",
60
+ "@clerk/shared": "^3.27.4-canary.v20251010143932",
61
+ "@clerk/types": "^4.93.0-canary.v20251010143932"
62
62
  },
63
63
  "devDependencies": {
64
- "@tanstack/react-router": "1.131.49",
65
- "@tanstack/react-start": "1.131.49",
64
+ "@tanstack/react-router": "1.132.0",
65
+ "@tanstack/react-start": "1.132.0",
66
66
  "esbuild-plugin-file-path-extensions": "^2.1.4"
67
67
  },
68
68
  "peerDependencies": {
69
- "@tanstack/react-router": "^1.131.0 <1.132.0",
70
- "@tanstack/react-start": "^1.131.0 <1.132.0",
69
+ "@tanstack/react-router": "^1.132.0",
70
+ "@tanstack/react-start": "^1.132.0",
71
71
  "react": "^18.0.0 || ^19.0.0 || ^19.0.0-0",
72
72
  "react-dom": "^18.0.0 || ^19.0.0 || ^19.0.0-0"
73
73
  },
@@ -1,5 +0,0 @@
1
- import { AuthenticateRequestOptions, RequestState } from '@clerk/backend/internal';
2
-
3
- declare function authenticateRequest(request: Request, opts: AuthenticateRequestOptions): Promise<RequestState>;
4
-
5
- export { authenticateRequest };
@@ -1,33 +0,0 @@
1
- import { createClerkClient } from '@clerk/backend';
2
- import { patchRequest } from './utils/index.js';
3
-
4
- // src/server/authenticateRequest.ts
5
- async function authenticateRequest(request, opts) {
6
- const { audience, authorizedParties } = opts;
7
- const { apiUrl, secretKey, jwtKey, proxyUrl, isSatellite, domain, publishableKey, acceptsToken, machineSecretKey } = opts;
8
- const { signInUrl, signUpUrl, afterSignInUrl, afterSignUpUrl } = opts;
9
- const requestState = await createClerkClient({
10
- apiUrl,
11
- secretKey,
12
- machineSecretKey,
13
- jwtKey,
14
- proxyUrl,
15
- isSatellite,
16
- domain,
17
- publishableKey,
18
- userAgent: `${"@clerk/tanstack-react-start"}@${"0.25.4-canary.v20251009174145"}`
19
- }).authenticateRequest(patchRequest(request), {
20
- audience,
21
- authorizedParties,
22
- signInUrl,
23
- signUpUrl,
24
- afterSignInUrl,
25
- afterSignUpUrl,
26
- acceptsToken
27
- });
28
- return requestState;
29
- }
30
-
31
- export { authenticateRequest };
32
- //# sourceMappingURL=authenticateRequest.js.map
33
- //# sourceMappingURL=authenticateRequest.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/server/authenticateRequest.ts"],"names":[],"mappings":";;;;AAKA,eAAsB,mBAAA,CAAoB,SAAkB,IAAA,EAAyD;AACnH,EAAA,MAAM,EAAE,QAAA,EAAU,iBAAA,EAAkB,GAAI,IAAA;AAExC,EAAA,MAAM,EAAE,MAAA,EAAQ,SAAA,EAAW,MAAA,EAAQ,QAAA,EAAU,aAAa,MAAA,EAAQ,cAAA,EAAgB,YAAA,EAAc,gBAAA,EAAiB,GAC/G,IAAA;AACF,EAAA,MAAM,EAAE,SAAA,EAAW,SAAA,EAAW,cAAA,EAAgB,gBAAe,GAAI,IAAA;AAEjE,EAAA,MAAM,YAAA,GAAe,MAAM,iBAAA,CAAkB;AAAA,IAC3C,MAAA;AAAA,IACA,SAAA;AAAA,IACA,gBAAA;AAAA,IACA,MAAA;AAAA,IACA,QAAA;AAAA,IACA,WAAA;AAAA,IACA,MAAA;AAAA,IACA,cAAA;AAAA,IACA,SAAA,EAAW,CAAA,EAAG,6BAAY,CAAA,CAAA,EAAI,+BAAe,CAAA;AAAA,GAC9C,CAAA,CAAE,mBAAA,CAAoB,YAAA,CAAa,OAAO,CAAA,EAAG;AAAA,IAC5C,QAAA;AAAA,IACA,iBAAA;AAAA,IACA,SAAA;AAAA,IACA,SAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA;AAAA,GACD,CAAA;AAED,EAAA,OAAO,YAAA;AACT","file":"authenticateRequest.js","sourcesContent":["import { createClerkClient } from '@clerk/backend';\nimport type { AuthenticateRequestOptions, RequestState } from '@clerk/backend/internal';\n\nimport { patchRequest } from './utils';\n\nexport async function authenticateRequest(request: Request, opts: AuthenticateRequestOptions): Promise<RequestState> {\n const { audience, authorizedParties } = opts;\n\n const { apiUrl, secretKey, jwtKey, proxyUrl, isSatellite, domain, publishableKey, acceptsToken, machineSecretKey } =\n opts;\n const { signInUrl, signUpUrl, afterSignInUrl, afterSignUpUrl } = opts;\n\n const requestState = await createClerkClient({\n apiUrl,\n secretKey,\n machineSecretKey,\n jwtKey,\n proxyUrl,\n isSatellite,\n domain,\n publishableKey,\n userAgent: `${PACKAGE_NAME}@${PACKAGE_VERSION}`,\n }).authenticateRequest(patchRequest(request), {\n audience,\n authorizedParties,\n signInUrl,\n signUpUrl,\n afterSignInUrl,\n afterSignUpUrl,\n acceptsToken,\n });\n\n return requestState;\n}\n"]}
@@ -1,7 +0,0 @@
1
- declare class ClerkHandshakeRedirect extends Error {
2
- status: number;
3
- headers: Headers;
4
- constructor(status: number, headers: Headers);
5
- }
6
-
7
- export { ClerkHandshakeRedirect };
@@ -1,15 +0,0 @@
1
- // src/server/errors.ts
2
- var ClerkHandshakeRedirect = class extends Error {
3
- constructor(status, headers) {
4
- super("Clerk handshake redirect required");
5
- this.status = status;
6
- this.headers = headers;
7
- this.name = "ClerkHandshakeRedirect";
8
- this.status = status;
9
- this.headers = headers;
10
- }
11
- };
12
-
13
- export { ClerkHandshakeRedirect };
14
- //# sourceMappingURL=errors.js.map
15
- //# sourceMappingURL=errors.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/server/errors.ts"],"names":[],"mappings":";AAAO,IAAM,sBAAA,GAAN,cAAqC,KAAA,CAAM;AAAA,EAChD,WAAA,CACS,QACA,OAAA,EACP;AACA,IAAA,KAAA,CAAM,mCAAmC,CAAA;AAHlC,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA;AACA,IAAA,IAAA,CAAA,OAAA,GAAA,OAAA;AAGP,IAAA,IAAA,CAAK,IAAA,GAAO,wBAAA;AACZ,IAAA,IAAA,CAAK,MAAA,GAAS,MAAA;AACd,IAAA,IAAA,CAAK,OAAA,GAAU,OAAA;AAAA,EACjB;AACF","file":"errors.js","sourcesContent":["export class ClerkHandshakeRedirect extends Error {\n constructor(\n public status: number,\n public headers: Headers,\n ) {\n super('Clerk handshake redirect required');\n this.name = 'ClerkHandshakeRedirect';\n this.status = status;\n this.headers = headers;\n }\n}\n"]}
@@ -1,5 +0,0 @@
1
- import { GetAuthFn } from '@clerk/backend/internal';
2
-
3
- declare const getAuth: GetAuthFn<Request, true>;
4
-
5
- export { getAuth };
@@ -1,21 +0,0 @@
1
- import { getAuthObjectForAcceptedToken } from '@clerk/backend/internal';
2
- import { getContext } from '@tanstack/react-start/server';
3
- import { errorThrower } from '../utils/index.js';
4
- import { noFetchFnCtxPassedInGetAuth, clerkHandlerNotConfigured } from '../utils/errors.js';
5
-
6
- // src/server/getAuth.ts
7
- var getAuth = async (request, opts) => {
8
- if (!request) {
9
- return errorThrower.throw(noFetchFnCtxPassedInGetAuth);
10
- }
11
- const authObjectFn = getContext("auth");
12
- if (!authObjectFn) {
13
- return errorThrower.throw(clerkHandlerNotConfigured);
14
- }
15
- const authObject = await Promise.resolve(authObjectFn({ treatPendingAsSignedOut: opts?.treatPendingAsSignedOut }));
16
- return getAuthObjectForAcceptedToken({ authObject, acceptsToken: opts?.acceptsToken });
17
- };
18
-
19
- export { getAuth };
20
- //# sourceMappingURL=getAuth.js.map
21
- //# sourceMappingURL=getAuth.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/server/getAuth.ts"],"names":[],"mappings":";;;;;;AAOO,IAAM,OAAA,GAAqC,OAAO,OAAA,EAAkB,IAAA,KAAuB;AAChG,EAAA,IAAI,CAAC,OAAA,EAAS;AACZ,IAAA,OAAO,YAAA,CAAa,MAAM,2BAA2B,CAAA;AAAA,EACvD;AAEA,EAAA,MAAM,YAAA,GAAe,WAAW,MAAM,CAAA;AAEtC,EAAA,IAAI,CAAC,YAAA,EAAc;AACjB,IAAA,OAAO,YAAA,CAAa,MAAM,yBAAyB,CAAA;AAAA,EACrD;AAGA,EAAA,MAAM,UAAA,GAAa,MAAM,OAAA,CAAQ,OAAA,CAAQ,YAAA,CAAa,EAAE,uBAAA,EAAyB,IAAA,EAAM,uBAAA,EAAyB,CAAC,CAAA;AAEjH,EAAA,OAAO,8BAA8B,EAAE,UAAA,EAAY,YAAA,EAAc,IAAA,EAAM,cAAc,CAAA;AACvF","file":"getAuth.js","sourcesContent":["import type { AuthOptions, GetAuthFn } from '@clerk/backend/internal';\nimport { getAuthObjectForAcceptedToken } from '@clerk/backend/internal';\nimport { getContext } from '@tanstack/react-start/server';\n\nimport { errorThrower } from '../utils';\nimport { clerkHandlerNotConfigured, noFetchFnCtxPassedInGetAuth } from '../utils/errors';\n\nexport const getAuth: GetAuthFn<Request, true> = (async (request: Request, opts?: AuthOptions) => {\n if (!request) {\n return errorThrower.throw(noFetchFnCtxPassedInGetAuth);\n }\n\n const authObjectFn = getContext('auth');\n\n if (!authObjectFn) {\n return errorThrower.throw(clerkHandlerNotConfigured);\n }\n\n // We're keeping it a promise for now to minimize breaking changes\n const authObject = await Promise.resolve(authObjectFn({ treatPendingAsSignedOut: opts?.treatPendingAsSignedOut }));\n\n return getAuthObjectForAcceptedToken({ authObject, acceptsToken: opts?.acceptsToken });\n}) as GetAuthFn<Request, true>;\n"]}
@@ -1,9 +0,0 @@
1
- import { AnyRouter } from '@tanstack/react-router';
2
- import { CustomizeStartHandler, HandlerCallback, RequestHandler } from '@tanstack/react-start/server';
3
- import { LoaderOptions } from './types.js';
4
- import '@clerk/backend';
5
- import '@clerk/types';
6
-
7
- declare function createClerkHandler<TRouter extends AnyRouter>(eventHandler: CustomizeStartHandler<TRouter>, clerkOptions?: LoaderOptions): (cb: HandlerCallback<TRouter>) => Promise<RequestHandler>;
8
-
9
- export { createClerkHandler };
@@ -1,51 +0,0 @@
1
- import { constants, AuthStatus } from '@clerk/backend/internal';
2
- import { handleNetlifyCacheInDevInstance } from '@clerk/shared/netlifyCacheHandler';
3
- import { getWebRequest, getEvent } from '@tanstack/react-start/server';
4
- import { errorThrower } from '../utils/index.js';
5
- import { authenticateRequest } from './authenticateRequest.js';
6
- import { loadOptions } from './loadOptions.js';
7
- import { getResponseClerkState } from './utils/index.js';
8
-
9
- // src/server/middlewareHandler.ts
10
- function createClerkHandler(eventHandler, clerkOptions = {}) {
11
- return async (cb) => {
12
- const request = getWebRequest();
13
- const event = getEvent();
14
- const loadedOptions = loadOptions(request, clerkOptions);
15
- const requestState = await authenticateRequest(request, {
16
- ...loadedOptions,
17
- acceptsToken: "any"
18
- });
19
- event.context.auth = (options) => requestState.toAuth(options);
20
- return eventHandler(async ({ request: request2, router, responseHeaders }) => {
21
- const locationHeader = requestState.headers.get(constants.Headers.Location);
22
- if (locationHeader) {
23
- handleNetlifyCacheInDevInstance({
24
- locationHeader,
25
- requestStateHeaders: requestState.headers,
26
- publishableKey: requestState.publishableKey
27
- });
28
- return new Response(null, {
29
- status: 307,
30
- headers: requestState.headers
31
- });
32
- }
33
- if (requestState.status === AuthStatus.Handshake) {
34
- throw errorThrower.throw("Clerk: unexpected handshake without redirect");
35
- }
36
- const { clerkInitialState, headers } = getResponseClerkState(requestState, loadedOptions);
37
- router.update({
38
- context: { ...router.options.context, clerkInitialState }
39
- });
40
- headers.forEach((value, key) => {
41
- responseHeaders.set(key, value);
42
- });
43
- await router.load();
44
- return cb({ request: request2, router, responseHeaders });
45
- });
46
- };
47
- }
48
-
49
- export { createClerkHandler };
50
- //# sourceMappingURL=middlewareHandler.js.map
51
- //# sourceMappingURL=middlewareHandler.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/server/middlewareHandler.ts"],"names":["request"],"mappings":";;;;;;;;;AAkBO,SAAS,kBAAA,CACd,YAAA,EACA,YAAA,GAA8B,EAAC,EAC/B;AACA,EAAA,OAAO,OAAO,EAAA,KAA0D;AACtE,IAAA,MAAM,UAAU,aAAA,EAAc;AAC9B,IAAA,MAAM,QAAQ,QAAA,EAAS;AACvB,IAAA,MAAM,aAAA,GAAgB,WAAA,CAAY,OAAA,EAAS,YAAY,CAAA;AAEvD,IAAA,MAAM,YAAA,GAAe,MAAM,mBAAA,CAAoB,OAAA,EAAS;AAAA,MACtD,GAAG,aAAA;AAAA,MACH,YAAA,EAAc;AAAA,KACf,CAAA;AAGD,IAAA,KAAA,CAAM,QAAQ,IAAA,GAAO,CAAC,OAAA,KAAoC,YAAA,CAAa,OAAO,OAAO,CAAA;AAErF,IAAA,OAAO,aAAa,OAAO,EAAE,SAAAA,QAAAA,EAAS,MAAA,EAAQ,iBAAgB,KAAM;AAClE,MAAA,MAAM,iBAAiB,YAAA,CAAa,OAAA,CAAQ,GAAA,CAAI,SAAA,CAAU,QAAQ,QAAQ,CAAA;AAC1E,MAAA,IAAI,cAAA,EAAgB;AAClB,QAAA,+BAAA,CAAgC;AAAA,UAC9B,cAAA;AAAA,UACA,qBAAqB,YAAA,CAAa,OAAA;AAAA,UAClC,gBAAgB,YAAA,CAAa;AAAA,SAC9B,CAAA;AAED,QAAA,OAAO,IAAI,SAAS,IAAA,EAAM;AAAA,UACxB,MAAA,EAAQ,GAAA;AAAA,UACR,SAAS,YAAA,CAAa;AAAA,SACvB,CAAA;AAAA,MACH;AAEA,MAAA,IAAI,YAAA,CAAa,MAAA,KAAW,UAAA,CAAW,SAAA,EAAW;AAEhD,QAAA,MAAM,YAAA,CAAa,MAAM,8CAA8C,CAAA;AAAA,MACzE;AAEA,MAAA,MAAM,EAAE,iBAAA,EAAmB,OAAA,EAAQ,GAAI,qBAAA,CAAsB,cAAc,aAAa,CAAA;AAGxF,MAAA,MAAA,CAAO,MAAA,CAAO;AAAA,QACZ,SAAS,EAAE,GAAG,MAAA,CAAO,OAAA,CAAQ,SAAS,iBAAA;AAAkB,OACzD,CAAA;AAED,MAAA,OAAA,CAAQ,OAAA,CAAQ,CAAC,KAAA,EAAO,GAAA,KAAQ;AAC9B,QAAA,eAAA,CAAgB,GAAA,CAAI,KAAK,KAAK,CAAA;AAAA,MAChC,CAAC,CAAA;AAED,MAAA,MAAM,OAAO,IAAA,EAAK;AAElB,MAAA,OAAO,GAAG,EAAE,OAAA,EAAAA,QAAAA,EAAS,MAAA,EAAQ,iBAAiB,CAAA;AAAA,IAChD,CAAC,CAAA;AAAA,EACH,CAAA;AACF","file":"middlewareHandler.js","sourcesContent":["import { AuthStatus, constants } from '@clerk/backend/internal';\nimport { handleNetlifyCacheInDevInstance } from '@clerk/shared/netlifyCacheHandler';\nimport type { PendingSessionOptions } from '@clerk/types';\nimport type { AnyRouter } from '@tanstack/react-router';\nimport {\n type CustomizeStartHandler,\n getEvent,\n getWebRequest,\n type HandlerCallback,\n type RequestHandler,\n} from '@tanstack/react-start/server';\n\nimport { errorThrower } from '../utils';\nimport { authenticateRequest } from './authenticateRequest';\nimport { loadOptions } from './loadOptions';\nimport type { LoaderOptions } from './types';\nimport { getResponseClerkState } from './utils';\n\nexport function createClerkHandler<TRouter extends AnyRouter>(\n eventHandler: CustomizeStartHandler<TRouter>,\n clerkOptions: LoaderOptions = {},\n) {\n return async (cb: HandlerCallback<TRouter>): Promise<RequestHandler> => {\n const request = getWebRequest();\n const event = getEvent();\n const loadedOptions = loadOptions(request, clerkOptions);\n\n const requestState = await authenticateRequest(request, {\n ...loadedOptions,\n acceptsToken: 'any',\n });\n\n // Set auth object here so it is available immediately in server functions via getAuth()\n event.context.auth = (options?: PendingSessionOptions) => requestState.toAuth(options);\n\n return eventHandler(async ({ request, router, responseHeaders }) => {\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\n return new Response(null, {\n status: 307,\n headers: requestState.headers,\n });\n }\n\n if (requestState.status === AuthStatus.Handshake) {\n // eslint-disable-next-line @typescript-eslint/only-throw-error\n throw errorThrower.throw('Clerk: unexpected handshake without redirect');\n }\n\n const { clerkInitialState, headers } = getResponseClerkState(requestState, loadedOptions);\n\n // Merging the TanStack router context with the Clerk context and loading the router\n router.update({\n context: { ...router.options.context, clerkInitialState },\n });\n\n headers.forEach((value, key) => {\n responseHeaders.set(key, value);\n });\n\n await router.load();\n\n return cb({ request, router, responseHeaders });\n });\n };\n}\n"]}