@rangojs/router 0.0.0-experimental.19 → 0.0.0-experimental.1db96a9e

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 (968) hide show
  1. package/{CLAUDE.md → AGENTS.md} +4 -0
  2. package/README.md +122 -30
  3. package/dist/__internal.d.ts +83 -0
  4. package/dist/__internal.d.ts.map +1 -0
  5. package/dist/__internal.js +19 -0
  6. package/dist/__internal.js.map +1 -0
  7. package/dist/__mocks__/version.d.ts +7 -0
  8. package/dist/__mocks__/version.d.ts.map +1 -0
  9. package/dist/__mocks__/version.js +7 -0
  10. package/dist/__mocks__/version.js.map +1 -0
  11. package/dist/__tests__/client-href.test.d.ts +2 -0
  12. package/dist/__tests__/client-href.test.d.ts.map +1 -0
  13. package/dist/__tests__/client-href.test.js +74 -0
  14. package/dist/__tests__/client-href.test.js.map +1 -0
  15. package/dist/__tests__/component-utils.test.d.ts +2 -0
  16. package/dist/__tests__/component-utils.test.d.ts.map +1 -0
  17. package/dist/__tests__/component-utils.test.js +51 -0
  18. package/dist/__tests__/component-utils.test.js.map +1 -0
  19. package/dist/__tests__/event-controller.test.d.ts +2 -0
  20. package/dist/__tests__/event-controller.test.d.ts.map +1 -0
  21. package/dist/__tests__/event-controller.test.js +538 -0
  22. package/dist/__tests__/event-controller.test.js.map +1 -0
  23. package/dist/__tests__/helpers/route-tree.d.ts +118 -0
  24. package/dist/__tests__/helpers/route-tree.d.ts.map +1 -0
  25. package/dist/__tests__/helpers/route-tree.js +374 -0
  26. package/dist/__tests__/helpers/route-tree.js.map +1 -0
  27. package/dist/__tests__/match-result.test.d.ts +2 -0
  28. package/dist/__tests__/match-result.test.d.ts.map +1 -0
  29. package/dist/__tests__/match-result.test.js +154 -0
  30. package/dist/__tests__/match-result.test.js.map +1 -0
  31. package/dist/__tests__/navigation-store.test.d.ts +2 -0
  32. package/dist/__tests__/navigation-store.test.d.ts.map +1 -0
  33. package/dist/__tests__/navigation-store.test.js +440 -0
  34. package/dist/__tests__/navigation-store.test.js.map +1 -0
  35. package/dist/__tests__/partial-update.test.d.ts +2 -0
  36. package/dist/__tests__/partial-update.test.d.ts.map +1 -0
  37. package/dist/__tests__/partial-update.test.js +1009 -0
  38. package/dist/__tests__/partial-update.test.js.map +1 -0
  39. package/dist/__tests__/reverse-types.test.d.ts +8 -0
  40. package/dist/__tests__/reverse-types.test.d.ts.map +1 -0
  41. package/dist/__tests__/reverse-types.test.js +656 -0
  42. package/dist/__tests__/reverse-types.test.js.map +1 -0
  43. package/dist/__tests__/route-definition.test.d.ts +2 -0
  44. package/dist/__tests__/route-definition.test.d.ts.map +1 -0
  45. package/dist/__tests__/route-definition.test.js +55 -0
  46. package/dist/__tests__/route-definition.test.js.map +1 -0
  47. package/dist/__tests__/router-helpers.test.d.ts +2 -0
  48. package/dist/__tests__/router-helpers.test.d.ts.map +1 -0
  49. package/dist/__tests__/router-helpers.test.js +377 -0
  50. package/dist/__tests__/router-helpers.test.js.map +1 -0
  51. package/dist/__tests__/router-integration-2.test.d.ts +2 -0
  52. package/dist/__tests__/router-integration-2.test.d.ts.map +1 -0
  53. package/dist/__tests__/router-integration-2.test.js +426 -0
  54. package/dist/__tests__/router-integration-2.test.js.map +1 -0
  55. package/dist/__tests__/router-integration.test.d.ts +2 -0
  56. package/dist/__tests__/router-integration.test.d.ts.map +1 -0
  57. package/dist/__tests__/router-integration.test.js +1051 -0
  58. package/dist/__tests__/router-integration.test.js.map +1 -0
  59. package/dist/__tests__/search-params.test.d.ts +5 -0
  60. package/dist/__tests__/search-params.test.d.ts.map +1 -0
  61. package/dist/__tests__/search-params.test.js +306 -0
  62. package/dist/__tests__/search-params.test.js.map +1 -0
  63. package/dist/__tests__/segment-system.test.d.ts +2 -0
  64. package/dist/__tests__/segment-system.test.d.ts.map +1 -0
  65. package/dist/__tests__/segment-system.test.js +627 -0
  66. package/dist/__tests__/segment-system.test.js.map +1 -0
  67. package/dist/__tests__/static-handler-types.test.d.ts +8 -0
  68. package/dist/__tests__/static-handler-types.test.d.ts.map +1 -0
  69. package/dist/__tests__/static-handler-types.test.js +63 -0
  70. package/dist/__tests__/static-handler-types.test.js.map +1 -0
  71. package/dist/__tests__/urls.test.d.ts +2 -0
  72. package/dist/__tests__/urls.test.d.ts.map +1 -0
  73. package/dist/__tests__/urls.test.js +421 -0
  74. package/dist/__tests__/urls.test.js.map +1 -0
  75. package/dist/__tests__/use-mount.test.d.ts +2 -0
  76. package/dist/__tests__/use-mount.test.d.ts.map +1 -0
  77. package/dist/__tests__/use-mount.test.js +35 -0
  78. package/dist/__tests__/use-mount.test.js.map +1 -0
  79. package/dist/bin/rango.d.ts +2 -0
  80. package/dist/bin/rango.d.ts.map +1 -0
  81. package/dist/bin/rango.js +245 -63
  82. package/dist/bin/rango.js.map +1 -0
  83. package/dist/browser/event-controller.d.ts +191 -0
  84. package/dist/browser/event-controller.d.ts.map +1 -0
  85. package/dist/browser/event-controller.js +559 -0
  86. package/dist/browser/event-controller.js.map +1 -0
  87. package/dist/browser/index.d.ts +2 -0
  88. package/dist/browser/index.d.ts.map +1 -0
  89. package/dist/browser/index.js +14 -0
  90. package/dist/browser/index.js.map +1 -0
  91. package/dist/browser/link-interceptor.d.ts +38 -0
  92. package/dist/browser/link-interceptor.d.ts.map +1 -0
  93. package/dist/browser/link-interceptor.js +99 -0
  94. package/dist/browser/link-interceptor.js.map +1 -0
  95. package/dist/browser/logging.d.ts +10 -0
  96. package/dist/browser/logging.d.ts.map +1 -0
  97. package/dist/browser/logging.js +29 -0
  98. package/dist/browser/logging.js.map +1 -0
  99. package/dist/browser/lru-cache.d.ts +17 -0
  100. package/dist/browser/lru-cache.d.ts.map +1 -0
  101. package/dist/browser/lru-cache.js +50 -0
  102. package/dist/browser/lru-cache.js.map +1 -0
  103. package/dist/browser/merge-segment-loaders.d.ts +39 -0
  104. package/dist/browser/merge-segment-loaders.d.ts.map +1 -0
  105. package/dist/browser/merge-segment-loaders.js +102 -0
  106. package/dist/browser/merge-segment-loaders.js.map +1 -0
  107. package/dist/browser/navigation-bridge.d.ts +102 -0
  108. package/dist/browser/navigation-bridge.d.ts.map +1 -0
  109. package/dist/browser/navigation-bridge.js +708 -0
  110. package/dist/browser/navigation-bridge.js.map +1 -0
  111. package/dist/browser/navigation-client.d.ts +25 -0
  112. package/dist/browser/navigation-client.d.ts.map +1 -0
  113. package/dist/browser/navigation-client.js +157 -0
  114. package/dist/browser/navigation-client.js.map +1 -0
  115. package/dist/browser/navigation-store.d.ts +101 -0
  116. package/dist/browser/navigation-store.d.ts.map +1 -0
  117. package/dist/browser/navigation-store.js +625 -0
  118. package/dist/browser/navigation-store.js.map +1 -0
  119. package/dist/browser/partial-update.d.ts +75 -0
  120. package/dist/browser/partial-update.d.ts.map +1 -0
  121. package/dist/browser/partial-update.js +426 -0
  122. package/dist/browser/partial-update.js.map +1 -0
  123. package/dist/browser/react/Link.d.ts +86 -0
  124. package/dist/browser/react/Link.d.ts.map +1 -0
  125. package/dist/browser/react/Link.js +128 -0
  126. package/dist/browser/react/Link.js.map +1 -0
  127. package/dist/browser/react/NavigationProvider.d.ts +63 -0
  128. package/dist/browser/react/NavigationProvider.d.ts.map +1 -0
  129. package/dist/browser/react/NavigationProvider.js +216 -0
  130. package/dist/browser/react/NavigationProvider.js.map +1 -0
  131. package/dist/browser/react/ScrollRestoration.d.ts +75 -0
  132. package/dist/browser/react/ScrollRestoration.d.ts.map +1 -0
  133. package/dist/browser/react/ScrollRestoration.js +57 -0
  134. package/dist/browser/react/ScrollRestoration.js.map +1 -0
  135. package/dist/browser/react/context.d.ts +46 -0
  136. package/dist/browser/react/context.d.ts.map +1 -0
  137. package/dist/browser/react/context.js +10 -0
  138. package/dist/browser/react/context.js.map +1 -0
  139. package/dist/browser/react/index.d.ts +11 -0
  140. package/dist/browser/react/index.d.ts.map +1 -0
  141. package/dist/browser/react/index.js +22 -0
  142. package/dist/browser/react/index.js.map +1 -0
  143. package/dist/browser/react/location-state-shared.d.ts +63 -0
  144. package/dist/browser/react/location-state-shared.d.ts.map +1 -0
  145. package/dist/browser/react/location-state-shared.js +81 -0
  146. package/dist/browser/react/location-state-shared.js.map +1 -0
  147. package/dist/browser/react/location-state.d.ts +23 -0
  148. package/dist/browser/react/location-state.d.ts.map +1 -0
  149. package/dist/browser/react/location-state.js +29 -0
  150. package/dist/browser/react/location-state.js.map +1 -0
  151. package/dist/browser/react/mount-context.d.ts +24 -0
  152. package/dist/browser/react/mount-context.d.ts.map +1 -0
  153. package/dist/browser/react/mount-context.js +24 -0
  154. package/dist/browser/react/mount-context.js.map +1 -0
  155. package/dist/browser/react/use-action.d.ts +64 -0
  156. package/dist/browser/react/use-action.d.ts.map +1 -0
  157. package/dist/browser/react/use-action.js +134 -0
  158. package/dist/browser/react/use-action.js.map +1 -0
  159. package/dist/browser/react/use-client-cache.d.ts +41 -0
  160. package/dist/browser/react/use-client-cache.d.ts.map +1 -0
  161. package/dist/browser/react/use-client-cache.js +39 -0
  162. package/dist/browser/react/use-client-cache.js.map +1 -0
  163. package/dist/browser/react/use-handle.d.ts +31 -0
  164. package/dist/browser/react/use-handle.d.ts.map +1 -0
  165. package/dist/browser/react/use-handle.js +144 -0
  166. package/dist/browser/react/use-handle.js.map +1 -0
  167. package/dist/browser/react/use-href.d.ts +33 -0
  168. package/dist/browser/react/use-href.d.ts.map +1 -0
  169. package/dist/browser/react/use-href.js +39 -0
  170. package/dist/browser/react/use-href.js.map +1 -0
  171. package/dist/browser/react/use-link-status.d.ts +37 -0
  172. package/dist/browser/react/use-link-status.d.ts.map +1 -0
  173. package/dist/browser/react/use-link-status.js +99 -0
  174. package/dist/browser/react/use-link-status.js.map +1 -0
  175. package/dist/browser/react/use-mount.d.ts +25 -0
  176. package/dist/browser/react/use-mount.d.ts.map +1 -0
  177. package/dist/browser/react/use-mount.js +30 -0
  178. package/dist/browser/react/use-mount.js.map +1 -0
  179. package/dist/browser/react/use-navigation.d.ts +27 -0
  180. package/dist/browser/react/use-navigation.d.ts.map +1 -0
  181. package/dist/browser/react/use-navigation.js +87 -0
  182. package/dist/browser/react/use-navigation.js.map +1 -0
  183. package/dist/browser/react/use-segments.d.ts +38 -0
  184. package/dist/browser/react/use-segments.d.ts.map +1 -0
  185. package/dist/browser/react/use-segments.js +130 -0
  186. package/dist/browser/react/use-segments.js.map +1 -0
  187. package/dist/browser/request-controller.d.ts +26 -0
  188. package/dist/browser/request-controller.d.ts.map +1 -0
  189. package/dist/browser/request-controller.js +147 -0
  190. package/dist/browser/request-controller.js.map +1 -0
  191. package/dist/browser/rsc-router.d.ts +129 -0
  192. package/dist/browser/rsc-router.d.ts.map +1 -0
  193. package/dist/browser/rsc-router.js +195 -0
  194. package/dist/browser/rsc-router.js.map +1 -0
  195. package/dist/browser/scroll-restoration.d.ts +93 -0
  196. package/dist/browser/scroll-restoration.d.ts.map +1 -0
  197. package/dist/browser/scroll-restoration.js +321 -0
  198. package/dist/browser/scroll-restoration.js.map +1 -0
  199. package/dist/browser/segment-structure-assert.d.ts +17 -0
  200. package/dist/browser/segment-structure-assert.d.ts.map +1 -0
  201. package/dist/browser/segment-structure-assert.js +59 -0
  202. package/dist/browser/segment-structure-assert.js.map +1 -0
  203. package/dist/browser/server-action-bridge.d.ts +26 -0
  204. package/dist/browser/server-action-bridge.d.ts.map +1 -0
  205. package/dist/browser/server-action-bridge.js +668 -0
  206. package/dist/browser/server-action-bridge.js.map +1 -0
  207. package/dist/browser/shallow.d.ts +12 -0
  208. package/dist/browser/shallow.d.ts.map +1 -0
  209. package/dist/browser/shallow.js +34 -0
  210. package/dist/browser/shallow.js.map +1 -0
  211. package/dist/browser/types.d.ts +369 -0
  212. package/dist/browser/types.d.ts.map +1 -0
  213. package/dist/browser/types.js +2 -0
  214. package/dist/browser/types.js.map +1 -0
  215. package/dist/build/__tests__/generate-cli.test.d.ts +2 -0
  216. package/dist/build/__tests__/generate-cli.test.d.ts.map +1 -0
  217. package/dist/build/__tests__/generate-cli.test.js +237 -0
  218. package/dist/build/__tests__/generate-cli.test.js.map +1 -0
  219. package/dist/build/__tests__/generate-manifest.test.d.ts +2 -0
  220. package/dist/build/__tests__/generate-manifest.test.d.ts.map +1 -0
  221. package/dist/build/__tests__/generate-manifest.test.js +119 -0
  222. package/dist/build/__tests__/generate-manifest.test.js.map +1 -0
  223. package/dist/build/__tests__/generate-route-types.test.d.ts +2 -0
  224. package/dist/build/__tests__/generate-route-types.test.d.ts.map +1 -0
  225. package/dist/build/__tests__/generate-route-types.test.js +620 -0
  226. package/dist/build/__tests__/generate-route-types.test.js.map +1 -0
  227. package/dist/build/__tests__/per-router-manifest.test.d.ts +2 -0
  228. package/dist/build/__tests__/per-router-manifest.test.d.ts.map +1 -0
  229. package/dist/build/__tests__/per-router-manifest.test.js +308 -0
  230. package/dist/build/__tests__/per-router-manifest.test.js.map +1 -0
  231. package/dist/build/generate-manifest.d.ts +81 -0
  232. package/dist/build/generate-manifest.d.ts.map +1 -0
  233. package/dist/build/generate-manifest.js +276 -0
  234. package/dist/build/generate-manifest.js.map +1 -0
  235. package/dist/build/generate-route-types.d.ts +115 -0
  236. package/dist/build/generate-route-types.d.ts.map +1 -0
  237. package/dist/build/generate-route-types.js +740 -0
  238. package/dist/build/generate-route-types.js.map +1 -0
  239. package/dist/build/index.d.ts +21 -0
  240. package/dist/build/index.d.ts.map +1 -0
  241. package/dist/build/index.js +21 -0
  242. package/dist/build/index.js.map +1 -0
  243. package/dist/build/route-trie.d.ts +71 -0
  244. package/dist/build/route-trie.d.ts.map +1 -0
  245. package/dist/build/route-trie.js +175 -0
  246. package/dist/build/route-trie.js.map +1 -0
  247. package/dist/cache/__tests__/cache-scope.test.d.ts +2 -0
  248. package/dist/cache/__tests__/cache-scope.test.d.ts.map +1 -0
  249. package/dist/cache/__tests__/cache-scope.test.js +208 -0
  250. package/dist/cache/__tests__/cache-scope.test.js.map +1 -0
  251. package/dist/cache/__tests__/document-cache.test.d.ts +2 -0
  252. package/dist/cache/__tests__/document-cache.test.d.ts.map +1 -0
  253. package/dist/cache/__tests__/document-cache.test.js +345 -0
  254. package/dist/cache/__tests__/document-cache.test.js.map +1 -0
  255. package/dist/cache/__tests__/memory-segment-store.test.d.ts +2 -0
  256. package/dist/cache/__tests__/memory-segment-store.test.d.ts.map +1 -0
  257. package/dist/cache/__tests__/memory-segment-store.test.js +425 -0
  258. package/dist/cache/__tests__/memory-segment-store.test.js.map +1 -0
  259. package/dist/cache/__tests__/memory-store.test.d.ts +2 -0
  260. package/dist/cache/__tests__/memory-store.test.d.ts.map +1 -0
  261. package/dist/cache/__tests__/memory-store.test.js +367 -0
  262. package/dist/cache/__tests__/memory-store.test.js.map +1 -0
  263. package/dist/cache/cache-scope.d.ts +102 -0
  264. package/dist/cache/cache-scope.d.ts.map +1 -0
  265. package/dist/cache/cache-scope.js +440 -0
  266. package/dist/cache/cache-scope.js.map +1 -0
  267. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts +2 -0
  268. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts.map +1 -0
  269. package/dist/cache/cf/__tests__/cf-cache-store.test.js +330 -0
  270. package/dist/cache/cf/__tests__/cf-cache-store.test.js.map +1 -0
  271. package/dist/cache/cf/cf-cache-store.d.ts +165 -0
  272. package/dist/cache/cf/cf-cache-store.d.ts.map +1 -0
  273. package/dist/cache/cf/cf-cache-store.js +242 -0
  274. package/dist/cache/cf/cf-cache-store.js.map +1 -0
  275. package/dist/cache/cf/index.d.ts +14 -0
  276. package/dist/cache/cf/index.d.ts.map +1 -0
  277. package/dist/cache/cf/index.js +17 -0
  278. package/dist/cache/cf/index.js.map +1 -0
  279. package/dist/cache/document-cache.d.ts +64 -0
  280. package/dist/cache/document-cache.d.ts.map +1 -0
  281. package/dist/cache/document-cache.js +228 -0
  282. package/dist/cache/document-cache.js.map +1 -0
  283. package/dist/cache/index.d.ts +19 -0
  284. package/dist/cache/index.d.ts.map +1 -0
  285. package/dist/cache/index.js +21 -0
  286. package/dist/cache/index.js.map +1 -0
  287. package/dist/cache/memory-segment-store.d.ts +110 -0
  288. package/dist/cache/memory-segment-store.d.ts.map +1 -0
  289. package/dist/cache/memory-segment-store.js +117 -0
  290. package/dist/cache/memory-segment-store.js.map +1 -0
  291. package/dist/cache/memory-store.d.ts +41 -0
  292. package/dist/cache/memory-store.d.ts.map +1 -0
  293. package/dist/cache/memory-store.js +191 -0
  294. package/dist/cache/memory-store.js.map +1 -0
  295. package/dist/cache/types.d.ts +317 -0
  296. package/dist/cache/types.d.ts.map +1 -0
  297. package/dist/cache/types.js +12 -0
  298. package/dist/cache/types.js.map +1 -0
  299. package/dist/client.d.ts +248 -0
  300. package/dist/client.d.ts.map +1 -0
  301. package/dist/client.js +367 -0
  302. package/dist/client.js.map +1 -0
  303. package/dist/client.rsc.d.ts +26 -0
  304. package/dist/client.rsc.d.ts.map +1 -0
  305. package/dist/client.rsc.js +46 -0
  306. package/dist/client.rsc.js.map +1 -0
  307. package/dist/component-utils.d.ts +36 -0
  308. package/dist/component-utils.d.ts.map +1 -0
  309. package/dist/component-utils.js +61 -0
  310. package/dist/component-utils.js.map +1 -0
  311. package/dist/components/DefaultDocument.d.ts +13 -0
  312. package/dist/components/DefaultDocument.d.ts.map +1 -0
  313. package/dist/components/DefaultDocument.js +15 -0
  314. package/dist/components/DefaultDocument.js.map +1 -0
  315. package/dist/debug.d.ts +58 -0
  316. package/dist/debug.d.ts.map +1 -0
  317. package/dist/debug.js +157 -0
  318. package/dist/debug.js.map +1 -0
  319. package/dist/default-error-boundary.d.ts +11 -0
  320. package/dist/default-error-boundary.d.ts.map +1 -0
  321. package/dist/default-error-boundary.js +45 -0
  322. package/dist/default-error-boundary.js.map +1 -0
  323. package/dist/deps/browser.d.ts +2 -0
  324. package/dist/deps/browser.d.ts.map +1 -0
  325. package/dist/deps/browser.js +3 -0
  326. package/dist/deps/browser.js.map +1 -0
  327. package/dist/deps/html-stream-client.d.ts +2 -0
  328. package/dist/deps/html-stream-client.d.ts.map +1 -0
  329. package/dist/deps/html-stream-client.js +3 -0
  330. package/dist/deps/html-stream-client.js.map +1 -0
  331. package/dist/deps/html-stream-server.d.ts +2 -0
  332. package/dist/deps/html-stream-server.d.ts.map +1 -0
  333. package/dist/deps/html-stream-server.js +3 -0
  334. package/dist/deps/html-stream-server.js.map +1 -0
  335. package/dist/deps/rsc.d.ts +2 -0
  336. package/dist/deps/rsc.d.ts.map +1 -0
  337. package/dist/deps/rsc.js +4 -0
  338. package/dist/deps/rsc.js.map +1 -0
  339. package/dist/deps/ssr.d.ts +2 -0
  340. package/dist/deps/ssr.d.ts.map +1 -0
  341. package/dist/deps/ssr.js +3 -0
  342. package/dist/deps/ssr.js.map +1 -0
  343. package/dist/errors.d.ts +174 -0
  344. package/dist/errors.d.ts.map +1 -0
  345. package/dist/errors.js +241 -0
  346. package/dist/errors.js.map +1 -0
  347. package/dist/handle.d.ts +78 -0
  348. package/dist/handle.d.ts.map +1 -0
  349. package/dist/handle.js +82 -0
  350. package/dist/handle.js.map +1 -0
  351. package/dist/handles/MetaTags.d.ts +14 -0
  352. package/dist/handles/MetaTags.d.ts.map +1 -0
  353. package/dist/handles/MetaTags.js +136 -0
  354. package/dist/handles/MetaTags.js.map +1 -0
  355. package/dist/handles/index.d.ts +6 -0
  356. package/dist/handles/index.d.ts.map +1 -0
  357. package/dist/handles/index.js +6 -0
  358. package/dist/handles/index.js.map +1 -0
  359. package/dist/handles/meta.d.ts +39 -0
  360. package/dist/handles/meta.d.ts.map +1 -0
  361. package/dist/handles/meta.js +202 -0
  362. package/dist/handles/meta.js.map +1 -0
  363. package/dist/host/__tests__/errors.test.d.ts +2 -0
  364. package/dist/host/__tests__/errors.test.d.ts.map +1 -0
  365. package/dist/host/__tests__/errors.test.js +76 -0
  366. package/dist/host/__tests__/errors.test.js.map +1 -0
  367. package/dist/host/__tests__/pattern-comprehensive.test.d.ts +2 -0
  368. package/dist/host/__tests__/pattern-comprehensive.test.d.ts.map +1 -0
  369. package/dist/host/__tests__/pattern-comprehensive.test.js +732 -0
  370. package/dist/host/__tests__/pattern-comprehensive.test.js.map +1 -0
  371. package/dist/host/__tests__/pattern-matcher.test.d.ts +2 -0
  372. package/dist/host/__tests__/pattern-matcher.test.d.ts.map +1 -0
  373. package/dist/host/__tests__/pattern-matcher.test.js +251 -0
  374. package/dist/host/__tests__/pattern-matcher.test.js.map +1 -0
  375. package/dist/host/__tests__/router.test.d.ts +2 -0
  376. package/dist/host/__tests__/router.test.d.ts.map +1 -0
  377. package/dist/host/__tests__/router.test.js +241 -0
  378. package/dist/host/__tests__/router.test.js.map +1 -0
  379. package/dist/host/__tests__/testing.test.d.ts +2 -0
  380. package/dist/host/__tests__/testing.test.d.ts.map +1 -0
  381. package/dist/host/__tests__/testing.test.js +64 -0
  382. package/dist/host/__tests__/testing.test.js.map +1 -0
  383. package/dist/host/__tests__/utils.test.d.ts +2 -0
  384. package/dist/host/__tests__/utils.test.d.ts.map +1 -0
  385. package/dist/host/__tests__/utils.test.js +29 -0
  386. package/dist/host/__tests__/utils.test.js.map +1 -0
  387. package/dist/host/cookie-handler.d.ts +34 -0
  388. package/dist/host/cookie-handler.d.ts.map +1 -0
  389. package/dist/host/cookie-handler.js +124 -0
  390. package/dist/host/cookie-handler.js.map +1 -0
  391. package/dist/host/errors.d.ts +56 -0
  392. package/dist/host/errors.d.ts.map +1 -0
  393. package/dist/host/errors.js +79 -0
  394. package/dist/host/errors.js.map +1 -0
  395. package/dist/host/index.d.ts +29 -0
  396. package/dist/host/index.d.ts.map +1 -0
  397. package/dist/host/index.js +32 -0
  398. package/dist/host/index.js.map +1 -0
  399. package/dist/host/pattern-matcher.d.ts +36 -0
  400. package/dist/host/pattern-matcher.d.ts.map +1 -0
  401. package/dist/host/pattern-matcher.js +172 -0
  402. package/dist/host/pattern-matcher.js.map +1 -0
  403. package/dist/host/router.d.ts +26 -0
  404. package/dist/host/router.d.ts.map +1 -0
  405. package/dist/host/router.js +218 -0
  406. package/dist/host/router.js.map +1 -0
  407. package/dist/host/testing.d.ts +36 -0
  408. package/dist/host/testing.d.ts.map +1 -0
  409. package/dist/host/testing.js +55 -0
  410. package/dist/host/testing.js.map +1 -0
  411. package/dist/host/types.d.ts +115 -0
  412. package/dist/host/types.d.ts.map +1 -0
  413. package/dist/host/types.js +7 -0
  414. package/dist/host/types.js.map +1 -0
  415. package/dist/host/utils.d.ts +21 -0
  416. package/dist/host/utils.d.ts.map +1 -0
  417. package/dist/host/utils.js +23 -0
  418. package/dist/host/utils.js.map +1 -0
  419. package/dist/href-client.d.ts +131 -0
  420. package/dist/href-client.d.ts.map +1 -0
  421. package/dist/href-client.js +64 -0
  422. package/dist/href-client.js.map +1 -0
  423. package/dist/href-context.d.ts +29 -0
  424. package/dist/href-context.d.ts.map +1 -0
  425. package/dist/href-context.js +21 -0
  426. package/dist/href-context.js.map +1 -0
  427. package/dist/index.d.ts +73 -0
  428. package/dist/index.d.ts.map +1 -0
  429. package/dist/index.js +91 -0
  430. package/dist/index.js.map +1 -0
  431. package/dist/index.rsc.d.ts +32 -0
  432. package/dist/index.rsc.d.ts.map +1 -0
  433. package/dist/index.rsc.js +40 -0
  434. package/dist/index.rsc.js.map +1 -0
  435. package/dist/internal-debug.d.ts +2 -0
  436. package/dist/internal-debug.d.ts.map +1 -0
  437. package/dist/internal-debug.js +5 -0
  438. package/dist/internal-debug.js.map +1 -0
  439. package/dist/loader.d.ts +14 -0
  440. package/dist/loader.d.ts.map +1 -0
  441. package/dist/loader.js +20 -0
  442. package/dist/loader.js.map +1 -0
  443. package/dist/loader.rsc.d.ts +19 -0
  444. package/dist/loader.rsc.d.ts.map +1 -0
  445. package/dist/loader.rsc.js +99 -0
  446. package/dist/loader.rsc.js.map +1 -0
  447. package/dist/network-error-thrower.d.ts +17 -0
  448. package/dist/network-error-thrower.d.ts.map +1 -0
  449. package/dist/network-error-thrower.js +14 -0
  450. package/dist/network-error-thrower.js.map +1 -0
  451. package/dist/outlet-context.d.ts +13 -0
  452. package/dist/outlet-context.d.ts.map +1 -0
  453. package/dist/outlet-context.js +3 -0
  454. package/dist/outlet-context.js.map +1 -0
  455. package/dist/prerender/__tests__/param-hash.test.d.ts +2 -0
  456. package/dist/prerender/__tests__/param-hash.test.d.ts.map +1 -0
  457. package/dist/prerender/__tests__/param-hash.test.js +148 -0
  458. package/dist/prerender/__tests__/param-hash.test.js.map +1 -0
  459. package/dist/prerender/param-hash.d.ts +16 -0
  460. package/dist/prerender/param-hash.d.ts.map +1 -0
  461. package/dist/prerender/param-hash.js +36 -0
  462. package/dist/prerender/param-hash.js.map +1 -0
  463. package/dist/prerender/store.d.ts +38 -0
  464. package/dist/prerender/store.d.ts.map +1 -0
  465. package/dist/prerender/store.js +61 -0
  466. package/dist/prerender/store.js.map +1 -0
  467. package/dist/prerender.d.ts +66 -0
  468. package/dist/prerender.d.ts.map +1 -0
  469. package/dist/prerender.js +57 -0
  470. package/dist/prerender.js.map +1 -0
  471. package/dist/reverse.d.ts +196 -0
  472. package/dist/reverse.d.ts.map +1 -0
  473. package/dist/reverse.js +78 -0
  474. package/dist/reverse.js.map +1 -0
  475. package/dist/root-error-boundary.d.ts +33 -0
  476. package/dist/root-error-boundary.d.ts.map +1 -0
  477. package/dist/root-error-boundary.js +165 -0
  478. package/dist/root-error-boundary.js.map +1 -0
  479. package/dist/route-content-wrapper.d.ts +46 -0
  480. package/dist/route-content-wrapper.d.ts.map +1 -0
  481. package/dist/route-content-wrapper.js +77 -0
  482. package/dist/route-content-wrapper.js.map +1 -0
  483. package/dist/route-definition.d.ts +421 -0
  484. package/dist/route-definition.d.ts.map +1 -0
  485. package/dist/route-definition.js +868 -0
  486. package/dist/route-definition.js.map +1 -0
  487. package/dist/route-map-builder.d.ts +155 -0
  488. package/dist/route-map-builder.d.ts.map +1 -0
  489. package/dist/route-map-builder.js +237 -0
  490. package/dist/route-map-builder.js.map +1 -0
  491. package/dist/route-types.d.ts +165 -0
  492. package/dist/route-types.d.ts.map +1 -0
  493. package/dist/route-types.js +7 -0
  494. package/dist/route-types.js.map +1 -0
  495. package/dist/router/__tests__/handler-context.test.d.ts +2 -0
  496. package/dist/router/__tests__/handler-context.test.d.ts.map +1 -0
  497. package/dist/router/__tests__/handler-context.test.js +65 -0
  498. package/dist/router/__tests__/handler-context.test.js.map +1 -0
  499. package/dist/router/__tests__/loader-cycle-detection.test.d.ts +2 -0
  500. package/dist/router/__tests__/loader-cycle-detection.test.d.ts.map +1 -0
  501. package/dist/router/__tests__/loader-cycle-detection.test.js +221 -0
  502. package/dist/router/__tests__/loader-cycle-detection.test.js.map +1 -0
  503. package/dist/router/__tests__/match-context.test.d.ts +2 -0
  504. package/dist/router/__tests__/match-context.test.d.ts.map +1 -0
  505. package/dist/router/__tests__/match-context.test.js +92 -0
  506. package/dist/router/__tests__/match-context.test.js.map +1 -0
  507. package/dist/router/__tests__/match-pipelines.test.d.ts +2 -0
  508. package/dist/router/__tests__/match-pipelines.test.d.ts.map +1 -0
  509. package/dist/router/__tests__/match-pipelines.test.js +417 -0
  510. package/dist/router/__tests__/match-pipelines.test.js.map +1 -0
  511. package/dist/router/__tests__/match-result.test.d.ts +2 -0
  512. package/dist/router/__tests__/match-result.test.d.ts.map +1 -0
  513. package/dist/router/__tests__/match-result.test.js +457 -0
  514. package/dist/router/__tests__/match-result.test.js.map +1 -0
  515. package/dist/router/__tests__/on-error.test.d.ts +2 -0
  516. package/dist/router/__tests__/on-error.test.d.ts.map +1 -0
  517. package/dist/router/__tests__/on-error.test.js +678 -0
  518. package/dist/router/__tests__/on-error.test.js.map +1 -0
  519. package/dist/router/__tests__/pattern-matching.test.d.ts +2 -0
  520. package/dist/router/__tests__/pattern-matching.test.d.ts.map +1 -0
  521. package/dist/router/__tests__/pattern-matching.test.js +629 -0
  522. package/dist/router/__tests__/pattern-matching.test.js.map +1 -0
  523. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts +2 -0
  524. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts.map +1 -0
  525. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js +155 -0
  526. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js.map +1 -0
  527. package/dist/router/error-handling.d.ts +77 -0
  528. package/dist/router/error-handling.d.ts.map +1 -0
  529. package/dist/router/error-handling.js +202 -0
  530. package/dist/router/error-handling.js.map +1 -0
  531. package/dist/router/handler-context.d.ts +20 -0
  532. package/dist/router/handler-context.d.ts.map +1 -0
  533. package/dist/router/handler-context.js +198 -0
  534. package/dist/router/handler-context.js.map +1 -0
  535. package/dist/router/intercept-resolution.d.ts +66 -0
  536. package/dist/router/intercept-resolution.d.ts.map +1 -0
  537. package/dist/router/intercept-resolution.js +246 -0
  538. package/dist/router/intercept-resolution.js.map +1 -0
  539. package/dist/router/loader-resolution.d.ts +64 -0
  540. package/dist/router/loader-resolution.d.ts.map +1 -0
  541. package/dist/router/loader-resolution.js +284 -0
  542. package/dist/router/loader-resolution.js.map +1 -0
  543. package/dist/router/logging.d.ts +15 -0
  544. package/dist/router/logging.d.ts.map +1 -0
  545. package/dist/router/logging.js +99 -0
  546. package/dist/router/logging.js.map +1 -0
  547. package/dist/router/manifest.d.ts +22 -0
  548. package/dist/router/manifest.d.ts.map +1 -0
  549. package/dist/router/manifest.js +181 -0
  550. package/dist/router/manifest.js.map +1 -0
  551. package/dist/router/match-api.d.ts +35 -0
  552. package/dist/router/match-api.d.ts.map +1 -0
  553. package/dist/router/match-api.js +406 -0
  554. package/dist/router/match-api.js.map +1 -0
  555. package/dist/router/match-context.d.ts +206 -0
  556. package/dist/router/match-context.d.ts.map +1 -0
  557. package/dist/router/match-context.js +17 -0
  558. package/dist/router/match-context.js.map +1 -0
  559. package/dist/router/match-middleware/background-revalidation.d.ts +127 -0
  560. package/dist/router/match-middleware/background-revalidation.d.ts.map +1 -0
  561. package/dist/router/match-middleware/background-revalidation.js +75 -0
  562. package/dist/router/match-middleware/background-revalidation.js.map +1 -0
  563. package/dist/router/match-middleware/cache-lookup.d.ts +112 -0
  564. package/dist/router/match-middleware/cache-lookup.d.ts.map +1 -0
  565. package/dist/router/match-middleware/cache-lookup.js +257 -0
  566. package/dist/router/match-middleware/cache-lookup.js.map +1 -0
  567. package/dist/router/match-middleware/cache-store.d.ts +113 -0
  568. package/dist/router/match-middleware/cache-store.d.ts.map +1 -0
  569. package/dist/router/match-middleware/cache-store.js +108 -0
  570. package/dist/router/match-middleware/cache-store.js.map +1 -0
  571. package/dist/router/match-middleware/index.d.ts +81 -0
  572. package/dist/router/match-middleware/index.d.ts.map +1 -0
  573. package/dist/router/match-middleware/index.js +80 -0
  574. package/dist/router/match-middleware/index.js.map +1 -0
  575. package/dist/router/match-middleware/intercept-resolution.d.ts +117 -0
  576. package/dist/router/match-middleware/intercept-resolution.d.ts.map +1 -0
  577. package/dist/router/match-middleware/intercept-resolution.js +134 -0
  578. package/dist/router/match-middleware/intercept-resolution.js.map +1 -0
  579. package/dist/router/match-middleware/segment-resolution.d.ts +99 -0
  580. package/dist/router/match-middleware/segment-resolution.d.ts.map +1 -0
  581. package/dist/router/match-middleware/segment-resolution.js +53 -0
  582. package/dist/router/match-middleware/segment-resolution.js.map +1 -0
  583. package/dist/router/match-pipelines.d.ts +147 -0
  584. package/dist/router/match-pipelines.d.ts.map +1 -0
  585. package/dist/router/match-pipelines.js +82 -0
  586. package/dist/router/match-pipelines.js.map +1 -0
  587. package/dist/router/match-result.d.ts +126 -0
  588. package/dist/router/match-result.d.ts.map +1 -0
  589. package/dist/router/match-result.js +93 -0
  590. package/dist/router/match-result.js.map +1 -0
  591. package/dist/router/metrics.d.ts +20 -0
  592. package/dist/router/metrics.d.ts.map +1 -0
  593. package/dist/router/metrics.js +47 -0
  594. package/dist/router/metrics.js.map +1 -0
  595. package/dist/router/middleware.d.ts +249 -0
  596. package/dist/router/middleware.d.ts.map +1 -0
  597. package/dist/router/middleware.js +434 -0
  598. package/dist/router/middleware.js.map +1 -0
  599. package/dist/router/middleware.test.d.ts +2 -0
  600. package/dist/router/middleware.test.d.ts.map +1 -0
  601. package/dist/router/middleware.test.js +816 -0
  602. package/dist/router/middleware.test.js.map +1 -0
  603. package/dist/router/pattern-matching.d.ts +149 -0
  604. package/dist/router/pattern-matching.d.ts.map +1 -0
  605. package/dist/router/pattern-matching.js +349 -0
  606. package/dist/router/pattern-matching.js.map +1 -0
  607. package/dist/router/revalidation.d.ts +44 -0
  608. package/dist/router/revalidation.d.ts.map +1 -0
  609. package/dist/router/revalidation.js +147 -0
  610. package/dist/router/revalidation.js.map +1 -0
  611. package/dist/router/router-context.d.ts +135 -0
  612. package/dist/router/router-context.d.ts.map +1 -0
  613. package/dist/router/router-context.js +36 -0
  614. package/dist/router/router-context.js.map +1 -0
  615. package/dist/router/segment-resolution.d.ts +127 -0
  616. package/dist/router/segment-resolution.d.ts.map +1 -0
  617. package/dist/router/segment-resolution.js +919 -0
  618. package/dist/router/segment-resolution.js.map +1 -0
  619. package/dist/router/trie-matching.d.ts +40 -0
  620. package/dist/router/trie-matching.d.ts.map +1 -0
  621. package/dist/router/trie-matching.js +127 -0
  622. package/dist/router/trie-matching.js.map +1 -0
  623. package/dist/router/types.d.ts +136 -0
  624. package/dist/router/types.d.ts.map +1 -0
  625. package/dist/router/types.js +7 -0
  626. package/dist/router/types.js.map +1 -0
  627. package/dist/router.d.ts +753 -0
  628. package/dist/router.d.ts.map +1 -0
  629. package/dist/router.gen.d.ts +6 -0
  630. package/dist/router.gen.d.ts.map +1 -0
  631. package/dist/router.gen.js +6 -0
  632. package/dist/router.gen.js.map +1 -0
  633. package/dist/router.js +1304 -0
  634. package/dist/router.js.map +1 -0
  635. package/dist/rsc/__tests__/helpers.test.d.ts +2 -0
  636. package/dist/rsc/__tests__/helpers.test.d.ts.map +1 -0
  637. package/dist/rsc/__tests__/helpers.test.js +140 -0
  638. package/dist/rsc/__tests__/helpers.test.js.map +1 -0
  639. package/dist/rsc/handler.d.ts +45 -0
  640. package/dist/rsc/handler.d.ts.map +1 -0
  641. package/dist/rsc/handler.js +1172 -0
  642. package/dist/rsc/handler.js.map +1 -0
  643. package/dist/rsc/helpers.d.ts +16 -0
  644. package/dist/rsc/helpers.d.ts.map +1 -0
  645. package/dist/rsc/helpers.js +55 -0
  646. package/dist/rsc/helpers.js.map +1 -0
  647. package/dist/rsc/index.d.ts +22 -0
  648. package/dist/rsc/index.d.ts.map +1 -0
  649. package/dist/rsc/index.js +23 -0
  650. package/dist/rsc/index.js.map +1 -0
  651. package/dist/rsc/nonce.d.ts +9 -0
  652. package/dist/rsc/nonce.d.ts.map +1 -0
  653. package/dist/rsc/nonce.js +18 -0
  654. package/dist/rsc/nonce.js.map +1 -0
  655. package/dist/rsc/types.d.ts +206 -0
  656. package/dist/rsc/types.d.ts.map +1 -0
  657. package/dist/rsc/types.js +8 -0
  658. package/dist/rsc/types.js.map +1 -0
  659. package/dist/search-params.d.ts +103 -0
  660. package/dist/search-params.d.ts.map +1 -0
  661. package/dist/search-params.js +74 -0
  662. package/dist/search-params.js.map +1 -0
  663. package/dist/segment-system.d.ts +75 -0
  664. package/dist/segment-system.d.ts.map +1 -0
  665. package/dist/segment-system.js +336 -0
  666. package/dist/segment-system.js.map +1 -0
  667. package/dist/server/context.d.ts +245 -0
  668. package/dist/server/context.d.ts.map +1 -0
  669. package/dist/server/context.js +197 -0
  670. package/dist/server/context.js.map +1 -0
  671. package/dist/server/fetchable-loader-store.d.ts +18 -0
  672. package/dist/server/fetchable-loader-store.d.ts.map +1 -0
  673. package/dist/server/fetchable-loader-store.js +18 -0
  674. package/dist/server/fetchable-loader-store.js.map +1 -0
  675. package/dist/server/handle-store.d.ts +85 -0
  676. package/dist/server/handle-store.d.ts.map +1 -0
  677. package/dist/server/handle-store.js +142 -0
  678. package/dist/server/handle-store.js.map +1 -0
  679. package/dist/server/loader-registry.d.ts +55 -0
  680. package/dist/server/loader-registry.d.ts.map +1 -0
  681. package/dist/server/loader-registry.js +132 -0
  682. package/dist/server/loader-registry.js.map +1 -0
  683. package/dist/server/request-context.d.ts +226 -0
  684. package/dist/server/request-context.d.ts.map +1 -0
  685. package/dist/server/request-context.js +290 -0
  686. package/dist/server/request-context.js.map +1 -0
  687. package/dist/server/root-layout.d.ts +4 -0
  688. package/dist/server/root-layout.d.ts.map +1 -0
  689. package/dist/server/root-layout.js +5 -0
  690. package/dist/server/root-layout.js.map +1 -0
  691. package/dist/server.d.ts +15 -0
  692. package/dist/server.d.ts.map +1 -0
  693. package/dist/server.js +20 -0
  694. package/dist/server.js.map +1 -0
  695. package/dist/ssr/__tests__/ssr-handler.test.d.ts +2 -0
  696. package/dist/ssr/__tests__/ssr-handler.test.d.ts.map +1 -0
  697. package/dist/ssr/__tests__/ssr-handler.test.js +132 -0
  698. package/dist/ssr/__tests__/ssr-handler.test.js.map +1 -0
  699. package/dist/ssr/index.d.ts +98 -0
  700. package/dist/ssr/index.d.ts.map +1 -0
  701. package/dist/ssr/index.js +158 -0
  702. package/dist/ssr/index.js.map +1 -0
  703. package/dist/static-handler.d.ts +50 -0
  704. package/dist/static-handler.d.ts.map +1 -0
  705. package/dist/static-handler.gen.d.ts +5 -0
  706. package/dist/static-handler.gen.d.ts.map +1 -0
  707. package/dist/static-handler.gen.js +5 -0
  708. package/dist/static-handler.gen.js.map +1 -0
  709. package/dist/static-handler.js +29 -0
  710. package/dist/static-handler.js.map +1 -0
  711. package/dist/theme/ThemeProvider.d.ts +20 -0
  712. package/dist/theme/ThemeProvider.d.ts.map +1 -0
  713. package/dist/theme/ThemeProvider.js +240 -0
  714. package/dist/theme/ThemeProvider.js.map +1 -0
  715. package/dist/theme/ThemeScript.d.ts +48 -0
  716. package/dist/theme/ThemeScript.d.ts.map +1 -0
  717. package/dist/theme/ThemeScript.js +13 -0
  718. package/dist/theme/ThemeScript.js.map +1 -0
  719. package/dist/theme/__tests__/theme.test.d.ts +2 -0
  720. package/dist/theme/__tests__/theme.test.d.ts.map +1 -0
  721. package/dist/theme/__tests__/theme.test.js +103 -0
  722. package/dist/theme/__tests__/theme.test.js.map +1 -0
  723. package/dist/theme/constants.d.ts +29 -0
  724. package/dist/theme/constants.d.ts.map +1 -0
  725. package/dist/theme/constants.js +48 -0
  726. package/dist/theme/constants.js.map +1 -0
  727. package/dist/theme/index.d.ts +31 -0
  728. package/dist/theme/index.d.ts.map +1 -0
  729. package/dist/theme/index.js +36 -0
  730. package/dist/theme/index.js.map +1 -0
  731. package/dist/theme/theme-context.d.ts +40 -0
  732. package/dist/theme/theme-context.d.ts.map +1 -0
  733. package/dist/theme/theme-context.js +60 -0
  734. package/dist/theme/theme-context.js.map +1 -0
  735. package/dist/theme/theme-script.d.ts +27 -0
  736. package/dist/theme/theme-script.d.ts.map +1 -0
  737. package/dist/theme/theme-script.js +147 -0
  738. package/dist/theme/theme-script.js.map +1 -0
  739. package/dist/theme/types.d.ts +163 -0
  740. package/dist/theme/types.d.ts.map +1 -0
  741. package/dist/theme/types.js +11 -0
  742. package/dist/theme/types.js.map +1 -0
  743. package/dist/theme/use-theme.d.ts +12 -0
  744. package/dist/theme/use-theme.d.ts.map +1 -0
  745. package/dist/theme/use-theme.js +40 -0
  746. package/dist/theme/use-theme.js.map +1 -0
  747. package/dist/types.d.ts +1479 -0
  748. package/dist/types.d.ts.map +1 -0
  749. package/dist/types.js +10 -0
  750. package/dist/types.js.map +1 -0
  751. package/dist/urls.d.ts +441 -0
  752. package/dist/urls.d.ts.map +1 -0
  753. package/dist/urls.gen.d.ts +8 -0
  754. package/dist/urls.gen.d.ts.map +1 -0
  755. package/dist/urls.gen.js +8 -0
  756. package/dist/urls.gen.js.map +1 -0
  757. package/dist/urls.js +443 -0
  758. package/dist/urls.js.map +1 -0
  759. package/dist/use-loader.d.ts +127 -0
  760. package/dist/use-loader.d.ts.map +1 -0
  761. package/dist/use-loader.js +237 -0
  762. package/dist/use-loader.js.map +1 -0
  763. package/dist/vite/__tests__/ast-handler-extract.test.d.ts +2 -0
  764. package/dist/vite/__tests__/ast-handler-extract.test.d.ts.map +1 -0
  765. package/dist/vite/__tests__/ast-handler-extract.test.js +294 -0
  766. package/dist/vite/__tests__/ast-handler-extract.test.js.map +1 -0
  767. package/dist/vite/__tests__/expose-id-utils.test.d.ts +2 -0
  768. package/dist/vite/__tests__/expose-id-utils.test.d.ts.map +1 -0
  769. package/dist/vite/__tests__/expose-id-utils.test.js +224 -0
  770. package/dist/vite/__tests__/expose-id-utils.test.js.map +1 -0
  771. package/dist/vite/__tests__/expose-internal-ids.test.d.ts +2 -0
  772. package/dist/vite/__tests__/expose-internal-ids.test.d.ts.map +1 -0
  773. package/dist/vite/__tests__/expose-internal-ids.test.js +647 -0
  774. package/dist/vite/__tests__/expose-internal-ids.test.js.map +1 -0
  775. package/dist/vite/__tests__/expose-router-id.test.d.ts +2 -0
  776. package/dist/vite/__tests__/expose-router-id.test.d.ts.map +1 -0
  777. package/dist/vite/__tests__/expose-router-id.test.js +39 -0
  778. package/dist/vite/__tests__/expose-router-id.test.js.map +1 -0
  779. package/dist/vite/ast-handler-extract.d.ts +49 -0
  780. package/dist/vite/ast-handler-extract.d.ts.map +1 -0
  781. package/dist/vite/ast-handler-extract.js +249 -0
  782. package/dist/vite/ast-handler-extract.js.map +1 -0
  783. package/dist/vite/expose-action-id.d.ts +19 -0
  784. package/dist/vite/expose-action-id.d.ts.map +1 -0
  785. package/dist/vite/expose-action-id.js +250 -0
  786. package/dist/vite/expose-action-id.js.map +1 -0
  787. package/dist/vite/expose-id-utils.d.ts +69 -0
  788. package/dist/vite/expose-id-utils.d.ts.map +1 -0
  789. package/dist/vite/expose-id-utils.js +289 -0
  790. package/dist/vite/expose-id-utils.js.map +1 -0
  791. package/dist/vite/expose-internal-ids.d.ts +22 -0
  792. package/dist/vite/expose-internal-ids.d.ts.map +1 -0
  793. package/dist/vite/expose-internal-ids.js +886 -0
  794. package/dist/vite/expose-internal-ids.js.map +1 -0
  795. package/dist/vite/index.d.ts +149 -0
  796. package/dist/vite/index.d.ts.map +1 -0
  797. package/dist/vite/index.js +985 -465
  798. package/dist/vite/index.js.bak +5448 -0
  799. package/dist/vite/index.js.map +1 -0
  800. package/dist/vite/index.named-routes.gen.ts +103 -0
  801. package/dist/vite/package-resolution.d.ts +43 -0
  802. package/dist/vite/package-resolution.d.ts.map +1 -0
  803. package/dist/vite/package-resolution.js +112 -0
  804. package/dist/vite/package-resolution.js.map +1 -0
  805. package/dist/vite/virtual-entries.d.ts +25 -0
  806. package/dist/vite/virtual-entries.d.ts.map +1 -0
  807. package/dist/vite/virtual-entries.js +110 -0
  808. package/dist/vite/virtual-entries.js.map +1 -0
  809. package/package.json +3 -3
  810. package/skills/breadcrumbs/SKILL.md +250 -0
  811. package/skills/cache-guide/SKILL.md +32 -0
  812. package/skills/caching/SKILL.md +49 -8
  813. package/skills/document-cache/SKILL.md +2 -2
  814. package/skills/hooks/SKILL.md +33 -31
  815. package/skills/host-router/SKILL.md +218 -0
  816. package/skills/links/SKILL.md +3 -1
  817. package/skills/loader/SKILL.md +72 -22
  818. package/skills/middleware/SKILL.md +2 -0
  819. package/skills/parallel/SKILL.md +126 -0
  820. package/skills/prerender/SKILL.md +112 -70
  821. package/skills/rango/SKILL.md +0 -1
  822. package/skills/route/SKILL.md +34 -4
  823. package/skills/router-setup/SKILL.md +95 -5
  824. package/skills/typesafety/SKILL.md +35 -23
  825. package/src/__internal.ts +92 -0
  826. package/src/bin/rango.ts +18 -0
  827. package/src/browser/app-version.ts +14 -0
  828. package/src/browser/event-controller.ts +5 -0
  829. package/src/browser/link-interceptor.ts +4 -0
  830. package/src/browser/navigation-bridge.ts +114 -18
  831. package/src/browser/navigation-client.ts +126 -44
  832. package/src/browser/navigation-store.ts +43 -8
  833. package/src/browser/navigation-transaction.ts +11 -9
  834. package/src/browser/partial-update.ts +80 -15
  835. package/src/browser/prefetch/cache.ts +166 -27
  836. package/src/browser/prefetch/fetch.ts +52 -39
  837. package/src/browser/prefetch/policy.ts +6 -0
  838. package/src/browser/prefetch/queue.ts +92 -20
  839. package/src/browser/prefetch/resource-ready.ts +77 -0
  840. package/src/browser/react/Link.tsx +70 -14
  841. package/src/browser/react/NavigationProvider.tsx +40 -4
  842. package/src/browser/react/context.ts +7 -2
  843. package/src/browser/react/use-handle.ts +9 -58
  844. package/src/browser/react/use-router.ts +21 -8
  845. package/src/browser/rsc-router.tsx +143 -59
  846. package/src/browser/scroll-restoration.ts +41 -42
  847. package/src/browser/segment-reconciler.ts +6 -1
  848. package/src/browser/server-action-bridge.ts +454 -436
  849. package/src/browser/types.ts +60 -5
  850. package/src/build/generate-manifest.ts +6 -6
  851. package/src/build/generate-route-types.ts +5 -0
  852. package/src/build/route-trie.ts +19 -3
  853. package/src/build/route-types/include-resolution.ts +8 -1
  854. package/src/build/route-types/router-processing.ts +346 -87
  855. package/src/build/route-types/scan-filter.ts +8 -1
  856. package/src/cache/cache-runtime.ts +15 -11
  857. package/src/cache/cache-scope.ts +48 -7
  858. package/src/cache/cf/cf-cache-store.ts +453 -11
  859. package/src/cache/cf/index.ts +5 -1
  860. package/src/cache/document-cache.ts +17 -7
  861. package/src/cache/index.ts +1 -0
  862. package/src/cache/taint.ts +55 -0
  863. package/src/client.rsc.tsx +2 -1
  864. package/src/client.tsx +3 -102
  865. package/src/context-var.ts +72 -2
  866. package/src/debug.ts +2 -2
  867. package/src/handle.ts +40 -0
  868. package/src/handles/breadcrumbs.ts +66 -0
  869. package/src/handles/index.ts +1 -0
  870. package/src/host/index.ts +0 -3
  871. package/src/index.rsc.ts +8 -37
  872. package/src/index.ts +44 -66
  873. package/src/prerender/store.ts +57 -15
  874. package/src/prerender.ts +138 -77
  875. package/src/reverse.ts +22 -1
  876. package/src/route-definition/dsl-helpers.ts +73 -25
  877. package/src/route-definition/helpers-types.ts +10 -6
  878. package/src/route-definition/index.ts +3 -3
  879. package/src/route-definition/redirect.ts +11 -3
  880. package/src/route-definition/resolve-handler-use.ts +149 -0
  881. package/src/route-map-builder.ts +7 -1
  882. package/src/route-types.ts +11 -0
  883. package/src/router/content-negotiation.ts +100 -1
  884. package/src/router/find-match.ts +4 -2
  885. package/src/router/handler-context.ts +108 -25
  886. package/src/router/intercept-resolution.ts +11 -4
  887. package/src/router/lazy-includes.ts +4 -1
  888. package/src/router/loader-resolution.ts +157 -22
  889. package/src/router/logging.ts +5 -2
  890. package/src/router/manifest.ts +9 -3
  891. package/src/router/match-api.ts +125 -190
  892. package/src/router/match-middleware/background-revalidation.ts +30 -2
  893. package/src/router/match-middleware/cache-lookup.ts +92 -16
  894. package/src/router/match-middleware/cache-store.ts +53 -10
  895. package/src/router/match-middleware/intercept-resolution.ts +9 -7
  896. package/src/router/match-middleware/segment-resolution.ts +61 -5
  897. package/src/router/match-result.ts +22 -15
  898. package/src/router/metrics.ts +238 -13
  899. package/src/router/middleware-types.ts +53 -12
  900. package/src/router/middleware.ts +172 -85
  901. package/src/router/navigation-snapshot.ts +182 -0
  902. package/src/router/pattern-matching.ts +20 -5
  903. package/src/router/prerender-match.ts +114 -10
  904. package/src/router/preview-match.ts +30 -102
  905. package/src/router/request-classification.ts +310 -0
  906. package/src/router/revalidation.ts +27 -7
  907. package/src/router/route-snapshot.ts +245 -0
  908. package/src/router/router-context.ts +6 -1
  909. package/src/router/router-interfaces.ts +50 -5
  910. package/src/router/router-options.ts +50 -19
  911. package/src/router/segment-resolution/fresh.ts +210 -19
  912. package/src/router/segment-resolution/helpers.ts +30 -25
  913. package/src/router/segment-resolution/loader-cache.ts +1 -0
  914. package/src/router/segment-resolution/revalidation.ts +448 -301
  915. package/src/router/segment-wrappers.ts +2 -0
  916. package/src/router/trie-matching.ts +20 -2
  917. package/src/router/types.ts +1 -0
  918. package/src/router.ts +88 -15
  919. package/src/rsc/handler.ts +550 -359
  920. package/src/rsc/index.ts +0 -20
  921. package/src/rsc/loader-fetch.ts +23 -3
  922. package/src/rsc/manifest-init.ts +5 -1
  923. package/src/rsc/progressive-enhancement.ts +35 -10
  924. package/src/rsc/rsc-rendering.ts +40 -44
  925. package/src/rsc/server-action.ts +22 -10
  926. package/src/rsc/ssr-setup.ts +128 -0
  927. package/src/rsc/types.ts +11 -1
  928. package/src/search-params.ts +16 -13
  929. package/src/segment-system.tsx +140 -4
  930. package/src/server/context.ts +148 -16
  931. package/src/server/handle-store.ts +19 -0
  932. package/src/server/loader-registry.ts +9 -8
  933. package/src/server/request-context.ts +223 -35
  934. package/src/server.ts +6 -0
  935. package/src/ssr/index.tsx +4 -0
  936. package/src/static-handler.ts +18 -6
  937. package/src/theme/index.ts +4 -13
  938. package/src/types/cache-types.ts +4 -4
  939. package/src/types/handler-context.ts +149 -49
  940. package/src/types/loader-types.ts +36 -9
  941. package/src/types/route-config.ts +17 -8
  942. package/src/types/route-entry.ts +8 -1
  943. package/src/types/segments.ts +2 -5
  944. package/src/urls/path-helper-types.ts +9 -2
  945. package/src/urls/path-helper.ts +48 -13
  946. package/src/urls/pattern-types.ts +12 -0
  947. package/src/urls/response-types.ts +16 -6
  948. package/src/use-loader.tsx +73 -4
  949. package/src/vite/discovery/bundle-postprocess.ts +61 -89
  950. package/src/vite/discovery/discover-routers.ts +23 -5
  951. package/src/vite/discovery/prerender-collection.ts +78 -15
  952. package/src/vite/discovery/state.ts +17 -13
  953. package/src/vite/index.ts +8 -3
  954. package/src/vite/plugin-types.ts +51 -79
  955. package/src/vite/plugins/client-ref-dedup.ts +115 -0
  956. package/src/vite/plugins/expose-action-id.ts +1 -3
  957. package/src/vite/plugins/expose-ids/handler-transform.ts +30 -0
  958. package/src/vite/plugins/expose-internal-ids.ts +122 -39
  959. package/src/vite/plugins/performance-tracks.ts +88 -0
  960. package/src/vite/plugins/refresh-cmd.ts +127 -0
  961. package/src/vite/plugins/version-plugin.ts +13 -1
  962. package/src/vite/rango.ts +174 -211
  963. package/src/vite/router-discovery.ts +194 -45
  964. package/src/vite/utils/banner.ts +3 -3
  965. package/src/vite/utils/prerender-utils.ts +78 -0
  966. package/src/vite/utils/shared-utils.ts +3 -2
  967. package/skills/testing/SKILL.md +0 -226
  968. package/src/route-definition/route-function.ts +0 -119
@@ -1,9 +1,70 @@
1
1
  "use client";
2
2
 
3
- import { useCallback, useContext, useEffect, useRef, useState } from "react";
3
+ import {
4
+ isValidElement,
5
+ useCallback,
6
+ useContext,
7
+ useEffect,
8
+ useMemo,
9
+ useRef,
10
+ useState,
11
+ type ReactNode,
12
+ } from "react";
4
13
  import { OutletContext, type OutletContextValue } from "./outlet-context.js";
5
14
  import type { LoaderDefinition, LoadOptions } from "./types.js";
6
15
 
16
+ /**
17
+ * Extract a specific loader's data from a content ReactNode.
18
+ *
19
+ * When a route registers loaders via loader(), the resolved data lives in
20
+ * the route's OutletProvider (rendered as <Outlet /> content). Parallel
21
+ * slots are siblings of <Outlet />, so they can't find it by walking
22
+ * the parent context chain. This helper traverses wrapper elements
23
+ * (MountContextProvider, ViewTransition, etc.) to reach the OutletProvider
24
+ * and extract the loader data directly.
25
+ */
26
+ const NOT_FOUND = Symbol("not-found");
27
+
28
+ function extractContentLoaderData(
29
+ node: ReactNode,
30
+ loaderId: string,
31
+ ): unknown | typeof NOT_FOUND {
32
+ if (!isValidElement(node)) return NOT_FOUND;
33
+ const props = node.props as Record<string, any> | undefined;
34
+ if (!props) return NOT_FOUND;
35
+
36
+ // Direct OutletProvider with loaderData
37
+ if (props.loaderData && loaderId in props.loaderData) {
38
+ return props.loaderData[loaderId];
39
+ }
40
+
41
+ // LoaderBoundary: loaderIds + loaderDataPromise (already resolved array).
42
+ // When the segment has loading(), loaderData is resolved inside
43
+ // LoaderBoundary via use(). If the promise was pre-awaited (forceAwait
44
+ // or isAction), the prop is a raw array we can index into.
45
+ if (
46
+ props.loaderIds &&
47
+ Array.isArray(props.loaderIds) &&
48
+ props.loaderDataPromise &&
49
+ !(props.loaderDataPromise instanceof Promise)
50
+ ) {
51
+ const idx = (props.loaderIds as string[]).indexOf(loaderId);
52
+ if (idx !== -1) {
53
+ const data = (props.loaderDataPromise as any[])[idx];
54
+ // loaderDataPromise entries may be { ok, data } result objects
55
+ if (data && typeof data === "object" && "ok" in data) {
56
+ return data.ok ? data.data : NOT_FOUND;
57
+ }
58
+ return data;
59
+ }
60
+ }
61
+
62
+ // Traverse into wrapper elements (MountContextProvider, ViewTransition,
63
+ // Suspense wrappers, etc.)
64
+ if (props.children) return extractContentLoaderData(props.children, loaderId);
65
+ return NOT_FOUND;
66
+ }
67
+
7
68
  /**
8
69
  * Payload returned by loader RSC requests
9
70
  */
@@ -71,19 +132,27 @@ function useLoaderInternal<T>(
71
132
  const context = useContext(OutletContext);
72
133
 
73
134
  // Get data from context (SSR/navigation)
74
- const getContextData = useCallback((): T | undefined => {
135
+ const contextData = useMemo((): T | undefined => {
75
136
  let current: OutletContextValue | null | undefined = context;
76
137
  while (current) {
77
138
  if (current.loaderData && loader.$$id in current.loaderData) {
78
139
  return current.loaderData[loader.$$id] as T;
79
140
  }
141
+ // Check content element — the route's OutletProvider is rendered as
142
+ // <Outlet /> content (a child), so its loaderData isn't in the parent
143
+ // chain. Parallel slots need to reach into it to find route-level loaders.
144
+ const contentData = extractContentLoaderData(
145
+ current.content,
146
+ loader.$$id,
147
+ );
148
+ if (contentData !== NOT_FOUND) {
149
+ return contentData as T;
150
+ }
80
151
  current = current.parent;
81
152
  }
82
153
  return undefined;
83
154
  }, [context, loader.$$id]);
84
155
 
85
- const contextData = getContextData();
86
-
87
156
  // Local state for fetched data (from load() calls)
88
157
  const [fetchedData, setFetchedData] = useState<T | undefined>(undefined);
89
158
  const [isLoading, setIsLoading] = useState(false);
@@ -6,9 +6,9 @@
6
6
  */
7
7
 
8
8
  import { resolve } from "node:path";
9
- import { createHash } from "node:crypto";
10
- import { readFileSync, writeFileSync, existsSync, mkdirSync } from "node:fs";
9
+ import { readFileSync, writeFileSync, existsSync } from "node:fs";
11
10
  import { evictHandlerCode } from "../utils/bundle-analysis.js";
11
+ import { copyStagedBuildAssets } from "../utils/prerender-utils.js";
12
12
  import type { DiscoveryState } from "./state.js";
13
13
 
14
14
  /**
@@ -17,11 +17,11 @@ import type { DiscoveryState } from "./state.js";
17
17
  */
18
18
  export function postprocessBundle(state: DiscoveryState): void {
19
19
  const hasPrerenderData =
20
- state.prerenderCollectedData &&
21
- Object.keys(state.prerenderCollectedData).length > 0;
20
+ state.prerenderManifestEntries &&
21
+ Object.keys(state.prerenderManifestEntries).length > 0;
22
22
  const hasStaticData =
23
- state.staticCollectedData &&
24
- Object.keys(state.staticCollectedData).length > 0;
23
+ state.staticManifestEntries &&
24
+ Object.keys(state.staticManifestEntries).length > 0;
25
25
  if (!hasPrerenderData && !hasStaticData) return;
26
26
 
27
27
  // Find RSC entry (recorded in generateBundle, fallback to dist/rsc/index.js)
@@ -31,25 +31,25 @@ export function postprocessBundle(state: DiscoveryState): void {
31
31
  state.rscEntryFileName ?? "index.js",
32
32
  );
33
33
 
34
- // 1. Evict handler code from __prerender-handlers and __static-handlers chunks.
35
- // handlerChunkInfo/staticHandlerChunkInfo are populated by generateBundle
34
+ // 1. Evict handler code from whichever chunks contain handler exports.
35
+ // handlerChunkInfoMap/staticHandlerChunkInfoMap are populated by generateBundle
36
36
  // after the production RSC build. In Vite 6 multi-environment builds, the
37
- // RSC build runs twice (analysis + production). Chunk info is only available
38
- // after the production pass, so we run eviction whenever it becomes available.
37
+ // RSC build runs twice (analysis + production). The maps are cleared at the
38
+ // start of each generateBundle pass so only production data is used here.
39
39
  const evictionTargets: Array<{
40
- info: typeof state.handlerChunkInfo;
40
+ infos: Iterable<import("./state.js").ChunkInfo>;
41
41
  fnName: string;
42
42
  brand: string;
43
43
  label: string;
44
44
  }> = [
45
45
  {
46
- info: state.handlerChunkInfo,
46
+ infos: state.handlerChunkInfoMap.values(),
47
47
  fnName: "Prerender",
48
48
  brand: "prerenderHandler",
49
49
  label: "handler code from RSC bundle",
50
50
  },
51
51
  {
52
- info: state.staticHandlerChunkInfo,
52
+ infos: state.staticHandlerChunkInfoMap.values(),
53
53
  fnName: "Static",
54
54
  brand: "staticHandler",
55
55
  label: "static handler code",
@@ -57,70 +57,58 @@ export function postprocessBundle(state: DiscoveryState): void {
57
57
  ];
58
58
 
59
59
  for (const target of evictionTargets) {
60
- if (!target.info) continue;
61
- const chunkPath = resolve(
62
- state.projectRoot,
63
- "dist/rsc",
64
- target.info.fileName,
65
- );
66
- try {
67
- const code = readFileSync(chunkPath, "utf-8");
68
- const result = evictHandlerCode(
69
- code,
70
- target.info.exports,
71
- target.fnName,
72
- target.brand,
73
- );
74
- if (result) {
75
- writeFileSync(chunkPath, result.code);
76
- const savedKB = (result.savedBytes / 1024).toFixed(1);
77
- console.log(
78
- `[rsc-router] Evicted ${target.label} (${savedKB} KB saved): ${target.info.fileName}`,
60
+ for (const info of target.infos) {
61
+ const chunkPath = resolve(state.projectRoot, "dist/rsc", info.fileName);
62
+ try {
63
+ const code = readFileSync(chunkPath, "utf-8");
64
+ const result = evictHandlerCode(
65
+ code,
66
+ info.exports,
67
+ target.fnName,
68
+ target.brand,
69
+ );
70
+ if (result) {
71
+ writeFileSync(chunkPath, result.code);
72
+ const savedKB = (result.savedBytes / 1024).toFixed(1);
73
+ console.log(
74
+ `[rsc-router] Evicted ${target.label} (${savedKB} KB saved): ${info.fileName}`,
75
+ );
76
+ }
77
+ } catch (replaceErr: any) {
78
+ console.warn(
79
+ `[rsc-router] Failed to evict ${target.label}: ${replaceErr.message}`,
79
80
  );
80
81
  }
81
- } catch (replaceErr: any) {
82
- console.warn(
83
- `[rsc-router] Failed to evict ${target.label}: ${replaceErr.message}`,
84
- );
85
82
  }
86
83
  }
87
- state.handlerChunkInfo = null;
88
- state.staticHandlerChunkInfo = null;
84
+ state.handlerChunkInfoMap.clear();
85
+ state.staticHandlerChunkInfoMap.clear();
89
86
 
90
87
  // 2. Write prerender data as separate importable asset modules
91
- // and inject a manifest import into the RSC entry.
88
+ // and inject a lazy manifest loader into the RSC entry.
92
89
  if (hasPrerenderData && existsSync(rscEntryPath)) {
93
90
  const rscCode = readFileSync(rscEntryPath, "utf-8");
94
- // Check for the specific injection marker, not just the variable name.
95
- // The runtime code (prerender store) also references __PRERENDER_MANIFEST,
96
- // so a broad string check would false-positive and skip injection.
91
+ // Check for the specific injection marker to avoid double-injection.
97
92
  if (!rscCode.includes("__prerender-manifest.js")) {
98
93
  try {
99
- const assetsDir = resolve(state.projectRoot, "dist/rsc/assets");
100
- mkdirSync(assetsDir, { recursive: true });
101
-
102
- const manifestEntries: string[] = [];
103
- let totalBytes = 0;
94
+ let totalBytes = copyStagedBuildAssets(
95
+ state.projectRoot,
96
+ Object.values(state.prerenderManifestEntries!),
97
+ );
104
98
 
105
- for (const [key, entry] of Object.entries(
106
- state.prerenderCollectedData!,
99
+ const manifestMap: Record<string, string> = {};
100
+ for (const [key, assetFileName] of Object.entries(
101
+ state.prerenderManifestEntries!,
107
102
  )) {
108
- const entryJson = JSON.stringify(entry);
109
- const contentHash = createHash("sha256")
110
- .update(entryJson)
111
- .digest("hex")
112
- .slice(0, 8);
113
- const assetFileName = `__pr-${contentHash}.js`;
114
- const assetPath = resolve(assetsDir, assetFileName);
115
- const assetCode = `export default ${entryJson};\n`;
116
- writeFileSync(assetPath, assetCode);
117
- totalBytes += Buffer.byteLength(assetCode);
118
- manifestEntries.push(
119
- `${JSON.stringify(key)}:()=>import("./assets/${assetFileName}")`,
120
- );
103
+ manifestMap[key] = `./assets/${assetFileName}`;
121
104
  }
122
105
 
123
- const manifestCode = `const m={${manifestEntries.join(",")}};export default m;\n`;
106
+ const manifestCode = [
107
+ `const m=JSON.parse('${JSON.stringify(manifestMap).replace(/'/g, "\\'")}');`,
108
+ `export function loadPrerenderAsset(s){return import(s)}`,
109
+ `export default m;`,
110
+ "",
111
+ ].join("\n");
124
112
  const manifestPath = resolve(
125
113
  state.projectRoot,
126
114
  "dist/rsc/__prerender-manifest.js",
@@ -128,12 +116,12 @@ export function postprocessBundle(state: DiscoveryState): void {
128
116
  writeFileSync(manifestPath, manifestCode);
129
117
  totalBytes += Buffer.byteLength(manifestCode);
130
118
 
131
- const injection = `import __pm from "./__prerender-manifest.js";\nglobalThis.__PRERENDER_MANIFEST = __pm;\n`;
119
+ const injection = `globalThis.__loadPrerenderManifestModule = () => import("./__prerender-manifest.js");\n`;
132
120
  writeFileSync(rscEntryPath, injection + rscCode);
133
121
 
134
122
  const totalKB = (totalBytes / 1024).toFixed(1);
135
123
  console.log(
136
- `[rsc-router] Wrote prerender assets (${totalKB} KB total, ${Object.keys(state.prerenderCollectedData!).length} entries)`,
124
+ `[rsc-router] Wrote prerender assets (${totalKB} KB total, ${Object.keys(state.prerenderManifestEntries!).length} entries)`,
137
125
  );
138
126
  } catch (err: any) {
139
127
  throw new Error(
@@ -147,33 +135,17 @@ export function postprocessBundle(state: DiscoveryState): void {
147
135
  // and inject a __STATIC_MANIFEST import into the RSC entry.
148
136
  if (hasStaticData && existsSync(rscEntryPath)) {
149
137
  const rscCode = readFileSync(rscEntryPath, "utf-8");
150
- if (!rscCode.includes("__STATIC_MANIFEST")) {
138
+ if (!rscCode.includes("__static-manifest.js")) {
151
139
  try {
152
- const assetsDir = resolve(state.projectRoot, "dist/rsc/assets");
153
- mkdirSync(assetsDir, { recursive: true });
154
-
155
140
  const manifestEntries: string[] = [];
156
- let totalBytes = 0;
141
+ let totalBytes = copyStagedBuildAssets(
142
+ state.projectRoot,
143
+ Object.values(state.staticManifestEntries!),
144
+ );
157
145
 
158
- for (const [handlerId, { encoded, handles }] of Object.entries(
159
- state.staticCollectedData!,
146
+ for (const [handlerId, assetFileName] of Object.entries(
147
+ state.staticManifestEntries!,
160
148
  )) {
161
- // Store both the Flight payload and handle data
162
- const hasHandles = Object.keys(handles).length > 0;
163
- const exportValue = hasHandles
164
- ? JSON.stringify({ encoded, handles })
165
- : JSON.stringify(encoded);
166
- // Hash the full payload that is written so distinct handle
167
- // snapshots produce distinct asset filenames.
168
- const contentHash = createHash("sha256")
169
- .update(exportValue)
170
- .digest("hex")
171
- .slice(0, 8);
172
- const assetFileName = `__st-${contentHash}.js`;
173
- const assetPath = resolve(assetsDir, assetFileName);
174
- const assetCode = `export default ${exportValue};\n`;
175
- writeFileSync(assetPath, assetCode);
176
- totalBytes += Buffer.byteLength(assetCode);
177
149
  manifestEntries.push(
178
150
  `${JSON.stringify(handlerId)}:()=>import("./assets/${assetFileName}")`,
179
151
  );
@@ -197,7 +169,7 @@ export function postprocessBundle(state: DiscoveryState): void {
197
169
 
198
170
  const totalKB = (totalBytes / 1024).toFixed(1);
199
171
  console.log(
200
- `[rsc-router] Wrote static assets (${totalKB} KB total, ${Object.keys(state.staticCollectedData!).length} entries)`,
172
+ `[rsc-router] Wrote static assets (${totalKB} KB total, ${Object.keys(state.staticManifestEntries!).length} entries)`,
201
173
  );
202
174
  } catch (err: any) {
203
175
  throw new Error(
@@ -6,7 +6,11 @@
6
6
  * router, and builds route tries for O(path_length) matching.
7
7
  */
8
8
 
9
- import { buildCombinedRouteMapForRouterFile } from "../../build/generate-route-types.js";
9
+ import {
10
+ buildCombinedRouteMapForRouterFile,
11
+ formatNestedRouterConflictError,
12
+ findNestedRouterConflict,
13
+ } from "../../build/generate-route-types.js";
10
14
  import {
11
15
  flattenLeafEntries,
12
16
  buildRouteToStaticPrefix,
@@ -44,9 +48,8 @@ export async function discoverRouters(
44
48
  // No RSC routers found directly. Check for host routers with lazy handlers
45
49
  // that need to be resolved to trigger sub-app createRouter() calls.
46
50
  try {
47
- const hostMod = await rscEnv.runner.import("@rangojs/router/host");
48
51
  const hostRegistry: Map<string, any> | undefined =
49
- hostMod.HostRouterRegistry;
52
+ serverMod.HostRouterRegistry;
50
53
 
51
54
  if (hostRegistry && hostRegistry.size > 0) {
52
55
  console.log(
@@ -85,7 +88,7 @@ export async function discoverRouters(
85
88
  }
86
89
  }
87
90
  } catch {
88
- // @rangojs/router/host not available or import failed, skip
91
+ // Host-router discovery is best-effort; skip if unavailable
89
92
  }
90
93
 
91
94
  // If still no routers after host router resolution, fail
@@ -100,6 +103,17 @@ export async function discoverRouters(
100
103
  const buildMod = await rscEnv.runner.import("@rangojs/router/build");
101
104
  const generateManifestFull = buildMod.generateManifestFull;
102
105
 
106
+ const nestedRouterConflict = findNestedRouterConflict(
107
+ [...registry.values()]
108
+ .map((router) => router.__sourceFile)
109
+ .filter(
110
+ (sourceFile): sourceFile is string => typeof sourceFile === "string",
111
+ ),
112
+ );
113
+ if (nestedRouterConflict) {
114
+ throw new Error(formatNestedRouterConflictError(nestedRouterConflict));
115
+ }
116
+
103
117
  // Build into local variables first. Only commit to state after the
104
118
  // full pass succeeds, so a failed re-discovery preserves the last
105
119
  // known-good state instead of leaving it partially wiped.
@@ -121,7 +135,11 @@ export async function discoverRouters(
121
135
  continue;
122
136
  }
123
137
 
124
- const manifest = generateManifestFull(router.urlpatterns, routerMountIndex);
138
+ const manifest = generateManifestFull(
139
+ router.urlpatterns,
140
+ routerMountIndex,
141
+ router.__basename ? { urlPrefix: router.__basename } : undefined,
142
+ );
125
143
  routerMountIndex++;
126
144
  allManifests.push({ id, manifest });
127
145
  const routeCount = Object.keys(manifest.routeManifest).length;
@@ -13,12 +13,14 @@ import {
13
13
  runWithConcurrency,
14
14
  groupByConcurrency,
15
15
  notifyOnError,
16
+ stageBuildAssetModule,
16
17
  } from "../utils/prerender-utils.js";
17
18
  import type { DiscoveryState } from "./state.js";
18
19
 
19
20
  /**
20
21
  * Expand prerender routes into concrete URLs and render them via the
21
- * RSC runner. Stores collected data in state.prerenderCollectedData.
22
+ * RSC runner. Stages asset modules and stores key-to-file entries in
23
+ * state.prerenderManifestEntries.
22
24
  */
23
25
  export async function expandPrerenderRoutes(
24
26
  state: DiscoveryState,
@@ -49,14 +51,41 @@ export async function expandPrerenderRoutes(
49
51
  return substituteRouteParams(pattern, params);
50
52
  };
51
53
 
54
+ let resolvedRoutes = 0;
55
+ let totalDynamic = 0;
56
+
57
+ // Count dynamic routes upfront for progress reporting
58
+ for (const { manifest } of allManifests) {
59
+ if (!manifest.prerenderRoutes) continue;
60
+ for (const routeName of manifest.prerenderRoutes) {
61
+ const pattern = manifest.routeManifest[routeName];
62
+ if (pattern && (pattern.includes(":") || pattern.includes("*"))) {
63
+ totalDynamic++;
64
+ }
65
+ }
66
+ }
67
+
68
+ // Periodic progress log so long getParams() calls don't look stalled
69
+ const paramsStart = performance.now();
70
+ const progressInterval =
71
+ totalDynamic > 0
72
+ ? setInterval(() => {
73
+ const elapsed = ((performance.now() - paramsStart) / 1000).toFixed(1);
74
+ console.log(
75
+ `[rsc-router] Resolving prerender params... ${resolvedRoutes}/${totalDynamic} routes (${elapsed}s)`,
76
+ );
77
+ }, 5000)
78
+ : undefined;
79
+
52
80
  for (const { manifest } of allManifests) {
53
81
  if (!manifest.prerenderRoutes) continue;
54
82
  const defs = manifest._prerenderDefs || {};
83
+ const passthroughSet = new Set(manifest.passthroughRoutes || []);
55
84
  for (const routeName of manifest.prerenderRoutes) {
56
85
  const pattern = manifest.routeManifest[routeName];
57
86
  if (!pattern) continue;
58
87
  const def = defs[routeName];
59
- const isPassthroughRoute = !!def?.options?.passthrough;
88
+ const isPassthroughRoute = passthroughSet.has(routeName);
60
89
  const hasDynamic = pattern.includes(":") || pattern.includes("*");
61
90
  if (!hasDynamic) {
62
91
  // Static route: use pattern directly (strip trailing slash for URL)
@@ -71,12 +100,21 @@ export async function expandPrerenderRoutes(
71
100
  if (def?.getParams) {
72
101
  try {
73
102
  const buildVars: Record<string, any> = {};
103
+ const buildEnv = state.resolvedBuildEnv;
74
104
  const getParamsCtx = {
75
105
  build: true as const,
106
+ dev: !state.isBuildMode,
76
107
  set: ((keyOrVar: any, value: any) => {
77
108
  contextSet(buildVars, keyOrVar, value);
78
109
  }) as any,
79
110
  reverse: getParamsReverse,
111
+ get env() {
112
+ if (buildEnv !== undefined) return buildEnv;
113
+ throw new Error(
114
+ "[rsc-router] ctx.env is not available during build-time getParams(). " +
115
+ "Configure buildEnv in your rango() plugin options to enable build-time env access.",
116
+ );
117
+ },
80
118
  };
81
119
  const paramsList = await def.getParams(getParamsCtx);
82
120
  const concurrency = def.options?.concurrency ?? 1;
@@ -106,7 +144,9 @@ export async function expandPrerenderRoutes(
106
144
  isPassthroughRoute,
107
145
  });
108
146
  }
147
+ resolvedRoutes++;
109
148
  } catch (err: any) {
149
+ resolvedRoutes++;
110
150
  // Skip in getParams() skips the entire route
111
151
  if (err.name === "Skip") {
112
152
  console.log(
@@ -138,6 +178,8 @@ export async function expandPrerenderRoutes(
138
178
  }
139
179
  }
140
180
 
181
+ if (progressInterval) clearInterval(progressInterval);
182
+
141
183
  if (entries.length === 0) return;
142
184
 
143
185
  // Determine the max concurrency for the log header
@@ -150,7 +192,7 @@ export async function expandPrerenderRoutes(
150
192
 
151
193
  const { hashParams } = await rscEnv.runner.import("@rangojs/router/build");
152
194
 
153
- const collectedData: Record<string, any> = {};
195
+ const manifestEntries: Record<string, string> = {};
154
196
  let doneCount = 0;
155
197
  let skipCount = 0;
156
198
  const startTotal = performance.now();
@@ -173,6 +215,7 @@ export async function expandPrerenderRoutes(
173
215
  {},
174
216
  entry.buildVars,
175
217
  entry.isPassthroughRoute,
218
+ state.resolvedBuildEnv,
176
219
  );
177
220
  if (!result) continue;
178
221
 
@@ -187,18 +230,30 @@ export async function expandPrerenderRoutes(
187
230
  }
188
231
 
189
232
  const paramHash = hashParams(result.params || {});
190
- collectedData[`${result.routeName}/${paramHash}`] = {
233
+ const mainKey = `${result.routeName}/${paramHash}`;
234
+ const mainValue = JSON.stringify({
191
235
  segments: result.segments,
192
236
  handles: result.handles,
193
- };
237
+ });
238
+ manifestEntries[mainKey] = stageBuildAssetModule(
239
+ state.projectRoot,
240
+ "__pr",
241
+ mainValue,
242
+ );
194
243
  if (result.interceptSegments?.length) {
195
- collectedData[`${result.routeName}/${paramHash}/i`] = {
244
+ const interceptKey = `${result.routeName}/${paramHash}/i`;
245
+ const interceptValue = JSON.stringify({
196
246
  segments: [...result.segments, ...result.interceptSegments],
197
247
  handles: {
198
248
  ...result.handles,
199
249
  ...(result.interceptHandles || {}),
200
250
  },
201
- };
251
+ });
252
+ manifestEntries[interceptKey] = stageBuildAssetModule(
253
+ state.projectRoot,
254
+ "__pr",
255
+ interceptValue,
256
+ );
202
257
  }
203
258
  const elapsed = (performance.now() - startUrl).toFixed(0);
204
259
  console.log(
@@ -244,7 +299,7 @@ export async function expandPrerenderRoutes(
244
299
 
245
300
  const totalElapsed = (performance.now() - startTotal).toFixed(0);
246
301
  if (doneCount > 0) {
247
- state.prerenderCollectedData = collectedData;
302
+ state.prerenderManifestEntries = manifestEntries;
248
303
  }
249
304
  const parts = [`${doneCount} done`];
250
305
  if (skipCount > 0) parts.push(`${skipCount} skipped`);
@@ -256,7 +311,8 @@ export async function expandPrerenderRoutes(
256
311
  /**
257
312
  * Render Static handlers at build time. Each Static handler is called
258
313
  * with a synthetic BuildContext and its output is RSC-serialized.
259
- * Stores collected data in state.staticCollectedData.
314
+ * Stages asset modules and stores handlerId-to-file entries in
315
+ * state.staticManifestEntries.
260
316
  */
261
317
  export async function renderStaticHandlers(
262
318
  state: DiscoveryState,
@@ -270,10 +326,7 @@ export async function renderStaticHandlers(
270
326
  )
271
327
  return;
272
328
 
273
- const collected: Record<
274
- string,
275
- { encoded: string; handles: Record<string, unknown[]> }
276
- > = {};
329
+ const manifestEntries: Record<string, string> = {};
277
330
  let staticDone = 0;
278
331
  let staticSkip = 0;
279
332
  let totalStaticCount = 0;
@@ -314,9 +367,19 @@ export async function renderStaticHandlers(
314
367
  def.handler,
315
368
  def.$$id,
316
369
  (def as any).$$routePrefix,
370
+ state.resolvedBuildEnv,
371
+ !state.isBuildMode,
317
372
  );
318
373
  if (result) {
319
- collected[def.$$id] = result;
374
+ const hasHandles = Object.keys(result.handles).length > 0;
375
+ const exportValue = hasHandles
376
+ ? JSON.stringify(result)
377
+ : JSON.stringify(result.encoded);
378
+ manifestEntries[def.$$id] = stageBuildAssetModule(
379
+ state.projectRoot,
380
+ "__st",
381
+ exportValue,
382
+ );
320
383
  const elapsed = (performance.now() - startHandler).toFixed(0);
321
384
  console.log(
322
385
  `[rsc-router] OK ${name.padEnd(40)} (${elapsed}ms)`,
@@ -355,7 +418,7 @@ export async function renderStaticHandlers(
355
418
 
356
419
  const totalStaticElapsed = (performance.now() - startStatic).toFixed(0);
357
420
  if (staticDone > 0) {
358
- state.staticCollectedData = collected;
421
+ state.staticManifestEntries = manifestEntries;
359
422
  }
360
423
  const staticParts = [`${staticDone} done`];
361
424
  if (staticSkip > 0) staticParts.push(`${staticSkip} skipped`);
@@ -13,11 +13,13 @@ export const VIRTUAL_ROUTES_MANIFEST_ID = "virtual:rsc-router/routes-manifest";
13
13
  export interface PluginOptions {
14
14
  enableBuildPrerender?: boolean;
15
15
  staticRouteTypesGeneration?: boolean;
16
- include?: string[];
17
- exclude?: string[];
18
16
  // Mutable ref for deferred auto-discovery (node preset).
19
17
  // The auto-discover config() hook populates this before configResolved.
20
18
  routerPathRef?: { path?: string };
19
+ /** Build-time env option from rango() config. */
20
+ buildEnv?: import("../plugin-types.js").BuildEnvOption;
21
+ /** Deployment preset (needed for buildEnv "auto" resolution). */
22
+ preset?: "node" | "cloudflare";
21
23
  }
22
24
 
23
25
  export interface PrecomputedEntry {
@@ -56,13 +58,10 @@ export interface DiscoveryState {
56
58
  perRouterPrecomputedMap: Map<string, PrecomputedEntry[]>;
57
59
  perRouterManifestDataMap: Map<string, Record<string, string>>;
58
60
 
59
- prerenderCollectedData: Record<string, any> | null;
60
- staticCollectedData: Record<
61
- string,
62
- { encoded: string; handles: Record<string, unknown[]> }
63
- > | null;
64
- handlerChunkInfo: ChunkInfo | null;
65
- staticHandlerChunkInfo: ChunkInfo | null;
61
+ prerenderManifestEntries: Record<string, string> | null;
62
+ staticManifestEntries: Record<string, string> | null;
63
+ handlerChunkInfoMap: Map<string, ChunkInfo>;
64
+ staticHandlerChunkInfoMap: Map<string, ChunkInfo>;
66
65
  rscEntryFileName: string | null;
67
66
  resolvedPrerenderModules: Map<string, string[]> | undefined;
68
67
  resolvedStaticModules: Map<string, string[]> | undefined;
@@ -72,6 +71,11 @@ export interface DiscoveryState {
72
71
  devServer: any;
73
72
  selfWrittenGenFiles: Map<string, { at: number; hash: string }>;
74
73
  SELF_WRITE_WINDOW_MS: number;
74
+
75
+ /** Resolved build-time env bindings (set during buildStart/configureServer). */
76
+ resolvedBuildEnv?: Record<string, unknown>;
77
+ /** Cleanup function for build-time env resources (e.g., miniflare). */
78
+ buildEnvDispose?: (() => Promise<void> | void) | null;
75
79
  }
76
80
 
77
81
  export function createDiscoveryState(
@@ -96,10 +100,10 @@ export function createDiscoveryState(
96
100
  perRouterPrecomputedMap: new Map(),
97
101
  perRouterManifestDataMap: new Map(),
98
102
 
99
- prerenderCollectedData: null,
100
- staticCollectedData: null,
101
- handlerChunkInfo: null,
102
- staticHandlerChunkInfo: null,
103
+ prerenderManifestEntries: null,
104
+ staticManifestEntries: null,
105
+ handlerChunkInfoMap: new Map(),
106
+ staticHandlerChunkInfoMap: new Map(),
103
107
  rscEntryFileName: null,
104
108
  resolvedPrerenderModules: undefined,
105
109
  resolvedStaticModules: undefined,