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,43 @@
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/server-runtime/crypto.ts
12
+ const encoder = /* @__PURE__ */ new TextEncoder();
13
+ const sign = async (value, secret) => {
14
+ let data = encoder.encode(value);
15
+ let key = await createKey(secret, ["sign"]);
16
+ let signature = await crypto.subtle.sign("HMAC", key, data);
17
+ let hash = btoa(String.fromCharCode(...new Uint8Array(signature))).replace(/=+$/, "");
18
+ return value + "." + hash;
19
+ };
20
+ const unsign = async (cookie, secret) => {
21
+ let index = cookie.lastIndexOf(".");
22
+ let value = cookie.slice(0, index);
23
+ let hash = cookie.slice(index + 1);
24
+ let data = encoder.encode(value);
25
+ let key = await createKey(secret, ["verify"]);
26
+ try {
27
+ let signature = byteStringToUint8Array(atob(hash));
28
+ return await crypto.subtle.verify("HMAC", key, signature, data) ? value : false;
29
+ } catch (e) {
30
+ return false;
31
+ }
32
+ };
33
+ const createKey = async (secret, usages) => crypto.subtle.importKey("raw", encoder.encode(secret), {
34
+ name: "HMAC",
35
+ hash: "SHA-256"
36
+ }, false, usages);
37
+ function byteStringToUint8Array(byteString) {
38
+ let array = new Uint8Array(byteString.length);
39
+ for (let i = 0; i < byteString.length; i++) array[i] = byteString.charCodeAt(i);
40
+ return array;
41
+ }
42
+ //#endregion
43
+ export { sign, unsign };
@@ -0,0 +1,13 @@
1
+
2
+ //#region lib/server-runtime/data.d.ts
3
+ /**
4
+ * An object of unknown type for route loaders and actions provided by the
5
+ * server's `getLoadContext()` function. This is defined as an empty interface
6
+ * specifically so apps can leverage declaration merging to augment this type
7
+ * globally: https://www.typescriptlang.org/docs/handbook/declaration-merging.html
8
+ */
9
+ interface AppLoadContext {
10
+ [key: string]: unknown;
11
+ }
12
+ //#endregion
13
+ export { AppLoadContext };
@@ -0,0 +1,25 @@
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 { isDataWithResponseInit, isRedirectStatusCode } from "../router/router.js";
12
+ //#region lib/server-runtime/data.ts
13
+ async function callRouteHandler(handler, args) {
14
+ let result = await handler({
15
+ request: args.request,
16
+ url: args.url,
17
+ params: args.params,
18
+ context: args.context,
19
+ pattern: args.pattern
20
+ });
21
+ if (isDataWithResponseInit(result) && result.init && result.init.status && isRedirectStatusCode(result.init.status)) throw new Response(null, result.init);
22
+ return result;
23
+ }
24
+ //#endregion
25
+ export { callRouteHandler };
@@ -0,0 +1,9 @@
1
+
2
+ //#region lib/server-runtime/dev.d.ts
3
+ type DevServerHooks = {
4
+ getCriticalCss?: (pathname: string) => Promise<string | undefined>;
5
+ processRequestError?: (error: unknown) => void;
6
+ };
7
+ declare function setDevServerHooks(devServerHooks: DevServerHooks): void;
8
+ //#endregion
9
+ export { setDevServerHooks };
@@ -0,0 +1,26 @@
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/server-runtime/dev.ts
12
+ const globalDevServerHooksKey = "__reactRouterDevServerHooks";
13
+ function setDevServerHooks(devServerHooks) {
14
+ globalThis[globalDevServerHooksKey] = devServerHooks;
15
+ }
16
+ function getDevServerHooks() {
17
+ return globalThis[globalDevServerHooksKey];
18
+ }
19
+ function getBuildTimeHeader(request, headerName) {
20
+ if (typeof process !== "undefined") try {
21
+ if (process.env.hasOwnProperty("IS_RR_BUILD_REQUEST") && process.env.IS_RR_BUILD_REQUEST === "yes") return request.headers.get(headerName);
22
+ } catch (e) {}
23
+ return null;
24
+ }
25
+ //#endregion
26
+ export { getBuildTimeHeader, getDevServerHooks, setDevServerHooks };
@@ -0,0 +1,20 @@
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/server-runtime/entry.ts
12
+ function createEntryRouteModules(manifest) {
13
+ return Object.keys(manifest).reduce((memo, routeId) => {
14
+ let route = manifest[routeId];
15
+ if (route) memo[routeId] = route.module;
16
+ return memo;
17
+ }, {});
18
+ }
19
+ //#endregion
20
+ export { createEntryRouteModules };
@@ -0,0 +1,75 @@
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 "./mode.js";
12
+ //#region lib/server-runtime/errors.ts
13
+ /**
14
+ * This thing probably warrants some explanation.
15
+ *
16
+ * The whole point here is to emulate componentDidCatch for server rendering and
17
+ * data loading. It can get tricky. React can do this on component boundaries
18
+ * but doesn't support it for server rendering or data loading. We know enough
19
+ * with nested routes to be able to emulate the behavior (because we know them
20
+ * statically before rendering.)
21
+ *
22
+ * Each route can export an `ErrorBoundary`.
23
+ *
24
+ * - When rendering throws an error, the nearest error boundary will render
25
+ * (normal react componentDidCatch). This will be the route's own boundary, but
26
+ * if none is provided, it will bubble up to the parents.
27
+ * - When data loading throws an error, the nearest error boundary will render
28
+ * - When performing an action, the nearest error boundary for the action's
29
+ * route tree will render (no redirect happens)
30
+ *
31
+ * During normal react rendering, we do nothing special, just normal
32
+ * componentDidCatch.
33
+ *
34
+ * For server rendering, we mutate `renderBoundaryRouteId` to know the last
35
+ * layout that has an error boundary that tried to render. This emulates which
36
+ * layout would catch a thrown error. If the rendering fails, we catch the error
37
+ * on the server, and go again a second time with the emulator holding on to the
38
+ * information it needs to render the same error boundary as a dynamically
39
+ * thrown render error.
40
+ *
41
+ * When data loading, server or client side, we use the emulator to likewise
42
+ * hang on to the error and re-render at the appropriate layout (where a thrown
43
+ * error would have been caught by cDC).
44
+ *
45
+ * When actions throw, it all works the same. There's an edge case to be aware
46
+ * of though. Actions normally are required to redirect, but in the case of
47
+ * errors, we render the action's route with the emulator holding on to the
48
+ * error. If during this render a parent route/loader throws we ignore that new
49
+ * error and render the action's original error as deeply as possible. In other
50
+ * words, we simply ignore the new error and use the action's error in place
51
+ * because it came first, and that just wouldn't be fair to let errors cut in
52
+ * line.
53
+ */
54
+ function sanitizeError(error, serverMode) {
55
+ if (error instanceof Error && serverMode !== "development") {
56
+ let sanitized = /* @__PURE__ */ new Error("Unexpected Server Error");
57
+ sanitized.stack = void 0;
58
+ return sanitized;
59
+ }
60
+ return error;
61
+ }
62
+ function sanitizeErrors(errors, serverMode) {
63
+ return Object.entries(errors).reduce((acc, [routeId, error]) => {
64
+ return Object.assign(acc, { [routeId]: sanitizeError(error, serverMode) });
65
+ }, {});
66
+ }
67
+ function serializeError(error, serverMode) {
68
+ let sanitized = sanitizeError(error, serverMode);
69
+ return {
70
+ message: sanitized.message,
71
+ stack: sanitized.stack
72
+ };
73
+ }
74
+ //#endregion
75
+ export { sanitizeError, sanitizeErrors, serializeError };
@@ -0,0 +1,73 @@
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 invariant from "./invariant.js";
12
+ import { splitSetCookieString } from "cookie-es";
13
+ //#region lib/server-runtime/headers.ts
14
+ function getDocumentHeaders(context, build) {
15
+ return getDocumentHeadersImpl(context, (m) => {
16
+ let route = build.routes[m.route.id];
17
+ invariant(route, `Route with id "${m.route.id}" not found in build`);
18
+ return route.module.headers;
19
+ });
20
+ }
21
+ function getDocumentHeadersImpl(context, getRouteHeadersFn, _defaultHeaders) {
22
+ let boundaryIdx = context.errors ? context.matches.findIndex((m) => context.errors[m.route.id]) : -1;
23
+ let matches = boundaryIdx >= 0 ? context.matches.slice(0, boundaryIdx + 1) : context.matches;
24
+ let errorHeaders;
25
+ if (boundaryIdx >= 0) {
26
+ let { actionHeaders, actionData, loaderHeaders, loaderData } = context;
27
+ context.matches.slice(boundaryIdx).some((match) => {
28
+ let id = match.route.id;
29
+ if (actionHeaders[id] && (!actionData || !actionData.hasOwnProperty(id))) errorHeaders = actionHeaders[id];
30
+ else if (loaderHeaders[id] && !loaderData.hasOwnProperty(id)) errorHeaders = loaderHeaders[id];
31
+ return errorHeaders != null;
32
+ });
33
+ }
34
+ const defaultHeaders = new Headers(_defaultHeaders);
35
+ return matches.reduce((parentHeaders, match, idx) => {
36
+ let { id } = match.route;
37
+ let loaderHeaders = context.loaderHeaders[id] || new Headers();
38
+ let actionHeaders = context.actionHeaders[id] || new Headers();
39
+ let includeErrorHeaders = errorHeaders != null && idx === matches.length - 1;
40
+ let includeErrorCookies = includeErrorHeaders && errorHeaders !== loaderHeaders && errorHeaders !== actionHeaders;
41
+ let headersFn = getRouteHeadersFn(match);
42
+ if (headersFn == null) {
43
+ let headers = new Headers(parentHeaders);
44
+ if (includeErrorCookies) prependCookies(errorHeaders, headers);
45
+ prependCookies(actionHeaders, headers);
46
+ prependCookies(loaderHeaders, headers);
47
+ return headers;
48
+ }
49
+ let headers = new Headers(typeof headersFn === "function" ? headersFn({
50
+ loaderHeaders,
51
+ parentHeaders,
52
+ actionHeaders,
53
+ errorHeaders: includeErrorHeaders ? errorHeaders : void 0
54
+ }) : headersFn);
55
+ if (includeErrorCookies) prependCookies(errorHeaders, headers);
56
+ prependCookies(actionHeaders, headers);
57
+ prependCookies(loaderHeaders, headers);
58
+ prependCookies(parentHeaders, headers);
59
+ return headers;
60
+ }, new Headers(defaultHeaders));
61
+ }
62
+ function prependCookies(parentHeaders, childHeaders) {
63
+ let parentSetCookieString = parentHeaders.get("Set-Cookie");
64
+ if (parentSetCookieString) {
65
+ let cookies = splitSetCookieString(parentSetCookieString);
66
+ let childCookies = new Set(childHeaders.getSetCookie());
67
+ cookies.forEach((cookie) => {
68
+ if (!childCookies.has(cookie)) childHeaders.append("Set-Cookie", cookie);
69
+ });
70
+ }
71
+ }
72
+ //#endregion
73
+ export { getDocumentHeaders };
@@ -0,0 +1,19 @@
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/server-runtime/invariant.ts
12
+ function invariant(value, message) {
13
+ if (value === false || value === null || typeof value === "undefined") {
14
+ console.error("The following error is a bug in React Router; please open an issue! https://github.com/remix-run/react-router/issues/new/choose");
15
+ throw new Error(message);
16
+ }
17
+ }
18
+ //#endregion
19
+ export { invariant as default };
@@ -0,0 +1,12 @@
1
+
2
+ //#region lib/server-runtime/mode.d.ts
3
+ /**
4
+ * The mode to use when running the server.
5
+ */
6
+ declare enum ServerMode {
7
+ Development = "development",
8
+ Production = "production",
9
+ Test = "test"
10
+ }
11
+ //#endregion
12
+ export { ServerMode };
@@ -0,0 +1,25 @@
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/server-runtime/mode.ts
12
+ /**
13
+ * The mode to use when running the server.
14
+ */
15
+ let ServerMode = /* @__PURE__ */ function(ServerMode) {
16
+ ServerMode["Development"] = "development";
17
+ ServerMode["Production"] = "production";
18
+ ServerMode["Test"] = "test";
19
+ return ServerMode;
20
+ }({});
21
+ function isServerMode(value) {
22
+ return value === "development" || value === "production" || value === "test";
23
+ }
24
+ //#endregion
25
+ export { ServerMode, isServerMode };
@@ -0,0 +1,28 @@
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 { matchRoutesImpl } from "../router/utils.js";
12
+ import invariant from "./invariant.js";
13
+ //#region lib/server-runtime/routeMatching.ts
14
+ function matchServerRoutes(manifest, dataRoutes, branches, pathname, basename) {
15
+ let matches = matchRoutesImpl(dataRoutes, pathname, basename ?? "/", false, branches);
16
+ if (!matches) return null;
17
+ return matches.map((match) => {
18
+ let route = manifest[match.route.id];
19
+ invariant(route, `Route with id "${match.route.id}" not found in manifest.`);
20
+ return {
21
+ params: match.params,
22
+ pathname: match.pathname,
23
+ route
24
+ };
25
+ });
26
+ }
27
+ //#endregion
28
+ export { matchServerRoutes };
@@ -0,0 +1,13 @@
1
+
2
+ import { RouteManifest } from "../router/utils.js";
3
+ import { ServerRouteModule } from "../dom/ssr/routeModules.js";
4
+ import { Route } from "../dom/ssr/routes.js";
5
+
6
+ //#region lib/server-runtime/routes.d.ts
7
+ type ServerRouteManifest = RouteManifest<Omit<ServerRoute, "children">>;
8
+ interface ServerRoute extends Route {
9
+ children: ServerRoute[];
10
+ module: ServerRouteModule;
11
+ }
12
+ //#endregion
13
+ export { ServerRouteManifest };
@@ -0,0 +1,74 @@
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 { redirect, redirectDocument, replace } from "../router/utils.js";
12
+ import { SingleFetchRedirectSymbol, decodeViaTurboStream } from "../dom/ssr/single-fetch.js";
13
+ import invariant from "./invariant.js";
14
+ import { callRouteHandler } from "./data.js";
15
+ import { getBuildTimeHeader } from "./dev.js";
16
+ //#region lib/server-runtime/routes.ts
17
+ function groupRoutesByParentId(manifest) {
18
+ let routes = {};
19
+ Object.values(manifest).forEach((route) => {
20
+ if (route) {
21
+ let parentId = route.parentId || "";
22
+ if (!routes[parentId]) routes[parentId] = [];
23
+ routes[parentId].push(route);
24
+ }
25
+ });
26
+ return routes;
27
+ }
28
+ function createStaticHandlerDataRoutes(manifest, parentId = "", routesByParentId = groupRoutesByParentId(manifest)) {
29
+ return (routesByParentId[parentId] || []).map((route) => {
30
+ let commonRoute = {
31
+ id: route.id,
32
+ path: route.path,
33
+ middleware: route.module.middleware,
34
+ loader: route.module.loader ? async (args) => {
35
+ let preRenderedData = getBuildTimeHeader(args.request, "X-React-Router-Prerender-Data");
36
+ if (preRenderedData != null) {
37
+ let encoded = preRenderedData ? decodeURI(preRenderedData) : preRenderedData;
38
+ invariant(encoded, "Missing prerendered data for route");
39
+ let uint8array = new TextEncoder().encode(encoded);
40
+ let data = (await decodeViaTurboStream(new ReadableStream({ start(controller) {
41
+ controller.enqueue(uint8array);
42
+ controller.close();
43
+ } }), global)).value;
44
+ if (data && SingleFetchRedirectSymbol in data) {
45
+ let result = data[SingleFetchRedirectSymbol];
46
+ let init = { status: result.status };
47
+ if (result.reload) throw redirectDocument(result.redirect, init);
48
+ else if (result.replace) throw replace(result.redirect, init);
49
+ else throw redirect(result.redirect, init);
50
+ } else {
51
+ invariant(data && route.id in data, "Unable to decode prerendered data");
52
+ let result = data[route.id];
53
+ invariant("data" in result, "Unable to process prerendered data");
54
+ return result.data;
55
+ }
56
+ }
57
+ return await callRouteHandler(route.module.loader, args);
58
+ } : void 0,
59
+ action: route.module.action ? (args) => callRouteHandler(route.module.action, args) : void 0,
60
+ ErrorBoundary: route.id === "root" || route.module.ErrorBoundary != null ? () => null : void 0,
61
+ handle: route.module.handle
62
+ };
63
+ return route.index ? {
64
+ index: true,
65
+ ...commonRoute
66
+ } : {
67
+ caseSensitive: route.caseSensitive,
68
+ children: createStaticHandlerDataRoutes(manifest, route.id, routesByParentId),
69
+ ...commonRoute
70
+ };
71
+ });
72
+ }
73
+ //#endregion
74
+ export { createStaticHandlerDataRoutes };
@@ -0,0 +1,10 @@
1
+
2
+ import { RouterContextProvider } from "../router/utils.js";
3
+ import { ServerBuild } from "./build.js";
4
+
5
+ //#region lib/server-runtime/server.d.ts
6
+ type RequestHandler = (request: Request, loadContext?: RouterContextProvider) => Promise<Response>;
7
+ type CreateRequestHandlerFunction = (build: ServerBuild | (() => ServerBuild | Promise<ServerBuild>), mode?: string) => RequestHandler;
8
+ declare const createRequestHandler: CreateRequestHandlerFunction;
9
+ //#endregion
10
+ export { CreateRequestHandlerFunction, RequestHandler, createRequestHandler };