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,98 @@
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 { warnOnce } from "./warnings.js";
12
+ import { createCookie, isCookie } from "./cookies.js";
13
+ //#region lib/server-runtime/sessions.ts
14
+ function flash(name) {
15
+ return `__flash_${name}__`;
16
+ }
17
+ /**
18
+ * Creates a new Session object.
19
+ *
20
+ * Note: This function is typically not invoked directly by application code.
21
+ * Instead, use a `SessionStorage` object's `getSession` method.
22
+ */
23
+ const createSession = (initialData = {}, id = "") => {
24
+ let map = new Map(Object.entries(initialData));
25
+ return {
26
+ get id() {
27
+ return id;
28
+ },
29
+ get data() {
30
+ return Object.fromEntries(map);
31
+ },
32
+ has(name) {
33
+ return map.has(name) || map.has(flash(name));
34
+ },
35
+ get(name) {
36
+ if (map.has(name)) return map.get(name);
37
+ let flashName = flash(name);
38
+ if (map.has(flashName)) {
39
+ let value = map.get(flashName);
40
+ map.delete(flashName);
41
+ return value;
42
+ }
43
+ },
44
+ set(name, value) {
45
+ map.set(name, value);
46
+ },
47
+ flash(name, value) {
48
+ map.set(flash(name), value);
49
+ },
50
+ unset(name) {
51
+ map.delete(name);
52
+ }
53
+ };
54
+ };
55
+ /**
56
+ * Returns true if an object is a React Router session.
57
+ *
58
+ * @see https://reactrouter.com/api/utils/isSession
59
+ */
60
+ const isSession = (object) => {
61
+ return object != null && typeof object.id === "string" && typeof object.data !== "undefined" && typeof object.has === "function" && typeof object.get === "function" && typeof object.set === "function" && typeof object.flash === "function" && typeof object.unset === "function";
62
+ };
63
+ /**
64
+ * Creates a SessionStorage object using a SessionIdStorageStrategy.
65
+ *
66
+ * Note: This is a low-level API that should only be used if none of the
67
+ * existing session storage options meet your requirements.
68
+ */
69
+ function createSessionStorage({ cookie: cookieArg, createData, readData, updateData, deleteData }) {
70
+ let cookie = isCookie(cookieArg) ? cookieArg : createCookie(cookieArg?.name || "__session", cookieArg);
71
+ warnOnceAboutSigningSessionCookie(cookie);
72
+ return {
73
+ async getSession(cookieHeader, options) {
74
+ let id = cookieHeader && await cookie.parse(cookieHeader, options);
75
+ return createSession(id && await readData(id) || {}, id || "");
76
+ },
77
+ async commitSession(session, options) {
78
+ let { id, data } = session;
79
+ let expires = options?.maxAge != null ? new Date(Date.now() + options.maxAge * 1e3) : options?.expires != null ? options.expires : cookie.expires;
80
+ if (id) await updateData(id, data, expires);
81
+ else id = await createData(data, expires);
82
+ return cookie.serialize(id, options);
83
+ },
84
+ async destroySession(session, options) {
85
+ await deleteData(session.id);
86
+ return cookie.serialize("", {
87
+ ...options,
88
+ maxAge: void 0,
89
+ expires: /* @__PURE__ */ new Date(0)
90
+ });
91
+ }
92
+ };
93
+ }
94
+ function warnOnceAboutSigningSessionCookie(cookie) {
95
+ warnOnce(cookie.isSigned, `The "${cookie.name}" cookie is not signed, but session cookies should be signed to prevent tampering on the client before they are sent back to the server. See https://reactrouter.com/explanation/sessions-and-cookies#signing-cookies for more information.`);
96
+ }
97
+ //#endregion
98
+ export { createSession, createSessionStorage, isSession, warnOnceAboutSigningSessionCookie };
@@ -0,0 +1,7 @@
1
+
2
+ //#region lib/server-runtime/single-fetch.d.ts
3
+ type Serializable = undefined | null | boolean | string | symbol | number | Array<Serializable> | {
4
+ [key: PropertyKey]: Serializable;
5
+ } | bigint | Date | URL | RegExp | Error | Map<Serializable, Serializable> | Set<Serializable> | Promise<Serializable>;
6
+ //#endregion
7
+ export { Serializable };
@@ -0,0 +1,215 @@
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, isRouteErrorResponse, stripBasename } from "../router/utils.js";
12
+ import { isRedirectStatusCode, isResponse } from "../router/router.js";
13
+ import { encode } from "../../vendor/turbo-stream-v2/turbo-stream.js";
14
+ import { NO_BODY_STATUS_CODES, SingleFetchRedirectSymbol } from "../dom/ssr/single-fetch.js";
15
+ import "./mode.js";
16
+ import { sanitizeError, sanitizeErrors } from "./errors.js";
17
+ import { getDocumentHeaders } from "./headers.js";
18
+ import { throwIfPotentialCSRFAttack } from "../actions.js";
19
+ import { getNormalizedPath } from "./urls.js";
20
+ //#region lib/server-runtime/single-fetch.ts
21
+ const SERVER_NO_BODY_STATUS_CODES = new Set([...NO_BODY_STATUS_CODES, 304]);
22
+ async function singleFetchAction(build, serverMode, staticHandler, request, loadContext, handleError) {
23
+ try {
24
+ try {
25
+ throwIfPotentialCSRFAttack(request, Array.isArray(build.allowedActionOrigins) ? build.allowedActionOrigins : []);
26
+ } catch (e) {
27
+ return handleQueryError(/* @__PURE__ */ new Error("Bad Request"), 400);
28
+ }
29
+ return handleQueryResult(await staticHandler.query(request, {
30
+ requestContext: loadContext,
31
+ skipLoaderErrorBubbling: true,
32
+ skipRevalidation: true,
33
+ generateMiddlewareResponse: async (query) => {
34
+ try {
35
+ return handleQueryResult(await query(request));
36
+ } catch (error) {
37
+ return handleQueryError(error);
38
+ }
39
+ },
40
+ normalizePath: (r) => getNormalizedPath(r)
41
+ }));
42
+ } catch (error) {
43
+ return handleQueryError(error);
44
+ }
45
+ function handleQueryResult(result) {
46
+ return isResponse(result) ? result : staticContextToResponse(result);
47
+ }
48
+ function handleQueryError(error, status = 500) {
49
+ handleError(error);
50
+ return generateSingleFetchResponse(request, build, serverMode, {
51
+ result: { error },
52
+ headers: new Headers(),
53
+ status
54
+ });
55
+ }
56
+ function staticContextToResponse(context) {
57
+ let headers = getDocumentHeaders(context, build);
58
+ if (isRedirectStatusCode(context.statusCode) && headers.has("Location")) return new Response(null, {
59
+ status: context.statusCode,
60
+ headers
61
+ });
62
+ if (context.errors) {
63
+ Object.values(context.errors).forEach((err) => {
64
+ if (!isRouteErrorResponse(err) || err.error) handleError(err);
65
+ });
66
+ context.errors = sanitizeErrors(context.errors, serverMode);
67
+ }
68
+ let singleFetchResult;
69
+ if (context.errors) singleFetchResult = { error: Object.values(context.errors)[0] };
70
+ else singleFetchResult = { data: Object.values(context.actionData || {})[0] };
71
+ return generateSingleFetchResponse(request, build, serverMode, {
72
+ result: singleFetchResult,
73
+ headers,
74
+ status: context.statusCode
75
+ });
76
+ }
77
+ }
78
+ async function singleFetchLoaders(build, serverMode, staticHandler, request, loadContext, handleError) {
79
+ let routesParam = new URL(request.url).searchParams.get("_routes");
80
+ let loadRouteIds = routesParam ? new Set(routesParam.split(",")) : null;
81
+ try {
82
+ return handleQueryResult(await staticHandler.query(request, {
83
+ requestContext: loadContext,
84
+ filterMatchesToLoad: (m) => !loadRouteIds || loadRouteIds.has(m.route.id),
85
+ skipLoaderErrorBubbling: true,
86
+ generateMiddlewareResponse: async (query) => {
87
+ try {
88
+ return handleQueryResult(await query(request));
89
+ } catch (error) {
90
+ return handleQueryError(error);
91
+ }
92
+ },
93
+ normalizePath: (r) => getNormalizedPath(r)
94
+ }));
95
+ } catch (error) {
96
+ return handleQueryError(error);
97
+ }
98
+ function handleQueryResult(result) {
99
+ return isResponse(result) ? result : staticContextToResponse(result);
100
+ }
101
+ function handleQueryError(error) {
102
+ handleError(error);
103
+ return generateSingleFetchResponse(request, build, serverMode, {
104
+ result: { error },
105
+ headers: new Headers(),
106
+ status: 500
107
+ });
108
+ }
109
+ function staticContextToResponse(context) {
110
+ let headers = getDocumentHeaders(context, build);
111
+ if (isRedirectStatusCode(context.statusCode) && headers.has("Location")) return new Response(null, {
112
+ status: context.statusCode,
113
+ headers
114
+ });
115
+ if (context.errors) {
116
+ Object.values(context.errors).forEach((err) => {
117
+ if (!isRouteErrorResponse(err) || err.error) handleError(err);
118
+ });
119
+ context.errors = sanitizeErrors(context.errors, serverMode);
120
+ }
121
+ let results = {};
122
+ let loadedMatches = new Set(context.matches.filter((m) => loadRouteIds ? loadRouteIds.has(m.route.id) : m.route.loader != null).map((m) => m.route.id));
123
+ if (context.errors) for (let [id, error] of Object.entries(context.errors)) results[id] = { error };
124
+ for (let [id, data] of Object.entries(context.loaderData)) if (!(id in results) && loadedMatches.has(id)) results[id] = { data };
125
+ return generateSingleFetchResponse(request, build, serverMode, {
126
+ result: results,
127
+ headers,
128
+ status: context.statusCode
129
+ });
130
+ }
131
+ }
132
+ function generateSingleFetchResponse(request, build, serverMode, { result, headers, status }) {
133
+ let resultHeaders = new Headers(headers);
134
+ resultHeaders.set("X-Remix-Response", "yes");
135
+ if (SERVER_NO_BODY_STATUS_CODES.has(status)) return new Response(null, {
136
+ status,
137
+ headers: resultHeaders
138
+ });
139
+ resultHeaders.set("Content-Type", "text/x-script");
140
+ resultHeaders.delete("Content-Length");
141
+ return new Response(encodeViaTurboStream(result, request.signal, build.entry.module.streamTimeout, serverMode), {
142
+ status: status || 200,
143
+ headers: resultHeaders
144
+ });
145
+ }
146
+ function generateSingleFetchRedirectResponse(redirectResponse, request, build, serverMode) {
147
+ let redirect = getSingleFetchRedirect(redirectResponse.status, redirectResponse.headers, build.basename);
148
+ let headers = new Headers(redirectResponse.headers);
149
+ headers.delete("Location");
150
+ headers.set("Content-Type", "text/x-script");
151
+ return generateSingleFetchResponse(request, build, serverMode, {
152
+ result: request.method === "GET" ? { [SingleFetchRedirectSymbol]: redirect } : redirect,
153
+ headers,
154
+ status: 202
155
+ });
156
+ }
157
+ function getSingleFetchRedirect(status, headers, basename) {
158
+ let redirect = headers.get("Location");
159
+ if (basename) redirect = stripBasename(redirect, basename) || redirect;
160
+ return {
161
+ redirect,
162
+ status,
163
+ revalidate: headers.has("X-Remix-Revalidate") || headers.has("Set-Cookie"),
164
+ reload: headers.has("X-Remix-Reload-Document"),
165
+ replace: headers.has("X-Remix-Replace")
166
+ };
167
+ }
168
+ function encodeViaTurboStream(data, requestSignal, streamTimeout, serverMode) {
169
+ let controller = new AbortController();
170
+ let timeoutId = setTimeout(() => {
171
+ controller.abort(/* @__PURE__ */ new Error("Server Timeout"));
172
+ cleanupCallbacks();
173
+ }, typeof streamTimeout === "number" ? streamTimeout : 4950);
174
+ let abortControllerOnRequestAbort = () => {
175
+ controller.abort(requestSignal.reason);
176
+ cleanupCallbacks();
177
+ };
178
+ requestSignal.addEventListener("abort", abortControllerOnRequestAbort);
179
+ let cleanupCallbacks = () => {
180
+ clearTimeout(timeoutId);
181
+ requestSignal.removeEventListener("abort", abortControllerOnRequestAbort);
182
+ };
183
+ return encode(data, {
184
+ signal: controller.signal,
185
+ onComplete: cleanupCallbacks,
186
+ plugins: [(value) => {
187
+ if (value instanceof Error) {
188
+ let { name, message, stack } = serverMode === "production" ? sanitizeError(value, serverMode) : value;
189
+ return [
190
+ "SanitizedError",
191
+ name,
192
+ message,
193
+ stack
194
+ ];
195
+ }
196
+ if (value instanceof ErrorResponseImpl) {
197
+ let { data, status, statusText } = value;
198
+ return [
199
+ "ErrorResponse",
200
+ data,
201
+ status,
202
+ statusText
203
+ ];
204
+ }
205
+ if (value && typeof value === "object" && SingleFetchRedirectSymbol in value) return ["SingleFetchRedirect", value[SingleFetchRedirectSymbol]];
206
+ }],
207
+ postPlugins: [(value) => {
208
+ if (!value) return;
209
+ if (typeof value !== "object") return;
210
+ return ["SingleFetchClassInstance", Object.fromEntries(Object.entries(value))];
211
+ }, () => ["SingleFetchFallback"]]
212
+ });
213
+ }
214
+ //#endregion
215
+ export { SERVER_NO_BODY_STATUS_CODES, encodeViaTurboStream, generateSingleFetchRedirectResponse, singleFetchAction, singleFetchLoaders };
@@ -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
+ //#region lib/server-runtime/urls.ts
12
+ function getNormalizedPath(request) {
13
+ let url = new URL(request.url);
14
+ let pathname = url.pathname;
15
+ if (pathname.endsWith("/_.data")) pathname = pathname.replace(/_\.data$/, "");
16
+ else pathname = pathname.replace(/\.data$/, "");
17
+ let searchParams = new URLSearchParams(url.search);
18
+ searchParams.delete("_routes");
19
+ let search = searchParams.toString();
20
+ if (search) search = `?${search}`;
21
+ return {
22
+ pathname,
23
+ search,
24
+ hash: ""
25
+ };
26
+ }
27
+ //#endregion
28
+ export { getNormalizedPath };
@@ -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/warnings.ts
12
+ const alreadyWarned = {};
13
+ function warnOnce(condition, message) {
14
+ if (!condition && !alreadyWarned[message]) {
15
+ alreadyWarned[message] = true;
16
+ console.warn(message);
17
+ }
18
+ }
19
+ //#endregion
20
+ export { warnOnce };
@@ -0,0 +1,9 @@
1
+
2
+ //#region lib/types/future.d.ts
3
+ /**
4
+ * An augmentable interface users can modify in their app-code to opt into
5
+ * future-flag-specific types
6
+ */
7
+ interface Future {}
8
+ //#endregion
9
+ export { Future };
@@ -1,184 +1,33 @@
1
- import { R as RouteModule, v as LinkDescriptor, L as Location, w as Func, x as Pretty, y as MetaDescriptor, G as GetLoaderData, z as ServerDataFunctionArgs, B as MiddlewareNextFunction, E as ClientDataFunctionArgs, I as DataStrategyResult, J as ServerDataFrom, N as Normalize, K as GetActionData } from '../../data-CjO11-hU.js';
2
- import { R as RouteFiles, P as Pages } from '../../register-roq_0qYo.js';
3
- import 'react';
4
1
 
5
- type MaybePromise<T> = T | Promise<T>;
6
- type Props = {
7
- params: unknown;
8
- loaderData: unknown;
9
- actionData: unknown;
10
- };
11
- type RouteInfo = Props & {
12
- module: RouteModule;
13
- matches: Array<MatchInfo>;
14
- };
15
- type MatchInfo = {
16
- id: string;
17
- module: RouteModule;
18
- };
19
- type MetaMatch<T extends MatchInfo> = Pretty<{
20
- id: T["id"];
21
- params: Record<string, string | undefined>;
22
- pathname: string;
23
- meta: MetaDescriptor[];
24
- /** @deprecated Use `MetaMatch.loaderData` instead */
25
- data: GetLoaderData<T["module"]>;
26
- loaderData: GetLoaderData<T["module"]>;
27
- handle?: unknown;
28
- error?: unknown;
2
+ import { Normalize } from "./utils.js";
3
+ import { RouteModule } from "./route-module.js";
4
+ import { GetActionData, GetLoaderData } from "./route-data.js";
5
+ import { GetAnnotations } from "./route-module-annotations.js";
6
+ import { Register } from "react-router";
7
+
8
+ //#region lib/types/internal.d.ts
9
+ type AnyParams = Record<string, string | undefined>;
10
+ type AnyPages = Record<string, {
11
+ params: AnyParams;
29
12
  }>;
30
- type MetaMatches<T extends Array<MatchInfo>> = T extends [infer F extends MatchInfo, ...infer R extends Array<MatchInfo>] ? [MetaMatch<F>, ...MetaMatches<R>] : Array<MetaMatch<MatchInfo> | undefined>;
31
- type HasErrorBoundary<T extends RouteInfo> = T["module"] extends {
32
- ErrorBoundary: Func;
33
- } ? true : false;
34
- type CreateMetaArgs<T extends RouteInfo> = {
35
- /** This is the current router `Location` object. This is useful for generating tags for routes at specific paths or query parameters. */
36
- location: Location;
37
- /** {@link https://reactrouter.com/start/framework/routing#dynamic-segments Dynamic route params} for the current route. */
38
- params: T["params"];
39
- /**
40
- * The return value for this route's server loader function
41
- *
42
- * @deprecated Use `Route.MetaArgs.loaderData` instead
43
- */
44
- data: T["loaderData"] | (HasErrorBoundary<T> extends true ? undefined : never);
45
- /** The return value for this route's server loader function */
46
- loaderData: T["loaderData"] | (HasErrorBoundary<T> extends true ? undefined : never);
47
- /** Thrown errors that trigger error boundaries will be passed to the meta function. This is useful for generating metadata for error pages. */
48
- error?: unknown;
49
- /** An array of the current {@link https://api.reactrouter.com/v7/interfaces/react-router.UIMatch.html route matches}, including parent route matches. */
50
- matches: MetaMatches<T["matches"]>;
51
- };
52
- type MetaDescriptors = MetaDescriptor[];
53
- type HeadersArgs = {
54
- loaderHeaders: Headers;
55
- parentHeaders: Headers;
56
- actionHeaders: Headers;
57
- errorHeaders: Headers | undefined;
58
- };
59
- type CreateServerMiddlewareFunction<T extends RouteInfo> = (args: ServerDataFunctionArgs<T["params"]>, next: MiddlewareNextFunction<Response>) => MaybePromise<Response | void>;
60
- type CreateClientMiddlewareFunction<T extends RouteInfo> = (args: ClientDataFunctionArgs<T["params"]>, next: MiddlewareNextFunction<Record<string, DataStrategyResult>>) => MaybePromise<Record<string, DataStrategyResult> | void>;
61
- type CreateServerLoaderArgs<T extends RouteInfo> = ServerDataFunctionArgs<T["params"]>;
62
- type CreateClientLoaderArgs<T extends RouteInfo> = ClientDataFunctionArgs<T["params"]> & {
63
- /** This is an asynchronous function to get the data from the server loader for this route. On client-side navigations, this will make a {@link https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API fetch} call to the React Router server loader. If you opt-into running your clientLoader on hydration, then this function will return the data that was already loaded on the server (via Promise.resolve). */
64
- serverLoader: () => Promise<ServerDataFrom<T["module"]["loader"]>>;
65
- };
66
- type CreateServerActionArgs<T extends RouteInfo> = ServerDataFunctionArgs<T["params"]>;
67
- type CreateClientActionArgs<T extends RouteInfo> = ClientDataFunctionArgs<T["params"]> & {
68
- /** This is an asynchronous function that makes the {@link https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API fetch} call to the React Router server action for this route. */
69
- serverAction: () => Promise<ServerDataFrom<T["module"]["action"]>>;
70
- };
71
- type CreateHydrateFallbackProps<T extends RouteInfo, RSCEnabled extends boolean> = {
72
- params: T["params"];
73
- } & (RSCEnabled extends true ? {
74
- /** The data returned from the `loader` */
75
- loaderData?: ServerDataFrom<T["module"]["loader"]>;
76
- /** The data returned from the `action` following an action submission. */
77
- actionData?: ServerDataFrom<T["module"]["action"]>;
78
- } : {
79
- /** The data returned from the `loader` or `clientLoader` */
80
- loaderData?: T["loaderData"];
81
- /** The data returned from the `action` or `clientAction` following an action submission. */
82
- actionData?: T["actionData"];
83
- });
84
- type Match<T extends MatchInfo> = Pretty<{
85
- id: T["id"];
86
- params: Record<string, string | undefined>;
87
- pathname: string;
88
- /** @deprecated Use `Match.loaderData` instead */
89
- data: GetLoaderData<T["module"]>;
90
- loaderData: GetLoaderData<T["module"]>;
91
- handle: unknown;
13
+ type Pages = Register extends {
14
+ pages: infer Registered extends AnyPages;
15
+ } ? Registered : AnyPages;
16
+ type AnyRouteFiles = Record<string, {
17
+ id: string;
18
+ page: string;
92
19
  }>;
93
- type Matches<T extends Array<MatchInfo>> = T extends [infer F extends MatchInfo, ...infer R extends Array<MatchInfo>] ? [Match<F>, ...Matches<R>] : Array<Match<MatchInfo> | undefined>;
94
- type CreateComponentProps<T extends RouteInfo, RSCEnabled extends boolean> = {
95
- /**
96
- * {@link https://reactrouter.com/start/framework/routing#dynamic-segments Dynamic route params} for the current route.
97
- * @example
98
- * // app/routes.ts
99
- * route("teams/:teamId", "./team.tsx"),
100
- *
101
- * // app/team.tsx
102
- * export default function Component({
103
- * params,
104
- * }: Route.ComponentProps) {
105
- * params.teamId;
106
- * // ^ string
107
- * }
108
- **/
109
- params: T["params"];
110
- /** An array of the current {@link https://api.reactrouter.com/v7/interfaces/react-router.UIMatch.html route matches}, including parent route matches. */
111
- matches: Matches<T["matches"]>;
112
- } & (RSCEnabled extends true ? {
113
- /** The data returned from the `loader` */
114
- loaderData: ServerDataFrom<T["module"]["loader"]>;
115
- /** The data returned from the `action` following an action submission. */
116
- actionData?: ServerDataFrom<T["module"]["action"]>;
117
- } : {
118
- /** The data returned from the `loader` or `clientLoader` */
119
- loaderData: T["loaderData"];
120
- /** The data returned from the `action` or `clientAction` following an action submission. */
121
- actionData?: T["actionData"];
122
- });
123
- type CreateErrorBoundaryProps<T extends RouteInfo, RSCEnabled extends boolean> = {
124
- /**
125
- * {@link https://reactrouter.com/start/framework/routing#dynamic-segments Dynamic route params} for the current route.
126
- * @example
127
- * // app/routes.ts
128
- * route("teams/:teamId", "./team.tsx"),
129
- *
130
- * // app/team.tsx
131
- * export function ErrorBoundary({
132
- * params,
133
- * }: Route.ErrorBoundaryProps) {
134
- * params.teamId;
135
- * // ^ string
136
- * }
137
- **/
138
- params: T["params"];
139
- error: unknown;
140
- } & (RSCEnabled extends true ? {
141
- /** The data returned from the `loader` */
142
- loaderData?: ServerDataFrom<T["module"]["loader"]>;
143
- /** The data returned from the `action` following an action submission. */
144
- actionData?: ServerDataFrom<T["module"]["action"]>;
145
- } : {
146
- /** The data returned from the `loader` or `clientLoader` */
147
- loaderData?: T["loaderData"];
148
- /** The data returned from the `action` or `clientAction` following an action submission. */
149
- actionData?: T["actionData"];
150
- });
151
- type GetAnnotations<Info extends RouteInfo> = {
152
- LinkDescriptors: LinkDescriptor[];
153
- LinksFunction: () => LinkDescriptor[];
154
- MetaArgs: CreateMetaArgs<Info>;
155
- MetaDescriptors: MetaDescriptors;
156
- MetaFunction: (args: CreateMetaArgs<Info>) => MetaDescriptors;
157
- HeadersArgs: HeadersArgs;
158
- HeadersFunction: (args: HeadersArgs) => Headers | HeadersInit;
159
- MiddlewareFunction: CreateServerMiddlewareFunction<Info>;
160
- ClientMiddlewareFunction: CreateClientMiddlewareFunction<Info>;
161
- LoaderArgs: CreateServerLoaderArgs<Info>;
162
- ClientLoaderArgs: CreateClientLoaderArgs<Info>;
163
- ActionArgs: CreateServerActionArgs<Info>;
164
- ClientActionArgs: CreateClientActionArgs<Info>;
165
- HydrateFallbackProps: CreateHydrateFallbackProps<Info, false>;
166
- ServerHydrateFallbackProps: CreateHydrateFallbackProps<Info, true>;
167
- ComponentProps: CreateComponentProps<Info, false>;
168
- ServerComponentProps: CreateComponentProps<Info, true>;
169
- ErrorBoundaryProps: CreateErrorBoundaryProps<Info, false>;
170
- ServerErrorBoundaryProps: CreateErrorBoundaryProps<Info, true>;
171
- };
172
-
20
+ type RouteFiles = Register extends {
21
+ routeFiles: infer Registered extends AnyRouteFiles;
22
+ } ? Registered : AnyRouteFiles;
173
23
  type Params<RouteFile extends keyof RouteFiles> = Normalize<Pages[RouteFiles[RouteFile]["page"]]["params"]>;
174
-
175
24
  type GetInfo<T extends {
176
- file: keyof RouteFiles;
177
- module: RouteModule;
25
+ file: keyof RouteFiles;
26
+ module: RouteModule;
178
27
  }> = {
179
- params: Params<T["file"]>;
180
- loaderData: GetLoaderData<T["module"]>;
181
- actionData: GetActionData<T["module"]>;
28
+ params: Params<T["file"]>;
29
+ loaderData: GetLoaderData<T["module"]>;
30
+ actionData: GetActionData<T["module"]>;
182
31
  };
183
-
184
- export type { GetAnnotations, GetInfo };
32
+ //#endregion
33
+ export { type GetAnnotations, GetInfo };
@@ -1,5 +1,5 @@
1
- "use strict";/**
2
- * react-router v7.18.0
1
+ /**
2
+ * react-router v8.0.0-pre.1
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
@@ -8,3 +8,4 @@
8
8
  *
9
9
  * @license MIT
10
10
  */
11
+ export {};
@@ -1,30 +1,24 @@
1
- import { R as RouteModule } from './data-CjO11-hU.js';
2
1
 
2
+ import { RouteModule } from "./route-module.js";
3
+
4
+ //#region lib/types/register.d.ts
3
5
  /**
4
6
  * Apps can use this interface to "register" app-wide types for React Router via interface declaration merging and module augmentation.
5
7
  * React Router should handle this for you via type generation.
6
8
  *
7
9
  * For more on declaration merging and module augmentation, see https://www.typescriptlang.org/docs/handbook/declaration-merging.html#module-augmentation .
8
10
  */
9
- interface Register {
10
- }
11
+ interface Register {}
11
12
  type AnyParams = Record<string, string | undefined>;
12
13
  type AnyPages = Record<string, {
13
- params: AnyParams;
14
+ params: AnyParams;
14
15
  }>;
15
16
  type Pages = Register extends {
16
- pages: infer Registered extends AnyPages;
17
+ pages: infer Registered extends AnyPages;
17
18
  } ? Registered : AnyPages;
18
- type AnyRouteFiles = Record<string, {
19
- id: string;
20
- page: string;
21
- }>;
22
- type RouteFiles = Register extends {
23
- routeFiles: infer Registered extends AnyRouteFiles;
24
- } ? Registered : AnyRouteFiles;
25
19
  type AnyRouteModules = Record<string, RouteModule>;
26
20
  type RouteModules = Register extends {
27
- routeModules: infer Registered extends AnyRouteModules;
21
+ routeModules: infer Registered extends AnyRouteModules;
28
22
  } ? Registered : AnyRouteModules;
29
-
30
- export type { Pages as P, RouteFiles as R, RouteModules as a, Register as b };
23
+ //#endregion
24
+ export { Pages, Register, RouteModules };