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,303 @@
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 { ErrorResponseImpl, compilePath } from "../../router/utils.js";
12
+ import { useRouteError } from "../../hooks.js";
13
+ import invariant from "./invariant.js";
14
+ import { loadRouteModule } from "./routeModules.js";
15
+ import { prefetchRouteCss, prefetchStyleLinks } from "./links.js";
16
+ import { RemixRootDefaultErrorBoundary } from "./errorBoundaries.js";
17
+ import { RemixRootDefaultHydrateFallback } from "./fallback.js";
18
+ import * as React$1 from "react";
19
+ //#region lib/dom/ssr/routes.tsx
20
+ function groupRoutesByParentId(manifest) {
21
+ let routes = {};
22
+ Object.values(manifest).forEach((route) => {
23
+ if (route) {
24
+ let parentId = route.parentId || "";
25
+ if (!routes[parentId]) routes[parentId] = [];
26
+ routes[parentId].push(route);
27
+ }
28
+ });
29
+ return routes;
30
+ }
31
+ function getRouteComponents(route, routeModule, isSpaMode) {
32
+ let Component = getRouteModuleComponent(routeModule);
33
+ let HydrateFallback = routeModule.HydrateFallback && (!isSpaMode || route.id === "root") ? routeModule.HydrateFallback : route.id === "root" ? RemixRootDefaultHydrateFallback : void 0;
34
+ let ErrorBoundary = routeModule.ErrorBoundary ? routeModule.ErrorBoundary : route.id === "root" ? () => /* @__PURE__ */ React$1.createElement(RemixRootDefaultErrorBoundary, { error: useRouteError() }) : void 0;
35
+ if (route.id === "root" && routeModule.Layout) return {
36
+ ...Component ? { element: /* @__PURE__ */ React$1.createElement(routeModule.Layout, null, /* @__PURE__ */ React$1.createElement(Component, null)) } : { Component },
37
+ ...ErrorBoundary ? { errorElement: /* @__PURE__ */ React$1.createElement(routeModule.Layout, null, /* @__PURE__ */ React$1.createElement(ErrorBoundary, null)) } : { ErrorBoundary },
38
+ ...HydrateFallback ? { hydrateFallbackElement: /* @__PURE__ */ React$1.createElement(routeModule.Layout, null, /* @__PURE__ */ React$1.createElement(HydrateFallback, null)) } : { HydrateFallback }
39
+ };
40
+ return {
41
+ Component,
42
+ ErrorBoundary,
43
+ HydrateFallback
44
+ };
45
+ }
46
+ function createServerRoutes(manifest, routeModules, future, isSpaMode, parentId = "", routesByParentId = groupRoutesByParentId(manifest), spaModeLazyPromise = Promise.resolve({ Component: () => null })) {
47
+ return (routesByParentId[parentId] || []).map((route) => {
48
+ let routeModule = routeModules[route.id];
49
+ invariant(routeModule, "No `routeModule` available to create server routes");
50
+ let dataRoute = {
51
+ ...getRouteComponents(route, routeModule, isSpaMode),
52
+ caseSensitive: route.caseSensitive,
53
+ id: route.id,
54
+ index: route.index,
55
+ path: route.path,
56
+ handle: routeModule.handle,
57
+ lazy: isSpaMode ? () => spaModeLazyPromise : void 0,
58
+ loader: route.hasLoader || route.hasClientLoader ? () => null : void 0
59
+ };
60
+ let children = createServerRoutes(manifest, routeModules, future, isSpaMode, route.id, routesByParentId, spaModeLazyPromise);
61
+ if (children.length > 0) dataRoute.children = children;
62
+ return dataRoute;
63
+ });
64
+ }
65
+ function createClientRoutesWithHMRRevalidationOptOut(needsRevalidation, manifest, routeModulesCache, initialState, ssr, isSpaMode) {
66
+ return createClientRoutes(manifest, routeModulesCache, initialState, ssr, isSpaMode, "", groupRoutesByParentId(manifest), needsRevalidation);
67
+ }
68
+ function preventInvalidServerHandlerCall(type, route) {
69
+ if (type === "loader" && !route.hasLoader || type === "action" && !route.hasAction) {
70
+ let msg = `You are trying to call ${type === "action" ? "serverAction()" : "serverLoader()"} on a route that does not have a server ${type} (routeId: "${route.id}")`;
71
+ console.error(msg);
72
+ throw new ErrorResponseImpl(400, "Bad Request", new Error(msg), true);
73
+ }
74
+ }
75
+ function noActionDefinedError(type, routeId) {
76
+ let article = type === "clientAction" ? "a" : "an";
77
+ let msg = `Route "${routeId}" does not have ${article} ${type}, but you are trying to submit to it. To fix this, please add ${article} \`${type}\` function to the route`;
78
+ console.error(msg);
79
+ throw new ErrorResponseImpl(405, "Method Not Allowed", new Error(msg), true);
80
+ }
81
+ function createClientRoutes(manifest, routeModulesCache, initialState, ssr, isSpaMode, parentId = "", routesByParentId = groupRoutesByParentId(manifest), needsRevalidation) {
82
+ return (routesByParentId[parentId] || []).map((route) => {
83
+ let routeModule = routeModulesCache[route.id];
84
+ function fetchServerHandler(singleFetch) {
85
+ invariant(typeof singleFetch === "function", "No single fetch function available for route handler");
86
+ return singleFetch();
87
+ }
88
+ function fetchServerLoader(singleFetch) {
89
+ if (!route.hasLoader) return Promise.resolve(null);
90
+ return fetchServerHandler(singleFetch);
91
+ }
92
+ function fetchServerAction(singleFetch) {
93
+ if (!route.hasAction) throw noActionDefinedError("action", route.id);
94
+ return fetchServerHandler(singleFetch);
95
+ }
96
+ function prefetchModule(modulePath) {
97
+ import(
98
+ /* @vite-ignore */
99
+ /* webpackIgnore: true */
100
+ modulePath
101
+ );
102
+ }
103
+ function prefetchRouteModuleChunks(route) {
104
+ if (route.clientActionModule) prefetchModule(route.clientActionModule);
105
+ if (route.clientLoaderModule) prefetchModule(route.clientLoaderModule);
106
+ }
107
+ async function prefetchStylesAndCallHandler(handler) {
108
+ let cachedModule = routeModulesCache[route.id];
109
+ let linkPrefetchPromise = cachedModule ? prefetchStyleLinks(route, cachedModule) : Promise.resolve();
110
+ try {
111
+ return handler();
112
+ } finally {
113
+ await linkPrefetchPromise;
114
+ }
115
+ }
116
+ let dataRoute = {
117
+ id: route.id,
118
+ index: route.index,
119
+ path: route.path
120
+ };
121
+ if (routeModule) {
122
+ Object.assign(dataRoute, {
123
+ ...dataRoute,
124
+ ...getRouteComponents(route, routeModule, isSpaMode),
125
+ middleware: routeModule.clientMiddleware,
126
+ handle: routeModule.handle,
127
+ shouldRevalidate: getShouldRevalidateFunction(dataRoute.path, routeModule, route, ssr, needsRevalidation)
128
+ });
129
+ let hasInitialData = initialState && initialState.loaderData && route.id in initialState.loaderData;
130
+ let initialData = hasInitialData ? initialState?.loaderData?.[route.id] : void 0;
131
+ let hasInitialError = initialState && initialState.errors && route.id in initialState.errors;
132
+ let initialError = hasInitialError ? initialState?.errors?.[route.id] : void 0;
133
+ let isHydrationRequest = needsRevalidation == null && (routeModule.clientLoader?.hydrate === true || !route.hasLoader);
134
+ dataRoute.loader = async ({ request, params, context, pattern, url }, singleFetch) => {
135
+ let _isHydrationRequest = isHydrationRequest;
136
+ isHydrationRequest = false;
137
+ return await prefetchStylesAndCallHandler(async () => {
138
+ invariant(routeModule, "No `routeModule` available for critical-route loader");
139
+ if (!routeModule.clientLoader) return fetchServerLoader(singleFetch);
140
+ return routeModule.clientLoader({
141
+ request,
142
+ params,
143
+ context,
144
+ pattern,
145
+ url,
146
+ async serverLoader() {
147
+ preventInvalidServerHandlerCall("loader", route);
148
+ if (_isHydrationRequest) {
149
+ if (hasInitialData) return initialData;
150
+ if (hasInitialError) throw initialError;
151
+ }
152
+ return fetchServerLoader(singleFetch);
153
+ }
154
+ });
155
+ });
156
+ };
157
+ dataRoute.loader.hydrate = shouldHydrateRouteLoader(route.id, routeModule.clientLoader, route.hasLoader, isSpaMode);
158
+ dataRoute.action = ({ request, params, context, pattern, url }, singleFetch) => {
159
+ return prefetchStylesAndCallHandler(async () => {
160
+ invariant(routeModule, "No `routeModule` available for critical-route action");
161
+ if (!routeModule.clientAction) {
162
+ if (isSpaMode) throw noActionDefinedError("clientAction", route.id);
163
+ return fetchServerAction(singleFetch);
164
+ }
165
+ return routeModule.clientAction({
166
+ request,
167
+ params,
168
+ context,
169
+ pattern,
170
+ url,
171
+ async serverAction() {
172
+ preventInvalidServerHandlerCall("action", route);
173
+ return fetchServerAction(singleFetch);
174
+ }
175
+ });
176
+ });
177
+ };
178
+ } else {
179
+ if (!route.hasClientLoader) dataRoute.loader = (_, singleFetch) => prefetchStylesAndCallHandler(() => {
180
+ return fetchServerLoader(singleFetch);
181
+ });
182
+ if (!route.hasClientAction) dataRoute.action = (_, singleFetch) => prefetchStylesAndCallHandler(() => {
183
+ if (isSpaMode) throw noActionDefinedError("clientAction", route.id);
184
+ return fetchServerAction(singleFetch);
185
+ });
186
+ let lazyRoutePromise;
187
+ async function getLazyRoute() {
188
+ if (lazyRoutePromise) return await lazyRoutePromise;
189
+ lazyRoutePromise = (async () => {
190
+ if (route.clientLoaderModule || route.clientActionModule) await new Promise((resolve) => setTimeout(resolve, 0));
191
+ let routeModulePromise = loadRouteModuleWithBlockingLinks(route, routeModulesCache);
192
+ prefetchRouteModuleChunks(route);
193
+ return await routeModulePromise;
194
+ })();
195
+ return await lazyRoutePromise;
196
+ }
197
+ dataRoute.lazy = {
198
+ loader: route.hasClientLoader ? async () => {
199
+ let { clientLoader } = route.clientLoaderModule ? await import(
200
+ /* @vite-ignore */
201
+ /* webpackIgnore: true */
202
+ route.clientLoaderModule
203
+ ) : await getLazyRoute();
204
+ invariant(clientLoader, "No `clientLoader` export found");
205
+ return (args, singleFetch) => clientLoader({
206
+ ...args,
207
+ async serverLoader() {
208
+ preventInvalidServerHandlerCall("loader", route);
209
+ return fetchServerLoader(singleFetch);
210
+ }
211
+ });
212
+ } : void 0,
213
+ action: route.hasClientAction ? async () => {
214
+ let clientActionPromise = route.clientActionModule ? import(
215
+ /* @vite-ignore */
216
+ /* webpackIgnore: true */
217
+ route.clientActionModule
218
+ ) : getLazyRoute();
219
+ prefetchRouteModuleChunks(route);
220
+ let { clientAction } = await clientActionPromise;
221
+ invariant(clientAction, "No `clientAction` export found");
222
+ return (args, singleFetch) => clientAction({
223
+ ...args,
224
+ async serverAction() {
225
+ preventInvalidServerHandlerCall("action", route);
226
+ return fetchServerAction(singleFetch);
227
+ }
228
+ });
229
+ } : void 0,
230
+ middleware: route.hasClientMiddleware ? async () => {
231
+ let { clientMiddleware } = route.clientMiddlewareModule ? await import(
232
+ /* @vite-ignore */
233
+ /* webpackIgnore: true */
234
+ route.clientMiddlewareModule
235
+ ) : await getLazyRoute();
236
+ invariant(clientMiddleware, "No `clientMiddleware` export found");
237
+ return clientMiddleware;
238
+ } : void 0,
239
+ shouldRevalidate: async () => {
240
+ let lazyRoute = await getLazyRoute();
241
+ return getShouldRevalidateFunction(dataRoute.path, lazyRoute, route, ssr, needsRevalidation);
242
+ },
243
+ handle: async () => (await getLazyRoute()).handle,
244
+ Component: async () => (await getLazyRoute()).Component,
245
+ ErrorBoundary: route.hasErrorBoundary ? async () => (await getLazyRoute()).ErrorBoundary : void 0
246
+ };
247
+ }
248
+ let children = createClientRoutes(manifest, routeModulesCache, initialState, ssr, isSpaMode, route.id, routesByParentId, needsRevalidation);
249
+ if (children.length > 0) dataRoute.children = children;
250
+ return dataRoute;
251
+ });
252
+ }
253
+ function getShouldRevalidateFunction(path, route, manifestRoute, ssr, needsRevalidation) {
254
+ if (needsRevalidation) return wrapShouldRevalidateForHdr(manifestRoute.id, route.shouldRevalidate, needsRevalidation);
255
+ if (!ssr && manifestRoute.hasLoader && !manifestRoute.hasClientLoader) {
256
+ let myParams = path ? compilePath(path)[1].map((p) => p.paramName) : [];
257
+ const didParamsChange = (opts) => myParams.some((p) => opts.currentParams[p] !== opts.nextParams[p]);
258
+ if (route.shouldRevalidate) {
259
+ let fn = route.shouldRevalidate;
260
+ return (opts) => fn({
261
+ ...opts,
262
+ defaultShouldRevalidate: didParamsChange(opts)
263
+ });
264
+ } else return (opts) => didParamsChange(opts);
265
+ }
266
+ return route.shouldRevalidate;
267
+ }
268
+ function wrapShouldRevalidateForHdr(routeId, routeShouldRevalidate, needsRevalidation) {
269
+ let handledRevalidation = false;
270
+ return (arg) => {
271
+ if (!handledRevalidation) {
272
+ handledRevalidation = true;
273
+ return needsRevalidation.has(routeId);
274
+ }
275
+ return routeShouldRevalidate ? routeShouldRevalidate(arg) : arg.defaultShouldRevalidate;
276
+ };
277
+ }
278
+ async function loadRouteModuleWithBlockingLinks(route, routeModules) {
279
+ let routeModulePromise = loadRouteModule(route, routeModules);
280
+ let prefetchRouteCssPromise = prefetchRouteCss(route);
281
+ let routeModule = await routeModulePromise;
282
+ await Promise.all([prefetchRouteCssPromise, prefetchStyleLinks(route, routeModule)]);
283
+ return {
284
+ Component: getRouteModuleComponent(routeModule),
285
+ ErrorBoundary: routeModule.ErrorBoundary,
286
+ clientMiddleware: routeModule.clientMiddleware,
287
+ clientAction: routeModule.clientAction,
288
+ clientLoader: routeModule.clientLoader,
289
+ handle: routeModule.handle,
290
+ links: routeModule.links,
291
+ meta: routeModule.meta,
292
+ shouldRevalidate: routeModule.shouldRevalidate
293
+ };
294
+ }
295
+ function getRouteModuleComponent(routeModule) {
296
+ if (routeModule.default == null) return void 0;
297
+ if (!(typeof routeModule.default === "object" && Object.keys(routeModule.default).length === 0)) return routeModule.default;
298
+ }
299
+ function shouldHydrateRouteLoader(routeId, clientLoader, hasLoader, isSpaMode) {
300
+ return isSpaMode && routeId !== "root" || clientLoader != null && (clientLoader.hydrate === true || hasLoader !== true);
301
+ }
302
+ //#endregion
303
+ export { createClientRoutes, createClientRoutesWithHMRRevalidationOptOut, createServerRoutes, noActionDefinedError, shouldHydrateRouteLoader };
@@ -0,0 +1,48 @@
1
+
2
+ import { EntryContext } from "./entry.js";
3
+ import { ReactElement } from "react";
4
+
5
+ //#region lib/dom/ssr/server.d.ts
6
+ /**
7
+ * @category Types
8
+ */
9
+ interface ServerRouterProps {
10
+ /**
11
+ * The entry context containing the manifest, route modules, and other data
12
+ * needed for rendering.
13
+ */
14
+ context: EntryContext;
15
+ /**
16
+ * The URL of the request being handled.
17
+ */
18
+ url: string | URL;
19
+ /**
20
+ * An optional `nonce` for [Content Security Policy (CSP)](https://developer.mozilla.org/en-US/docs/Web/HTTP/Guides/CSP)
21
+ * compliance. This is applied to inline scripts rendered by React Router and
22
+ * used as the default for nonce-aware components such as {@link Links | `<Links>`},
23
+ * {@link Scripts | `<Scripts>`}, and {@link ScrollRestoration | `<ScrollRestoration>`}
24
+ * when they do not provide their own `nonce`.
25
+ */
26
+ nonce?: string;
27
+ }
28
+ /**
29
+ * The server entry point for a React Router app in Framework Mode. This
30
+ * component is used to generate the HTML in the response from the server. See
31
+ * [`entry.server.tsx`](../framework-conventions/entry.server.tsx).
32
+ *
33
+ * @public
34
+ * @category Framework Routers
35
+ * @mode framework
36
+ * @param props Props
37
+ * @param {ServerRouterProps.context} props.context n/a
38
+ * @param {ServerRouterProps.nonce} props.nonce n/a
39
+ * @param {ServerRouterProps.url} props.url n/a
40
+ * @returns A React element that represents the server-rendered application.
41
+ */
42
+ declare function ServerRouter({
43
+ context,
44
+ url,
45
+ nonce
46
+ }: ServerRouterProps): ReactElement;
47
+ //#endregion
48
+ export { ServerRouter, ServerRouterProps };
@@ -0,0 +1,69 @@
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 { StreamTransfer } from "./single-fetch.js";
12
+ import { RemixErrorBoundary } from "./errorBoundaries.js";
13
+ import { createServerRoutes, shouldHydrateRouteLoader } from "./routes.js";
14
+ import { FrameworkContext } from "./components.js";
15
+ import { StaticRouterProvider, createStaticRouter } from "../server.js";
16
+ import * as React$1 from "react";
17
+ //#region lib/dom/ssr/server.tsx
18
+ /**
19
+ * The server entry point for a React Router app in Framework Mode. This
20
+ * component is used to generate the HTML in the response from the server. See
21
+ * [`entry.server.tsx`](../framework-conventions/entry.server.tsx).
22
+ *
23
+ * @public
24
+ * @category Framework Routers
25
+ * @mode framework
26
+ * @param props Props
27
+ * @param {ServerRouterProps.context} props.context n/a
28
+ * @param {ServerRouterProps.nonce} props.nonce n/a
29
+ * @param {ServerRouterProps.url} props.url n/a
30
+ * @returns A React element that represents the server-rendered application.
31
+ */
32
+ function ServerRouter({ context, url, nonce }) {
33
+ if (typeof url === "string") url = new URL(url);
34
+ let { manifest, routeModules, criticalCss, serverHandoffString } = context;
35
+ let routes = createServerRoutes(manifest.routes, routeModules, context.future, context.isSpaMode);
36
+ context.staticHandlerContext.loaderData = { ...context.staticHandlerContext.loaderData };
37
+ for (let match of context.staticHandlerContext.matches) {
38
+ let routeId = match.route.id;
39
+ let route = routeModules[routeId];
40
+ let manifestRoute = context.manifest.routes[routeId];
41
+ if (route && manifestRoute && shouldHydrateRouteLoader(routeId, route.clientLoader, manifestRoute.hasLoader, context.isSpaMode) && (route.HydrateFallback || !manifestRoute.hasLoader)) delete context.staticHandlerContext.loaderData[routeId];
42
+ }
43
+ let router = createStaticRouter(routes, context.staticHandlerContext, { branches: context.branches });
44
+ return /* @__PURE__ */ React$1.createElement(React$1.Fragment, null, /* @__PURE__ */ React$1.createElement(FrameworkContext.Provider, { value: {
45
+ manifest,
46
+ routeModules,
47
+ criticalCss,
48
+ serverHandoffString,
49
+ future: context.future,
50
+ ssr: context.ssr,
51
+ isSpaMode: context.isSpaMode,
52
+ routeDiscovery: context.routeDiscovery,
53
+ nonce,
54
+ serializeError: context.serializeError,
55
+ renderMeta: context.renderMeta
56
+ } }, /* @__PURE__ */ React$1.createElement(RemixErrorBoundary, { location: router.state.location }, /* @__PURE__ */ React$1.createElement(StaticRouterProvider, {
57
+ router,
58
+ context: context.staticHandlerContext,
59
+ hydrate: false
60
+ }))), context.serverHandoffStream ? /* @__PURE__ */ React$1.createElement(React$1.Suspense, null, /* @__PURE__ */ React$1.createElement(StreamTransfer, {
61
+ context,
62
+ identifier: 0,
63
+ reader: context.serverHandoffStream.getReader(),
64
+ textDecoder: new TextDecoder(),
65
+ nonce
66
+ })) : null);
67
+ }
68
+ //#endregion
69
+ export { ServerRouter };
@@ -0,0 +1,14 @@
1
+
2
+ import { DataStrategyFunction } from "../../router/utils.js";
3
+ import { Router } from "../../router/router.js";
4
+ import { RouteModules } from "./routeModules.js";
5
+ import { AssetsManifest } from "./entry.js";
6
+ //#region lib/dom/ssr/single-fetch.d.ts
7
+ declare const SingleFetchRedirectSymbol: unique symbol;
8
+ declare function getTurboStreamSingleFetchDataStrategy(getRouter: () => Router, manifest: AssetsManifest, routeModules: RouteModules, ssr: boolean): DataStrategyFunction;
9
+ declare function decodeViaTurboStream(body: ReadableStream<Uint8Array>, global: Window | typeof globalThis): Promise<{
10
+ done: Promise<void>;
11
+ value: unknown;
12
+ }>;
13
+ //#endregion
14
+ export { SingleFetchRedirectSymbol, decodeViaTurboStream, getTurboStreamSingleFetchDataStrategy };