react-router 7.18.0 → 8.0.0-pre.1

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 (285) hide show
  1. package/dist/development/dom-export.d.ts +6 -172
  2. package/dist/development/dom-export.js +12 -1009
  3. package/dist/development/index-react-server-client.d.ts +7 -4
  4. package/dist/development/index-react-server-client.js +8 -52
  5. package/dist/development/index-react-server.d.ts +1650 -1641
  6. package/dist/development/index-react-server.js +2882 -3664
  7. package/dist/development/index.d.ts +42 -1476
  8. package/dist/development/index.js +36 -2553
  9. package/dist/development/lib/actions.js +50 -0
  10. package/dist/development/lib/components.d.ts +1030 -0
  11. package/dist/development/lib/components.js +841 -0
  12. package/dist/development/lib/context.d.ts +83 -0
  13. package/dist/development/lib/context.js +41 -0
  14. package/dist/development/lib/dom/dom.d.ts +119 -0
  15. package/dist/development/lib/dom/dom.js +143 -0
  16. package/dist/development/lib/dom/lib.d.ts +2053 -0
  17. package/dist/development/lib/dom/lib.js +1271 -0
  18. package/dist/development/lib/dom/server.d.ts +138 -0
  19. package/dist/development/lib/dom/server.js +301 -0
  20. package/dist/development/lib/dom/ssr/components.d.ts +198 -0
  21. package/dist/development/lib/dom/ssr/components.js +589 -0
  22. package/dist/development/lib/dom/ssr/data.js +29 -0
  23. package/dist/development/lib/dom/ssr/entry.d.ts +60 -0
  24. package/dist/development/lib/dom/ssr/errorBoundaries.d.ts +27 -0
  25. package/dist/development/lib/dom/ssr/errorBoundaries.js +87 -0
  26. package/dist/development/lib/dom/ssr/fallback.js +33 -0
  27. package/dist/development/lib/dom/ssr/fog-of-war.d.ts +12 -0
  28. package/dist/development/lib/dom/ssr/fog-of-war.js +180 -0
  29. package/dist/development/lib/dom/ssr/hydration.d.ts +32 -0
  30. package/dist/development/lib/dom/ssr/hydration.js +29 -0
  31. package/dist/development/lib/dom/ssr/invariant.js +16 -0
  32. package/dist/development/lib/dom/ssr/links.js +170 -0
  33. package/dist/development/lib/dom/ssr/markup.js +24 -0
  34. package/dist/development/lib/dom/ssr/routeModules.d.ts +206 -0
  35. package/dist/development/lib/dom/ssr/routeModules.js +31 -0
  36. package/dist/development/lib/dom/ssr/routes-test-stub.d.ts +62 -0
  37. package/dist/development/lib/dom/ssr/routes-test-stub.js +108 -0
  38. package/dist/development/lib/dom/ssr/routes.d.ts +33 -0
  39. package/dist/development/lib/dom/ssr/routes.js +303 -0
  40. package/dist/development/lib/dom/ssr/server.d.ts +48 -0
  41. package/dist/development/lib/dom/ssr/server.js +69 -0
  42. package/dist/development/lib/dom/ssr/single-fetch.d.ts +14 -0
  43. package/dist/development/lib/dom/ssr/single-fetch.js +345 -0
  44. package/dist/development/lib/dom-export/dom-router-provider.d.ts +9 -0
  45. package/dist/development/lib/dom-export/dom-router-provider.js +22 -0
  46. package/dist/development/lib/dom-export/hydrated-router.d.ts +125 -0
  47. package/dist/development/lib/dom-export/hydrated-router.js +150 -0
  48. package/dist/development/lib/errors.js +29 -0
  49. package/dist/development/lib/hooks.d.ts +947 -0
  50. package/dist/development/lib/hooks.js +1388 -0
  51. package/dist/development/lib/href.d.ts +20 -0
  52. package/dist/development/lib/href.js +50 -0
  53. package/dist/development/lib/router/history.d.ts +258 -0
  54. package/dist/development/lib/router/history.js +372 -0
  55. package/dist/development/lib/router/instrumentation.d.ts +86 -0
  56. package/dist/development/lib/router/instrumentation.js +213 -0
  57. package/dist/development/lib/router/links.d.ts +114 -0
  58. package/dist/development/lib/router/router.d.ts +663 -0
  59. package/dist/development/lib/router/router.js +2988 -0
  60. package/dist/development/lib/router/url.js +18 -0
  61. package/dist/development/lib/router/utils.d.ts +948 -0
  62. package/dist/development/lib/router/utils.js +810 -0
  63. package/dist/development/lib/rsc/browser.d.ts +137 -0
  64. package/dist/development/lib/rsc/browser.js +603 -0
  65. package/dist/development/lib/rsc/errorBoundaries.d.ts +11 -0
  66. package/dist/development/lib/rsc/errorBoundaries.js +90 -0
  67. package/dist/development/lib/rsc/html-stream/browser.d.ts +48 -0
  68. package/dist/development/lib/rsc/html-stream/browser.js +74 -0
  69. package/dist/development/lib/rsc/html-stream/server.js +78 -0
  70. package/dist/development/lib/rsc/route-modules.js +27 -0
  71. package/dist/development/lib/rsc/server.rsc.d.ts +219 -0
  72. package/dist/development/lib/rsc/server.ssr.d.ts +129 -0
  73. package/dist/development/lib/rsc/server.ssr.js +404 -0
  74. package/dist/development/lib/server-runtime/build.d.ts +66 -0
  75. package/dist/development/lib/server-runtime/cookies.d.ts +66 -0
  76. package/dist/development/lib/server-runtime/cookies.js +139 -0
  77. package/dist/development/lib/server-runtime/crypto.js +43 -0
  78. package/dist/development/lib/server-runtime/data.d.ts +13 -0
  79. package/dist/development/lib/server-runtime/data.js +25 -0
  80. package/dist/development/lib/server-runtime/dev.d.ts +9 -0
  81. package/dist/development/lib/server-runtime/dev.js +26 -0
  82. package/dist/development/lib/server-runtime/entry.js +20 -0
  83. package/dist/development/lib/server-runtime/errors.js +75 -0
  84. package/dist/development/lib/server-runtime/headers.js +73 -0
  85. package/dist/development/lib/server-runtime/invariant.js +19 -0
  86. package/dist/development/lib/server-runtime/mode.d.ts +12 -0
  87. package/dist/development/lib/server-runtime/mode.js +25 -0
  88. package/dist/development/lib/server-runtime/routeMatching.js +28 -0
  89. package/dist/development/lib/server-runtime/routes.d.ts +13 -0
  90. package/dist/development/lib/server-runtime/routes.js +74 -0
  91. package/dist/development/lib/server-runtime/server.d.ts +10 -0
  92. package/dist/development/lib/server-runtime/server.js +345 -0
  93. package/dist/development/lib/server-runtime/serverHandoff.js +17 -0
  94. package/dist/development/lib/server-runtime/sessions/cookieStorage.d.ts +25 -0
  95. package/dist/development/lib/server-runtime/sessions/cookieStorage.js +45 -0
  96. package/dist/development/lib/server-runtime/sessions/memoryStorage.d.ts +23 -0
  97. package/dist/development/lib/server-runtime/sessions/memoryStorage.js +52 -0
  98. package/dist/development/lib/server-runtime/sessions.d.ts +145 -0
  99. package/dist/development/lib/server-runtime/sessions.js +98 -0
  100. package/dist/development/lib/server-runtime/single-fetch.d.ts +7 -0
  101. package/dist/development/lib/server-runtime/single-fetch.js +215 -0
  102. package/dist/development/lib/server-runtime/urls.js +28 -0
  103. package/dist/development/lib/server-runtime/warnings.js +20 -0
  104. package/dist/development/lib/types/future.d.ts +9 -0
  105. package/dist/development/lib/types/internal.d.ts +26 -177
  106. package/dist/development/lib/types/internal.js +3 -2
  107. package/dist/development/{register-roq_0qYo.d.ts → lib/types/register.d.ts} +9 -15
  108. package/dist/development/lib/types/route-data.d.ts +113 -0
  109. package/dist/development/lib/types/route-module-annotations.d.ts +149 -0
  110. package/dist/development/lib/types/route-module.d.ts +19 -0
  111. package/dist/development/lib/types/serializes-to.d.ts +13 -0
  112. package/dist/development/lib/types/utils.d.ts +11 -0
  113. package/dist/development/vendor/turbo-stream-v2/flatten.js +159 -0
  114. package/dist/development/vendor/turbo-stream-v2/turbo-stream.js +179 -0
  115. package/dist/development/vendor/turbo-stream-v2/unflatten.js +199 -0
  116. package/dist/development/vendor/turbo-stream-v2/utils.js +39 -0
  117. package/dist/production/dom-export.d.ts +6 -172
  118. package/dist/production/dom-export.js +12 -1009
  119. package/dist/production/index-react-server-client.d.ts +7 -4
  120. package/dist/production/index-react-server-client.js +8 -52
  121. package/dist/production/index-react-server.d.ts +1650 -1641
  122. package/dist/production/index-react-server.js +2873 -3664
  123. package/dist/production/index.d.ts +42 -1476
  124. package/dist/production/index.js +36 -2553
  125. package/dist/production/lib/actions.js +50 -0
  126. package/dist/production/lib/components.d.ts +1030 -0
  127. package/dist/production/lib/components.js +841 -0
  128. package/dist/production/lib/context.d.ts +83 -0
  129. package/dist/production/lib/context.js +41 -0
  130. package/dist/production/lib/dom/dom.d.ts +119 -0
  131. package/dist/production/lib/dom/dom.js +143 -0
  132. package/dist/production/lib/dom/lib.d.ts +2053 -0
  133. package/dist/production/lib/dom/lib.js +1271 -0
  134. package/dist/production/lib/dom/server.d.ts +138 -0
  135. package/dist/production/lib/dom/server.js +301 -0
  136. package/dist/production/lib/dom/ssr/components.d.ts +198 -0
  137. package/dist/production/lib/dom/ssr/components.js +589 -0
  138. package/dist/production/lib/dom/ssr/data.js +29 -0
  139. package/dist/production/lib/dom/ssr/entry.d.ts +60 -0
  140. package/dist/production/lib/dom/ssr/errorBoundaries.d.ts +27 -0
  141. package/dist/production/lib/dom/ssr/errorBoundaries.js +87 -0
  142. package/dist/production/lib/dom/ssr/fallback.js +23 -0
  143. package/dist/production/lib/dom/ssr/fog-of-war.d.ts +12 -0
  144. package/dist/production/lib/dom/ssr/fog-of-war.js +180 -0
  145. package/dist/production/lib/dom/ssr/hydration.d.ts +32 -0
  146. package/dist/production/lib/dom/ssr/hydration.js +29 -0
  147. package/dist/production/lib/dom/ssr/invariant.js +16 -0
  148. package/dist/production/lib/dom/ssr/links.js +170 -0
  149. package/dist/production/lib/dom/ssr/markup.js +24 -0
  150. package/dist/production/lib/dom/ssr/routeModules.d.ts +206 -0
  151. package/dist/production/lib/dom/ssr/routeModules.js +31 -0
  152. package/dist/production/lib/dom/ssr/routes-test-stub.d.ts +62 -0
  153. package/dist/production/lib/dom/ssr/routes-test-stub.js +108 -0
  154. package/dist/production/lib/dom/ssr/routes.d.ts +33 -0
  155. package/dist/production/lib/dom/ssr/routes.js +303 -0
  156. package/dist/production/lib/dom/ssr/server.d.ts +48 -0
  157. package/dist/production/lib/dom/ssr/server.js +69 -0
  158. package/dist/production/lib/dom/ssr/single-fetch.d.ts +14 -0
  159. package/dist/production/lib/dom/ssr/single-fetch.js +345 -0
  160. package/dist/production/lib/dom-export/dom-router-provider.d.ts +9 -0
  161. package/dist/production/lib/dom-export/dom-router-provider.js +22 -0
  162. package/dist/production/lib/dom-export/hydrated-router.d.ts +125 -0
  163. package/dist/production/lib/dom-export/hydrated-router.js +150 -0
  164. package/dist/production/lib/errors.js +29 -0
  165. package/dist/production/lib/hooks.d.ts +947 -0
  166. package/dist/production/lib/hooks.js +1373 -0
  167. package/dist/production/lib/href.d.ts +20 -0
  168. package/dist/production/lib/href.js +50 -0
  169. package/dist/production/lib/router/history.d.ts +258 -0
  170. package/dist/production/lib/router/history.js +372 -0
  171. package/dist/production/lib/router/instrumentation.d.ts +86 -0
  172. package/dist/production/lib/router/instrumentation.js +213 -0
  173. package/dist/production/lib/router/links.d.ts +114 -0
  174. package/dist/production/lib/router/router.d.ts +663 -0
  175. package/dist/production/lib/router/router.js +2988 -0
  176. package/dist/production/lib/router/url.js +18 -0
  177. package/dist/production/lib/router/utils.d.ts +948 -0
  178. package/dist/production/lib/router/utils.js +801 -0
  179. package/dist/production/lib/rsc/browser.d.ts +137 -0
  180. package/dist/production/lib/rsc/browser.js +603 -0
  181. package/dist/production/lib/rsc/errorBoundaries.d.ts +11 -0
  182. package/dist/production/lib/rsc/errorBoundaries.js +90 -0
  183. package/dist/production/lib/rsc/html-stream/browser.d.ts +48 -0
  184. package/dist/production/lib/rsc/html-stream/browser.js +74 -0
  185. package/dist/production/lib/rsc/html-stream/server.js +78 -0
  186. package/dist/production/lib/rsc/route-modules.js +27 -0
  187. package/dist/production/lib/rsc/server.rsc.d.ts +219 -0
  188. package/dist/production/lib/rsc/server.ssr.d.ts +129 -0
  189. package/dist/production/lib/rsc/server.ssr.js +404 -0
  190. package/dist/production/lib/server-runtime/build.d.ts +66 -0
  191. package/dist/production/lib/server-runtime/cookies.d.ts +66 -0
  192. package/dist/production/lib/server-runtime/cookies.js +139 -0
  193. package/dist/production/lib/server-runtime/crypto.js +43 -0
  194. package/dist/production/lib/server-runtime/data.d.ts +13 -0
  195. package/dist/production/lib/server-runtime/data.js +25 -0
  196. package/dist/production/lib/server-runtime/dev.d.ts +9 -0
  197. package/dist/production/lib/server-runtime/dev.js +26 -0
  198. package/dist/production/lib/server-runtime/entry.js +20 -0
  199. package/dist/production/lib/server-runtime/errors.js +75 -0
  200. package/dist/production/lib/server-runtime/headers.js +73 -0
  201. package/dist/production/lib/server-runtime/invariant.js +19 -0
  202. package/dist/production/lib/server-runtime/mode.d.ts +12 -0
  203. package/dist/production/lib/server-runtime/mode.js +25 -0
  204. package/dist/production/lib/server-runtime/routeMatching.js +28 -0
  205. package/dist/production/lib/server-runtime/routes.d.ts +13 -0
  206. package/dist/production/lib/server-runtime/routes.js +74 -0
  207. package/dist/production/lib/server-runtime/server.d.ts +10 -0
  208. package/dist/production/lib/server-runtime/server.js +345 -0
  209. package/dist/production/lib/server-runtime/serverHandoff.js +17 -0
  210. package/dist/production/lib/server-runtime/sessions/cookieStorage.d.ts +25 -0
  211. package/dist/production/lib/server-runtime/sessions/cookieStorage.js +45 -0
  212. package/dist/production/lib/server-runtime/sessions/memoryStorage.d.ts +23 -0
  213. package/dist/production/lib/server-runtime/sessions/memoryStorage.js +52 -0
  214. package/dist/production/lib/server-runtime/sessions.d.ts +145 -0
  215. package/dist/production/lib/server-runtime/sessions.js +98 -0
  216. package/dist/production/lib/server-runtime/single-fetch.d.ts +7 -0
  217. package/dist/production/lib/server-runtime/single-fetch.js +215 -0
  218. package/dist/production/lib/server-runtime/urls.js +28 -0
  219. package/dist/production/lib/server-runtime/warnings.js +20 -0
  220. package/dist/production/lib/types/future.d.ts +9 -0
  221. package/dist/production/lib/types/internal.d.ts +26 -177
  222. package/dist/production/lib/types/internal.js +3 -2
  223. package/dist/production/{register-roq_0qYo.d.ts → lib/types/register.d.ts} +9 -15
  224. package/dist/production/lib/types/route-data.d.ts +113 -0
  225. package/dist/production/lib/types/route-module-annotations.d.ts +149 -0
  226. package/dist/production/lib/types/route-module.d.ts +19 -0
  227. package/dist/production/lib/types/serializes-to.d.ts +13 -0
  228. package/dist/production/lib/types/utils.d.ts +11 -0
  229. package/dist/production/vendor/turbo-stream-v2/flatten.js +159 -0
  230. package/dist/production/vendor/turbo-stream-v2/turbo-stream.js +179 -0
  231. package/dist/production/vendor/turbo-stream-v2/unflatten.js +199 -0
  232. package/dist/production/vendor/turbo-stream-v2/utils.js +39 -0
  233. package/docs/explanation/code-splitting.md +16 -0
  234. package/docs/how-to/middleware.md +6 -41
  235. package/docs/how-to/react-server-components.md +1 -1
  236. package/docs/upgrading/future.md +0 -249
  237. package/package.json +43 -87
  238. package/dist/development/browser-B2PdsXXH.d.ts +0 -318
  239. package/dist/development/browser-DBmQ1yAR.d.mts +0 -318
  240. package/dist/development/chunk-4ZMWKKQ3.mjs +0 -11606
  241. package/dist/development/chunk-E4MTK73K.mjs +0 -2517
  242. package/dist/development/chunk-U7ORXROY.js +0 -10307
  243. package/dist/development/chunk-WW7PN6QI.js +0 -188
  244. package/dist/development/chunk-YL5M26XI.js +0 -1366
  245. package/dist/development/context-CeD5LmaF.d.mts +0 -1779
  246. package/dist/development/data-CjO11-hU.d.ts +0 -1740
  247. package/dist/development/data-DEjBmEfD.d.mts +0 -1740
  248. package/dist/development/dom-export.d.mts +0 -172
  249. package/dist/development/dom-export.mjs +0 -1010
  250. package/dist/development/index-react-server-client-3ykjivgQ.d.ts +0 -3677
  251. package/dist/development/index-react-server-client-CACgcj2J.d.mts +0 -2614
  252. package/dist/development/index-react-server-client.d.mts +0 -4
  253. package/dist/development/index-react-server-client.mjs +0 -59
  254. package/dist/development/index-react-server.d.mts +0 -2711
  255. package/dist/development/index-react-server.mjs +0 -3803
  256. package/dist/development/index.d.mts +0 -1479
  257. package/dist/development/index.mjs +0 -275
  258. package/dist/development/instrumentation-Dkmpzd13.d.ts +0 -715
  259. package/dist/development/lib/types/internal.d.mts +0 -184
  260. package/dist/development/lib/types/internal.mjs +0 -10
  261. package/dist/development/register-CmkRspdl.d.mts +0 -30
  262. package/dist/production/browser-B2PdsXXH.d.ts +0 -318
  263. package/dist/production/browser-DBmQ1yAR.d.mts +0 -318
  264. package/dist/production/chunk-3Z6WS2WZ.js +0 -188
  265. package/dist/production/chunk-BIP66BKV.js +0 -1366
  266. package/dist/production/chunk-EGOTSXNH.mjs +0 -2517
  267. package/dist/production/chunk-IUPBOWYO.js +0 -10307
  268. package/dist/production/chunk-M7NGGUU6.mjs +0 -11606
  269. package/dist/production/context-CeD5LmaF.d.mts +0 -1779
  270. package/dist/production/data-CjO11-hU.d.ts +0 -1740
  271. package/dist/production/data-DEjBmEfD.d.mts +0 -1740
  272. package/dist/production/dom-export.d.mts +0 -172
  273. package/dist/production/dom-export.mjs +0 -1010
  274. package/dist/production/index-react-server-client-3ykjivgQ.d.ts +0 -3677
  275. package/dist/production/index-react-server-client-CACgcj2J.d.mts +0 -2614
  276. package/dist/production/index-react-server-client.d.mts +0 -4
  277. package/dist/production/index-react-server-client.mjs +0 -59
  278. package/dist/production/index-react-server.d.mts +0 -2711
  279. package/dist/production/index-react-server.mjs +0 -3803
  280. package/dist/production/index.d.mts +0 -1479
  281. package/dist/production/index.mjs +0 -275
  282. package/dist/production/instrumentation-Dkmpzd13.d.ts +0 -715
  283. package/dist/production/lib/types/internal.d.mts +0 -184
  284. package/dist/production/lib/types/internal.mjs +0 -10
  285. package/dist/production/register-CmkRspdl.d.mts +0 -30
@@ -0,0 +1,206 @@
1
+
2
+ import { Location } from "../../router/history.js";
3
+ import { ActionFunction, ActionFunctionArgs, DataRouteMatch, DataStrategyResult, LoaderFunction, LoaderFunctionArgs, MiddlewareFunction, Params, ShouldRevalidateFunction } from "../../router/utils.js";
4
+ import { LinkDescriptor } from "../../router/links.js";
5
+ import { SerializeFrom } from "../../types/route-data.js";
6
+ import { ComponentType, ReactElement } from "react";
7
+
8
+ //#region lib/dom/ssr/routeModules.d.ts
9
+ interface RouteModules {
10
+ [routeId: string]: RouteModule | undefined;
11
+ }
12
+ /**
13
+ * The shape of a route module shipped to the client
14
+ */
15
+ interface RouteModule {
16
+ clientAction?: ClientActionFunction;
17
+ clientLoader?: ClientLoaderFunction;
18
+ clientMiddleware?: MiddlewareFunction<Record<string, DataStrategyResult>>[];
19
+ ErrorBoundary?: ErrorBoundaryComponent;
20
+ HydrateFallback?: HydrateFallbackComponent;
21
+ Layout?: LayoutComponent;
22
+ default: RouteComponent;
23
+ handle?: RouteHandle;
24
+ links?: LinksFunction;
25
+ meta?: MetaFunction;
26
+ shouldRevalidate?: ShouldRevalidateFunction;
27
+ }
28
+ /**
29
+ * The shape of a route module on the server
30
+ */
31
+ interface ServerRouteModule extends RouteModule {
32
+ action?: ActionFunction;
33
+ headers?: HeadersFunction | {
34
+ [name: string]: string;
35
+ };
36
+ loader?: LoaderFunction;
37
+ middleware?: MiddlewareFunction<Response>[];
38
+ }
39
+ /**
40
+ * A function that handles data mutations for a route on the client
41
+ */
42
+ type ClientActionFunction = (args: ClientActionFunctionArgs) => ReturnType<ActionFunction>;
43
+ /**
44
+ * Arguments passed to a route `clientAction` function
45
+ */
46
+ type ClientActionFunctionArgs = ActionFunctionArgs & {
47
+ serverAction: <T = unknown>() => Promise<SerializeFrom<T>>;
48
+ };
49
+ /**
50
+ * A function that loads data for a route on the client
51
+ */
52
+ type ClientLoaderFunction = ((args: ClientLoaderFunctionArgs) => ReturnType<LoaderFunction>) & {
53
+ hydrate?: boolean;
54
+ };
55
+ /**
56
+ * Arguments passed to a route `clientLoader` function
57
+ */
58
+ type ClientLoaderFunctionArgs = LoaderFunctionArgs & {
59
+ serverLoader: <T = unknown>() => Promise<SerializeFrom<T>>;
60
+ };
61
+ /**
62
+ * ErrorBoundary to display for this route
63
+ */
64
+ type ErrorBoundaryComponent = ComponentType;
65
+ type HeadersArgs = {
66
+ loaderHeaders: Headers;
67
+ parentHeaders: Headers;
68
+ actionHeaders: Headers;
69
+ errorHeaders: Headers | undefined;
70
+ };
71
+ /**
72
+ * A function that returns HTTP headers to be used for a route. These headers
73
+ * will be merged with (and take precedence over) headers from parent routes.
74
+ */
75
+ interface HeadersFunction {
76
+ (args: HeadersArgs): Headers | HeadersInit;
77
+ }
78
+ /**
79
+ * `<Route HydrateFallback>` component to render on initial loads
80
+ * when client loaders are present
81
+ */
82
+ type HydrateFallbackComponent = ComponentType;
83
+ /**
84
+ * Optional, root-only `<Route Layout>` component to wrap the root content in.
85
+ * Useful for defining the <html>/<head>/<body> document shell shared by the
86
+ * Component, HydrateFallback, and ErrorBoundary
87
+ */
88
+ type LayoutComponent = ComponentType<{
89
+ children: ReactElement<unknown, ErrorBoundaryComponent | HydrateFallbackComponent | RouteComponent>;
90
+ }>;
91
+ /**
92
+ * A function that defines `<link>` tags to be inserted into the `<head>` of
93
+ * the document on route transitions.
94
+ *
95
+ * @see https://reactrouter.com/start/framework/route-module#meta
96
+ */
97
+ interface LinksFunction {
98
+ (): LinkDescriptor[];
99
+ }
100
+ interface MetaMatch<RouteId extends string = string, Loader extends LoaderFunction | ClientLoaderFunction | unknown = unknown> {
101
+ id: RouteId;
102
+ pathname: DataRouteMatch["pathname"];
103
+ loaderData: Loader extends LoaderFunction | ClientLoaderFunction ? SerializeFrom<Loader> : unknown;
104
+ handle?: RouteHandle;
105
+ params: DataRouteMatch["params"];
106
+ meta: MetaDescriptor[];
107
+ error?: unknown;
108
+ }
109
+ type MetaMatches<MatchLoaders extends Record<string, LoaderFunction | ClientLoaderFunction | unknown> = Record<string, unknown>> = Array<{ [K in keyof MatchLoaders]: MetaMatch<Exclude<K, number | symbol>, MatchLoaders[K]> }[keyof MatchLoaders]>;
110
+ interface MetaArgs<Loader extends LoaderFunction | ClientLoaderFunction | unknown = unknown, MatchLoaders extends Record<string, LoaderFunction | ClientLoaderFunction | unknown> = Record<string, unknown>> {
111
+ loaderData: (Loader extends LoaderFunction | ClientLoaderFunction ? SerializeFrom<Loader> : unknown) | undefined;
112
+ params: Params;
113
+ location: Location;
114
+ matches: MetaMatches<MatchLoaders>;
115
+ error?: unknown;
116
+ }
117
+ /**
118
+ * A function that returns an array of data objects to use for rendering
119
+ * metadata HTML tags in a route. These tags are not rendered on descendant
120
+ * routes in the route hierarchy. In other words, they will only be rendered on
121
+ * the route in which they are exported.
122
+ *
123
+ * @param Loader - The type of the current route's loader function
124
+ * @param MatchLoaders - Mapping from a parent route's filepath to its loader
125
+ * function type
126
+ *
127
+ * Note that parent route filepaths are relative to the `app/` directory.
128
+ *
129
+ * For example, if this meta function is for `/sales/customers/$customerId`:
130
+ *
131
+ * ```ts
132
+ * // app/root.tsx
133
+ * const loader = () => ({ hello: "world" })
134
+ * export type Loader = typeof loader
135
+ *
136
+ * // app/routes/sales.tsx
137
+ * const loader = () => ({ salesCount: 1074 })
138
+ * export type Loader = typeof loader
139
+ *
140
+ * // app/routes/sales/customers.tsx
141
+ * const loader = () => ({ customerCount: 74 })
142
+ * export type Loader = typeof loader
143
+ *
144
+ * // app/routes/sales/customers/$customersId.tsx
145
+ * import type { Loader as RootLoader } from "../../../root"
146
+ * import type { Loader as SalesLoader } from "../../sales"
147
+ * import type { Loader as CustomersLoader } from "../../sales/customers"
148
+ *
149
+ * const loader = () => ({ name: "Customer name" })
150
+ *
151
+ * const meta: MetaFunction<typeof loader, {
152
+ * "root": RootLoader,
153
+ * "routes/sales": SalesLoader,
154
+ * "routes/sales/customers": CustomersLoader,
155
+ * }> = ({ loaderData, matches }) => {
156
+ * const { name } = loaderData
157
+ * // ^? string
158
+ * const { customerCount } = matches.find((match) => match.id === "routes/sales/customers").loaderData
159
+ * // ^? number
160
+ * const { salesCount } = matches.find((match) => match.id === "routes/sales").loaderData
161
+ * // ^? number
162
+ * const { hello } = matches.find((match) => match.id === "root").loaderData
163
+ * // ^? "world"
164
+ * }
165
+ * ```
166
+ */
167
+ interface MetaFunction<Loader extends LoaderFunction | ClientLoaderFunction | unknown = unknown, MatchLoaders extends Record<string, LoaderFunction | ClientLoaderFunction | unknown> = Record<string, unknown>> {
168
+ (args: MetaArgs<Loader, MatchLoaders>): MetaDescriptor[] | undefined;
169
+ }
170
+ type MetaDescriptor = {
171
+ charSet: "utf-8";
172
+ } | {
173
+ title: string;
174
+ } | {
175
+ name: string;
176
+ content: string;
177
+ } | {
178
+ property: string;
179
+ content: string;
180
+ } | {
181
+ httpEquiv: string;
182
+ content: string;
183
+ } | {
184
+ "script:ld+json": LdJsonObject | LdJsonObject[];
185
+ } | {
186
+ tagName: "meta" | "link";
187
+ [name: string]: string;
188
+ } | {
189
+ [name: string]: unknown;
190
+ };
191
+ type LdJsonObject = { [Key in string]: LdJsonValue } & { [Key in string]?: LdJsonValue | undefined };
192
+ type LdJsonArray = LdJsonValue[] | readonly LdJsonValue[];
193
+ type LdJsonPrimitive = string | number | boolean | null;
194
+ type LdJsonValue = LdJsonPrimitive | LdJsonObject | LdJsonArray;
195
+ /**
196
+ * A React component that is rendered for a route.
197
+ */
198
+ type RouteComponent = ComponentType<{}>;
199
+ /**
200
+ * An arbitrary object that is associated with a route.
201
+ *
202
+ * @see https://reactrouter.com/how-to/using-handle
203
+ */
204
+ type RouteHandle = unknown;
205
+ //#endregion
206
+ export { ClientActionFunction, ClientActionFunctionArgs, ClientLoaderFunction, ClientLoaderFunctionArgs, HeadersArgs, HeadersFunction, LinksFunction, MetaArgs, MetaDescriptor, MetaFunction, RouteModules, ServerRouteModule };
@@ -0,0 +1,31 @@
1
+ /**
2
+ * react-router v8.0.0-pre.1
3
+ *
4
+ * Copyright (c) Remix Software Inc.
5
+ *
6
+ * This source code is licensed under the MIT license found in the
7
+ * LICENSE.md file in the root directory of this source tree.
8
+ *
9
+ * @license MIT
10
+ */
11
+ //#region lib/dom/ssr/routeModules.ts
12
+ async function loadRouteModule(route, routeModulesCache) {
13
+ if (route.id in routeModulesCache) return routeModulesCache[route.id];
14
+ try {
15
+ let routeModule = await import(
16
+ /* @vite-ignore */
17
+ /* webpackIgnore: true */
18
+ route.module
19
+ );
20
+ routeModulesCache[route.id] = routeModule;
21
+ return routeModule;
22
+ } catch (error) {
23
+ console.error(`Error loading route module \`${route.module}\`, reloading page...`);
24
+ console.error(error);
25
+ if (window.__reactRouterContext && window.__reactRouterContext.isSpaMode && import.meta.hot) throw error;
26
+ window.location.reload();
27
+ return new Promise(() => {});
28
+ }
29
+ }
30
+ //#endregion
31
+ export { loadRouteModule };
@@ -0,0 +1,62 @@
1
+
2
+ import { InitialEntry } from "../../router/history.js";
3
+ import { ActionFunction, IndexRouteObject, LoaderFunction, NonIndexRouteObject, RouterContextProvider } from "../../router/utils.js";
4
+ import { HydrationState } from "../../router/router.js";
5
+ import { LinksFunction, MetaFunction } from "./routeModules.js";
6
+ import { FutureConfig } from "./entry.js";
7
+ import * as React$1 from "react";
8
+
9
+ //#region lib/dom/ssr/routes-test-stub.d.ts
10
+ interface StubRouteExtensions {
11
+ Component?: React$1.ComponentType<any>;
12
+ HydrateFallback?: React$1.ComponentType<any>;
13
+ ErrorBoundary?: React$1.ComponentType<any>;
14
+ loader?: LoaderFunction;
15
+ action?: ActionFunction;
16
+ children?: StubRouteObject[];
17
+ meta?: MetaFunction;
18
+ links?: LinksFunction;
19
+ }
20
+ interface StubIndexRouteObject extends Omit<IndexRouteObject, "Component" | "HydrateFallback" | "ErrorBoundary" | "loader" | "action" | "element" | "errorElement" | "children">, StubRouteExtensions {}
21
+ interface StubNonIndexRouteObject extends Omit<NonIndexRouteObject, "Component" | "HydrateFallback" | "ErrorBoundary" | "loader" | "action" | "element" | "errorElement" | "children">, StubRouteExtensions {}
22
+ type StubRouteObject = StubIndexRouteObject | StubNonIndexRouteObject;
23
+ interface RoutesTestStubProps {
24
+ /**
25
+ * The initial entries in the history stack. This allows you to start a test with
26
+ * multiple locations already in the history stack (for testing a back navigation, etc.)
27
+ * The test will default to the last entry in initialEntries if no initialIndex is provided.
28
+ * e.g. initialEntries={["/home", "/about", "/contact"]}
29
+ */
30
+ initialEntries?: InitialEntry[];
31
+ /**
32
+ * The initial index in the history stack to render. This allows you to start a test at a specific entry.
33
+ * It defaults to the last entry in initialEntries.
34
+ * e.g.
35
+ * initialEntries: ["/", "/events/123"]
36
+ * initialIndex: 1 // start at "/events/123"
37
+ */
38
+ initialIndex?: number;
39
+ /**
40
+ * Used to set the route's initial loader and action data.
41
+ * e.g. hydrationData={{
42
+ * loaderData: { "/contact": { locale: "en-US" } },
43
+ * actionData: { "/login": { errors: { email: "invalid email" } }}
44
+ * }}
45
+ */
46
+ hydrationData?: HydrationState;
47
+ /**
48
+ * Future flags mimicking the settings in react-router.config.ts
49
+ */
50
+ future?: Partial<FutureConfig>;
51
+ }
52
+ /**
53
+ * @category Utils
54
+ */
55
+ declare function createRoutesStub(routes: StubRouteObject[], _context?: RouterContextProvider): ({
56
+ initialEntries,
57
+ initialIndex,
58
+ hydrationData,
59
+ future
60
+ }: RoutesTestStubProps) => React$1.JSX.Element;
61
+ //#endregion
62
+ export { RoutesTestStubProps, createRoutesStub };
@@ -0,0 +1,108 @@
1
+ /**
2
+ * react-router v8.0.0-pre.1
3
+ *
4
+ * Copyright (c) Remix Software Inc.
5
+ *
6
+ * This source code is licensed under the MIT license found in the
7
+ * LICENSE.md file in the root directory of this source tree.
8
+ *
9
+ * @license MIT
10
+ */
11
+ import { RouterContextProvider, convertRoutesToDataRoutes } from "../../router/utils.js";
12
+ import { Outlet, RouterProvider, createMemoryRouter, withComponentProps, withErrorBoundaryProps, withHydrateFallbackProps } from "../../components.js";
13
+ import { FrameworkContext } from "./components.js";
14
+ import * as React$1 from "react";
15
+ //#region lib/dom/ssr/routes-test-stub.tsx
16
+ /**
17
+ * @category Utils
18
+ */
19
+ function createRoutesStub(routes, _context) {
20
+ return function RoutesTestStub({ initialEntries, initialIndex, hydrationData, future }) {
21
+ let routerRef = React$1.useRef(null);
22
+ let frameworkContextRef = React$1.useRef(null);
23
+ if (routerRef.current == null || frameworkContextRef.current == null) {
24
+ frameworkContextRef.current = {
25
+ future: {},
26
+ manifest: {
27
+ routes: {},
28
+ entry: {
29
+ imports: [],
30
+ module: ""
31
+ },
32
+ url: "",
33
+ version: ""
34
+ },
35
+ routeModules: {},
36
+ ssr: false,
37
+ isSpaMode: false,
38
+ routeDiscovery: {
39
+ mode: "lazy",
40
+ manifestPath: "/__manifest"
41
+ }
42
+ };
43
+ routerRef.current = createMemoryRouter(processRoutes(convertRoutesToDataRoutes(routes, (r) => r), _context ?? new RouterContextProvider(), frameworkContextRef.current.manifest, frameworkContextRef.current.routeModules), {
44
+ initialEntries,
45
+ initialIndex,
46
+ hydrationData
47
+ });
48
+ }
49
+ return /* @__PURE__ */ React$1.createElement(FrameworkContext.Provider, { value: frameworkContextRef.current }, /* @__PURE__ */ React$1.createElement(RouterProvider, { router: routerRef.current }));
50
+ };
51
+ }
52
+ function processRoutes(routes, context, manifest, routeModules, parentId) {
53
+ return routes.map((route) => {
54
+ if (!route.id) throw new Error("Expected a route.id in react-router processRoutes() function");
55
+ let newRoute = {
56
+ id: route.id,
57
+ path: route.path,
58
+ index: route.index,
59
+ Component: route.Component ? withComponentProps(route.Component) : void 0,
60
+ HydrateFallback: route.HydrateFallback ? withHydrateFallbackProps(route.HydrateFallback) : void 0,
61
+ ErrorBoundary: route.ErrorBoundary ? withErrorBoundaryProps(route.ErrorBoundary) : void 0,
62
+ action: route.action ? (args) => route.action({
63
+ ...args,
64
+ context
65
+ }) : void 0,
66
+ loader: route.loader ? (args) => route.loader({
67
+ ...args,
68
+ context
69
+ }) : void 0,
70
+ middleware: route.middleware ? route.middleware.map((mw) => (...args) => mw({
71
+ ...args[0],
72
+ context
73
+ }, args[1])) : void 0,
74
+ handle: route.handle,
75
+ shouldRevalidate: route.shouldRevalidate
76
+ };
77
+ let entryRoute = {
78
+ id: route.id,
79
+ path: route.path,
80
+ index: route.index,
81
+ parentId,
82
+ hasAction: route.action != null,
83
+ hasLoader: route.loader != null,
84
+ hasClientAction: false,
85
+ hasClientLoader: false,
86
+ hasClientMiddleware: false,
87
+ hasErrorBoundary: route.ErrorBoundary != null,
88
+ module: "build/stub-path-to-module.js",
89
+ clientActionModule: void 0,
90
+ clientLoaderModule: void 0,
91
+ clientMiddlewareModule: void 0,
92
+ hydrateFallbackModule: void 0
93
+ };
94
+ manifest.routes[newRoute.id] = entryRoute;
95
+ routeModules[route.id] = {
96
+ default: newRoute.Component || Outlet,
97
+ ErrorBoundary: newRoute.ErrorBoundary || void 0,
98
+ handle: route.handle,
99
+ links: route.links,
100
+ meta: route.meta,
101
+ shouldRevalidate: route.shouldRevalidate
102
+ };
103
+ if (route.children) newRoute.children = processRoutes(route.children, context, manifest, routeModules, newRoute.id);
104
+ return newRoute;
105
+ });
106
+ }
107
+ //#endregion
108
+ export { createRoutesStub };
@@ -0,0 +1,33 @@
1
+
2
+ import { DataRouteObject, RouteManifest } from "../../router/utils.js";
3
+ import { HydrationState } from "../../router/router.js";
4
+ import { ClientLoaderFunction, RouteModules } from "./routeModules.js";
5
+ //#region lib/dom/ssr/routes.d.ts
6
+ interface Route {
7
+ index?: boolean;
8
+ caseSensitive?: boolean;
9
+ id: string;
10
+ parentId?: string;
11
+ path?: string;
12
+ }
13
+ interface EntryRoute extends Route {
14
+ hasAction: boolean;
15
+ hasLoader: boolean;
16
+ hasClientAction: boolean;
17
+ hasClientLoader: boolean;
18
+ hasClientMiddleware: boolean;
19
+ hasErrorBoundary: boolean;
20
+ imports?: string[];
21
+ css?: string[];
22
+ module: string;
23
+ clientActionModule: string | undefined;
24
+ clientLoaderModule: string | undefined;
25
+ clientMiddlewareModule: string | undefined;
26
+ hydrateFallbackModule: string | undefined;
27
+ parentId?: string;
28
+ }
29
+ declare function createClientRoutesWithHMRRevalidationOptOut(needsRevalidation: Set<string>, manifest: RouteManifest<EntryRoute>, routeModulesCache: RouteModules, initialState: HydrationState, ssr: boolean, isSpaMode: boolean): DataRouteObject[];
30
+ declare function createClientRoutes(manifest: RouteManifest<EntryRoute>, routeModulesCache: RouteModules, initialState: HydrationState | null, ssr: boolean, isSpaMode: boolean, parentId?: string, routesByParentId?: Record<string, Omit<EntryRoute, "children">[]>, needsRevalidation?: Set<string>): DataRouteObject[];
31
+ declare function shouldHydrateRouteLoader(routeId: string, clientLoader: ClientLoaderFunction | undefined, hasLoader: boolean, isSpaMode: boolean): boolean;
32
+ //#endregion
33
+ export { EntryRoute, Route, createClientRoutes, createClientRoutesWithHMRRevalidationOptOut, shouldHydrateRouteLoader };