@clerk/react-router 3.4.1 → 3.4.2-canary.v20260610190754

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 (100) hide show
  1. package/dist/ReactRouterClerkProvider-trOD2EJy.d.ts +17 -0
  2. package/dist/api/index.d.ts +1 -1
  3. package/dist/api/index.js +3 -3
  4. package/dist/client/ReactRouterClerkProvider.d.ts +2 -13
  5. package/dist/client/ReactRouterClerkProvider.js +75 -121
  6. package/dist/client/ReactRouterClerkProvider.js.map +1 -1
  7. package/dist/client/ReactRouterOptionsContext.d.ts +6 -7
  8. package/dist/client/ReactRouterOptionsContext.js +11 -12
  9. package/dist/client/ReactRouterOptionsContext.js.map +1 -1
  10. package/dist/client/index.d.ts +4 -9
  11. package/dist/client/index.js +4 -12
  12. package/dist/client/types.d.ts +2 -56
  13. package/dist/client/types.js +1 -1
  14. package/dist/client/uiComponents.d.ts +2 -10
  15. package/dist/client/uiComponents.js +21 -34
  16. package/dist/client/uiComponents.js.map +1 -1
  17. package/dist/client/useAwaitableNavigate.d.ts +4 -2
  18. package/dist/client/useAwaitableNavigate.js +22 -21
  19. package/dist/client/useAwaitableNavigate.js.map +1 -1
  20. package/dist/client/usePathnameWithoutSplatRouteParams.d.ts +3 -1
  21. package/dist/client/usePathnameWithoutSplatRouteParams.js +10 -12
  22. package/dist/client/usePathnameWithoutSplatRouteParams.js.map +1 -1
  23. package/dist/errorThrower.d.ts +4 -4
  24. package/dist/errorThrower.js +6 -5
  25. package/dist/errorThrower.js.map +1 -1
  26. package/dist/errors.d.ts +2 -4
  27. package/dist/errors.js +3 -28
  28. package/dist/global.d.ts +1 -0
  29. package/dist/index.d.ts +6 -9
  30. package/dist/index.js +12 -9
  31. package/dist/index.js.map +1 -1
  32. package/dist/legacy.d.ts +2 -1
  33. package/dist/legacy.js +2 -6
  34. package/dist/loadOptions-DNSRkrk0.d.ts +63 -0
  35. package/dist/server/clerkClient.d.ts +6 -8
  36. package/dist/server/clerkClient.js +19 -19
  37. package/dist/server/clerkClient.js.map +1 -1
  38. package/dist/server/clerkMiddleware.d.ts +12 -11
  39. package/dist/server/clerkMiddleware.js +83 -90
  40. package/dist/server/clerkMiddleware.js.map +1 -1
  41. package/dist/server/getAuth.d.ts +5 -3
  42. package/dist/server/getAuth.js +16 -23
  43. package/dist/server/getAuth.js.map +1 -1
  44. package/dist/server/index.d.ts +6 -10
  45. package/dist/server/index.js +5 -10
  46. package/dist/server/keyless/fileStorage.d.ts +6 -5
  47. package/dist/server/keyless/fileStorage.js +12 -11
  48. package/dist/server/keyless/fileStorage.js.map +1 -1
  49. package/dist/server/keyless/index.d.ts +6 -9
  50. package/dist/server/keyless/index.js +34 -40
  51. package/dist/server/keyless/index.js.map +1 -1
  52. package/dist/server/keyless/utils.d.ts +8 -11
  53. package/dist/server/keyless/utils.js +10 -12
  54. package/dist/server/keyless/utils.js.map +1 -1
  55. package/dist/server/loadOptions.d.ts +2 -64
  56. package/dist/server/loadOptions.js +50 -63
  57. package/dist/server/loadOptions.js.map +1 -1
  58. package/dist/server/rootAuthLoader.d.ts +17 -16
  59. package/dist/server/rootAuthLoader.js +45 -71
  60. package/dist/server/rootAuthLoader.js.map +1 -1
  61. package/dist/server/types.d.ts +2 -84
  62. package/dist/server/types.js +1 -1
  63. package/dist/server/utils.d.ts +13 -13
  64. package/dist/server/utils.js +93 -83
  65. package/dist/server/utils.js.map +1 -1
  66. package/dist/ssr/index.d.ts +4 -7
  67. package/dist/ssr/index.js +5 -5
  68. package/dist/ssr/index.js.map +1 -1
  69. package/dist/types/index.d.ts +4 -9
  70. package/dist/types/index.js +1 -1
  71. package/dist/types-C3uAu7q3.d.ts +58 -0
  72. package/dist/types-CkBFvMvW.d.ts +86 -0
  73. package/dist/uiComponents-CuYpqdGX.d.ts +12 -0
  74. package/dist/utils/assert.d.ts +4 -6
  75. package/dist/utils/assert.js +20 -29
  76. package/dist/utils/assert.js.map +1 -1
  77. package/dist/utils/env.d.ts +25 -23
  78. package/dist/utils/env.js +32 -33
  79. package/dist/utils/env.js.map +1 -1
  80. package/dist/utils/errors.d.ts +3 -1
  81. package/dist/utils/errors.js +15 -24
  82. package/dist/utils/errors.js.map +1 -1
  83. package/dist/utils/feature-flags.d.ts +3 -1
  84. package/dist/utils/feature-flags.js +7 -6
  85. package/dist/utils/feature-flags.js.map +1 -1
  86. package/dist/webhooks.d.ts +1 -1
  87. package/dist/webhooks.js +3 -3
  88. package/package.json +6 -6
  89. package/dist/api/index.js.map +0 -1
  90. package/dist/client/index.js.map +0 -1
  91. package/dist/client/types.js.map +0 -1
  92. package/dist/errors.js.map +0 -1
  93. package/dist/global.d.d.ts +0 -2
  94. package/dist/global.d.js +0 -1
  95. package/dist/global.d.js.map +0 -1
  96. package/dist/legacy.js.map +0 -1
  97. package/dist/server/index.js.map +0 -1
  98. package/dist/server/types.js.map +0 -1
  99. package/dist/types/index.js.map +0 -1
  100. package/dist/webhooks.js.map +0 -1
@@ -1,77 +1,51 @@
1
- // src/server/rootAuthLoader.ts
2
1
  import { invalidRootLoaderCallbackReturn } from "../utils/errors.js";
2
+ import { IsOptIntoMiddleware, getResponseClerkState, injectRequestStateIntoResponse, isDataWithResponseInit, isRedirect, isResponse } from "./utils.js";
3
3
  import { authFnContext, requestStateContext } from "./clerkMiddleware.js";
4
- import {
5
- getResponseClerkState,
6
- injectRequestStateIntoResponse,
7
- isDataWithResponseInit,
8
- IsOptIntoMiddleware,
9
- isRedirect,
10
- isResponse
11
- } from "./utils.js";
4
+
5
+ //#region src/server/rootAuthLoader.ts
6
+ /**
7
+ * Shared logic for processing the root auth loader with a given request state
8
+ */
12
9
  async function processRootAuthLoader(args, requestState, additionalState, handler) {
13
- var _a;
14
- const hasMiddleware = IsOptIntoMiddleware(args.context) && !!args.context.get(authFnContext);
15
- const includeClerkHeaders = !hasMiddleware;
16
- if (!handler) {
17
- const { clerkState: clerkState2 } = getResponseClerkState(requestState, args.context, additionalState);
18
- return {
19
- ...clerkState2
20
- };
21
- }
22
- const argsWithAuth = {
23
- ...args,
24
- request: Object.assign(args.request, { auth: requestState.toAuth() })
25
- };
26
- const handlerResult = await handler(argsWithAuth);
27
- if (isResponse(handlerResult)) {
28
- try {
29
- if (isRedirect(handlerResult)) {
30
- return handlerResult;
31
- }
32
- return injectRequestStateIntoResponse(
33
- handlerResult,
34
- requestState,
35
- args.context,
36
- additionalState,
37
- includeClerkHeaders
38
- );
39
- } catch {
40
- throw new Error(invalidRootLoaderCallbackReturn);
41
- }
42
- }
43
- if (isDataWithResponseInit(handlerResult)) {
44
- try {
45
- return injectRequestStateIntoResponse(
46
- new Response(JSON.stringify(handlerResult.data), (_a = handlerResult.init) != null ? _a : void 0),
47
- requestState,
48
- args.context,
49
- additionalState,
50
- includeClerkHeaders
51
- );
52
- } catch {
53
- throw new Error(invalidRootLoaderCallbackReturn);
54
- }
55
- }
56
- const { clerkState } = getResponseClerkState(requestState, args.context, additionalState);
57
- return {
58
- ...handlerResult != null ? handlerResult : {},
59
- ...clerkState
60
- };
10
+ const includeClerkHeaders = !(IsOptIntoMiddleware(args.context) && !!args.context.get(authFnContext));
11
+ if (!handler) {
12
+ const { clerkState } = getResponseClerkState(requestState, args.context, additionalState);
13
+ return { ...clerkState };
14
+ }
15
+ const handlerResult = await handler({
16
+ ...args,
17
+ request: Object.assign(args.request, { auth: requestState.toAuth() })
18
+ });
19
+ if (isResponse(handlerResult)) try {
20
+ if (isRedirect(handlerResult)) return handlerResult;
21
+ return injectRequestStateIntoResponse(handlerResult, requestState, args.context, additionalState, includeClerkHeaders);
22
+ } catch {
23
+ throw new Error(invalidRootLoaderCallbackReturn);
24
+ }
25
+ if (isDataWithResponseInit(handlerResult)) try {
26
+ return injectRequestStateIntoResponse(new Response(JSON.stringify(handlerResult.data), handlerResult.init ?? void 0), requestState, args.context, additionalState, includeClerkHeaders);
27
+ } catch {
28
+ throw new Error(invalidRootLoaderCallbackReturn);
29
+ }
30
+ const { clerkState } = getResponseClerkState(requestState, args.context, additionalState);
31
+ return {
32
+ ...handlerResult ?? {},
33
+ ...clerkState
34
+ };
61
35
  }
62
- var rootAuthLoader = async (args, handlerOrOptions) => {
63
- const handler = typeof handlerOrOptions === "function" ? handlerOrOptions : void 0;
64
- const hasMiddlewareFlag = IsOptIntoMiddleware(args.context);
65
- const contextValue = hasMiddlewareFlag && args.context.get(requestStateContext);
66
- if (!contextValue) {
67
- throw new Error(
68
- "Clerk: clerkMiddleware() not detected. Make sure you have installed the clerkMiddleware in your root route."
69
- );
70
- }
71
- const { requestState, additionalState } = contextValue;
72
- return processRootAuthLoader(args, requestState, additionalState, handler);
73
- };
74
- export {
75
- rootAuthLoader
36
+ /**
37
+ * Makes authorization state available in your application by wrapping the root loader.
38
+ *
39
+ * @see https://clerk.com/docs/references/react-router/root-auth-loader
40
+ */
41
+ const rootAuthLoader = async (args, handlerOrOptions) => {
42
+ const handler = typeof handlerOrOptions === "function" ? handlerOrOptions : void 0;
43
+ const contextValue = IsOptIntoMiddleware(args.context) && args.context.get(requestStateContext);
44
+ if (!contextValue) throw new Error("Clerk: clerkMiddleware() not detected. Make sure you have installed the clerkMiddleware in your root route.");
45
+ const { requestState, additionalState } = contextValue;
46
+ return processRootAuthLoader(args, requestState, additionalState, handler);
76
47
  };
48
+
49
+ //#endregion
50
+ export { rootAuthLoader };
77
51
  //# sourceMappingURL=rootAuthLoader.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/server/rootAuthLoader.ts"],"sourcesContent":["import type { RequestState } from '@clerk/backend/internal';\nimport type { LoaderFunctionArgs } from 'react-router';\n\nimport { invalidRootLoaderCallbackReturn } from '../utils/errors';\nimport { authFnContext, requestStateContext } from './clerkMiddleware';\nimport type {\n AdditionalStateOptions,\n LoaderFunctionArgsWithAuth,\n LoaderFunctionReturn,\n RootAuthLoaderCallback,\n RootAuthLoaderOptions,\n} from './types';\nimport {\n getResponseClerkState,\n injectRequestStateIntoResponse,\n isDataWithResponseInit,\n IsOptIntoMiddleware,\n isRedirect,\n isResponse,\n} from './utils';\n\ninterface RootAuthLoader {\n <Options extends RootAuthLoaderOptions, Callback extends RootAuthLoaderCallback<Options>>(\n /**\n * Arguments passed to the loader function.\n */\n args: LoaderFunctionArgs,\n /**\n * A loader function with authentication state made available to it. Allows you to fetch route data based on the user's authentication state.\n */\n callback: Callback,\n options?: Options,\n ): Promise<ReturnType<Callback>>;\n\n (args: LoaderFunctionArgs, options?: RootAuthLoaderOptions): Promise<LoaderFunctionReturn>;\n}\n\n/**\n * Shared logic for processing the root auth loader with a given request state\n */\nasync function processRootAuthLoader(\n args: LoaderFunctionArgs,\n requestState: RequestState,\n additionalState: AdditionalStateOptions,\n handler?: RootAuthLoaderCallback<any>,\n): Promise<LoaderFunctionReturn> {\n const hasMiddleware = IsOptIntoMiddleware(args.context) && !!args.context.get(authFnContext);\n const includeClerkHeaders = !hasMiddleware;\n\n if (!handler) {\n // if the user did not provide a handler, simply inject requestState into an empty response\n const { clerkState } = getResponseClerkState(requestState, args.context, additionalState);\n return {\n ...clerkState,\n };\n }\n\n // Create args that has the auth object in the request for backward compatibility\n const argsWithAuth = {\n ...args,\n request: Object.assign(args.request, { auth: requestState.toAuth() }),\n } as LoaderFunctionArgsWithAuth<any>;\n\n const handlerResult = await handler(argsWithAuth);\n\n if (isResponse(handlerResult)) {\n try {\n // respect and pass-through any redirects without modifying them\n if (isRedirect(handlerResult)) {\n return handlerResult;\n }\n // clone and try to inject requestState into all json-like responses\n // if this fails, the user probably didn't return a json object or a valid json string\n return injectRequestStateIntoResponse(\n handlerResult,\n requestState,\n args.context,\n additionalState,\n includeClerkHeaders,\n );\n } catch {\n throw new Error(invalidRootLoaderCallbackReturn);\n }\n }\n\n if (isDataWithResponseInit(handlerResult)) {\n try {\n // clone and try to inject requestState into all json-like responses\n // if this fails, the user probably didn't return a json object or a valid json string\n return injectRequestStateIntoResponse(\n new Response(JSON.stringify(handlerResult.data), handlerResult.init ?? undefined),\n requestState,\n args.context,\n additionalState,\n includeClerkHeaders,\n );\n } catch {\n throw new Error(invalidRootLoaderCallbackReturn);\n }\n }\n\n // If the return value of the user's handler is null or a plain object, return plain object with streaming support\n const { clerkState } = getResponseClerkState(requestState, args.context, additionalState);\n\n return {\n ...(handlerResult ?? {}),\n ...clerkState,\n };\n}\n\n/**\n * Makes authorization state available in your application by wrapping the root loader.\n *\n * @see https://clerk.com/docs/references/react-router/root-auth-loader\n */\nexport const rootAuthLoader: RootAuthLoader = async (\n args: LoaderFunctionArgs,\n handlerOrOptions: any,\n): Promise<LoaderFunctionReturn> => {\n const handler = typeof handlerOrOptions === 'function' ? handlerOrOptions : undefined;\n\n const hasMiddlewareFlag = IsOptIntoMiddleware(args.context);\n const contextValue = hasMiddlewareFlag && args.context.get(requestStateContext);\n\n if (!contextValue) {\n throw new Error(\n 'Clerk: clerkMiddleware() not detected. Make sure you have installed the clerkMiddleware in your root route.',\n );\n }\n\n const { requestState, additionalState } = contextValue;\n return processRootAuthLoader(args, requestState, additionalState, handler);\n};\n"],"mappings":";AAGA,SAAS,uCAAuC;AAChD,SAAS,eAAe,2BAA2B;AAQnD;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAqBP,eAAe,sBACb,MACA,cACA,iBACA,SAC+B;AA7CjC;AA8CE,QAAM,gBAAgB,oBAAoB,KAAK,OAAO,KAAK,CAAC,CAAC,KAAK,QAAQ,IAAI,aAAa;AAC3F,QAAM,sBAAsB,CAAC;AAE7B,MAAI,CAAC,SAAS;AAEZ,UAAM,EAAE,YAAAA,YAAW,IAAI,sBAAsB,cAAc,KAAK,SAAS,eAAe;AACxF,WAAO;AAAA,MACL,GAAGA;AAAA,IACL;AAAA,EACF;AAGA,QAAM,eAAe;AAAA,IACnB,GAAG;AAAA,IACH,SAAS,OAAO,OAAO,KAAK,SAAS,EAAE,MAAM,aAAa,OAAO,EAAE,CAAC;AAAA,EACtE;AAEA,QAAM,gBAAgB,MAAM,QAAQ,YAAY;AAEhD,MAAI,WAAW,aAAa,GAAG;AAC7B,QAAI;AAEF,UAAI,WAAW,aAAa,GAAG;AAC7B,eAAO;AAAA,MACT;AAGA,aAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA,KAAK;AAAA,QACL;AAAA,QACA;AAAA,MACF;AAAA,IACF,QAAQ;AACN,YAAM,IAAI,MAAM,+BAA+B;AAAA,IACjD;AAAA,EACF;AAEA,MAAI,uBAAuB,aAAa,GAAG;AACzC,QAAI;AAGF,aAAO;AAAA,QACL,IAAI,SAAS,KAAK,UAAU,cAAc,IAAI,IAAG,mBAAc,SAAd,YAAsB,MAAS;AAAA,QAChF;AAAA,QACA,KAAK;AAAA,QACL;AAAA,QACA;AAAA,MACF;AAAA,IACF,QAAQ;AACN,YAAM,IAAI,MAAM,+BAA+B;AAAA,IACjD;AAAA,EACF;AAGA,QAAM,EAAE,WAAW,IAAI,sBAAsB,cAAc,KAAK,SAAS,eAAe;AAExF,SAAO;AAAA,IACL,GAAI,wCAAiB,CAAC;AAAA,IACtB,GAAG;AAAA,EACL;AACF;AAOO,IAAM,iBAAiC,OAC5C,MACA,qBACkC;AAClC,QAAM,UAAU,OAAO,qBAAqB,aAAa,mBAAmB;AAE5E,QAAM,oBAAoB,oBAAoB,KAAK,OAAO;AAC1D,QAAM,eAAe,qBAAqB,KAAK,QAAQ,IAAI,mBAAmB;AAE9E,MAAI,CAAC,cAAc;AACjB,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAEA,QAAM,EAAE,cAAc,gBAAgB,IAAI;AAC1C,SAAO,sBAAsB,MAAM,cAAc,iBAAiB,OAAO;AAC3E;","names":["clerkState"]}
1
+ {"version":3,"file":"rootAuthLoader.js","names":[],"sources":["../../src/server/rootAuthLoader.ts"],"sourcesContent":["import type { RequestState } from '@clerk/backend/internal';\nimport type { LoaderFunctionArgs } from 'react-router';\n\nimport { invalidRootLoaderCallbackReturn } from '../utils/errors';\nimport { authFnContext, requestStateContext } from './clerkMiddleware';\nimport type {\n AdditionalStateOptions,\n LoaderFunctionArgsWithAuth,\n LoaderFunctionReturn,\n RootAuthLoaderCallback,\n RootAuthLoaderOptions,\n} from './types';\nimport {\n getResponseClerkState,\n injectRequestStateIntoResponse,\n isDataWithResponseInit,\n IsOptIntoMiddleware,\n isRedirect,\n isResponse,\n} from './utils';\n\ninterface RootAuthLoader {\n <Options extends RootAuthLoaderOptions, Callback extends RootAuthLoaderCallback<Options>>(\n /**\n * Arguments passed to the loader function.\n */\n args: LoaderFunctionArgs,\n /**\n * A loader function with authentication state made available to it. Allows you to fetch route data based on the user's authentication state.\n */\n callback: Callback,\n options?: Options,\n ): Promise<ReturnType<Callback>>;\n\n (args: LoaderFunctionArgs, options?: RootAuthLoaderOptions): Promise<LoaderFunctionReturn>;\n}\n\n/**\n * Shared logic for processing the root auth loader with a given request state\n */\nasync function processRootAuthLoader(\n args: LoaderFunctionArgs,\n requestState: RequestState,\n additionalState: AdditionalStateOptions,\n handler?: RootAuthLoaderCallback<any>,\n): Promise<LoaderFunctionReturn> {\n const hasMiddleware = IsOptIntoMiddleware(args.context) && !!args.context.get(authFnContext);\n const includeClerkHeaders = !hasMiddleware;\n\n if (!handler) {\n // if the user did not provide a handler, simply inject requestState into an empty response\n const { clerkState } = getResponseClerkState(requestState, args.context, additionalState);\n return {\n ...clerkState,\n };\n }\n\n // Create args that has the auth object in the request for backward compatibility\n const argsWithAuth = {\n ...args,\n request: Object.assign(args.request, { auth: requestState.toAuth() }),\n } as LoaderFunctionArgsWithAuth<any>;\n\n const handlerResult = await handler(argsWithAuth);\n\n if (isResponse(handlerResult)) {\n try {\n // respect and pass-through any redirects without modifying them\n if (isRedirect(handlerResult)) {\n return handlerResult;\n }\n // clone and try to inject requestState into all json-like responses\n // if this fails, the user probably didn't return a json object or a valid json string\n return injectRequestStateIntoResponse(\n handlerResult,\n requestState,\n args.context,\n additionalState,\n includeClerkHeaders,\n );\n } catch {\n throw new Error(invalidRootLoaderCallbackReturn);\n }\n }\n\n if (isDataWithResponseInit(handlerResult)) {\n try {\n // clone and try to inject requestState into all json-like responses\n // if this fails, the user probably didn't return a json object or a valid json string\n return injectRequestStateIntoResponse(\n new Response(JSON.stringify(handlerResult.data), handlerResult.init ?? undefined),\n requestState,\n args.context,\n additionalState,\n includeClerkHeaders,\n );\n } catch {\n throw new Error(invalidRootLoaderCallbackReturn);\n }\n }\n\n // If the return value of the user's handler is null or a plain object, return plain object with streaming support\n const { clerkState } = getResponseClerkState(requestState, args.context, additionalState);\n\n return {\n ...(handlerResult ?? {}),\n ...clerkState,\n };\n}\n\n/**\n * Makes authorization state available in your application by wrapping the root loader.\n *\n * @see https://clerk.com/docs/references/react-router/root-auth-loader\n */\nexport const rootAuthLoader: RootAuthLoader = async (\n args: LoaderFunctionArgs,\n handlerOrOptions: any,\n): Promise<LoaderFunctionReturn> => {\n const handler = typeof handlerOrOptions === 'function' ? handlerOrOptions : undefined;\n\n const hasMiddlewareFlag = IsOptIntoMiddleware(args.context);\n const contextValue = hasMiddlewareFlag && args.context.get(requestStateContext);\n\n if (!contextValue) {\n throw new Error(\n 'Clerk: clerkMiddleware() not detected. Make sure you have installed the clerkMiddleware in your root route.',\n );\n }\n\n const { requestState, additionalState } = contextValue;\n return processRootAuthLoader(args, requestState, additionalState, handler);\n};\n"],"mappings":";;;;;;;;AAwCA,eAAe,sBACb,MACA,cACA,iBACA,SAC+B;CAE/B,MAAM,sBAAsB,EADN,oBAAoB,KAAK,OAAO,KAAK,CAAC,CAAC,KAAK,QAAQ,IAAI,aAAa;CAG3F,IAAI,CAAC,SAAS;EAEZ,MAAM,EAAE,eAAe,sBAAsB,cAAc,KAAK,SAAS,eAAe;EACxF,OAAO,EACL,GAAG,WACL;CACF;CAQA,MAAM,gBAAgB,MAAM,QAAQ;EAJlC,GAAG;EACH,SAAS,OAAO,OAAO,KAAK,SAAS,EAAE,MAAM,aAAa,OAAO,EAAE,CAAC;CAGvB,CAAC;CAEhD,IAAI,WAAW,aAAa,GAC1B,IAAI;EAEF,IAAI,WAAW,aAAa,GAC1B,OAAO;EAIT,OAAO,+BACL,eACA,cACA,KAAK,SACL,iBACA,mBACF;CACF,QAAQ;EACN,MAAM,IAAI,MAAM,+BAA+B;CACjD;CAGF,IAAI,uBAAuB,aAAa,GACtC,IAAI;EAGF,OAAO,+BACL,IAAI,SAAS,KAAK,UAAU,cAAc,IAAI,GAAG,cAAc,QAAQ,MAAS,GAChF,cACA,KAAK,SACL,iBACA,mBACF;CACF,QAAQ;EACN,MAAM,IAAI,MAAM,+BAA+B;CACjD;CAIF,MAAM,EAAE,eAAe,sBAAsB,cAAc,KAAK,SAAS,eAAe;CAExF,OAAO;EACL,GAAI,iBAAiB,CAAC;EACtB,GAAG;CACL;AACF;;;;;;AAOA,MAAa,iBAAiC,OAC5C,MACA,qBACkC;CAClC,MAAM,UAAU,OAAO,qBAAqB,aAAa,mBAAmB;CAG5E,MAAM,eADoB,oBAAoB,KAAK,OACd,KAAK,KAAK,QAAQ,IAAI,mBAAmB;CAE9E,IAAI,CAAC,cACH,MAAM,IAAI,MACR,6GACF;CAGF,MAAM,EAAE,cAAc,oBAAoB;CAC1C,OAAO,sBAAsB,MAAM,cAAc,iBAAiB,OAAO;AAC3E"}
@@ -1,84 +1,2 @@
1
- import { VerifyTokenOptions, Session, User, Organization } from '@clerk/backend';
2
- import { OrganizationSyncOptions, SignedInAuthObject, SignedOutAuthObject, RequestState } from '@clerk/backend/internal';
3
- import { MultiDomainAndOrProxy, SignInForceRedirectUrl, SignInFallbackRedirectUrl, SignUpForceRedirectUrl, SignUpFallbackRedirectUrl } from '@clerk/shared/types';
4
- import { LoaderFunctionArgs, UNSAFE_DataWithResponseInit, LoaderFunction } from 'react-router';
5
-
6
- type GetAuthReturn = Promise<SignedInAuthObject | SignedOutAuthObject>;
7
- type ClerkMiddlewareOptions = {
8
- /**
9
- * Used to override the default VITE_CLERK_PUBLISHABLE_KEY env variable if needed.
10
- */
11
- publishableKey?: string;
12
- /**
13
- * Used to override the CLERK_JWT_KEY env variable if needed.
14
- */
15
- jwtKey?: string;
16
- /**
17
- * Used to override the CLERK_SECRET_KEY env variable if needed.
18
- */
19
- secretKey?: string;
20
- /**
21
- * Used to override the CLERK_MACHINE_SECRET_KEY env variable if needed.
22
- */
23
- machineSecretKey?: string;
24
- signInUrl?: string;
25
- signUpUrl?: string;
26
- /**
27
- * Used to activate a specific [Organization](https://clerk.com/docs/guides/organizations/overview) or [Personal Account](https://clerk.com/docs/guides/dashboard/overview) based on URL path parameters. If there's a mismatch between the Active Organization in the session (e.g., as reported by `auth()`) and the Organization indicated by the URL, an attempt to activate the Organization specified in the URL will be made.
28
- *
29
- * If the activation can't be performed, either because an Organization doesn't exist or the user lacks access, the Active Organization in the session won't be changed. Ultimately, it's the responsibility of the page to verify that the resources are appropriate to render given the URL and handle mismatches appropriately (e.g., by returning a 404).
30
- */
31
- organizationSyncOptions?: OrganizationSyncOptions;
32
- } & Pick<VerifyTokenOptions, 'audience' | 'authorizedParties'> & MultiDomainAndOrProxy & SignInForceRedirectUrl & SignInFallbackRedirectUrl & SignUpForceRedirectUrl & SignUpFallbackRedirectUrl;
33
- type RootAuthLoaderOptions = ClerkMiddlewareOptions & {
34
- /**
35
- * @deprecated Use [session token claims](https://clerk.com/docs/backend-requests/making/custom-session-token) instead.
36
- */
37
- loadUser?: boolean;
38
- /**
39
- * @deprecated Use [session token claims](https://clerk.com/docs/backend-requests/making/custom-session-token) instead.
40
- */
41
- loadSession?: boolean;
42
- /**
43
- * @deprecated Use [session token claims](https://clerk.com/docs/backend-requests/making/custom-session-token) instead.
44
- */
45
- loadOrganization?: boolean;
46
- };
47
- interface KeylessUrls {
48
- __keylessClaimUrl?: string;
49
- __keylessApiKeysUrl?: string;
50
- }
51
- type AdditionalStateOptions = SignInFallbackRedirectUrl & SignUpFallbackRedirectUrl & SignInForceRedirectUrl & SignUpForceRedirectUrl & KeylessUrls;
52
- /**
53
- * @deprecated This type is no longer used internally. Use `AdditionalStateOptions` instead.
54
- */
55
- type RequestStateWithRedirectUrls = RequestState & SignInForceRedirectUrl & SignInFallbackRedirectUrl & SignUpForceRedirectUrl & SignUpFallbackRedirectUrl & KeylessUrls;
56
- type RootAuthLoaderCallback<Options extends RootAuthLoaderOptions> = (args: LoaderFunctionArgsWithAuth<Options>) => RootAuthLoaderCallbackReturn;
57
- type ObjectLike = Record<string, unknown> | null;
58
- /**
59
- * We are not using `LoaderFunctionReturn` here because we can't support non-object return values. We need to be able to decorate the return value with authentication state, and so we need something object-like.
60
- *
61
- * In the case of `null`, we will return an object containing only the authentication state.
62
- */
63
- type RootAuthLoaderCallbackReturn = Promise<Response> | Response | Promise<ObjectLike> | ObjectLike | UNSAFE_DataWithResponseInit<unknown> | Promise<UNSAFE_DataWithResponseInit<unknown>>;
64
- type LoaderFunctionReturn = ReturnType<LoaderFunction>;
65
- type LoaderFunctionArgsWithAuth<Options extends RootAuthLoaderOptions = any> = LoaderFunctionArgs & {
66
- request: RequestWithAuth<Options>;
67
- };
68
- type RequestWithAuth<Options extends RootAuthLoaderOptions = any> = LoaderFunctionArgs['request'] & {
69
- auth: Omit<SignedInAuthObject | SignedOutAuthObject, 'session' | 'user' | 'organization'>;
70
- } & (Options extends {
71
- loadSession: true;
72
- } ? {
73
- session: Session | null;
74
- } : object) & (Options extends {
75
- loadUser: true;
76
- } ? {
77
- user: User | null;
78
- } : object) & (Options extends {
79
- loadOrganization: true;
80
- } ? {
81
- organization: Organization | null;
82
- } : object);
83
-
84
- export type { AdditionalStateOptions, ClerkMiddlewareOptions, GetAuthReturn, KeylessUrls, LoaderFunctionArgsWithAuth, LoaderFunctionReturn, RequestStateWithRedirectUrls, RequestWithAuth, RootAuthLoaderCallback, RootAuthLoaderOptions };
1
+ import { a as LoaderFunctionArgsWithAuth, c as RequestWithAuth, i as KeylessUrls, l as RootAuthLoaderCallback, n as ClerkMiddlewareOptions, o as LoaderFunctionReturn, r as GetAuthReturn, s as RequestStateWithRedirectUrls, t as AdditionalStateOptions, u as RootAuthLoaderOptions } from "../types-CkBFvMvW.js";
2
+ export { AdditionalStateOptions, ClerkMiddlewareOptions, GetAuthReturn, KeylessUrls, LoaderFunctionArgsWithAuth, LoaderFunctionReturn, RequestStateWithRedirectUrls, RequestWithAuth, RootAuthLoaderCallback, RootAuthLoaderOptions };
@@ -1 +1 @@
1
- //# sourceMappingURL=types.js.map
1
+ export { };
@@ -1,9 +1,8 @@
1
- import { RequestState } from '@clerk/backend/internal';
2
- import { AppLoadContext, UNSAFE_DataWithResponseInit } from 'react-router';
3
- import { AdditionalStateOptions } from './types.js';
4
- import '@clerk/backend';
5
- import '@clerk/shared/types';
1
+ import { t as AdditionalStateOptions } from "../types-CkBFvMvW.js";
2
+ import { AppLoadContext, UNSAFE_DataWithResponseInit } from "react-router";
3
+ import { RequestState } from "@clerk/backend/internal";
6
4
 
5
+ //#region src/server/utils.d.ts
7
6
  declare function isResponse(value: any): value is Response;
8
7
  declare function isDataWithResponseInit(value: any): value is UNSAFE_DataWithResponseInit<unknown>;
9
8
  declare function isRedirect(res: Response): boolean;
@@ -21,12 +20,12 @@ declare const injectRequestStateIntoResponse: (response: Response, requestState:
21
20
  * @internal
22
21
  */
23
22
  declare function getResponseClerkState(requestState: RequestState, context: AppLoadContext, additionalStateOptions?: AdditionalStateOptions): {
23
+ clerkState: {
24
24
  clerkState: {
25
- clerkState: {
26
- __internal_clerk_state: any;
27
- };
25
+ __internal_clerk_state: any;
28
26
  };
29
- headers: Headers;
27
+ };
28
+ headers: Headers;
30
29
  };
31
30
  /**
32
31
  * Wraps obscured clerk internals with a readable `clerkState` key.
@@ -35,9 +34,9 @@ declare function getResponseClerkState(requestState: RequestState, context: AppL
35
34
  * @internal
36
35
  */
37
36
  declare const wrapWithClerkState: (data: any) => {
38
- clerkState: {
39
- __internal_clerk_state: any;
40
- };
37
+ clerkState: {
38
+ __internal_clerk_state: any;
39
+ };
41
40
  };
42
41
  /**
43
42
  * Patches request to avoid duplex issues with unidici
@@ -47,5 +46,6 @@ declare const wrapWithClerkState: (data: any) => {
47
46
  * @internal
48
47
  */
49
48
  declare const patchRequest: (request: Request) => Request;
50
-
49
+ //#endregion
51
50
  export { IsOptIntoMiddleware, assertValidHandlerResult, getResponseClerkState, injectRequestStateIntoResponse, isDataWithResponseInit, isRedirect, isResponse, parseCookies, patchRequest, wrapWithClerkState };
51
+ //# sourceMappingURL=utils.d.ts.map
@@ -1,101 +1,111 @@
1
- // src/server/utils.ts
2
- import { constants, debugRequestState } from "@clerk/backend/internal";
3
- import { parse as parseCookie } from "cookie";
4
1
  import { getPublicEnvVariables } from "../utils/env.js";
5
2
  import { canUseKeyless } from "../utils/feature-flags.js";
3
+ import { constants, debugRequestState } from "@clerk/backend/internal";
4
+ import { parse } from "cookie";
5
+
6
+ //#region src/server/utils.ts
6
7
  function isResponse(value) {
7
- return value != null && typeof value.status === "number" && typeof value.statusText === "string" && typeof value.headers === "object" && typeof value.body !== "undefined";
8
+ return value != null && typeof value.status === "number" && typeof value.statusText === "string" && typeof value.headers === "object" && typeof value.body !== "undefined";
8
9
  }
9
10
  function isDataWithResponseInit(value) {
10
- return typeof value === "object" && value != null && "type" in value && "data" in value && "init" in value && value.type === "DataWithResponseInit";
11
+ return typeof value === "object" && value != null && "type" in value && "data" in value && "init" in value && value.type === "DataWithResponseInit";
11
12
  }
12
13
  function isRedirect(res) {
13
- return res.status >= 300 && res.status < 400;
14
+ return res.status >= 300 && res.status < 400;
14
15
  }
15
- var parseCookies = (req) => {
16
- return parseCookie(req.headers.get("cookie") || "");
16
+ const parseCookies = (req) => {
17
+ return parse(req.headers.get("cookie") || "");
17
18
  };
18
19
  function assertValidHandlerResult(val, error) {
19
- if (val !== null && typeof val !== "object" || Array.isArray(val)) {
20
- throw new Error(error || "");
21
- }
20
+ if (val !== null && typeof val !== "object" || Array.isArray(val)) throw new Error(error || "");
22
21
  }
23
- var IsOptIntoMiddleware = (context) => {
24
- return "get" in context && "set" in context;
22
+ /**
23
+ * `get` and `set` properties will only be available if v8_middleware flag is enabled
24
+ * See: https://reactrouter.com/upgrading/future#futurev8_middleware
25
+ */
26
+ const IsOptIntoMiddleware = (context) => {
27
+ return "get" in context && "set" in context;
25
28
  };
26
- var injectRequestStateIntoResponse = async (response, requestState, context, additionalStateOptions = {}, includeClerkHeaders = false) => {
27
- const clone = new Response(response.body, response);
28
- const data = await clone.json();
29
- const { clerkState, headers } = getResponseClerkState(requestState, context, additionalStateOptions);
30
- clone.headers.set(constants.Headers.ContentType, constants.ContentTypes.Json);
31
- if (includeClerkHeaders) {
32
- headers.forEach((value, key) => {
33
- clone.headers.append(key, value);
34
- });
35
- }
36
- return Response.json({ ...data || {}, ...clerkState }, clone);
29
+ const injectRequestStateIntoResponse = async (response, requestState, context, additionalStateOptions = {}, includeClerkHeaders = false) => {
30
+ const clone = new Response(response.body, response);
31
+ const data = await clone.json();
32
+ const { clerkState, headers } = getResponseClerkState(requestState, context, additionalStateOptions);
33
+ clone.headers.set(constants.Headers.ContentType, constants.ContentTypes.Json);
34
+ if (includeClerkHeaders) headers.forEach((value, key) => {
35
+ clone.headers.append(key, value);
36
+ });
37
+ return Response.json({
38
+ ...data || {},
39
+ ...clerkState
40
+ }, clone);
37
41
  };
42
+ /**
43
+ * Returns the clerk state object and observability headers to be injected into a loader response.
44
+ *
45
+ * @internal
46
+ */
38
47
  function getResponseClerkState(requestState, context, additionalStateOptions = {}) {
39
- const { reason, message, isSignedIn, ...rest } = requestState;
40
- const envVars = getPublicEnvVariables(context);
41
- const { __keylessClaimUrl, __keylessApiKeysUrl, ...redirectUrlOptions } = additionalStateOptions;
42
- const baseState = {
43
- __clerk_ssr_state: rest.toAuth(),
44
- __publishableKey: requestState.publishableKey,
45
- __proxyUrl: requestState.proxyUrl,
46
- __domain: requestState.domain,
47
- __isSatellite: requestState.isSatellite,
48
- __signInUrl: requestState.signInUrl,
49
- __signUpUrl: requestState.signUpUrl,
50
- __signInForceRedirectUrl: redirectUrlOptions.signInForceRedirectUrl,
51
- __signUpForceRedirectUrl: redirectUrlOptions.signUpForceRedirectUrl,
52
- __signInFallbackRedirectUrl: redirectUrlOptions.signInFallbackRedirectUrl,
53
- __signUpFallbackRedirectUrl: redirectUrlOptions.signUpFallbackRedirectUrl,
54
- __clerk_debug: debugRequestState(requestState),
55
- __clerkJSUrl: envVars.clerkJsUrl,
56
- __clerkJSVersion: envVars.clerkJsVersion,
57
- __clerkUIUrl: envVars.clerkUIUrl,
58
- __clerkUIVersion: envVars.clerkUIVersion,
59
- __prefetchUI: envVars.prefetchUI,
60
- __telemetryDisabled: envVars.telemetryDisabled,
61
- __telemetryDebug: envVars.telemetryDebug,
62
- __unsafeDisableDevelopmentModeConsoleWarning: envVars.unsafeDisableDevelopmentModeConsoleWarning
63
- };
64
- if (canUseKeyless && __keylessClaimUrl) {
65
- baseState.__keylessClaimUrl = __keylessClaimUrl;
66
- baseState.__keylessApiKeysUrl = __keylessApiKeysUrl;
67
- }
68
- const clerkState = wrapWithClerkState(baseState);
69
- return {
70
- clerkState,
71
- headers: requestState.headers
72
- };
48
+ const { reason, message, isSignedIn, ...rest } = requestState;
49
+ const envVars = getPublicEnvVariables(context);
50
+ const { __keylessClaimUrl, __keylessApiKeysUrl, ...redirectUrlOptions } = additionalStateOptions;
51
+ const baseState = {
52
+ __clerk_ssr_state: rest.toAuth(),
53
+ __publishableKey: requestState.publishableKey,
54
+ __proxyUrl: requestState.proxyUrl,
55
+ __domain: requestState.domain,
56
+ __isSatellite: requestState.isSatellite,
57
+ __signInUrl: requestState.signInUrl,
58
+ __signUpUrl: requestState.signUpUrl,
59
+ __signInForceRedirectUrl: redirectUrlOptions.signInForceRedirectUrl,
60
+ __signUpForceRedirectUrl: redirectUrlOptions.signUpForceRedirectUrl,
61
+ __signInFallbackRedirectUrl: redirectUrlOptions.signInFallbackRedirectUrl,
62
+ __signUpFallbackRedirectUrl: redirectUrlOptions.signUpFallbackRedirectUrl,
63
+ __clerk_debug: debugRequestState(requestState),
64
+ __clerkJSUrl: envVars.clerkJsUrl,
65
+ __clerkJSVersion: envVars.clerkJsVersion,
66
+ __clerkUIUrl: envVars.clerkUIUrl,
67
+ __clerkUIVersion: envVars.clerkUIVersion,
68
+ __prefetchUI: envVars.prefetchUI,
69
+ __telemetryDisabled: envVars.telemetryDisabled,
70
+ __telemetryDebug: envVars.telemetryDebug,
71
+ __unsafeDisableDevelopmentModeConsoleWarning: envVars.unsafeDisableDevelopmentModeConsoleWarning
72
+ };
73
+ if (canUseKeyless && __keylessClaimUrl) {
74
+ baseState.__keylessClaimUrl = __keylessClaimUrl;
75
+ baseState.__keylessApiKeysUrl = __keylessApiKeysUrl;
76
+ }
77
+ return {
78
+ clerkState: wrapWithClerkState(baseState),
79
+ headers: requestState.headers
80
+ };
73
81
  }
74
- var wrapWithClerkState = (data) => {
75
- return { clerkState: { __internal_clerk_state: { ...data } } };
76
- };
77
- var patchRequest = (request) => {
78
- const clonedRequest = new Request(request.url, {
79
- headers: request.headers,
80
- method: request.method,
81
- redirect: request.redirect,
82
- cache: request.cache
83
- });
84
- if (clonedRequest.method !== "GET" && clonedRequest.body !== null && !("duplex" in clonedRequest)) {
85
- clonedRequest.duplex = "half";
86
- }
87
- return clonedRequest;
82
+ /**
83
+ * Wraps obscured clerk internals with a readable `clerkState` key.
84
+ * This is intended to be passed by the user into <ClerkProvider>
85
+ *
86
+ * @internal
87
+ */
88
+ const wrapWithClerkState = (data) => {
89
+ return { clerkState: { __internal_clerk_state: { ...data } } };
88
90
  };
89
- export {
90
- IsOptIntoMiddleware,
91
- assertValidHandlerResult,
92
- getResponseClerkState,
93
- injectRequestStateIntoResponse,
94
- isDataWithResponseInit,
95
- isRedirect,
96
- isResponse,
97
- parseCookies,
98
- patchRequest,
99
- wrapWithClerkState
91
+ /**
92
+ * Patches request to avoid duplex issues with unidici
93
+ * For more information, see:
94
+ * https://github.com/nodejs/node/issues/46221
95
+ * https://github.com/whatwg/fetch/pull/1457
96
+ * @internal
97
+ */
98
+ const patchRequest = (request) => {
99
+ const clonedRequest = new Request(request.url, {
100
+ headers: request.headers,
101
+ method: request.method,
102
+ redirect: request.redirect,
103
+ cache: request.cache
104
+ });
105
+ if (clonedRequest.method !== "GET" && clonedRequest.body !== null && !("duplex" in clonedRequest)) clonedRequest.duplex = "half";
106
+ return clonedRequest;
100
107
  };
108
+
109
+ //#endregion
110
+ export { IsOptIntoMiddleware, assertValidHandlerResult, getResponseClerkState, injectRequestStateIntoResponse, isDataWithResponseInit, isRedirect, isResponse, parseCookies, patchRequest, wrapWithClerkState };
101
111
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/server/utils.ts"],"sourcesContent":["import type { RequestState } from '@clerk/backend/internal';\nimport { constants, debugRequestState } from '@clerk/backend/internal';\nimport { parse as parseCookie } from 'cookie';\nimport type { AppLoadContext, UNSAFE_DataWithResponseInit } from 'react-router';\n\nimport { getPublicEnvVariables } from '../utils/env';\nimport { canUseKeyless } from '../utils/feature-flags';\nimport type { AdditionalStateOptions } from './types';\n\nexport function isResponse(value: any): value is Response {\n return (\n value != null &&\n typeof value.status === 'number' &&\n typeof value.statusText === 'string' &&\n typeof value.headers === 'object' &&\n typeof value.body !== 'undefined'\n );\n}\n\nexport function isDataWithResponseInit(value: any): value is UNSAFE_DataWithResponseInit<unknown> {\n return (\n typeof value === 'object' &&\n value != null &&\n 'type' in value &&\n 'data' in value &&\n 'init' in value &&\n value.type === 'DataWithResponseInit'\n );\n}\n\nexport function isRedirect(res: Response): boolean {\n return res.status >= 300 && res.status < 400;\n}\n\nexport const parseCookies = (req: Request) => {\n return parseCookie(req.headers.get('cookie') || '');\n};\n\nexport function assertValidHandlerResult(val: any, error?: string): asserts val is Record<string, unknown> | null {\n if ((val !== null && typeof val !== 'object') || Array.isArray(val)) {\n throw new Error(error || '');\n }\n}\n\n/**\n * `get` and `set` properties will only be available if v8_middleware flag is enabled\n * See: https://reactrouter.com/upgrading/future#futurev8_middleware\n */\nexport const IsOptIntoMiddleware = (context: AppLoadContext) => {\n return 'get' in context && 'set' in context;\n};\n\nexport const injectRequestStateIntoResponse = async (\n response: Response,\n requestState: RequestState,\n context: AppLoadContext,\n additionalStateOptions: AdditionalStateOptions = {},\n includeClerkHeaders = false,\n) => {\n const clone = new Response(response.body, response);\n const data = await clone.json();\n\n const { clerkState, headers } = getResponseClerkState(requestState, context, additionalStateOptions);\n\n // set the correct content-type header in case the user returned a `Response` directly\n clone.headers.set(constants.Headers.ContentType, constants.ContentTypes.Json);\n\n // Only add Clerk headers if requested\n if (includeClerkHeaders) {\n headers.forEach((value, key) => {\n clone.headers.append(key, value);\n });\n }\n\n return Response.json({ ...(data || {}), ...clerkState }, clone);\n};\n\n/**\n * Returns the clerk state object and observability headers to be injected into a loader response.\n *\n * @internal\n */\nexport function getResponseClerkState(\n requestState: RequestState,\n context: AppLoadContext,\n additionalStateOptions: AdditionalStateOptions = {},\n) {\n const { reason, message, isSignedIn, ...rest } = requestState;\n const envVars = getPublicEnvVariables(context);\n const { __keylessClaimUrl, __keylessApiKeysUrl, ...redirectUrlOptions } = additionalStateOptions;\n\n const baseState: Record<string, unknown> = {\n __clerk_ssr_state: rest.toAuth(),\n __publishableKey: requestState.publishableKey,\n __proxyUrl: requestState.proxyUrl,\n __domain: requestState.domain,\n __isSatellite: requestState.isSatellite,\n __signInUrl: requestState.signInUrl,\n __signUpUrl: requestState.signUpUrl,\n __signInForceRedirectUrl: redirectUrlOptions.signInForceRedirectUrl,\n __signUpForceRedirectUrl: redirectUrlOptions.signUpForceRedirectUrl,\n __signInFallbackRedirectUrl: redirectUrlOptions.signInFallbackRedirectUrl,\n __signUpFallbackRedirectUrl: redirectUrlOptions.signUpFallbackRedirectUrl,\n __clerk_debug: debugRequestState(requestState),\n __clerkJSUrl: envVars.clerkJsUrl,\n __clerkJSVersion: envVars.clerkJsVersion,\n __clerkUIUrl: envVars.clerkUIUrl,\n __clerkUIVersion: envVars.clerkUIVersion,\n __prefetchUI: envVars.prefetchUI,\n __telemetryDisabled: envVars.telemetryDisabled,\n __telemetryDebug: envVars.telemetryDebug,\n __unsafeDisableDevelopmentModeConsoleWarning: envVars.unsafeDisableDevelopmentModeConsoleWarning,\n };\n\n if (canUseKeyless && __keylessClaimUrl) {\n baseState.__keylessClaimUrl = __keylessClaimUrl;\n baseState.__keylessApiKeysUrl = __keylessApiKeysUrl;\n }\n\n const clerkState = wrapWithClerkState(baseState);\n\n return {\n clerkState,\n headers: requestState.headers,\n };\n}\n\n/**\n * Wraps obscured clerk internals with a readable `clerkState` key.\n * This is intended to be passed by the user into <ClerkProvider>\n *\n * @internal\n */\nexport const wrapWithClerkState = (data: any) => {\n return { clerkState: { __internal_clerk_state: { ...data } } };\n};\n\n/**\n * Patches request to avoid duplex issues with unidici\n * For more information, see:\n * https://github.com/nodejs/node/issues/46221\n * https://github.com/whatwg/fetch/pull/1457\n * @internal\n */\nexport const patchRequest = (request: Request) => {\n // Omit `signal` from the clone: Node 24's bundled undici tightened the\n // instanceof AbortSignal check, which rejects cross-realm signals (e.g.\n // those carried by framework Request subclasses).\n const clonedRequest = new Request(request.url, {\n headers: request.headers,\n method: request.method,\n redirect: request.redirect,\n cache: request.cache,\n });\n\n // If duplex is not set, set it to 'half' to avoid duplex issues with unidici\n if (clonedRequest.method !== 'GET' && clonedRequest.body !== null && !('duplex' in clonedRequest)) {\n (clonedRequest as unknown as { duplex: 'half' }).duplex = 'half';\n }\n\n return clonedRequest;\n};\n"],"mappings":";AACA,SAAS,WAAW,yBAAyB;AAC7C,SAAS,SAAS,mBAAmB;AAGrC,SAAS,6BAA6B;AACtC,SAAS,qBAAqB;AAGvB,SAAS,WAAW,OAA+B;AACxD,SACE,SAAS,QACT,OAAO,MAAM,WAAW,YACxB,OAAO,MAAM,eAAe,YAC5B,OAAO,MAAM,YAAY,YACzB,OAAO,MAAM,SAAS;AAE1B;AAEO,SAAS,uBAAuB,OAA2D;AAChG,SACE,OAAO,UAAU,YACjB,SAAS,QACT,UAAU,SACV,UAAU,SACV,UAAU,SACV,MAAM,SAAS;AAEnB;AAEO,SAAS,WAAW,KAAwB;AACjD,SAAO,IAAI,UAAU,OAAO,IAAI,SAAS;AAC3C;AAEO,IAAM,eAAe,CAAC,QAAiB;AAC5C,SAAO,YAAY,IAAI,QAAQ,IAAI,QAAQ,KAAK,EAAE;AACpD;AAEO,SAAS,yBAAyB,KAAU,OAA+D;AAChH,MAAK,QAAQ,QAAQ,OAAO,QAAQ,YAAa,MAAM,QAAQ,GAAG,GAAG;AACnE,UAAM,IAAI,MAAM,SAAS,EAAE;AAAA,EAC7B;AACF;AAMO,IAAM,sBAAsB,CAAC,YAA4B;AAC9D,SAAO,SAAS,WAAW,SAAS;AACtC;AAEO,IAAM,iCAAiC,OAC5C,UACA,cACA,SACA,yBAAiD,CAAC,GAClD,sBAAsB,UACnB;AACH,QAAM,QAAQ,IAAI,SAAS,SAAS,MAAM,QAAQ;AAClD,QAAM,OAAO,MAAM,MAAM,KAAK;AAE9B,QAAM,EAAE,YAAY,QAAQ,IAAI,sBAAsB,cAAc,SAAS,sBAAsB;AAGnG,QAAM,QAAQ,IAAI,UAAU,QAAQ,aAAa,UAAU,aAAa,IAAI;AAG5E,MAAI,qBAAqB;AACvB,YAAQ,QAAQ,CAAC,OAAO,QAAQ;AAC9B,YAAM,QAAQ,OAAO,KAAK,KAAK;AAAA,IACjC,CAAC;AAAA,EACH;AAEA,SAAO,SAAS,KAAK,EAAE,GAAI,QAAQ,CAAC,GAAI,GAAG,WAAW,GAAG,KAAK;AAChE;AAOO,SAAS,sBACd,cACA,SACA,yBAAiD,CAAC,GAClD;AACA,QAAM,EAAE,QAAQ,SAAS,YAAY,GAAG,KAAK,IAAI;AACjD,QAAM,UAAU,sBAAsB,OAAO;AAC7C,QAAM,EAAE,mBAAmB,qBAAqB,GAAG,mBAAmB,IAAI;AAE1E,QAAM,YAAqC;AAAA,IACzC,mBAAmB,KAAK,OAAO;AAAA,IAC/B,kBAAkB,aAAa;AAAA,IAC/B,YAAY,aAAa;AAAA,IACzB,UAAU,aAAa;AAAA,IACvB,eAAe,aAAa;AAAA,IAC5B,aAAa,aAAa;AAAA,IAC1B,aAAa,aAAa;AAAA,IAC1B,0BAA0B,mBAAmB;AAAA,IAC7C,0BAA0B,mBAAmB;AAAA,IAC7C,6BAA6B,mBAAmB;AAAA,IAChD,6BAA6B,mBAAmB;AAAA,IAChD,eAAe,kBAAkB,YAAY;AAAA,IAC7C,cAAc,QAAQ;AAAA,IACtB,kBAAkB,QAAQ;AAAA,IAC1B,cAAc,QAAQ;AAAA,IACtB,kBAAkB,QAAQ;AAAA,IAC1B,cAAc,QAAQ;AAAA,IACtB,qBAAqB,QAAQ;AAAA,IAC7B,kBAAkB,QAAQ;AAAA,IAC1B,8CAA8C,QAAQ;AAAA,EACxD;AAEA,MAAI,iBAAiB,mBAAmB;AACtC,cAAU,oBAAoB;AAC9B,cAAU,sBAAsB;AAAA,EAClC;AAEA,QAAM,aAAa,mBAAmB,SAAS;AAE/C,SAAO;AAAA,IACL;AAAA,IACA,SAAS,aAAa;AAAA,EACxB;AACF;AAQO,IAAM,qBAAqB,CAAC,SAAc;AAC/C,SAAO,EAAE,YAAY,EAAE,wBAAwB,EAAE,GAAG,KAAK,EAAE,EAAE;AAC/D;AASO,IAAM,eAAe,CAAC,YAAqB;AAIhD,QAAM,gBAAgB,IAAI,QAAQ,QAAQ,KAAK;AAAA,IAC7C,SAAS,QAAQ;AAAA,IACjB,QAAQ,QAAQ;AAAA,IAChB,UAAU,QAAQ;AAAA,IAClB,OAAO,QAAQ;AAAA,EACjB,CAAC;AAGD,MAAI,cAAc,WAAW,SAAS,cAAc,SAAS,QAAQ,EAAE,YAAY,gBAAgB;AACjG,IAAC,cAAgD,SAAS;AAAA,EAC5D;AAEA,SAAO;AACT;","names":[]}
1
+ {"version":3,"file":"utils.js","names":["parseCookie"],"sources":["../../src/server/utils.ts"],"sourcesContent":["import type { RequestState } from '@clerk/backend/internal';\nimport { constants, debugRequestState } from '@clerk/backend/internal';\nimport { parse as parseCookie } from 'cookie';\nimport type { AppLoadContext, UNSAFE_DataWithResponseInit } from 'react-router';\n\nimport { getPublicEnvVariables } from '../utils/env';\nimport { canUseKeyless } from '../utils/feature-flags';\nimport type { AdditionalStateOptions } from './types';\n\nexport function isResponse(value: any): value is Response {\n return (\n value != null &&\n typeof value.status === 'number' &&\n typeof value.statusText === 'string' &&\n typeof value.headers === 'object' &&\n typeof value.body !== 'undefined'\n );\n}\n\nexport function isDataWithResponseInit(value: any): value is UNSAFE_DataWithResponseInit<unknown> {\n return (\n typeof value === 'object' &&\n value != null &&\n 'type' in value &&\n 'data' in value &&\n 'init' in value &&\n value.type === 'DataWithResponseInit'\n );\n}\n\nexport function isRedirect(res: Response): boolean {\n return res.status >= 300 && res.status < 400;\n}\n\nexport const parseCookies = (req: Request) => {\n return parseCookie(req.headers.get('cookie') || '');\n};\n\nexport function assertValidHandlerResult(val: any, error?: string): asserts val is Record<string, unknown> | null {\n if ((val !== null && typeof val !== 'object') || Array.isArray(val)) {\n throw new Error(error || '');\n }\n}\n\n/**\n * `get` and `set` properties will only be available if v8_middleware flag is enabled\n * See: https://reactrouter.com/upgrading/future#futurev8_middleware\n */\nexport const IsOptIntoMiddleware = (context: AppLoadContext) => {\n return 'get' in context && 'set' in context;\n};\n\nexport const injectRequestStateIntoResponse = async (\n response: Response,\n requestState: RequestState,\n context: AppLoadContext,\n additionalStateOptions: AdditionalStateOptions = {},\n includeClerkHeaders = false,\n) => {\n const clone = new Response(response.body, response);\n const data = await clone.json();\n\n const { clerkState, headers } = getResponseClerkState(requestState, context, additionalStateOptions);\n\n // set the correct content-type header in case the user returned a `Response` directly\n clone.headers.set(constants.Headers.ContentType, constants.ContentTypes.Json);\n\n // Only add Clerk headers if requested\n if (includeClerkHeaders) {\n headers.forEach((value, key) => {\n clone.headers.append(key, value);\n });\n }\n\n return Response.json({ ...(data || {}), ...clerkState }, clone);\n};\n\n/**\n * Returns the clerk state object and observability headers to be injected into a loader response.\n *\n * @internal\n */\nexport function getResponseClerkState(\n requestState: RequestState,\n context: AppLoadContext,\n additionalStateOptions: AdditionalStateOptions = {},\n) {\n const { reason, message, isSignedIn, ...rest } = requestState;\n const envVars = getPublicEnvVariables(context);\n const { __keylessClaimUrl, __keylessApiKeysUrl, ...redirectUrlOptions } = additionalStateOptions;\n\n const baseState: Record<string, unknown> = {\n __clerk_ssr_state: rest.toAuth(),\n __publishableKey: requestState.publishableKey,\n __proxyUrl: requestState.proxyUrl,\n __domain: requestState.domain,\n __isSatellite: requestState.isSatellite,\n __signInUrl: requestState.signInUrl,\n __signUpUrl: requestState.signUpUrl,\n __signInForceRedirectUrl: redirectUrlOptions.signInForceRedirectUrl,\n __signUpForceRedirectUrl: redirectUrlOptions.signUpForceRedirectUrl,\n __signInFallbackRedirectUrl: redirectUrlOptions.signInFallbackRedirectUrl,\n __signUpFallbackRedirectUrl: redirectUrlOptions.signUpFallbackRedirectUrl,\n __clerk_debug: debugRequestState(requestState),\n __clerkJSUrl: envVars.clerkJsUrl,\n __clerkJSVersion: envVars.clerkJsVersion,\n __clerkUIUrl: envVars.clerkUIUrl,\n __clerkUIVersion: envVars.clerkUIVersion,\n __prefetchUI: envVars.prefetchUI,\n __telemetryDisabled: envVars.telemetryDisabled,\n __telemetryDebug: envVars.telemetryDebug,\n __unsafeDisableDevelopmentModeConsoleWarning: envVars.unsafeDisableDevelopmentModeConsoleWarning,\n };\n\n if (canUseKeyless && __keylessClaimUrl) {\n baseState.__keylessClaimUrl = __keylessClaimUrl;\n baseState.__keylessApiKeysUrl = __keylessApiKeysUrl;\n }\n\n const clerkState = wrapWithClerkState(baseState);\n\n return {\n clerkState,\n headers: requestState.headers,\n };\n}\n\n/**\n * Wraps obscured clerk internals with a readable `clerkState` key.\n * This is intended to be passed by the user into <ClerkProvider>\n *\n * @internal\n */\nexport const wrapWithClerkState = (data: any) => {\n return { clerkState: { __internal_clerk_state: { ...data } } };\n};\n\n/**\n * Patches request to avoid duplex issues with unidici\n * For more information, see:\n * https://github.com/nodejs/node/issues/46221\n * https://github.com/whatwg/fetch/pull/1457\n * @internal\n */\nexport const patchRequest = (request: Request) => {\n // Omit `signal` from the clone: Node 24's bundled undici tightened the\n // instanceof AbortSignal check, which rejects cross-realm signals (e.g.\n // those carried by framework Request subclasses).\n const clonedRequest = new Request(request.url, {\n headers: request.headers,\n method: request.method,\n redirect: request.redirect,\n cache: request.cache,\n });\n\n // If duplex is not set, set it to 'half' to avoid duplex issues with unidici\n if (clonedRequest.method !== 'GET' && clonedRequest.body !== null && !('duplex' in clonedRequest)) {\n (clonedRequest as unknown as { duplex: 'half' }).duplex = 'half';\n }\n\n return clonedRequest;\n};\n"],"mappings":";;;;;;AASA,SAAgB,WAAW,OAA+B;CACxD,OACE,SAAS,QACT,OAAO,MAAM,WAAW,YACxB,OAAO,MAAM,eAAe,YAC5B,OAAO,MAAM,YAAY,YACzB,OAAO,MAAM,SAAS;AAE1B;AAEA,SAAgB,uBAAuB,OAA2D;CAChG,OACE,OAAO,UAAU,YACjB,SAAS,QACT,UAAU,SACV,UAAU,SACV,UAAU,SACV,MAAM,SAAS;AAEnB;AAEA,SAAgB,WAAW,KAAwB;CACjD,OAAO,IAAI,UAAU,OAAO,IAAI,SAAS;AAC3C;AAEA,MAAa,gBAAgB,QAAiB;CAC5C,OAAOA,MAAY,IAAI,QAAQ,IAAI,QAAQ,KAAK,EAAE;AACpD;AAEA,SAAgB,yBAAyB,KAAU,OAA+D;CAChH,IAAK,QAAQ,QAAQ,OAAO,QAAQ,YAAa,MAAM,QAAQ,GAAG,GAChE,MAAM,IAAI,MAAM,SAAS,EAAE;AAE/B;;;;;AAMA,MAAa,uBAAuB,YAA4B;CAC9D,OAAO,SAAS,WAAW,SAAS;AACtC;AAEA,MAAa,iCAAiC,OAC5C,UACA,cACA,SACA,yBAAiD,CAAC,GAClD,sBAAsB,UACnB;CACH,MAAM,QAAQ,IAAI,SAAS,SAAS,MAAM,QAAQ;CAClD,MAAM,OAAO,MAAM,MAAM,KAAK;CAE9B,MAAM,EAAE,YAAY,YAAY,sBAAsB,cAAc,SAAS,sBAAsB;CAGnG,MAAM,QAAQ,IAAI,UAAU,QAAQ,aAAa,UAAU,aAAa,IAAI;CAG5E,IAAI,qBACF,QAAQ,SAAS,OAAO,QAAQ;EAC9B,MAAM,QAAQ,OAAO,KAAK,KAAK;CACjC,CAAC;CAGH,OAAO,SAAS,KAAK;EAAE,GAAI,QAAQ,CAAC;EAAI,GAAG;CAAW,GAAG,KAAK;AAChE;;;;;;AAOA,SAAgB,sBACd,cACA,SACA,yBAAiD,CAAC,GAClD;CACA,MAAM,EAAE,QAAQ,SAAS,YAAY,GAAG,SAAS;CACjD,MAAM,UAAU,sBAAsB,OAAO;CAC7C,MAAM,EAAE,mBAAmB,qBAAqB,GAAG,uBAAuB;CAE1E,MAAM,YAAqC;EACzC,mBAAmB,KAAK,OAAO;EAC/B,kBAAkB,aAAa;EAC/B,YAAY,aAAa;EACzB,UAAU,aAAa;EACvB,eAAe,aAAa;EAC5B,aAAa,aAAa;EAC1B,aAAa,aAAa;EAC1B,0BAA0B,mBAAmB;EAC7C,0BAA0B,mBAAmB;EAC7C,6BAA6B,mBAAmB;EAChD,6BAA6B,mBAAmB;EAChD,eAAe,kBAAkB,YAAY;EAC7C,cAAc,QAAQ;EACtB,kBAAkB,QAAQ;EAC1B,cAAc,QAAQ;EACtB,kBAAkB,QAAQ;EAC1B,cAAc,QAAQ;EACtB,qBAAqB,QAAQ;EAC7B,kBAAkB,QAAQ;EAC1B,8CAA8C,QAAQ;CACxD;CAEA,IAAI,iBAAiB,mBAAmB;EACtC,UAAU,oBAAoB;EAC9B,UAAU,sBAAsB;CAClC;CAIA,OAAO;EACL,YAHiB,mBAAmB,SAG3B;EACT,SAAS,aAAa;CACxB;AACF;;;;;;;AAQA,MAAa,sBAAsB,SAAc;CAC/C,OAAO,EAAE,YAAY,EAAE,wBAAwB,EAAE,GAAG,KAAK,EAAE,EAAE;AAC/D;;;;;;;;AASA,MAAa,gBAAgB,YAAqB;CAIhD,MAAM,gBAAgB,IAAI,QAAQ,QAAQ,KAAK;EAC7C,SAAS,QAAQ;EACjB,QAAQ,QAAQ;EAChB,UAAU,QAAQ;EAClB,OAAO,QAAQ;CACjB,CAAC;CAGD,IAAI,cAAc,WAAW,SAAS,cAAc,SAAS,QAAQ,EAAE,YAAY,gBACjF,AAAC,cAAgD,SAAS;CAG5D,OAAO;AACT"}
@@ -1,7 +1,4 @@
1
- export { rootAuthLoader } from '../server/rootAuthLoader.js';
2
- export { getAuth } from '../server/getAuth.js';
3
- export { AllowlistIdentifier, Client, EmailAddress, ExternalAccount, Invitation, OauthAccessToken, Organization, OrganizationDomain, OrganizationInvitation, OrganizationMembership, OrganizationMembershipPublicUserData, OrganizationMembershipRole, PhoneNumber, SMSMessage, Session, SignInToken, Token, User, WebhookEvent, WebhookEventType } from '@clerk/backend';
4
- import 'react-router';
5
- import '../server/types.js';
6
- import '@clerk/backend/internal';
7
- import '@clerk/shared/types';
1
+ import { getAuth } from "../server/getAuth.js";
2
+ import { rootAuthLoader } from "../server/rootAuthLoader.js";
3
+ import { AllowlistIdentifier, Client, EmailAddress, ExternalAccount, Invitation, OauthAccessToken, Organization, OrganizationDomain, OrganizationInvitation, OrganizationMembership, OrganizationMembershipPublicUserData, OrganizationMembershipRole, PhoneNumber, SMSMessage, Session, SignInToken, Token, User, WebhookEvent, WebhookEventType } from "@clerk/backend";
4
+ export { type AllowlistIdentifier, type Client, type EmailAddress, type ExternalAccount, type Invitation, type OauthAccessToken, type Organization, type OrganizationDomain, type OrganizationInvitation, type OrganizationMembership, type OrganizationMembershipPublicUserData, type OrganizationMembershipRole, type PhoneNumber, type SMSMessage, type Session, type SignInToken, type Token, type User, type WebhookEvent, type WebhookEventType, getAuth, rootAuthLoader };
package/dist/ssr/index.js CHANGED
@@ -1,7 +1,8 @@
1
- // src/ssr/index.ts
2
1
  import { rootAuthLoader } from "../server/rootAuthLoader.js";
3
2
  import { getAuth } from "../server/getAuth.js";
4
3
  import { logger } from "@clerk/shared/logger";
4
+
5
+ //#region src/ssr/index.ts
5
6
  logger.warnOnce(`
6
7
  Clerk - DEPRECATION WARNING: \`@clerk/react-router/ssr.server\` has been deprecated and will be removed in the next major version.
7
8
 
@@ -13,8 +14,7 @@ Before:
13
14
  After:
14
15
  import { getAuth, clerkMiddleware, rootAuthLoader } from '@clerk/react-router/server';
15
16
  `);
16
- export {
17
- getAuth,
18
- rootAuthLoader
19
- };
17
+
18
+ //#endregion
19
+ export { getAuth, rootAuthLoader };
20
20
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/ssr/index.ts"],"sourcesContent":["export { rootAuthLoader } from '../server/rootAuthLoader';\nexport { getAuth } from '../server/getAuth';\nimport { logger } from '@clerk/shared/logger';\n\nlogger.warnOnce(`\nClerk - DEPRECATION WARNING: \\`@clerk/react-router/ssr.server\\` has been deprecated and will be removed in the next major version.\n\nImport from \\`@clerk/react-router/server\\` instead.\n\nBefore:\n import { getAuth, clerkMiddleware, rootAuthLoader } from '@clerk/react-router/ssr.server';\n\nAfter:\n import { getAuth, clerkMiddleware, rootAuthLoader } from '@clerk/react-router/server';\n`);\n\n/**\n * Re-export resource types from @clerk/backend\n */\nexport type {\n OrganizationMembershipRole,\n // Webhook event types\n WebhookEvent,\n WebhookEventType,\n // Resources\n AllowlistIdentifier,\n Client,\n EmailAddress,\n ExternalAccount,\n Invitation,\n OauthAccessToken,\n Organization,\n OrganizationDomain,\n OrganizationInvitation,\n OrganizationMembership,\n OrganizationMembershipPublicUserData,\n PhoneNumber,\n Session,\n SignInToken,\n SMSMessage,\n Token,\n User,\n} from '@clerk/backend';\n"],"mappings":";AAAA,SAAS,sBAAsB;AAC/B,SAAS,eAAe;AACxB,SAAS,cAAc;AAEvB,OAAO,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAUf;","names":[]}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../src/ssr/index.ts"],"sourcesContent":["export { rootAuthLoader } from '../server/rootAuthLoader';\nexport { getAuth } from '../server/getAuth';\nimport { logger } from '@clerk/shared/logger';\n\nlogger.warnOnce(`\nClerk - DEPRECATION WARNING: \\`@clerk/react-router/ssr.server\\` has been deprecated and will be removed in the next major version.\n\nImport from \\`@clerk/react-router/server\\` instead.\n\nBefore:\n import { getAuth, clerkMiddleware, rootAuthLoader } from '@clerk/react-router/ssr.server';\n\nAfter:\n import { getAuth, clerkMiddleware, rootAuthLoader } from '@clerk/react-router/server';\n`);\n\n/**\n * Re-export resource types from @clerk/backend\n */\nexport type {\n OrganizationMembershipRole,\n // Webhook event types\n WebhookEvent,\n WebhookEventType,\n // Resources\n AllowlistIdentifier,\n Client,\n EmailAddress,\n ExternalAccount,\n Invitation,\n OauthAccessToken,\n Organization,\n OrganizationDomain,\n OrganizationInvitation,\n OrganizationMembership,\n OrganizationMembershipPublicUserData,\n PhoneNumber,\n Session,\n SignInToken,\n SMSMessage,\n Token,\n User,\n} from '@clerk/backend';\n"],"mappings":";;;;;AAIA,OAAO,SAAS;;;;;;;;;;CAUf"}
@@ -1,9 +1,4 @@
1
- export * from '@clerk/shared/types';
2
- export { ClerkState, ReactRouterClerkProviderProps, WithClerkState } from '../client/types.js';
3
- export { ClerkMiddlewareOptions, GetAuthReturn, LoaderFunctionArgsWithAuth, LoaderFunctionReturn, RequestStateWithRedirectUrls, RequestWithAuth, RootAuthLoaderCallback, RootAuthLoaderOptions } from '../server/types.js';
4
- import '@clerk/react';
5
- import '@clerk/react/internal';
6
- import 'react';
7
- import '@clerk/backend';
8
- import '@clerk/backend/internal';
9
- import 'react-router';
1
+ import { n as ReactRouterClerkProviderProps, r as WithClerkState, t as ClerkState } from "../types-C3uAu7q3.js";
2
+ import { a as LoaderFunctionArgsWithAuth, c as RequestWithAuth, l as RootAuthLoaderCallback, n as ClerkMiddlewareOptions, o as LoaderFunctionReturn, r as GetAuthReturn, s as RequestStateWithRedirectUrls, u as RootAuthLoaderOptions } from "../types-CkBFvMvW.js";
3
+ export type * from "@clerk/shared/types";
4
+ export type { ClerkMiddlewareOptions, ClerkState, GetAuthReturn, LoaderFunctionArgsWithAuth, LoaderFunctionReturn, ReactRouterClerkProviderProps, RequestStateWithRedirectUrls, RequestWithAuth, RootAuthLoaderCallback, RootAuthLoaderOptions, WithClerkState };
@@ -1 +1 @@
1
- //# sourceMappingURL=index.js.map
1
+ export { };