@rangojs/router 0.0.0-experimental.760a71d9 → 0.0.0-experimental.78

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 (932) hide show
  1. package/README.md +76 -18
  2. package/dist/bin/rango.js +130 -47
  3. package/dist/vite/index.js +716 -237
  4. package/package.json +3 -3
  5. package/skills/cache-guide/SKILL.md +32 -0
  6. package/skills/caching/SKILL.md +8 -0
  7. package/skills/handler-use/SKILL.md +362 -0
  8. package/skills/intercept/SKILL.md +20 -0
  9. package/skills/layout/SKILL.md +22 -0
  10. package/skills/links/SKILL.md +3 -1
  11. package/skills/loader/SKILL.md +53 -43
  12. package/skills/middleware/SKILL.md +34 -3
  13. package/skills/migrate-nextjs/SKILL.md +560 -0
  14. package/skills/migrate-react-router/SKILL.md +764 -0
  15. package/skills/parallel/SKILL.md +126 -0
  16. package/skills/prerender/SKILL.md +110 -68
  17. package/skills/rango/SKILL.md +24 -22
  18. package/skills/route/SKILL.md +55 -0
  19. package/skills/router-setup/SKILL.md +87 -2
  20. package/skills/typesafety/SKILL.md +10 -0
  21. package/src/__internal.ts +1 -1
  22. package/src/browser/app-version.ts +14 -0
  23. package/src/browser/navigation-bridge.ts +37 -5
  24. package/src/browser/navigation-client.ts +98 -46
  25. package/src/browser/navigation-store.ts +43 -8
  26. package/src/browser/partial-update.ts +41 -7
  27. package/src/browser/prefetch/cache.ts +16 -6
  28. package/src/browser/prefetch/fetch.ts +68 -6
  29. package/src/browser/prefetch/queue.ts +61 -29
  30. package/src/browser/prefetch/resource-ready.ts +77 -0
  31. package/src/browser/react/Link.tsx +67 -8
  32. package/src/browser/react/NavigationProvider.tsx +13 -4
  33. package/src/browser/react/context.ts +7 -2
  34. package/src/browser/react/use-handle.ts +9 -58
  35. package/src/browser/react/use-router.ts +21 -8
  36. package/src/browser/rsc-router.tsx +26 -3
  37. package/src/browser/scroll-restoration.ts +10 -8
  38. package/src/browser/segment-reconciler.ts +36 -14
  39. package/src/browser/server-action-bridge.ts +8 -6
  40. package/src/browser/types.ts +27 -5
  41. package/src/build/generate-manifest.ts +6 -6
  42. package/src/build/generate-route-types.ts +3 -0
  43. package/src/build/route-trie.ts +50 -24
  44. package/src/build/route-types/include-resolution.ts +8 -1
  45. package/src/build/route-types/router-processing.ts +211 -72
  46. package/src/build/route-types/scan-filter.ts +8 -1
  47. package/src/cache/cache-scope.ts +46 -5
  48. package/src/cache/taint.ts +55 -0
  49. package/src/client.tsx +84 -230
  50. package/src/context-var.ts +72 -2
  51. package/src/handle.ts +40 -0
  52. package/src/index.rsc.ts +3 -1
  53. package/src/index.ts +46 -6
  54. package/src/prerender/store.ts +5 -4
  55. package/src/prerender.ts +138 -77
  56. package/src/reverse.ts +25 -1
  57. package/src/route-definition/dsl-helpers.ts +194 -32
  58. package/src/route-definition/helpers-types.ts +67 -19
  59. package/src/route-definition/index.ts +3 -0
  60. package/src/route-definition/redirect.ts +9 -1
  61. package/src/route-definition/resolve-handler-use.ts +149 -0
  62. package/src/route-types.ts +11 -0
  63. package/src/router/content-negotiation.ts +100 -1
  64. package/src/router/handler-context.ts +82 -23
  65. package/src/router/intercept-resolution.ts +9 -4
  66. package/src/router/loader-resolution.ts +156 -21
  67. package/src/router/match-api.ts +124 -189
  68. package/src/router/match-middleware/background-revalidation.ts +12 -1
  69. package/src/router/match-middleware/cache-lookup.ts +40 -13
  70. package/src/router/match-middleware/cache-store.ts +21 -4
  71. package/src/router/match-middleware/segment-resolution.ts +53 -0
  72. package/src/router/match-result.ts +82 -4
  73. package/src/router/middleware-types.ts +6 -8
  74. package/src/router/middleware.ts +2 -5
  75. package/src/router/navigation-snapshot.ts +182 -0
  76. package/src/router/prerender-match.ts +110 -10
  77. package/src/router/preview-match.ts +30 -102
  78. package/src/router/request-classification.ts +310 -0
  79. package/src/router/route-snapshot.ts +245 -0
  80. package/src/router/router-context.ts +1 -0
  81. package/src/router/router-interfaces.ts +36 -4
  82. package/src/router/router-options.ts +37 -11
  83. package/src/router/segment-resolution/fresh.ts +80 -9
  84. package/src/router/segment-resolution/helpers.ts +29 -24
  85. package/src/router/segment-resolution/revalidation.ts +91 -8
  86. package/src/router/types.ts +1 -0
  87. package/src/router.ts +54 -5
  88. package/src/rsc/handler.ts +472 -372
  89. package/src/rsc/loader-fetch.ts +23 -3
  90. package/src/rsc/manifest-init.ts +5 -1
  91. package/src/rsc/progressive-enhancement.ts +14 -2
  92. package/src/rsc/rsc-rendering.ts +10 -1
  93. package/src/rsc/server-action.ts +8 -0
  94. package/src/rsc/ssr-setup.ts +2 -2
  95. package/src/rsc/types.ts +9 -1
  96. package/src/segment-content-promise.ts +67 -0
  97. package/src/segment-loader-promise.ts +122 -0
  98. package/src/segment-system.tsx +11 -61
  99. package/src/server/context.ts +50 -1
  100. package/src/server/handle-store.ts +19 -0
  101. package/src/server/loader-registry.ts +9 -8
  102. package/src/server/request-context.ts +175 -15
  103. package/src/ssr/index.tsx +3 -0
  104. package/src/static-handler.ts +18 -6
  105. package/src/types/cache-types.ts +4 -4
  106. package/src/types/handler-context.ts +37 -19
  107. package/src/types/loader-types.ts +36 -9
  108. package/src/types/route-entry.ts +1 -1
  109. package/src/types/segments.ts +1 -1
  110. package/src/urls/path-helper-types.ts +39 -6
  111. package/src/urls/path-helper.ts +47 -12
  112. package/src/urls/pattern-types.ts +12 -0
  113. package/src/urls/response-types.ts +16 -6
  114. package/src/use-loader.tsx +77 -5
  115. package/src/vite/discovery/bundle-postprocess.ts +30 -33
  116. package/src/vite/discovery/discover-routers.ts +5 -1
  117. package/src/vite/discovery/prerender-collection.ts +128 -74
  118. package/src/vite/discovery/state.ts +13 -4
  119. package/src/vite/index.ts +4 -0
  120. package/src/vite/plugin-types.ts +60 -5
  121. package/src/vite/plugins/expose-id-utils.ts +12 -0
  122. package/src/vite/plugins/expose-ids/handler-transform.ts +30 -0
  123. package/src/vite/plugins/expose-internal-ids.ts +257 -40
  124. package/src/vite/plugins/performance-tracks.ts +88 -0
  125. package/src/vite/plugins/refresh-cmd.ts +88 -26
  126. package/src/vite/rango.ts +19 -2
  127. package/src/vite/router-discovery.ts +178 -37
  128. package/src/vite/utils/prerender-utils.ts +37 -5
  129. package/src/vite/utils/shared-utils.ts +3 -2
  130. package/dist/__internal.d.ts +0 -83
  131. package/dist/__internal.d.ts.map +0 -1
  132. package/dist/__internal.js +0 -19
  133. package/dist/__internal.js.map +0 -1
  134. package/dist/__mocks__/version.d.ts +0 -7
  135. package/dist/__mocks__/version.d.ts.map +0 -1
  136. package/dist/__mocks__/version.js +0 -7
  137. package/dist/__mocks__/version.js.map +0 -1
  138. package/dist/__tests__/client-href.test.d.ts +0 -2
  139. package/dist/__tests__/client-href.test.d.ts.map +0 -1
  140. package/dist/__tests__/client-href.test.js +0 -74
  141. package/dist/__tests__/client-href.test.js.map +0 -1
  142. package/dist/__tests__/component-utils.test.d.ts +0 -2
  143. package/dist/__tests__/component-utils.test.d.ts.map +0 -1
  144. package/dist/__tests__/component-utils.test.js +0 -51
  145. package/dist/__tests__/component-utils.test.js.map +0 -1
  146. package/dist/__tests__/event-controller.test.d.ts +0 -2
  147. package/dist/__tests__/event-controller.test.d.ts.map +0 -1
  148. package/dist/__tests__/event-controller.test.js +0 -538
  149. package/dist/__tests__/event-controller.test.js.map +0 -1
  150. package/dist/__tests__/helpers/route-tree.d.ts +0 -118
  151. package/dist/__tests__/helpers/route-tree.d.ts.map +0 -1
  152. package/dist/__tests__/helpers/route-tree.js +0 -374
  153. package/dist/__tests__/helpers/route-tree.js.map +0 -1
  154. package/dist/__tests__/match-result.test.d.ts +0 -2
  155. package/dist/__tests__/match-result.test.d.ts.map +0 -1
  156. package/dist/__tests__/match-result.test.js +0 -154
  157. package/dist/__tests__/match-result.test.js.map +0 -1
  158. package/dist/__tests__/navigation-store.test.d.ts +0 -2
  159. package/dist/__tests__/navigation-store.test.d.ts.map +0 -1
  160. package/dist/__tests__/navigation-store.test.js +0 -440
  161. package/dist/__tests__/navigation-store.test.js.map +0 -1
  162. package/dist/__tests__/partial-update.test.d.ts +0 -2
  163. package/dist/__tests__/partial-update.test.d.ts.map +0 -1
  164. package/dist/__tests__/partial-update.test.js +0 -1009
  165. package/dist/__tests__/partial-update.test.js.map +0 -1
  166. package/dist/__tests__/reverse-types.test.d.ts +0 -8
  167. package/dist/__tests__/reverse-types.test.d.ts.map +0 -1
  168. package/dist/__tests__/reverse-types.test.js +0 -656
  169. package/dist/__tests__/reverse-types.test.js.map +0 -1
  170. package/dist/__tests__/route-definition.test.d.ts +0 -2
  171. package/dist/__tests__/route-definition.test.d.ts.map +0 -1
  172. package/dist/__tests__/route-definition.test.js +0 -55
  173. package/dist/__tests__/route-definition.test.js.map +0 -1
  174. package/dist/__tests__/router-helpers.test.d.ts +0 -2
  175. package/dist/__tests__/router-helpers.test.d.ts.map +0 -1
  176. package/dist/__tests__/router-helpers.test.js +0 -377
  177. package/dist/__tests__/router-helpers.test.js.map +0 -1
  178. package/dist/__tests__/router-integration-2.test.d.ts +0 -2
  179. package/dist/__tests__/router-integration-2.test.d.ts.map +0 -1
  180. package/dist/__tests__/router-integration-2.test.js +0 -426
  181. package/dist/__tests__/router-integration-2.test.js.map +0 -1
  182. package/dist/__tests__/router-integration.test.d.ts +0 -2
  183. package/dist/__tests__/router-integration.test.d.ts.map +0 -1
  184. package/dist/__tests__/router-integration.test.js +0 -1051
  185. package/dist/__tests__/router-integration.test.js.map +0 -1
  186. package/dist/__tests__/search-params.test.d.ts +0 -5
  187. package/dist/__tests__/search-params.test.d.ts.map +0 -1
  188. package/dist/__tests__/search-params.test.js +0 -306
  189. package/dist/__tests__/search-params.test.js.map +0 -1
  190. package/dist/__tests__/segment-system.test.d.ts +0 -2
  191. package/dist/__tests__/segment-system.test.d.ts.map +0 -1
  192. package/dist/__tests__/segment-system.test.js +0 -627
  193. package/dist/__tests__/segment-system.test.js.map +0 -1
  194. package/dist/__tests__/static-handler-types.test.d.ts +0 -8
  195. package/dist/__tests__/static-handler-types.test.d.ts.map +0 -1
  196. package/dist/__tests__/static-handler-types.test.js +0 -63
  197. package/dist/__tests__/static-handler-types.test.js.map +0 -1
  198. package/dist/__tests__/urls.test.d.ts +0 -2
  199. package/dist/__tests__/urls.test.d.ts.map +0 -1
  200. package/dist/__tests__/urls.test.js +0 -421
  201. package/dist/__tests__/urls.test.js.map +0 -1
  202. package/dist/__tests__/use-mount.test.d.ts +0 -2
  203. package/dist/__tests__/use-mount.test.d.ts.map +0 -1
  204. package/dist/__tests__/use-mount.test.js +0 -35
  205. package/dist/__tests__/use-mount.test.js.map +0 -1
  206. package/dist/bin/rango.d.ts +0 -2
  207. package/dist/bin/rango.d.ts.map +0 -1
  208. package/dist/bin/rango.js.map +0 -1
  209. package/dist/browser/event-controller.d.ts +0 -191
  210. package/dist/browser/event-controller.d.ts.map +0 -1
  211. package/dist/browser/event-controller.js +0 -559
  212. package/dist/browser/event-controller.js.map +0 -1
  213. package/dist/browser/index.d.ts +0 -2
  214. package/dist/browser/index.d.ts.map +0 -1
  215. package/dist/browser/index.js +0 -14
  216. package/dist/browser/index.js.map +0 -1
  217. package/dist/browser/link-interceptor.d.ts +0 -38
  218. package/dist/browser/link-interceptor.d.ts.map +0 -1
  219. package/dist/browser/link-interceptor.js +0 -99
  220. package/dist/browser/link-interceptor.js.map +0 -1
  221. package/dist/browser/logging.d.ts +0 -10
  222. package/dist/browser/logging.d.ts.map +0 -1
  223. package/dist/browser/logging.js +0 -29
  224. package/dist/browser/logging.js.map +0 -1
  225. package/dist/browser/lru-cache.d.ts +0 -17
  226. package/dist/browser/lru-cache.d.ts.map +0 -1
  227. package/dist/browser/lru-cache.js +0 -50
  228. package/dist/browser/lru-cache.js.map +0 -1
  229. package/dist/browser/merge-segment-loaders.d.ts +0 -39
  230. package/dist/browser/merge-segment-loaders.d.ts.map +0 -1
  231. package/dist/browser/merge-segment-loaders.js +0 -102
  232. package/dist/browser/merge-segment-loaders.js.map +0 -1
  233. package/dist/browser/navigation-bridge.d.ts +0 -102
  234. package/dist/browser/navigation-bridge.d.ts.map +0 -1
  235. package/dist/browser/navigation-bridge.js +0 -708
  236. package/dist/browser/navigation-bridge.js.map +0 -1
  237. package/dist/browser/navigation-client.d.ts +0 -25
  238. package/dist/browser/navigation-client.d.ts.map +0 -1
  239. package/dist/browser/navigation-client.js +0 -157
  240. package/dist/browser/navigation-client.js.map +0 -1
  241. package/dist/browser/navigation-store.d.ts +0 -101
  242. package/dist/browser/navigation-store.d.ts.map +0 -1
  243. package/dist/browser/navigation-store.js +0 -625
  244. package/dist/browser/navigation-store.js.map +0 -1
  245. package/dist/browser/partial-update.d.ts +0 -75
  246. package/dist/browser/partial-update.d.ts.map +0 -1
  247. package/dist/browser/partial-update.js +0 -426
  248. package/dist/browser/partial-update.js.map +0 -1
  249. package/dist/browser/react/Link.d.ts +0 -86
  250. package/dist/browser/react/Link.d.ts.map +0 -1
  251. package/dist/browser/react/Link.js +0 -128
  252. package/dist/browser/react/Link.js.map +0 -1
  253. package/dist/browser/react/NavigationProvider.d.ts +0 -63
  254. package/dist/browser/react/NavigationProvider.d.ts.map +0 -1
  255. package/dist/browser/react/NavigationProvider.js +0 -216
  256. package/dist/browser/react/NavigationProvider.js.map +0 -1
  257. package/dist/browser/react/ScrollRestoration.d.ts +0 -75
  258. package/dist/browser/react/ScrollRestoration.d.ts.map +0 -1
  259. package/dist/browser/react/ScrollRestoration.js +0 -57
  260. package/dist/browser/react/ScrollRestoration.js.map +0 -1
  261. package/dist/browser/react/context.d.ts +0 -46
  262. package/dist/browser/react/context.d.ts.map +0 -1
  263. package/dist/browser/react/context.js +0 -10
  264. package/dist/browser/react/context.js.map +0 -1
  265. package/dist/browser/react/index.d.ts +0 -11
  266. package/dist/browser/react/index.d.ts.map +0 -1
  267. package/dist/browser/react/index.js +0 -22
  268. package/dist/browser/react/index.js.map +0 -1
  269. package/dist/browser/react/location-state-shared.d.ts +0 -63
  270. package/dist/browser/react/location-state-shared.d.ts.map +0 -1
  271. package/dist/browser/react/location-state-shared.js +0 -81
  272. package/dist/browser/react/location-state-shared.js.map +0 -1
  273. package/dist/browser/react/location-state.d.ts +0 -23
  274. package/dist/browser/react/location-state.d.ts.map +0 -1
  275. package/dist/browser/react/location-state.js +0 -29
  276. package/dist/browser/react/location-state.js.map +0 -1
  277. package/dist/browser/react/mount-context.d.ts +0 -24
  278. package/dist/browser/react/mount-context.d.ts.map +0 -1
  279. package/dist/browser/react/mount-context.js +0 -24
  280. package/dist/browser/react/mount-context.js.map +0 -1
  281. package/dist/browser/react/use-action.d.ts +0 -64
  282. package/dist/browser/react/use-action.d.ts.map +0 -1
  283. package/dist/browser/react/use-action.js +0 -134
  284. package/dist/browser/react/use-action.js.map +0 -1
  285. package/dist/browser/react/use-client-cache.d.ts +0 -41
  286. package/dist/browser/react/use-client-cache.d.ts.map +0 -1
  287. package/dist/browser/react/use-client-cache.js +0 -39
  288. package/dist/browser/react/use-client-cache.js.map +0 -1
  289. package/dist/browser/react/use-handle.d.ts +0 -31
  290. package/dist/browser/react/use-handle.d.ts.map +0 -1
  291. package/dist/browser/react/use-handle.js +0 -144
  292. package/dist/browser/react/use-handle.js.map +0 -1
  293. package/dist/browser/react/use-href.d.ts +0 -33
  294. package/dist/browser/react/use-href.d.ts.map +0 -1
  295. package/dist/browser/react/use-href.js +0 -39
  296. package/dist/browser/react/use-href.js.map +0 -1
  297. package/dist/browser/react/use-link-status.d.ts +0 -37
  298. package/dist/browser/react/use-link-status.d.ts.map +0 -1
  299. package/dist/browser/react/use-link-status.js +0 -99
  300. package/dist/browser/react/use-link-status.js.map +0 -1
  301. package/dist/browser/react/use-mount.d.ts +0 -25
  302. package/dist/browser/react/use-mount.d.ts.map +0 -1
  303. package/dist/browser/react/use-mount.js +0 -30
  304. package/dist/browser/react/use-mount.js.map +0 -1
  305. package/dist/browser/react/use-navigation.d.ts +0 -27
  306. package/dist/browser/react/use-navigation.d.ts.map +0 -1
  307. package/dist/browser/react/use-navigation.js +0 -87
  308. package/dist/browser/react/use-navigation.js.map +0 -1
  309. package/dist/browser/react/use-segments.d.ts +0 -38
  310. package/dist/browser/react/use-segments.d.ts.map +0 -1
  311. package/dist/browser/react/use-segments.js +0 -130
  312. package/dist/browser/react/use-segments.js.map +0 -1
  313. package/dist/browser/request-controller.d.ts +0 -26
  314. package/dist/browser/request-controller.d.ts.map +0 -1
  315. package/dist/browser/request-controller.js +0 -147
  316. package/dist/browser/request-controller.js.map +0 -1
  317. package/dist/browser/rsc-router.d.ts +0 -129
  318. package/dist/browser/rsc-router.d.ts.map +0 -1
  319. package/dist/browser/rsc-router.js +0 -195
  320. package/dist/browser/rsc-router.js.map +0 -1
  321. package/dist/browser/scroll-restoration.d.ts +0 -93
  322. package/dist/browser/scroll-restoration.d.ts.map +0 -1
  323. package/dist/browser/scroll-restoration.js +0 -321
  324. package/dist/browser/scroll-restoration.js.map +0 -1
  325. package/dist/browser/segment-structure-assert.d.ts +0 -17
  326. package/dist/browser/segment-structure-assert.d.ts.map +0 -1
  327. package/dist/browser/segment-structure-assert.js +0 -59
  328. package/dist/browser/segment-structure-assert.js.map +0 -1
  329. package/dist/browser/server-action-bridge.d.ts +0 -26
  330. package/dist/browser/server-action-bridge.d.ts.map +0 -1
  331. package/dist/browser/server-action-bridge.js +0 -668
  332. package/dist/browser/server-action-bridge.js.map +0 -1
  333. package/dist/browser/shallow.d.ts +0 -12
  334. package/dist/browser/shallow.d.ts.map +0 -1
  335. package/dist/browser/shallow.js +0 -34
  336. package/dist/browser/shallow.js.map +0 -1
  337. package/dist/browser/types.d.ts +0 -369
  338. package/dist/browser/types.d.ts.map +0 -1
  339. package/dist/browser/types.js +0 -2
  340. package/dist/browser/types.js.map +0 -1
  341. package/dist/build/__tests__/generate-cli.test.d.ts +0 -2
  342. package/dist/build/__tests__/generate-cli.test.d.ts.map +0 -1
  343. package/dist/build/__tests__/generate-cli.test.js +0 -237
  344. package/dist/build/__tests__/generate-cli.test.js.map +0 -1
  345. package/dist/build/__tests__/generate-manifest.test.d.ts +0 -2
  346. package/dist/build/__tests__/generate-manifest.test.d.ts.map +0 -1
  347. package/dist/build/__tests__/generate-manifest.test.js +0 -119
  348. package/dist/build/__tests__/generate-manifest.test.js.map +0 -1
  349. package/dist/build/__tests__/generate-route-types.test.d.ts +0 -2
  350. package/dist/build/__tests__/generate-route-types.test.d.ts.map +0 -1
  351. package/dist/build/__tests__/generate-route-types.test.js +0 -620
  352. package/dist/build/__tests__/generate-route-types.test.js.map +0 -1
  353. package/dist/build/__tests__/per-router-manifest.test.d.ts +0 -2
  354. package/dist/build/__tests__/per-router-manifest.test.d.ts.map +0 -1
  355. package/dist/build/__tests__/per-router-manifest.test.js +0 -308
  356. package/dist/build/__tests__/per-router-manifest.test.js.map +0 -1
  357. package/dist/build/generate-manifest.d.ts +0 -81
  358. package/dist/build/generate-manifest.d.ts.map +0 -1
  359. package/dist/build/generate-manifest.js +0 -276
  360. package/dist/build/generate-manifest.js.map +0 -1
  361. package/dist/build/generate-route-types.d.ts +0 -115
  362. package/dist/build/generate-route-types.d.ts.map +0 -1
  363. package/dist/build/generate-route-types.js +0 -740
  364. package/dist/build/generate-route-types.js.map +0 -1
  365. package/dist/build/index.d.ts +0 -21
  366. package/dist/build/index.d.ts.map +0 -1
  367. package/dist/build/index.js +0 -21
  368. package/dist/build/index.js.map +0 -1
  369. package/dist/build/route-trie.d.ts +0 -71
  370. package/dist/build/route-trie.d.ts.map +0 -1
  371. package/dist/build/route-trie.js +0 -175
  372. package/dist/build/route-trie.js.map +0 -1
  373. package/dist/cache/__tests__/cache-scope.test.d.ts +0 -2
  374. package/dist/cache/__tests__/cache-scope.test.d.ts.map +0 -1
  375. package/dist/cache/__tests__/cache-scope.test.js +0 -208
  376. package/dist/cache/__tests__/cache-scope.test.js.map +0 -1
  377. package/dist/cache/__tests__/document-cache.test.d.ts +0 -2
  378. package/dist/cache/__tests__/document-cache.test.d.ts.map +0 -1
  379. package/dist/cache/__tests__/document-cache.test.js +0 -345
  380. package/dist/cache/__tests__/document-cache.test.js.map +0 -1
  381. package/dist/cache/__tests__/memory-segment-store.test.d.ts +0 -2
  382. package/dist/cache/__tests__/memory-segment-store.test.d.ts.map +0 -1
  383. package/dist/cache/__tests__/memory-segment-store.test.js +0 -425
  384. package/dist/cache/__tests__/memory-segment-store.test.js.map +0 -1
  385. package/dist/cache/__tests__/memory-store.test.d.ts +0 -2
  386. package/dist/cache/__tests__/memory-store.test.d.ts.map +0 -1
  387. package/dist/cache/__tests__/memory-store.test.js +0 -367
  388. package/dist/cache/__tests__/memory-store.test.js.map +0 -1
  389. package/dist/cache/cache-scope.d.ts +0 -102
  390. package/dist/cache/cache-scope.d.ts.map +0 -1
  391. package/dist/cache/cache-scope.js +0 -440
  392. package/dist/cache/cache-scope.js.map +0 -1
  393. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts +0 -2
  394. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts.map +0 -1
  395. package/dist/cache/cf/__tests__/cf-cache-store.test.js +0 -330
  396. package/dist/cache/cf/__tests__/cf-cache-store.test.js.map +0 -1
  397. package/dist/cache/cf/cf-cache-store.d.ts +0 -165
  398. package/dist/cache/cf/cf-cache-store.d.ts.map +0 -1
  399. package/dist/cache/cf/cf-cache-store.js +0 -242
  400. package/dist/cache/cf/cf-cache-store.js.map +0 -1
  401. package/dist/cache/cf/index.d.ts +0 -14
  402. package/dist/cache/cf/index.d.ts.map +0 -1
  403. package/dist/cache/cf/index.js +0 -17
  404. package/dist/cache/cf/index.js.map +0 -1
  405. package/dist/cache/document-cache.d.ts +0 -64
  406. package/dist/cache/document-cache.d.ts.map +0 -1
  407. package/dist/cache/document-cache.js +0 -228
  408. package/dist/cache/document-cache.js.map +0 -1
  409. package/dist/cache/index.d.ts +0 -19
  410. package/dist/cache/index.d.ts.map +0 -1
  411. package/dist/cache/index.js +0 -21
  412. package/dist/cache/index.js.map +0 -1
  413. package/dist/cache/memory-segment-store.d.ts +0 -110
  414. package/dist/cache/memory-segment-store.d.ts.map +0 -1
  415. package/dist/cache/memory-segment-store.js +0 -117
  416. package/dist/cache/memory-segment-store.js.map +0 -1
  417. package/dist/cache/memory-store.d.ts +0 -41
  418. package/dist/cache/memory-store.d.ts.map +0 -1
  419. package/dist/cache/memory-store.js +0 -191
  420. package/dist/cache/memory-store.js.map +0 -1
  421. package/dist/cache/types.d.ts +0 -317
  422. package/dist/cache/types.d.ts.map +0 -1
  423. package/dist/cache/types.js +0 -12
  424. package/dist/cache/types.js.map +0 -1
  425. package/dist/client.d.ts +0 -248
  426. package/dist/client.d.ts.map +0 -1
  427. package/dist/client.js +0 -367
  428. package/dist/client.js.map +0 -1
  429. package/dist/client.rsc.d.ts +0 -26
  430. package/dist/client.rsc.d.ts.map +0 -1
  431. package/dist/client.rsc.js +0 -46
  432. package/dist/client.rsc.js.map +0 -1
  433. package/dist/component-utils.d.ts +0 -36
  434. package/dist/component-utils.d.ts.map +0 -1
  435. package/dist/component-utils.js +0 -61
  436. package/dist/component-utils.js.map +0 -1
  437. package/dist/components/DefaultDocument.d.ts +0 -13
  438. package/dist/components/DefaultDocument.d.ts.map +0 -1
  439. package/dist/components/DefaultDocument.js +0 -15
  440. package/dist/components/DefaultDocument.js.map +0 -1
  441. package/dist/debug.d.ts +0 -58
  442. package/dist/debug.d.ts.map +0 -1
  443. package/dist/debug.js +0 -157
  444. package/dist/debug.js.map +0 -1
  445. package/dist/default-error-boundary.d.ts +0 -11
  446. package/dist/default-error-boundary.d.ts.map +0 -1
  447. package/dist/default-error-boundary.js +0 -45
  448. package/dist/default-error-boundary.js.map +0 -1
  449. package/dist/deps/browser.d.ts +0 -2
  450. package/dist/deps/browser.d.ts.map +0 -1
  451. package/dist/deps/browser.js +0 -3
  452. package/dist/deps/browser.js.map +0 -1
  453. package/dist/deps/html-stream-client.d.ts +0 -2
  454. package/dist/deps/html-stream-client.d.ts.map +0 -1
  455. package/dist/deps/html-stream-client.js +0 -3
  456. package/dist/deps/html-stream-client.js.map +0 -1
  457. package/dist/deps/html-stream-server.d.ts +0 -2
  458. package/dist/deps/html-stream-server.d.ts.map +0 -1
  459. package/dist/deps/html-stream-server.js +0 -3
  460. package/dist/deps/html-stream-server.js.map +0 -1
  461. package/dist/deps/rsc.d.ts +0 -2
  462. package/dist/deps/rsc.d.ts.map +0 -1
  463. package/dist/deps/rsc.js +0 -4
  464. package/dist/deps/rsc.js.map +0 -1
  465. package/dist/deps/ssr.d.ts +0 -2
  466. package/dist/deps/ssr.d.ts.map +0 -1
  467. package/dist/deps/ssr.js +0 -3
  468. package/dist/deps/ssr.js.map +0 -1
  469. package/dist/errors.d.ts +0 -174
  470. package/dist/errors.d.ts.map +0 -1
  471. package/dist/errors.js +0 -241
  472. package/dist/errors.js.map +0 -1
  473. package/dist/handle.d.ts +0 -78
  474. package/dist/handle.d.ts.map +0 -1
  475. package/dist/handle.js +0 -82
  476. package/dist/handle.js.map +0 -1
  477. package/dist/handles/MetaTags.d.ts +0 -14
  478. package/dist/handles/MetaTags.d.ts.map +0 -1
  479. package/dist/handles/MetaTags.js +0 -136
  480. package/dist/handles/MetaTags.js.map +0 -1
  481. package/dist/handles/index.d.ts +0 -6
  482. package/dist/handles/index.d.ts.map +0 -1
  483. package/dist/handles/index.js +0 -6
  484. package/dist/handles/index.js.map +0 -1
  485. package/dist/handles/meta.d.ts +0 -39
  486. package/dist/handles/meta.d.ts.map +0 -1
  487. package/dist/handles/meta.js +0 -202
  488. package/dist/handles/meta.js.map +0 -1
  489. package/dist/host/__tests__/errors.test.d.ts +0 -2
  490. package/dist/host/__tests__/errors.test.d.ts.map +0 -1
  491. package/dist/host/__tests__/errors.test.js +0 -76
  492. package/dist/host/__tests__/errors.test.js.map +0 -1
  493. package/dist/host/__tests__/pattern-comprehensive.test.d.ts +0 -2
  494. package/dist/host/__tests__/pattern-comprehensive.test.d.ts.map +0 -1
  495. package/dist/host/__tests__/pattern-comprehensive.test.js +0 -732
  496. package/dist/host/__tests__/pattern-comprehensive.test.js.map +0 -1
  497. package/dist/host/__tests__/pattern-matcher.test.d.ts +0 -2
  498. package/dist/host/__tests__/pattern-matcher.test.d.ts.map +0 -1
  499. package/dist/host/__tests__/pattern-matcher.test.js +0 -251
  500. package/dist/host/__tests__/pattern-matcher.test.js.map +0 -1
  501. package/dist/host/__tests__/router.test.d.ts +0 -2
  502. package/dist/host/__tests__/router.test.d.ts.map +0 -1
  503. package/dist/host/__tests__/router.test.js +0 -241
  504. package/dist/host/__tests__/router.test.js.map +0 -1
  505. package/dist/host/__tests__/testing.test.d.ts +0 -2
  506. package/dist/host/__tests__/testing.test.d.ts.map +0 -1
  507. package/dist/host/__tests__/testing.test.js +0 -64
  508. package/dist/host/__tests__/testing.test.js.map +0 -1
  509. package/dist/host/__tests__/utils.test.d.ts +0 -2
  510. package/dist/host/__tests__/utils.test.d.ts.map +0 -1
  511. package/dist/host/__tests__/utils.test.js +0 -29
  512. package/dist/host/__tests__/utils.test.js.map +0 -1
  513. package/dist/host/cookie-handler.d.ts +0 -34
  514. package/dist/host/cookie-handler.d.ts.map +0 -1
  515. package/dist/host/cookie-handler.js +0 -124
  516. package/dist/host/cookie-handler.js.map +0 -1
  517. package/dist/host/errors.d.ts +0 -56
  518. package/dist/host/errors.d.ts.map +0 -1
  519. package/dist/host/errors.js +0 -79
  520. package/dist/host/errors.js.map +0 -1
  521. package/dist/host/index.d.ts +0 -29
  522. package/dist/host/index.d.ts.map +0 -1
  523. package/dist/host/index.js +0 -32
  524. package/dist/host/index.js.map +0 -1
  525. package/dist/host/pattern-matcher.d.ts +0 -36
  526. package/dist/host/pattern-matcher.d.ts.map +0 -1
  527. package/dist/host/pattern-matcher.js +0 -172
  528. package/dist/host/pattern-matcher.js.map +0 -1
  529. package/dist/host/router.d.ts +0 -26
  530. package/dist/host/router.d.ts.map +0 -1
  531. package/dist/host/router.js +0 -218
  532. package/dist/host/router.js.map +0 -1
  533. package/dist/host/testing.d.ts +0 -36
  534. package/dist/host/testing.d.ts.map +0 -1
  535. package/dist/host/testing.js +0 -55
  536. package/dist/host/testing.js.map +0 -1
  537. package/dist/host/types.d.ts +0 -115
  538. package/dist/host/types.d.ts.map +0 -1
  539. package/dist/host/types.js +0 -7
  540. package/dist/host/types.js.map +0 -1
  541. package/dist/host/utils.d.ts +0 -21
  542. package/dist/host/utils.d.ts.map +0 -1
  543. package/dist/host/utils.js +0 -23
  544. package/dist/host/utils.js.map +0 -1
  545. package/dist/href-client.d.ts +0 -131
  546. package/dist/href-client.d.ts.map +0 -1
  547. package/dist/href-client.js +0 -64
  548. package/dist/href-client.js.map +0 -1
  549. package/dist/href-context.d.ts +0 -29
  550. package/dist/href-context.d.ts.map +0 -1
  551. package/dist/href-context.js +0 -21
  552. package/dist/href-context.js.map +0 -1
  553. package/dist/index.d.ts +0 -73
  554. package/dist/index.d.ts.map +0 -1
  555. package/dist/index.js +0 -91
  556. package/dist/index.js.map +0 -1
  557. package/dist/index.rsc.d.ts +0 -32
  558. package/dist/index.rsc.d.ts.map +0 -1
  559. package/dist/index.rsc.js +0 -40
  560. package/dist/index.rsc.js.map +0 -1
  561. package/dist/internal-debug.d.ts +0 -2
  562. package/dist/internal-debug.d.ts.map +0 -1
  563. package/dist/internal-debug.js +0 -5
  564. package/dist/internal-debug.js.map +0 -1
  565. package/dist/loader.d.ts +0 -14
  566. package/dist/loader.d.ts.map +0 -1
  567. package/dist/loader.js +0 -20
  568. package/dist/loader.js.map +0 -1
  569. package/dist/loader.rsc.d.ts +0 -19
  570. package/dist/loader.rsc.d.ts.map +0 -1
  571. package/dist/loader.rsc.js +0 -99
  572. package/dist/loader.rsc.js.map +0 -1
  573. package/dist/network-error-thrower.d.ts +0 -17
  574. package/dist/network-error-thrower.d.ts.map +0 -1
  575. package/dist/network-error-thrower.js +0 -14
  576. package/dist/network-error-thrower.js.map +0 -1
  577. package/dist/outlet-context.d.ts +0 -13
  578. package/dist/outlet-context.d.ts.map +0 -1
  579. package/dist/outlet-context.js +0 -3
  580. package/dist/outlet-context.js.map +0 -1
  581. package/dist/prerender/__tests__/param-hash.test.d.ts +0 -2
  582. package/dist/prerender/__tests__/param-hash.test.d.ts.map +0 -1
  583. package/dist/prerender/__tests__/param-hash.test.js +0 -148
  584. package/dist/prerender/__tests__/param-hash.test.js.map +0 -1
  585. package/dist/prerender/param-hash.d.ts +0 -16
  586. package/dist/prerender/param-hash.d.ts.map +0 -1
  587. package/dist/prerender/param-hash.js +0 -36
  588. package/dist/prerender/param-hash.js.map +0 -1
  589. package/dist/prerender/store.d.ts +0 -38
  590. package/dist/prerender/store.d.ts.map +0 -1
  591. package/dist/prerender/store.js +0 -61
  592. package/dist/prerender/store.js.map +0 -1
  593. package/dist/prerender.d.ts +0 -66
  594. package/dist/prerender.d.ts.map +0 -1
  595. package/dist/prerender.js +0 -57
  596. package/dist/prerender.js.map +0 -1
  597. package/dist/reverse.d.ts +0 -196
  598. package/dist/reverse.d.ts.map +0 -1
  599. package/dist/reverse.js +0 -78
  600. package/dist/reverse.js.map +0 -1
  601. package/dist/root-error-boundary.d.ts +0 -33
  602. package/dist/root-error-boundary.d.ts.map +0 -1
  603. package/dist/root-error-boundary.js +0 -165
  604. package/dist/root-error-boundary.js.map +0 -1
  605. package/dist/route-content-wrapper.d.ts +0 -46
  606. package/dist/route-content-wrapper.d.ts.map +0 -1
  607. package/dist/route-content-wrapper.js +0 -77
  608. package/dist/route-content-wrapper.js.map +0 -1
  609. package/dist/route-definition.d.ts +0 -421
  610. package/dist/route-definition.d.ts.map +0 -1
  611. package/dist/route-definition.js +0 -868
  612. package/dist/route-definition.js.map +0 -1
  613. package/dist/route-map-builder.d.ts +0 -155
  614. package/dist/route-map-builder.d.ts.map +0 -1
  615. package/dist/route-map-builder.js +0 -237
  616. package/dist/route-map-builder.js.map +0 -1
  617. package/dist/route-types.d.ts +0 -165
  618. package/dist/route-types.d.ts.map +0 -1
  619. package/dist/route-types.js +0 -7
  620. package/dist/route-types.js.map +0 -1
  621. package/dist/router/__tests__/handler-context.test.d.ts +0 -2
  622. package/dist/router/__tests__/handler-context.test.d.ts.map +0 -1
  623. package/dist/router/__tests__/handler-context.test.js +0 -65
  624. package/dist/router/__tests__/handler-context.test.js.map +0 -1
  625. package/dist/router/__tests__/loader-cycle-detection.test.d.ts +0 -2
  626. package/dist/router/__tests__/loader-cycle-detection.test.d.ts.map +0 -1
  627. package/dist/router/__tests__/loader-cycle-detection.test.js +0 -221
  628. package/dist/router/__tests__/loader-cycle-detection.test.js.map +0 -1
  629. package/dist/router/__tests__/match-context.test.d.ts +0 -2
  630. package/dist/router/__tests__/match-context.test.d.ts.map +0 -1
  631. package/dist/router/__tests__/match-context.test.js +0 -92
  632. package/dist/router/__tests__/match-context.test.js.map +0 -1
  633. package/dist/router/__tests__/match-pipelines.test.d.ts +0 -2
  634. package/dist/router/__tests__/match-pipelines.test.d.ts.map +0 -1
  635. package/dist/router/__tests__/match-pipelines.test.js +0 -417
  636. package/dist/router/__tests__/match-pipelines.test.js.map +0 -1
  637. package/dist/router/__tests__/match-result.test.d.ts +0 -2
  638. package/dist/router/__tests__/match-result.test.d.ts.map +0 -1
  639. package/dist/router/__tests__/match-result.test.js +0 -457
  640. package/dist/router/__tests__/match-result.test.js.map +0 -1
  641. package/dist/router/__tests__/on-error.test.d.ts +0 -2
  642. package/dist/router/__tests__/on-error.test.d.ts.map +0 -1
  643. package/dist/router/__tests__/on-error.test.js +0 -678
  644. package/dist/router/__tests__/on-error.test.js.map +0 -1
  645. package/dist/router/__tests__/pattern-matching.test.d.ts +0 -2
  646. package/dist/router/__tests__/pattern-matching.test.d.ts.map +0 -1
  647. package/dist/router/__tests__/pattern-matching.test.js +0 -629
  648. package/dist/router/__tests__/pattern-matching.test.js.map +0 -1
  649. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts +0 -2
  650. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts.map +0 -1
  651. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js +0 -155
  652. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js.map +0 -1
  653. package/dist/router/error-handling.d.ts +0 -77
  654. package/dist/router/error-handling.d.ts.map +0 -1
  655. package/dist/router/error-handling.js +0 -202
  656. package/dist/router/error-handling.js.map +0 -1
  657. package/dist/router/handler-context.d.ts +0 -20
  658. package/dist/router/handler-context.d.ts.map +0 -1
  659. package/dist/router/handler-context.js +0 -198
  660. package/dist/router/handler-context.js.map +0 -1
  661. package/dist/router/intercept-resolution.d.ts +0 -66
  662. package/dist/router/intercept-resolution.d.ts.map +0 -1
  663. package/dist/router/intercept-resolution.js +0 -246
  664. package/dist/router/intercept-resolution.js.map +0 -1
  665. package/dist/router/loader-resolution.d.ts +0 -64
  666. package/dist/router/loader-resolution.d.ts.map +0 -1
  667. package/dist/router/loader-resolution.js +0 -284
  668. package/dist/router/loader-resolution.js.map +0 -1
  669. package/dist/router/logging.d.ts +0 -15
  670. package/dist/router/logging.d.ts.map +0 -1
  671. package/dist/router/logging.js +0 -99
  672. package/dist/router/logging.js.map +0 -1
  673. package/dist/router/manifest.d.ts +0 -22
  674. package/dist/router/manifest.d.ts.map +0 -1
  675. package/dist/router/manifest.js +0 -181
  676. package/dist/router/manifest.js.map +0 -1
  677. package/dist/router/match-api.d.ts +0 -35
  678. package/dist/router/match-api.d.ts.map +0 -1
  679. package/dist/router/match-api.js +0 -406
  680. package/dist/router/match-api.js.map +0 -1
  681. package/dist/router/match-context.d.ts +0 -206
  682. package/dist/router/match-context.d.ts.map +0 -1
  683. package/dist/router/match-context.js +0 -17
  684. package/dist/router/match-context.js.map +0 -1
  685. package/dist/router/match-middleware/background-revalidation.d.ts +0 -127
  686. package/dist/router/match-middleware/background-revalidation.d.ts.map +0 -1
  687. package/dist/router/match-middleware/background-revalidation.js +0 -75
  688. package/dist/router/match-middleware/background-revalidation.js.map +0 -1
  689. package/dist/router/match-middleware/cache-lookup.d.ts +0 -112
  690. package/dist/router/match-middleware/cache-lookup.d.ts.map +0 -1
  691. package/dist/router/match-middleware/cache-lookup.js +0 -257
  692. package/dist/router/match-middleware/cache-lookup.js.map +0 -1
  693. package/dist/router/match-middleware/cache-store.d.ts +0 -113
  694. package/dist/router/match-middleware/cache-store.d.ts.map +0 -1
  695. package/dist/router/match-middleware/cache-store.js +0 -108
  696. package/dist/router/match-middleware/cache-store.js.map +0 -1
  697. package/dist/router/match-middleware/index.d.ts +0 -81
  698. package/dist/router/match-middleware/index.d.ts.map +0 -1
  699. package/dist/router/match-middleware/index.js +0 -80
  700. package/dist/router/match-middleware/index.js.map +0 -1
  701. package/dist/router/match-middleware/intercept-resolution.d.ts +0 -117
  702. package/dist/router/match-middleware/intercept-resolution.d.ts.map +0 -1
  703. package/dist/router/match-middleware/intercept-resolution.js +0 -134
  704. package/dist/router/match-middleware/intercept-resolution.js.map +0 -1
  705. package/dist/router/match-middleware/segment-resolution.d.ts +0 -99
  706. package/dist/router/match-middleware/segment-resolution.d.ts.map +0 -1
  707. package/dist/router/match-middleware/segment-resolution.js +0 -53
  708. package/dist/router/match-middleware/segment-resolution.js.map +0 -1
  709. package/dist/router/match-pipelines.d.ts +0 -147
  710. package/dist/router/match-pipelines.d.ts.map +0 -1
  711. package/dist/router/match-pipelines.js +0 -82
  712. package/dist/router/match-pipelines.js.map +0 -1
  713. package/dist/router/match-result.d.ts +0 -126
  714. package/dist/router/match-result.d.ts.map +0 -1
  715. package/dist/router/match-result.js +0 -93
  716. package/dist/router/match-result.js.map +0 -1
  717. package/dist/router/metrics.d.ts +0 -20
  718. package/dist/router/metrics.d.ts.map +0 -1
  719. package/dist/router/metrics.js +0 -47
  720. package/dist/router/metrics.js.map +0 -1
  721. package/dist/router/middleware.d.ts +0 -249
  722. package/dist/router/middleware.d.ts.map +0 -1
  723. package/dist/router/middleware.js +0 -434
  724. package/dist/router/middleware.js.map +0 -1
  725. package/dist/router/middleware.test.d.ts +0 -2
  726. package/dist/router/middleware.test.d.ts.map +0 -1
  727. package/dist/router/middleware.test.js +0 -816
  728. package/dist/router/middleware.test.js.map +0 -1
  729. package/dist/router/pattern-matching.d.ts +0 -149
  730. package/dist/router/pattern-matching.d.ts.map +0 -1
  731. package/dist/router/pattern-matching.js +0 -349
  732. package/dist/router/pattern-matching.js.map +0 -1
  733. package/dist/router/revalidation.d.ts +0 -44
  734. package/dist/router/revalidation.d.ts.map +0 -1
  735. package/dist/router/revalidation.js +0 -147
  736. package/dist/router/revalidation.js.map +0 -1
  737. package/dist/router/router-context.d.ts +0 -135
  738. package/dist/router/router-context.d.ts.map +0 -1
  739. package/dist/router/router-context.js +0 -36
  740. package/dist/router/router-context.js.map +0 -1
  741. package/dist/router/segment-resolution.d.ts +0 -127
  742. package/dist/router/segment-resolution.d.ts.map +0 -1
  743. package/dist/router/segment-resolution.js +0 -919
  744. package/dist/router/segment-resolution.js.map +0 -1
  745. package/dist/router/trie-matching.d.ts +0 -40
  746. package/dist/router/trie-matching.d.ts.map +0 -1
  747. package/dist/router/trie-matching.js +0 -127
  748. package/dist/router/trie-matching.js.map +0 -1
  749. package/dist/router/types.d.ts +0 -136
  750. package/dist/router/types.d.ts.map +0 -1
  751. package/dist/router/types.js +0 -7
  752. package/dist/router/types.js.map +0 -1
  753. package/dist/router.d.ts +0 -753
  754. package/dist/router.d.ts.map +0 -1
  755. package/dist/router.gen.d.ts +0 -6
  756. package/dist/router.gen.d.ts.map +0 -1
  757. package/dist/router.gen.js +0 -6
  758. package/dist/router.gen.js.map +0 -1
  759. package/dist/router.js +0 -1304
  760. package/dist/router.js.map +0 -1
  761. package/dist/rsc/__tests__/helpers.test.d.ts +0 -2
  762. package/dist/rsc/__tests__/helpers.test.d.ts.map +0 -1
  763. package/dist/rsc/__tests__/helpers.test.js +0 -140
  764. package/dist/rsc/__tests__/helpers.test.js.map +0 -1
  765. package/dist/rsc/handler.d.ts +0 -45
  766. package/dist/rsc/handler.d.ts.map +0 -1
  767. package/dist/rsc/handler.js +0 -1172
  768. package/dist/rsc/handler.js.map +0 -1
  769. package/dist/rsc/helpers.d.ts +0 -16
  770. package/dist/rsc/helpers.d.ts.map +0 -1
  771. package/dist/rsc/helpers.js +0 -55
  772. package/dist/rsc/helpers.js.map +0 -1
  773. package/dist/rsc/index.d.ts +0 -22
  774. package/dist/rsc/index.d.ts.map +0 -1
  775. package/dist/rsc/index.js +0 -23
  776. package/dist/rsc/index.js.map +0 -1
  777. package/dist/rsc/nonce.d.ts +0 -9
  778. package/dist/rsc/nonce.d.ts.map +0 -1
  779. package/dist/rsc/nonce.js +0 -18
  780. package/dist/rsc/nonce.js.map +0 -1
  781. package/dist/rsc/types.d.ts +0 -206
  782. package/dist/rsc/types.d.ts.map +0 -1
  783. package/dist/rsc/types.js +0 -8
  784. package/dist/rsc/types.js.map +0 -1
  785. package/dist/search-params.d.ts +0 -103
  786. package/dist/search-params.d.ts.map +0 -1
  787. package/dist/search-params.js +0 -74
  788. package/dist/search-params.js.map +0 -1
  789. package/dist/segment-system.d.ts +0 -75
  790. package/dist/segment-system.d.ts.map +0 -1
  791. package/dist/segment-system.js +0 -336
  792. package/dist/segment-system.js.map +0 -1
  793. package/dist/server/context.d.ts +0 -245
  794. package/dist/server/context.d.ts.map +0 -1
  795. package/dist/server/context.js +0 -197
  796. package/dist/server/context.js.map +0 -1
  797. package/dist/server/fetchable-loader-store.d.ts +0 -18
  798. package/dist/server/fetchable-loader-store.d.ts.map +0 -1
  799. package/dist/server/fetchable-loader-store.js +0 -18
  800. package/dist/server/fetchable-loader-store.js.map +0 -1
  801. package/dist/server/handle-store.d.ts +0 -85
  802. package/dist/server/handle-store.d.ts.map +0 -1
  803. package/dist/server/handle-store.js +0 -142
  804. package/dist/server/handle-store.js.map +0 -1
  805. package/dist/server/loader-registry.d.ts +0 -55
  806. package/dist/server/loader-registry.d.ts.map +0 -1
  807. package/dist/server/loader-registry.js +0 -132
  808. package/dist/server/loader-registry.js.map +0 -1
  809. package/dist/server/request-context.d.ts +0 -226
  810. package/dist/server/request-context.d.ts.map +0 -1
  811. package/dist/server/request-context.js +0 -290
  812. package/dist/server/request-context.js.map +0 -1
  813. package/dist/server/root-layout.d.ts +0 -4
  814. package/dist/server/root-layout.d.ts.map +0 -1
  815. package/dist/server/root-layout.js +0 -5
  816. package/dist/server/root-layout.js.map +0 -1
  817. package/dist/server.d.ts +0 -15
  818. package/dist/server.d.ts.map +0 -1
  819. package/dist/server.js +0 -20
  820. package/dist/server.js.map +0 -1
  821. package/dist/ssr/__tests__/ssr-handler.test.d.ts +0 -2
  822. package/dist/ssr/__tests__/ssr-handler.test.d.ts.map +0 -1
  823. package/dist/ssr/__tests__/ssr-handler.test.js +0 -132
  824. package/dist/ssr/__tests__/ssr-handler.test.js.map +0 -1
  825. package/dist/ssr/index.d.ts +0 -98
  826. package/dist/ssr/index.d.ts.map +0 -1
  827. package/dist/ssr/index.js +0 -158
  828. package/dist/ssr/index.js.map +0 -1
  829. package/dist/static-handler.d.ts +0 -50
  830. package/dist/static-handler.d.ts.map +0 -1
  831. package/dist/static-handler.gen.d.ts +0 -5
  832. package/dist/static-handler.gen.d.ts.map +0 -1
  833. package/dist/static-handler.gen.js +0 -5
  834. package/dist/static-handler.gen.js.map +0 -1
  835. package/dist/static-handler.js +0 -29
  836. package/dist/static-handler.js.map +0 -1
  837. package/dist/theme/ThemeProvider.d.ts +0 -20
  838. package/dist/theme/ThemeProvider.d.ts.map +0 -1
  839. package/dist/theme/ThemeProvider.js +0 -240
  840. package/dist/theme/ThemeProvider.js.map +0 -1
  841. package/dist/theme/ThemeScript.d.ts +0 -48
  842. package/dist/theme/ThemeScript.d.ts.map +0 -1
  843. package/dist/theme/ThemeScript.js +0 -13
  844. package/dist/theme/ThemeScript.js.map +0 -1
  845. package/dist/theme/__tests__/theme.test.d.ts +0 -2
  846. package/dist/theme/__tests__/theme.test.d.ts.map +0 -1
  847. package/dist/theme/__tests__/theme.test.js +0 -103
  848. package/dist/theme/__tests__/theme.test.js.map +0 -1
  849. package/dist/theme/constants.d.ts +0 -29
  850. package/dist/theme/constants.d.ts.map +0 -1
  851. package/dist/theme/constants.js +0 -48
  852. package/dist/theme/constants.js.map +0 -1
  853. package/dist/theme/index.d.ts +0 -31
  854. package/dist/theme/index.d.ts.map +0 -1
  855. package/dist/theme/index.js +0 -36
  856. package/dist/theme/index.js.map +0 -1
  857. package/dist/theme/theme-context.d.ts +0 -40
  858. package/dist/theme/theme-context.d.ts.map +0 -1
  859. package/dist/theme/theme-context.js +0 -60
  860. package/dist/theme/theme-context.js.map +0 -1
  861. package/dist/theme/theme-script.d.ts +0 -27
  862. package/dist/theme/theme-script.d.ts.map +0 -1
  863. package/dist/theme/theme-script.js +0 -147
  864. package/dist/theme/theme-script.js.map +0 -1
  865. package/dist/theme/types.d.ts +0 -163
  866. package/dist/theme/types.d.ts.map +0 -1
  867. package/dist/theme/types.js +0 -11
  868. package/dist/theme/types.js.map +0 -1
  869. package/dist/theme/use-theme.d.ts +0 -12
  870. package/dist/theme/use-theme.d.ts.map +0 -1
  871. package/dist/theme/use-theme.js +0 -40
  872. package/dist/theme/use-theme.js.map +0 -1
  873. package/dist/types.d.ts +0 -1479
  874. package/dist/types.d.ts.map +0 -1
  875. package/dist/types.js +0 -10
  876. package/dist/types.js.map +0 -1
  877. package/dist/urls.d.ts +0 -441
  878. package/dist/urls.d.ts.map +0 -1
  879. package/dist/urls.gen.d.ts +0 -8
  880. package/dist/urls.gen.d.ts.map +0 -1
  881. package/dist/urls.gen.js +0 -8
  882. package/dist/urls.gen.js.map +0 -1
  883. package/dist/urls.js +0 -443
  884. package/dist/urls.js.map +0 -1
  885. package/dist/use-loader.d.ts +0 -127
  886. package/dist/use-loader.d.ts.map +0 -1
  887. package/dist/use-loader.js +0 -237
  888. package/dist/use-loader.js.map +0 -1
  889. package/dist/vite/__tests__/ast-handler-extract.test.d.ts +0 -2
  890. package/dist/vite/__tests__/ast-handler-extract.test.d.ts.map +0 -1
  891. package/dist/vite/__tests__/ast-handler-extract.test.js +0 -294
  892. package/dist/vite/__tests__/ast-handler-extract.test.js.map +0 -1
  893. package/dist/vite/__tests__/expose-id-utils.test.d.ts +0 -2
  894. package/dist/vite/__tests__/expose-id-utils.test.d.ts.map +0 -1
  895. package/dist/vite/__tests__/expose-id-utils.test.js +0 -224
  896. package/dist/vite/__tests__/expose-id-utils.test.js.map +0 -1
  897. package/dist/vite/__tests__/expose-internal-ids.test.d.ts +0 -2
  898. package/dist/vite/__tests__/expose-internal-ids.test.d.ts.map +0 -1
  899. package/dist/vite/__tests__/expose-internal-ids.test.js +0 -647
  900. package/dist/vite/__tests__/expose-internal-ids.test.js.map +0 -1
  901. package/dist/vite/__tests__/expose-router-id.test.d.ts +0 -2
  902. package/dist/vite/__tests__/expose-router-id.test.d.ts.map +0 -1
  903. package/dist/vite/__tests__/expose-router-id.test.js +0 -39
  904. package/dist/vite/__tests__/expose-router-id.test.js.map +0 -1
  905. package/dist/vite/ast-handler-extract.d.ts +0 -49
  906. package/dist/vite/ast-handler-extract.d.ts.map +0 -1
  907. package/dist/vite/ast-handler-extract.js +0 -249
  908. package/dist/vite/ast-handler-extract.js.map +0 -1
  909. package/dist/vite/expose-action-id.d.ts +0 -19
  910. package/dist/vite/expose-action-id.d.ts.map +0 -1
  911. package/dist/vite/expose-action-id.js +0 -250
  912. package/dist/vite/expose-action-id.js.map +0 -1
  913. package/dist/vite/expose-id-utils.d.ts +0 -69
  914. package/dist/vite/expose-id-utils.d.ts.map +0 -1
  915. package/dist/vite/expose-id-utils.js +0 -289
  916. package/dist/vite/expose-id-utils.js.map +0 -1
  917. package/dist/vite/expose-internal-ids.d.ts +0 -22
  918. package/dist/vite/expose-internal-ids.d.ts.map +0 -1
  919. package/dist/vite/expose-internal-ids.js +0 -886
  920. package/dist/vite/expose-internal-ids.js.map +0 -1
  921. package/dist/vite/index.d.ts +0 -149
  922. package/dist/vite/index.d.ts.map +0 -1
  923. package/dist/vite/index.js.map +0 -1
  924. package/dist/vite/index.named-routes.gen.ts +0 -103
  925. package/dist/vite/package-resolution.d.ts +0 -43
  926. package/dist/vite/package-resolution.d.ts.map +0 -1
  927. package/dist/vite/package-resolution.js +0 -112
  928. package/dist/vite/package-resolution.js.map +0 -1
  929. package/dist/vite/virtual-entries.d.ts +0 -25
  930. package/dist/vite/virtual-entries.d.ts.map +0 -1
  931. package/dist/vite/virtual-entries.js +0 -110
  932. package/dist/vite/virtual-entries.js.map +0 -1
@@ -165,10 +165,14 @@ export function withCacheStore<TEnv>(
165
165
  // Combine main segments with intercept segments
166
166
  const allSegmentsToCache = [...allSegments, ...state.interceptSegments];
167
167
 
168
- // Check if any non-loader segments have null components
169
- // This happens when client already had those segments (partial navigation)
168
+ // Check if any non-loader segments have null components from revalidation
169
+ // skip (client already had them). Segments where the handler intentionally
170
+ // returned null are not revalidation skips — re-rendering them will still
171
+ // produce null, so proactive caching would be wasted work.
172
+ const clientIdSet = new Set(ctx.clientSegmentIds);
170
173
  const hasNullComponents = allSegmentsToCache.some(
171
- (s) => s.component === null && s.type !== "loader",
174
+ (s) =>
175
+ s.component === null && s.type !== "loader" && clientIdSet.has(s.id),
172
176
  );
173
177
 
174
178
  const requestCtx = getRequestContext();
@@ -195,6 +199,10 @@ export function withCacheStore<TEnv>(
195
199
  // Proactive caching: render all segments fresh in background
196
200
  // This ensures cache has complete components for future requests
197
201
  requestCtx.waitUntil(async () => {
202
+ // Prevent background metrics from polluting foreground timeline.
203
+ const savedMetrics = ctx.Store.metrics;
204
+ ctx.Store.metrics = undefined;
205
+
198
206
  const start = performance.now();
199
207
  debugLog("cacheStore", "proactive caching started", {
200
208
  pathname: ctx.pathname,
@@ -225,7 +233,9 @@ export function withCacheStore<TEnv>(
225
233
  // Use normal loader access so handle data is captured
226
234
  setupLoaderAccess(proactiveHandlerContext, proactiveLoaderPromises);
227
235
 
228
- // Re-resolve ALL segments without revalidation
236
+ // Re-resolve ALL segments without revalidation.
237
+ // Skip DSL loaders — they are never cached (cacheRoute filters them)
238
+ // and are always resolved fresh on each request.
229
239
  const Store = ctx.Store;
230
240
  const freshSegments = await Store.run(() =>
231
241
  resolveAllSegments(
@@ -234,6 +244,7 @@ export function withCacheStore<TEnv>(
234
244
  ctx.matched.params,
235
245
  proactiveHandlerContext,
236
246
  proactiveLoaderPromises,
247
+ { skipLoaders: true },
237
248
  ),
238
249
  );
239
250
 
@@ -285,11 +296,17 @@ export function withCacheStore<TEnv>(
285
296
  });
286
297
  } finally {
287
298
  requestCtx._handleStore = originalHandleStore;
299
+ ctx.Store.metrics = savedMetrics;
288
300
  }
289
301
  });
290
302
  } else {
291
303
  // All segments have components - cache directly
292
304
  // Schedule caching in waitUntil since cacheRoute is now async (key resolution)
305
+ if (INTERNAL_RANGO_DEBUG) {
306
+ console.log(
307
+ `[RSC CacheStore][req:${reqId}] Direct cache path: scheduling cacheRoute for ${ctx.pathname} (${allSegmentsToCache.length} segments, hasNullComponents=${hasNullComponents})`,
308
+ );
309
+ }
293
310
  requestCtx.waitUntil(async () => {
294
311
  const start = performance.now();
295
312
  await cacheScope.cacheRoute(
@@ -87,10 +87,49 @@
87
87
  * if (state.cacheHit) return; // Now we can check
88
88
  */
89
89
  import type { ResolvedSegment } from "../../types.js";
90
+ import type { EntryData } from "../../server/context.js";
91
+ import { _getRequestContext } from "../../server/request-context.js";
90
92
  import type { MatchContext, MatchPipelineState } from "../match-context.js";
91
93
  import { getRouterContext } from "../router-context.js";
92
94
  import type { GeneratorMiddleware } from "./cache-lookup.js";
93
95
 
96
+ /**
97
+ * Check whether any entry in the tree uses loading() (streaming).
98
+ * Matches the router's streaming semantics in fresh.ts: streaming is
99
+ * enabled when `loading` is defined AND not `false`. `loading: false`
100
+ * explicitly disables streaming; `undefined` means no loading at all.
101
+ */
102
+ export function treeHasStreaming(entries: EntryData[]): boolean {
103
+ for (const entry of entries) {
104
+ if (
105
+ "loading" in entry &&
106
+ entry.loading !== undefined &&
107
+ entry.loading !== false
108
+ )
109
+ return true;
110
+ if (entry.layout) {
111
+ if (treeHasStreaming(entry.layout)) return true;
112
+ }
113
+ if (entry.parallel) {
114
+ for (const key in entry.parallel) {
115
+ const parallelEntry = entry.parallel[key as `@${string}`];
116
+ if (parallelEntry) {
117
+ if (
118
+ "loading" in parallelEntry &&
119
+ parallelEntry.loading !== undefined &&
120
+ parallelEntry.loading !== false
121
+ )
122
+ return true;
123
+ if (parallelEntry.layout) {
124
+ if (treeHasStreaming(parallelEntry.layout)) return true;
125
+ }
126
+ }
127
+ }
128
+ }
129
+ }
130
+ return false;
131
+ }
132
+
94
133
  /**
95
134
  * Creates segment resolution middleware
96
135
  *
@@ -116,6 +155,7 @@ export function withSegmentResolution<TEnv>(
116
155
  const ownStart = performance.now();
117
156
 
118
157
  // If cache hit, segments were already yielded by cache lookup
158
+ // (render barrier is resolved on the cache-hit path)
119
159
  if (state.cacheHit) {
120
160
  if (ms) {
121
161
  ms.metrics.push({
@@ -127,6 +167,11 @@ export function withSegmentResolution<TEnv>(
127
167
  return;
128
168
  }
129
169
 
170
+ const reqCtx = _getRequestContext();
171
+ if (reqCtx && reqCtx._treeHasStreaming === undefined) {
172
+ reqCtx._treeHasStreaming = treeHasStreaming(ctx.entries);
173
+ }
174
+
130
175
  const { resolveAllSegmentsWithRevalidation, resolveAllSegments } =
131
176
  getRouterContext<TEnv>();
132
177
 
@@ -148,6 +193,10 @@ export function withSegmentResolution<TEnv>(
148
193
  state.segments = segments;
149
194
  state.matchedIds = segments.map((s: { id: string }) => s.id);
150
195
 
196
+ if (reqCtx) {
197
+ reqCtx._resolveRenderBarrier(segments);
198
+ }
199
+
151
200
  // Yield all resolved segments
152
201
  for (const segment of segments) {
153
202
  yield segment;
@@ -178,6 +227,10 @@ export function withSegmentResolution<TEnv>(
178
227
  state.segments = result.segments;
179
228
  state.matchedIds = result.matchedIds;
180
229
 
230
+ if (reqCtx) {
231
+ reqCtx._resolveRenderBarrier(result.segments);
232
+ }
233
+
181
234
  // Yield all resolved segments
182
235
  for (const segment of result.segments) {
183
236
  yield segment;
@@ -125,6 +125,69 @@ export async function collectSegments(
125
125
  return segments;
126
126
  }
127
127
 
128
+ /**
129
+ * Deduplicate inherited loader segments by loaderId.
130
+ *
131
+ * When a route has loaders and a child layout has parallel slots, the same
132
+ * loader is resolved twice: once for the route and once inherited into the
133
+ * layout (tagged with `_inherited`). The inherited copy is only needed when
134
+ * the route uses `loading()` — in that case, the loader data is inside a
135
+ * LoaderBoundary/Suspense that parallel slots can't reach through. Without
136
+ * loading(), useLoader() traverses parent contexts and finds the data.
137
+ */
138
+ function deduplicateLoaderSegments(
139
+ segments: ResolvedSegment[],
140
+ logPrefix: string,
141
+ ): ResolvedSegment[] {
142
+ // First pass: collect loaderIds of original (non-inherited) segments
143
+ // and whether their parent entry uses loading()
144
+ const originalLoaders = new Set<string>();
145
+ const loadersWithLoading = new Set<string>();
146
+ for (const s of segments) {
147
+ if (s.type === "loader" && s.loaderId && !s._inherited) {
148
+ originalLoaders.add(s.loaderId);
149
+ // If the segment has a sibling with loading, the parent uses loading()
150
+ // We detect this by checking if any non-loader segment in the same
151
+ // namespace has loading defined
152
+ }
153
+ }
154
+ // Check if any layout/route segment has loading — if a loader's namespace
155
+ // matches a segment with loading, the inherited copy is needed
156
+ for (const s of segments) {
157
+ if (s.type !== "loader" && s.loading !== undefined && s.loading !== false) {
158
+ // Find loaders in this namespace
159
+ for (const l of segments) {
160
+ if (l.type === "loader" && l.namespace === s.namespace && l.loaderId) {
161
+ loadersWithLoading.add(l.loaderId);
162
+ }
163
+ }
164
+ }
165
+ }
166
+
167
+ const result: ResolvedSegment[] = [];
168
+ let dedupCount = 0;
169
+
170
+ for (const s of segments) {
171
+ if (
172
+ s.type === "loader" &&
173
+ s.loaderId &&
174
+ s._inherited &&
175
+ originalLoaders.has(s.loaderId) &&
176
+ !loadersWithLoading.has(s.loaderId)
177
+ ) {
178
+ dedupCount++;
179
+ continue;
180
+ }
181
+ result.push(s);
182
+ }
183
+
184
+ if (dedupCount > 0) {
185
+ debugLog(logPrefix, `deduped ${dedupCount} inherited loader segment(s)`);
186
+ }
187
+
188
+ return result;
189
+ }
190
+
128
191
  /**
129
192
  * Build the final MatchResult from collected segments and context
130
193
  */
@@ -181,6 +244,11 @@ export function buildMatchResult<TEnv>(
181
244
  );
182
245
  }
183
246
 
247
+ const dedupedSegments = deduplicateLoaderSegments(
248
+ segmentsToRender,
249
+ logPrefix,
250
+ );
251
+
184
252
  debugLog(logPrefix, "all segments", {
185
253
  segments: allSegments.map((s) => ({
186
254
  id: s.id,
@@ -189,13 +257,23 @@ export function buildMatchResult<TEnv>(
189
257
  })),
190
258
  });
191
259
  debugLog(logPrefix, "segments to render", {
192
- segmentIds: segmentsToRender.map((s) => s.id),
260
+ segmentIds: dedupedSegments.map((s) => s.id),
193
261
  });
194
262
 
263
+ // Remove deduped loader IDs from matched so the client doesn't treat
264
+ // them as missing segments and trigger a fallback refetch.
265
+ const removedIds = new Set(
266
+ segmentsToRender
267
+ .filter((s) => !dedupedSegments.includes(s))
268
+ .map((s) => s.id),
269
+ );
270
+ const matchedIds =
271
+ removedIds.size > 0 ? allIds.filter((id) => !removedIds.has(id)) : allIds;
272
+
195
273
  return {
196
- segments: segmentsToRender,
197
- matched: allIds,
198
- diff: segmentsToRender.map((s) => s.id),
274
+ segments: dedupedSegments,
275
+ matched: matchedIds,
276
+ diff: dedupedSegments.map((s) => s.id),
199
277
  params: ctx.matched.params,
200
278
  routeName: ctx.routeKey,
201
279
  slots: Object.keys(state.slots).length > 0 ? state.slots : undefined,
@@ -27,8 +27,12 @@ type GetVariableFn = {
27
27
  * Set variable function type
28
28
  */
29
29
  type SetVariableFn = {
30
- <T>(contextVar: ContextVar<T>, value: T): void;
31
- <K extends keyof DefaultVars>(key: K, value: DefaultVars[K]): void;
30
+ <T>(contextVar: ContextVar<T>, value: T, options?: { cache?: boolean }): void;
31
+ <K extends keyof DefaultVars>(
32
+ key: K,
33
+ value: DefaultVars[K],
34
+ options?: { cache?: boolean },
35
+ ): void;
32
36
  };
33
37
 
34
38
  /**
@@ -91,12 +95,6 @@ export interface MiddlewareContext<
91
95
  /** Set a context variable (shared with route handlers) */
92
96
  set: SetVariableFn;
93
97
 
94
- /**
95
- * Middleware-injected variables.
96
- * Same shared dictionary as `ctx.get()`/`ctx.set()`.
97
- */
98
- var: DefaultVars;
99
-
100
98
  /**
101
99
  * Set a response header - can be called before or after `next()`.
102
100
  *
@@ -204,12 +204,9 @@ export function createMiddlewareContext<TEnv>(
204
204
  get: ((keyOrVar: any) =>
205
205
  contextGet(variables, keyOrVar)) as MiddlewareContext<TEnv>["get"],
206
206
 
207
- set: ((keyOrVar: any, value: unknown) => {
208
- contextSet(variables, keyOrVar, value);
207
+ set: ((keyOrVar: any, value: unknown, options?: any) => {
208
+ contextSet(variables, keyOrVar, value, options);
209
209
  }) as MiddlewareContext<TEnv>["set"],
210
-
211
- var: variables as MiddlewareContext<TEnv>["var"],
212
-
213
210
  header(name: string, value: string): void {
214
211
  // Before next(): delegate to shared RequestContext stub
215
212
  if (isPreNext()) {
@@ -0,0 +1,182 @@
1
+ /**
2
+ * Navigation Snapshot
3
+ *
4
+ * Pure data type representing the navigation-specific state for partial requests.
5
+ * Consolidates the header parsing, previous-route matching, intercept-context
6
+ * detection, and segment ID filtering that previously lived inline in
7
+ * createMatchContextForPartial (match-api.ts).
8
+ *
9
+ * resolveNavigation() is the factory: given a request + URL + current route key,
10
+ * it returns a NavigationSnapshot (or null if no previous URL).
11
+ */
12
+
13
+ import type { RouteMatchResult } from "./pattern-matching.js";
14
+
15
+ /**
16
+ * Snapshot of navigation state for a partial (navigation/action) request.
17
+ *
18
+ * Contains the "where are we coming from?" data: previous route, intercept
19
+ * source, client segment state, and derived flags.
20
+ */
21
+ export interface NavigationSnapshot {
22
+ /** Previous page URL (from X-RSC-Router-Client-Path or Referer) */
23
+ prevUrl: URL;
24
+ /** Params from the previous route match */
25
+ prevParams: Record<string, string>;
26
+ /** Previous route match result (null if prev URL doesn't match any route) */
27
+ prevMatch: RouteMatchResult | null;
28
+
29
+ /** URL used as intercept context source */
30
+ interceptContextUrl: URL;
31
+ /** Route match for the intercept context URL */
32
+ interceptContextMatch: RouteMatchResult | null;
33
+
34
+ /** Raw segment IDs the client currently has */
35
+ clientSegmentIds: string[];
36
+ /** Set version for O(1) lookup */
37
+ clientSegmentSet: Set<string>;
38
+ /** Segment IDs filtered to remove parallel (.@) and loader (D\d+.) entries */
39
+ filteredSegmentIds: string[];
40
+
41
+ /** Whether client considers its cache stale */
42
+ stale: boolean;
43
+
44
+ /** Whether the intercept context route is the same as the current route */
45
+ isSameRouteNavigation: boolean;
46
+
47
+ /** Effective "from" URL (intercept source URL when present, else prevUrl) */
48
+ effectiveFromUrl: URL;
49
+ /** Effective "from" match (intercept source match when present, else prevMatch) */
50
+ effectiveFromMatch: RouteMatchResult | null;
51
+
52
+ /** Whether an intercept source header was present */
53
+ hasInterceptSource: boolean;
54
+
55
+ /** Whether an HMR request header was present */
56
+ isHmr: boolean;
57
+ }
58
+
59
+ export interface ResolveNavigationDeps {
60
+ findMatch: (pathname: string) => RouteMatchResult | null;
61
+ }
62
+
63
+ /**
64
+ * Resolve navigation state from a partial request.
65
+ *
66
+ * Returns null if no previous URL is available (required for partial navigation).
67
+ *
68
+ * @param request - The incoming HTTP request
69
+ * @param url - Parsed URL of the request
70
+ * @param currentRouteKey - Route key of the current (target) route match
71
+ * @param deps - Dependencies (findMatch)
72
+ */
73
+ export function resolveNavigation(
74
+ request: Request,
75
+ url: URL,
76
+ currentRouteKey: string,
77
+ deps: ResolveNavigationDeps,
78
+ ): NavigationSnapshot | null {
79
+ // Parse client state from RSC request params/headers
80
+ const clientSegmentIds =
81
+ url.searchParams.get("_rsc_segments")?.split(",").filter(Boolean) || [];
82
+ const stale = url.searchParams.get("_rsc_stale") === "true";
83
+ const previousUrl =
84
+ request.headers.get("X-RSC-Router-Client-Path") ||
85
+ request.headers.get("Referer");
86
+ const interceptSourceUrl = request.headers.get(
87
+ "X-RSC-Router-Intercept-Source",
88
+ );
89
+ const isHmr = !!request.headers.get("X-RSC-HMR");
90
+
91
+ if (!previousUrl) {
92
+ return null;
93
+ }
94
+
95
+ // Parse previous URL
96
+ let prevUrl: URL;
97
+ try {
98
+ prevUrl = new URL(previousUrl, url.origin);
99
+ } catch {
100
+ return null;
101
+ }
102
+
103
+ // Parse intercept context URL
104
+ let interceptContextUrl: URL;
105
+ try {
106
+ interceptContextUrl = interceptSourceUrl
107
+ ? new URL(interceptSourceUrl, url.origin)
108
+ : prevUrl;
109
+ } catch {
110
+ interceptContextUrl = prevUrl;
111
+ }
112
+
113
+ // Match previous and intercept context routes
114
+ const prevMatch = deps.findMatch(prevUrl.pathname);
115
+ const prevParams = prevMatch?.params || {};
116
+ const interceptContextMatch = interceptSourceUrl
117
+ ? deps.findMatch(interceptContextUrl.pathname)
118
+ : prevMatch;
119
+
120
+ // Derived state
121
+ const isSameRouteNavigation = !!(
122
+ interceptContextMatch && interceptContextMatch.routeKey === currentRouteKey
123
+ );
124
+
125
+ const hasInterceptSource = !!interceptSourceUrl;
126
+ const effectiveFromUrl = hasInterceptSource ? interceptContextUrl : prevUrl;
127
+ const effectiveFromMatch = hasInterceptSource
128
+ ? interceptContextMatch
129
+ : prevMatch;
130
+
131
+ // Filter segment IDs: remove parallel (.@) and loader (D\d+.) entries
132
+ const filteredSegmentIds = clientSegmentIds.filter((id) => {
133
+ if (id.includes(".@")) return false;
134
+ if (/D\d+\./.test(id)) return false;
135
+ return true;
136
+ });
137
+
138
+ const clientSegmentSet = new Set(clientSegmentIds);
139
+
140
+ return {
141
+ prevUrl,
142
+ prevParams,
143
+ prevMatch,
144
+ interceptContextUrl,
145
+ interceptContextMatch,
146
+ clientSegmentIds,
147
+ clientSegmentSet,
148
+ filteredSegmentIds,
149
+ stale,
150
+ isSameRouteNavigation,
151
+ effectiveFromUrl,
152
+ effectiveFromMatch,
153
+ hasInterceptSource,
154
+ isHmr,
155
+ };
156
+ }
157
+
158
+ /**
159
+ * Test helper: create a NavigationSnapshot with sensible defaults and overrides.
160
+ */
161
+ export function createNavigationSnapshot(
162
+ overrides?: Partial<NavigationSnapshot>,
163
+ ): NavigationSnapshot {
164
+ const defaultUrl = new URL("http://localhost/");
165
+ return {
166
+ prevUrl: defaultUrl,
167
+ prevParams: {},
168
+ prevMatch: null,
169
+ interceptContextUrl: defaultUrl,
170
+ interceptContextMatch: null,
171
+ clientSegmentIds: [],
172
+ clientSegmentSet: new Set(),
173
+ filteredSegmentIds: [],
174
+ stale: false,
175
+ isSameRouteNavigation: false,
176
+ effectiveFromUrl: defaultUrl,
177
+ effectiveFromMatch: null,
178
+ hasInterceptSource: false,
179
+ isHmr: false,
180
+ ...overrides,
181
+ };
182
+ }
@@ -54,6 +54,9 @@ export async function matchForPrerender<TEnv = any>(
54
54
  deps: PrerenderMatchDeps<TEnv>,
55
55
  buildVars?: Record<string, any>,
56
56
  isPassthroughRoute?: boolean,
57
+ buildEnv?: TEnv,
58
+ /** Dev-only: check getParams() for passthrough routes to skip unknown params. */
59
+ devMode?: boolean,
57
60
  ): Promise<{
58
61
  segments: SerializedSegmentData[];
59
62
  handles: Record<string, SegmentHandleData>;
@@ -90,21 +93,106 @@ export async function matchForPrerender<TEnv = any>(
90
93
  entries.push(entry);
91
94
  }
92
95
 
96
+ // 3b. Dev-mode passthrough shortcut: if the route is a Passthrough route
97
+ // and has getParams(), check if the matched params are in the known list.
98
+ // In production, only known params are pre-rendered; unknown params fall
99
+ // through to the live handler. Mirror that behavior in dev mode to avoid
100
+ // rendering unknown params with build: true.
101
+ // Vars collected from getParams() probe — merged into render context below.
102
+ let devProbeBuildVars: Record<string, any> | undefined;
103
+
104
+ if (devMode && matchedPassthroughRoute) {
105
+ const routeEntry = entries.find(
106
+ (
107
+ e,
108
+ ): e is EntryData & {
109
+ type: "route";
110
+ prerenderDef: { getParams: (ctx: any) => Promise<any[]> | any[] };
111
+ } =>
112
+ e.type === "route" &&
113
+ !!(e as any).isPassthrough &&
114
+ !!(e as any).prerenderDef?.getParams,
115
+ );
116
+ if (routeEntry) {
117
+ try {
118
+ const probeBuildVars: Record<string, any> = {};
119
+ const knownParamsList = await routeEntry.prerenderDef.getParams({
120
+ build: true as const,
121
+ dev: true,
122
+ set: ((keyOrVar: any, value: any) => {
123
+ contextSet(probeBuildVars, keyOrVar, value);
124
+ }) as any,
125
+ reverse: createReverseFunction(deps.mergedRouteMap),
126
+ get env() {
127
+ if (buildEnv !== undefined) return buildEnv;
128
+ throw new Error(
129
+ "[rsc-router] ctx.env is not available during dev-mode getParams(). " +
130
+ "Configure buildEnv in your rango() plugin options to enable build-time env access.",
131
+ );
132
+ },
133
+ });
134
+ // Compare only the keys returned by getParams — ignore mount params
135
+ // from include() prefixes that aren't part of the handler's params.
136
+ const isKnown = knownParamsList.some((known: Record<string, any>) => {
137
+ const knownKeys = Object.keys(known);
138
+ return knownKeys.every(
139
+ (k) => String(known[k]) === String(matchedParams[k]),
140
+ );
141
+ });
142
+ if (!isKnown) {
143
+ return {
144
+ segments: [],
145
+ handles: {},
146
+ routeName: matched.routeKey,
147
+ params: matchedParams,
148
+ passthrough: true as const,
149
+ };
150
+ }
151
+ // Preserve vars set by getParams() for the render context
152
+ if (
153
+ Object.keys(probeBuildVars).length > 0 ||
154
+ Object.getOwnPropertySymbols(probeBuildVars).length > 0
155
+ ) {
156
+ devProbeBuildVars = probeBuildVars;
157
+ }
158
+ } catch (err: any) {
159
+ // Mirror production semantics (prerender-collection.ts):
160
+ // Skip errors are intentional — treat as passthrough.
161
+ // All other errors propagate so dev surfaces them.
162
+ if (err?.name === "Skip") {
163
+ return {
164
+ segments: [],
165
+ handles: {},
166
+ routeName: matched.routeKey,
167
+ params: matchedParams,
168
+ passthrough: true as const,
169
+ };
170
+ }
171
+ throw err;
172
+ }
173
+ }
174
+ }
175
+
93
176
  // 4. Create handle store for collecting handle data
94
177
  const handleStore = createHandleStore();
95
178
 
96
179
  // 5. Create a minimal request context with the handle store
97
- // Shallow-copy getParams vars so each param set is independent
98
- const variables: Record<string, any> = buildVars ? { ...buildVars } : {};
180
+ // Shallow-copy getParams vars so each param set is independent.
181
+ // In dev mode, merge vars from the getParams() probe if the caller
182
+ // didn't provide buildVars (production passes them from expandPrerenderRoutes).
183
+ const effectiveBuildVars = buildVars ?? devProbeBuildVars;
184
+ const variables: Record<string, any> = effectiveBuildVars
185
+ ? { ...effectiveBuildVars }
186
+ : {};
99
187
  const stubRes = new Response(null, { status: 200 });
100
188
  const minimalRequestContext: RequestContext<TEnv> = {
101
- env: {} as TEnv,
189
+ env: buildEnv ?? ({} as TEnv),
102
190
  request: new Request("http://prerender" + pathname),
103
191
  url: new URL("http://prerender" + pathname),
104
192
  originalUrl: new URL("http://prerender" + pathname),
105
193
  pathname,
106
194
  searchParams: new URLSearchParams(),
107
- var: variables,
195
+ _variables: variables,
108
196
  get: ((keyOrVar: any) => contextGet(variables, keyOrVar)) as any,
109
197
  set: ((keyOrVar: any, value: any) => {
110
198
  contextSet(variables, keyOrVar, value);
@@ -128,6 +216,8 @@ export async function matchForPrerender<TEnv = any>(
128
216
  _onResponseCallbacks: [],
129
217
  setLocationState() {},
130
218
  _locationState: undefined,
219
+ _renderBarrier: Promise.resolve(),
220
+ _resolveRenderBarrier: () => {},
131
221
  _reportedErrors: new WeakSet<object>(),
132
222
  reverse: createReverseFunction(
133
223
  deps.mergedRouteMap,
@@ -140,7 +230,7 @@ export async function matchForPrerender<TEnv = any>(
140
230
  return runWithRequestContext(minimalRequestContext, async () => {
141
231
  // 6. Create prerender context with synthetic URL.
142
232
  // Prerender handlers get params, pathname, url, searchParams, search,
143
- // reverse, and use(handle) but no request, env, headers, or cookies.
233
+ // reverse, use(handle), and optionally env (when buildEnv is configured).
144
234
  const buildCtx = createPrerenderContext<TEnv>(
145
235
  matchedParams,
146
236
  pathname,
@@ -148,6 +238,8 @@ export async function matchForPrerender<TEnv = any>(
148
238
  matched.routeKey,
149
239
  variables,
150
240
  matchedPassthroughRoute,
241
+ buildEnv,
242
+ devMode,
151
243
  );
152
244
 
153
245
  // 7. Wire use() for handles only (loaders throw)
@@ -320,6 +412,8 @@ export async function renderStaticSegment<TEnv = any>(
320
412
  handlerId: string,
321
413
  mergedRouteMap: Record<string, string>,
322
414
  routeName?: string,
415
+ buildEnv?: TEnv,
416
+ devMode?: boolean,
323
417
  ): Promise<{ encoded: string; handles: Record<string, unknown[]> } | null> {
324
418
  const syntheticUrl = new URL("http://prerender/");
325
419
  const syntheticRequest = new Request(syntheticUrl);
@@ -330,13 +424,13 @@ export async function renderStaticSegment<TEnv = any>(
330
424
  // Minimal request context so setupBuildUse can find the HandleStore
331
425
  const stubRes = new Response(null, { status: 200 });
332
426
  const minimalRequestContext: RequestContext<TEnv> = {
333
- env: {} as TEnv,
427
+ env: buildEnv ?? ({} as TEnv),
334
428
  request: syntheticRequest,
335
429
  url: syntheticUrl,
336
430
  originalUrl: syntheticUrl,
337
431
  pathname: "/",
338
432
  searchParams: syntheticUrl.searchParams,
339
- var: {},
433
+ _variables: {},
340
434
  get: () => undefined as any,
341
435
  set: () => {},
342
436
  params: {},
@@ -358,6 +452,8 @@ export async function renderStaticSegment<TEnv = any>(
358
452
  _onResponseCallbacks: [],
359
453
  setLocationState() {},
360
454
  _locationState: undefined,
455
+ _renderBarrier: Promise.resolve(),
456
+ _resolveRenderBarrier: () => {},
361
457
  _reportedErrors: new WeakSet<object>(),
362
458
  reverse: createReverseFunction(
363
459
  mergedRouteMap,
@@ -368,9 +464,13 @@ export async function renderStaticSegment<TEnv = any>(
368
464
  };
369
465
 
370
466
  return runWithRequestContext(minimalRequestContext, async () => {
371
- // Static handlers get only reverse and use(handle) no URL, params,
372
- // request, env, headers, or cookies.
373
- const buildCtx = createStaticContext<TEnv>(mergedRouteMap, routeName);
467
+ // Static handlers get only reverse, use(handle), and optionally env.
468
+ const buildCtx = createStaticContext<TEnv>(
469
+ mergedRouteMap,
470
+ routeName,
471
+ buildEnv,
472
+ devMode,
473
+ );
374
474
 
375
475
  // Set segment ID so handle pushes are keyed correctly
376
476
  (buildCtx as InternalHandlerContext<any, TEnv>)._currentSegmentId =