@rangojs/router 0.0.0-experimental.6fe6a3cc → 0.0.0-experimental.70

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 (942) hide show
  1. package/README.md +76 -18
  2. package/dist/bin/rango.js +138 -50
  3. package/dist/vite/index.js +839 -429
  4. package/package.json +2 -2
  5. package/skills/cache-guide/SKILL.md +32 -0
  6. package/skills/caching/SKILL.md +45 -4
  7. package/skills/links/SKILL.md +3 -1
  8. package/skills/loader/SKILL.md +53 -43
  9. package/skills/middleware/SKILL.md +2 -0
  10. package/skills/parallel/SKILL.md +126 -0
  11. package/skills/prerender/SKILL.md +110 -68
  12. package/skills/route/SKILL.md +31 -0
  13. package/skills/router-setup/SKILL.md +87 -2
  14. package/skills/typesafety/SKILL.md +10 -0
  15. package/src/__internal.ts +1 -1
  16. package/src/browser/app-version.ts +14 -0
  17. package/src/browser/event-controller.ts +5 -0
  18. package/src/browser/navigation-bridge.ts +17 -6
  19. package/src/browser/navigation-client.ts +115 -58
  20. package/src/browser/navigation-store.ts +43 -8
  21. package/src/browser/navigation-transaction.ts +11 -9
  22. package/src/browser/partial-update.ts +76 -13
  23. package/src/browser/prefetch/cache.ts +57 -5
  24. package/src/browser/prefetch/fetch.ts +38 -23
  25. package/src/browser/prefetch/queue.ts +92 -20
  26. package/src/browser/prefetch/resource-ready.ts +77 -0
  27. package/src/browser/react/Link.tsx +53 -9
  28. package/src/browser/react/NavigationProvider.tsx +40 -4
  29. package/src/browser/react/context.ts +7 -2
  30. package/src/browser/react/use-handle.ts +9 -58
  31. package/src/browser/react/use-router.ts +21 -8
  32. package/src/browser/rsc-router.tsx +134 -59
  33. package/src/browser/scroll-restoration.ts +30 -15
  34. package/src/browser/segment-reconciler.ts +6 -1
  35. package/src/browser/server-action-bridge.ts +8 -6
  36. package/src/browser/types.ts +36 -5
  37. package/src/build/generate-manifest.ts +6 -6
  38. package/src/build/generate-route-types.ts +3 -0
  39. package/src/build/route-types/include-resolution.ts +8 -1
  40. package/src/build/route-types/router-processing.ts +223 -74
  41. package/src/build/route-types/scan-filter.ts +8 -1
  42. package/src/cache/cache-runtime.ts +15 -11
  43. package/src/cache/cache-scope.ts +48 -7
  44. package/src/cache/cf/cf-cache-store.ts +453 -11
  45. package/src/cache/cf/index.ts +5 -1
  46. package/src/cache/document-cache.ts +17 -7
  47. package/src/cache/index.ts +1 -0
  48. package/src/cache/taint.ts +55 -0
  49. package/src/client.tsx +2 -56
  50. package/src/context-var.ts +72 -2
  51. package/src/debug.ts +2 -2
  52. package/src/handle.ts +40 -0
  53. package/src/index.rsc.ts +3 -1
  54. package/src/index.ts +12 -0
  55. package/src/prerender/store.ts +5 -4
  56. package/src/prerender.ts +138 -77
  57. package/src/reverse.ts +22 -1
  58. package/src/route-definition/dsl-helpers.ts +73 -25
  59. package/src/route-definition/helpers-types.ts +10 -6
  60. package/src/route-definition/index.ts +3 -0
  61. package/src/route-definition/redirect.ts +11 -3
  62. package/src/route-definition/resolve-handler-use.ts +149 -0
  63. package/src/route-map-builder.ts +7 -1
  64. package/src/route-types.ts +11 -0
  65. package/src/router/content-negotiation.ts +100 -1
  66. package/src/router/find-match.ts +4 -2
  67. package/src/router/handler-context.ts +79 -23
  68. package/src/router/intercept-resolution.ts +11 -4
  69. package/src/router/lazy-includes.ts +4 -1
  70. package/src/router/loader-resolution.ts +156 -21
  71. package/src/router/logging.ts +5 -2
  72. package/src/router/manifest.ts +9 -3
  73. package/src/router/match-api.ts +124 -189
  74. package/src/router/match-middleware/background-revalidation.ts +30 -2
  75. package/src/router/match-middleware/cache-lookup.ts +92 -16
  76. package/src/router/match-middleware/cache-store.ts +53 -10
  77. package/src/router/match-middleware/intercept-resolution.ts +9 -7
  78. package/src/router/match-middleware/segment-resolution.ts +60 -5
  79. package/src/router/match-result.ts +22 -6
  80. package/src/router/metrics.ts +6 -1
  81. package/src/router/middleware-types.ts +6 -8
  82. package/src/router/middleware.ts +4 -6
  83. package/src/router/navigation-snapshot.ts +182 -0
  84. package/src/router/prerender-match.ts +110 -10
  85. package/src/router/preview-match.ts +30 -102
  86. package/src/router/request-classification.ts +310 -0
  87. package/src/router/route-snapshot.ts +245 -0
  88. package/src/router/router-context.ts +5 -1
  89. package/src/router/router-interfaces.ts +36 -4
  90. package/src/router/router-options.ts +37 -11
  91. package/src/router/segment-resolution/fresh.ts +193 -20
  92. package/src/router/segment-resolution/helpers.ts +29 -24
  93. package/src/router/segment-resolution/loader-cache.ts +1 -0
  94. package/src/router/segment-resolution/revalidation.ts +429 -296
  95. package/src/router/types.ts +1 -0
  96. package/src/router.ts +59 -6
  97. package/src/rsc/handler.ts +472 -372
  98. package/src/rsc/loader-fetch.ts +23 -3
  99. package/src/rsc/manifest-init.ts +5 -1
  100. package/src/rsc/progressive-enhancement.ts +14 -2
  101. package/src/rsc/rsc-rendering.ts +10 -1
  102. package/src/rsc/server-action.ts +8 -0
  103. package/src/rsc/ssr-setup.ts +2 -2
  104. package/src/rsc/types.ts +9 -1
  105. package/src/segment-system.tsx +140 -4
  106. package/src/server/context.ts +140 -14
  107. package/src/server/handle-store.ts +19 -0
  108. package/src/server/loader-registry.ts +9 -8
  109. package/src/server/request-context.ts +185 -19
  110. package/src/ssr/index.tsx +4 -0
  111. package/src/static-handler.ts +18 -6
  112. package/src/types/cache-types.ts +4 -4
  113. package/src/types/handler-context.ts +137 -33
  114. package/src/types/loader-types.ts +36 -9
  115. package/src/types/route-entry.ts +8 -1
  116. package/src/types/segments.ts +2 -0
  117. package/src/urls/path-helper-types.ts +9 -2
  118. package/src/urls/path-helper.ts +48 -13
  119. package/src/urls/pattern-types.ts +12 -0
  120. package/src/urls/response-types.ts +16 -6
  121. package/src/use-loader.tsx +77 -5
  122. package/src/vite/discovery/bundle-postprocess.ts +30 -33
  123. package/src/vite/discovery/discover-routers.ts +5 -1
  124. package/src/vite/discovery/prerender-collection.ts +128 -74
  125. package/src/vite/discovery/state.ts +13 -6
  126. package/src/vite/index.ts +4 -0
  127. package/src/vite/plugin-types.ts +51 -79
  128. package/src/vite/plugins/expose-action-id.ts +1 -3
  129. package/src/vite/plugins/expose-id-utils.ts +12 -0
  130. package/src/vite/plugins/expose-ids/handler-transform.ts +30 -0
  131. package/src/vite/plugins/expose-internal-ids.ts +257 -40
  132. package/src/vite/plugins/performance-tracks.ts +88 -0
  133. package/src/vite/plugins/refresh-cmd.ts +88 -26
  134. package/src/vite/plugins/version-plugin.ts +13 -1
  135. package/src/vite/rango.ts +163 -211
  136. package/src/vite/router-discovery.ts +178 -45
  137. package/src/vite/utils/banner.ts +3 -3
  138. package/src/vite/utils/prerender-utils.ts +18 -0
  139. package/src/vite/utils/shared-utils.ts +3 -2
  140. package/dist/__internal.d.ts +0 -83
  141. package/dist/__internal.d.ts.map +0 -1
  142. package/dist/__internal.js +0 -19
  143. package/dist/__internal.js.map +0 -1
  144. package/dist/__mocks__/version.d.ts +0 -7
  145. package/dist/__mocks__/version.d.ts.map +0 -1
  146. package/dist/__mocks__/version.js +0 -7
  147. package/dist/__mocks__/version.js.map +0 -1
  148. package/dist/__tests__/client-href.test.d.ts +0 -2
  149. package/dist/__tests__/client-href.test.d.ts.map +0 -1
  150. package/dist/__tests__/client-href.test.js +0 -74
  151. package/dist/__tests__/client-href.test.js.map +0 -1
  152. package/dist/__tests__/component-utils.test.d.ts +0 -2
  153. package/dist/__tests__/component-utils.test.d.ts.map +0 -1
  154. package/dist/__tests__/component-utils.test.js +0 -51
  155. package/dist/__tests__/component-utils.test.js.map +0 -1
  156. package/dist/__tests__/event-controller.test.d.ts +0 -2
  157. package/dist/__tests__/event-controller.test.d.ts.map +0 -1
  158. package/dist/__tests__/event-controller.test.js +0 -538
  159. package/dist/__tests__/event-controller.test.js.map +0 -1
  160. package/dist/__tests__/helpers/route-tree.d.ts +0 -118
  161. package/dist/__tests__/helpers/route-tree.d.ts.map +0 -1
  162. package/dist/__tests__/helpers/route-tree.js +0 -374
  163. package/dist/__tests__/helpers/route-tree.js.map +0 -1
  164. package/dist/__tests__/match-result.test.d.ts +0 -2
  165. package/dist/__tests__/match-result.test.d.ts.map +0 -1
  166. package/dist/__tests__/match-result.test.js +0 -154
  167. package/dist/__tests__/match-result.test.js.map +0 -1
  168. package/dist/__tests__/navigation-store.test.d.ts +0 -2
  169. package/dist/__tests__/navigation-store.test.d.ts.map +0 -1
  170. package/dist/__tests__/navigation-store.test.js +0 -440
  171. package/dist/__tests__/navigation-store.test.js.map +0 -1
  172. package/dist/__tests__/partial-update.test.d.ts +0 -2
  173. package/dist/__tests__/partial-update.test.d.ts.map +0 -1
  174. package/dist/__tests__/partial-update.test.js +0 -1009
  175. package/dist/__tests__/partial-update.test.js.map +0 -1
  176. package/dist/__tests__/reverse-types.test.d.ts +0 -8
  177. package/dist/__tests__/reverse-types.test.d.ts.map +0 -1
  178. package/dist/__tests__/reverse-types.test.js +0 -656
  179. package/dist/__tests__/reverse-types.test.js.map +0 -1
  180. package/dist/__tests__/route-definition.test.d.ts +0 -2
  181. package/dist/__tests__/route-definition.test.d.ts.map +0 -1
  182. package/dist/__tests__/route-definition.test.js +0 -55
  183. package/dist/__tests__/route-definition.test.js.map +0 -1
  184. package/dist/__tests__/router-helpers.test.d.ts +0 -2
  185. package/dist/__tests__/router-helpers.test.d.ts.map +0 -1
  186. package/dist/__tests__/router-helpers.test.js +0 -377
  187. package/dist/__tests__/router-helpers.test.js.map +0 -1
  188. package/dist/__tests__/router-integration-2.test.d.ts +0 -2
  189. package/dist/__tests__/router-integration-2.test.d.ts.map +0 -1
  190. package/dist/__tests__/router-integration-2.test.js +0 -426
  191. package/dist/__tests__/router-integration-2.test.js.map +0 -1
  192. package/dist/__tests__/router-integration.test.d.ts +0 -2
  193. package/dist/__tests__/router-integration.test.d.ts.map +0 -1
  194. package/dist/__tests__/router-integration.test.js +0 -1051
  195. package/dist/__tests__/router-integration.test.js.map +0 -1
  196. package/dist/__tests__/search-params.test.d.ts +0 -5
  197. package/dist/__tests__/search-params.test.d.ts.map +0 -1
  198. package/dist/__tests__/search-params.test.js +0 -306
  199. package/dist/__tests__/search-params.test.js.map +0 -1
  200. package/dist/__tests__/segment-system.test.d.ts +0 -2
  201. package/dist/__tests__/segment-system.test.d.ts.map +0 -1
  202. package/dist/__tests__/segment-system.test.js +0 -627
  203. package/dist/__tests__/segment-system.test.js.map +0 -1
  204. package/dist/__tests__/static-handler-types.test.d.ts +0 -8
  205. package/dist/__tests__/static-handler-types.test.d.ts.map +0 -1
  206. package/dist/__tests__/static-handler-types.test.js +0 -63
  207. package/dist/__tests__/static-handler-types.test.js.map +0 -1
  208. package/dist/__tests__/urls.test.d.ts +0 -2
  209. package/dist/__tests__/urls.test.d.ts.map +0 -1
  210. package/dist/__tests__/urls.test.js +0 -421
  211. package/dist/__tests__/urls.test.js.map +0 -1
  212. package/dist/__tests__/use-mount.test.d.ts +0 -2
  213. package/dist/__tests__/use-mount.test.d.ts.map +0 -1
  214. package/dist/__tests__/use-mount.test.js +0 -35
  215. package/dist/__tests__/use-mount.test.js.map +0 -1
  216. package/dist/bin/rango.d.ts +0 -2
  217. package/dist/bin/rango.d.ts.map +0 -1
  218. package/dist/bin/rango.js.map +0 -1
  219. package/dist/browser/event-controller.d.ts +0 -191
  220. package/dist/browser/event-controller.d.ts.map +0 -1
  221. package/dist/browser/event-controller.js +0 -559
  222. package/dist/browser/event-controller.js.map +0 -1
  223. package/dist/browser/index.d.ts +0 -2
  224. package/dist/browser/index.d.ts.map +0 -1
  225. package/dist/browser/index.js +0 -14
  226. package/dist/browser/index.js.map +0 -1
  227. package/dist/browser/link-interceptor.d.ts +0 -38
  228. package/dist/browser/link-interceptor.d.ts.map +0 -1
  229. package/dist/browser/link-interceptor.js +0 -99
  230. package/dist/browser/link-interceptor.js.map +0 -1
  231. package/dist/browser/logging.d.ts +0 -10
  232. package/dist/browser/logging.d.ts.map +0 -1
  233. package/dist/browser/logging.js +0 -29
  234. package/dist/browser/logging.js.map +0 -1
  235. package/dist/browser/lru-cache.d.ts +0 -17
  236. package/dist/browser/lru-cache.d.ts.map +0 -1
  237. package/dist/browser/lru-cache.js +0 -50
  238. package/dist/browser/lru-cache.js.map +0 -1
  239. package/dist/browser/merge-segment-loaders.d.ts +0 -39
  240. package/dist/browser/merge-segment-loaders.d.ts.map +0 -1
  241. package/dist/browser/merge-segment-loaders.js +0 -102
  242. package/dist/browser/merge-segment-loaders.js.map +0 -1
  243. package/dist/browser/navigation-bridge.d.ts +0 -102
  244. package/dist/browser/navigation-bridge.d.ts.map +0 -1
  245. package/dist/browser/navigation-bridge.js +0 -708
  246. package/dist/browser/navigation-bridge.js.map +0 -1
  247. package/dist/browser/navigation-client.d.ts +0 -25
  248. package/dist/browser/navigation-client.d.ts.map +0 -1
  249. package/dist/browser/navigation-client.js +0 -157
  250. package/dist/browser/navigation-client.js.map +0 -1
  251. package/dist/browser/navigation-store.d.ts +0 -101
  252. package/dist/browser/navigation-store.d.ts.map +0 -1
  253. package/dist/browser/navigation-store.js +0 -625
  254. package/dist/browser/navigation-store.js.map +0 -1
  255. package/dist/browser/partial-update.d.ts +0 -75
  256. package/dist/browser/partial-update.d.ts.map +0 -1
  257. package/dist/browser/partial-update.js +0 -426
  258. package/dist/browser/partial-update.js.map +0 -1
  259. package/dist/browser/react/Link.d.ts +0 -86
  260. package/dist/browser/react/Link.d.ts.map +0 -1
  261. package/dist/browser/react/Link.js +0 -128
  262. package/dist/browser/react/Link.js.map +0 -1
  263. package/dist/browser/react/NavigationProvider.d.ts +0 -63
  264. package/dist/browser/react/NavigationProvider.d.ts.map +0 -1
  265. package/dist/browser/react/NavigationProvider.js +0 -216
  266. package/dist/browser/react/NavigationProvider.js.map +0 -1
  267. package/dist/browser/react/ScrollRestoration.d.ts +0 -75
  268. package/dist/browser/react/ScrollRestoration.d.ts.map +0 -1
  269. package/dist/browser/react/ScrollRestoration.js +0 -57
  270. package/dist/browser/react/ScrollRestoration.js.map +0 -1
  271. package/dist/browser/react/context.d.ts +0 -46
  272. package/dist/browser/react/context.d.ts.map +0 -1
  273. package/dist/browser/react/context.js +0 -10
  274. package/dist/browser/react/context.js.map +0 -1
  275. package/dist/browser/react/index.d.ts +0 -11
  276. package/dist/browser/react/index.d.ts.map +0 -1
  277. package/dist/browser/react/index.js +0 -22
  278. package/dist/browser/react/index.js.map +0 -1
  279. package/dist/browser/react/location-state-shared.d.ts +0 -63
  280. package/dist/browser/react/location-state-shared.d.ts.map +0 -1
  281. package/dist/browser/react/location-state-shared.js +0 -81
  282. package/dist/browser/react/location-state-shared.js.map +0 -1
  283. package/dist/browser/react/location-state.d.ts +0 -23
  284. package/dist/browser/react/location-state.d.ts.map +0 -1
  285. package/dist/browser/react/location-state.js +0 -29
  286. package/dist/browser/react/location-state.js.map +0 -1
  287. package/dist/browser/react/mount-context.d.ts +0 -24
  288. package/dist/browser/react/mount-context.d.ts.map +0 -1
  289. package/dist/browser/react/mount-context.js +0 -24
  290. package/dist/browser/react/mount-context.js.map +0 -1
  291. package/dist/browser/react/use-action.d.ts +0 -64
  292. package/dist/browser/react/use-action.d.ts.map +0 -1
  293. package/dist/browser/react/use-action.js +0 -134
  294. package/dist/browser/react/use-action.js.map +0 -1
  295. package/dist/browser/react/use-client-cache.d.ts +0 -41
  296. package/dist/browser/react/use-client-cache.d.ts.map +0 -1
  297. package/dist/browser/react/use-client-cache.js +0 -39
  298. package/dist/browser/react/use-client-cache.js.map +0 -1
  299. package/dist/browser/react/use-handle.d.ts +0 -31
  300. package/dist/browser/react/use-handle.d.ts.map +0 -1
  301. package/dist/browser/react/use-handle.js +0 -144
  302. package/dist/browser/react/use-handle.js.map +0 -1
  303. package/dist/browser/react/use-href.d.ts +0 -33
  304. package/dist/browser/react/use-href.d.ts.map +0 -1
  305. package/dist/browser/react/use-href.js +0 -39
  306. package/dist/browser/react/use-href.js.map +0 -1
  307. package/dist/browser/react/use-link-status.d.ts +0 -37
  308. package/dist/browser/react/use-link-status.d.ts.map +0 -1
  309. package/dist/browser/react/use-link-status.js +0 -99
  310. package/dist/browser/react/use-link-status.js.map +0 -1
  311. package/dist/browser/react/use-mount.d.ts +0 -25
  312. package/dist/browser/react/use-mount.d.ts.map +0 -1
  313. package/dist/browser/react/use-mount.js +0 -30
  314. package/dist/browser/react/use-mount.js.map +0 -1
  315. package/dist/browser/react/use-navigation.d.ts +0 -27
  316. package/dist/browser/react/use-navigation.d.ts.map +0 -1
  317. package/dist/browser/react/use-navigation.js +0 -87
  318. package/dist/browser/react/use-navigation.js.map +0 -1
  319. package/dist/browser/react/use-segments.d.ts +0 -38
  320. package/dist/browser/react/use-segments.d.ts.map +0 -1
  321. package/dist/browser/react/use-segments.js +0 -130
  322. package/dist/browser/react/use-segments.js.map +0 -1
  323. package/dist/browser/request-controller.d.ts +0 -26
  324. package/dist/browser/request-controller.d.ts.map +0 -1
  325. package/dist/browser/request-controller.js +0 -147
  326. package/dist/browser/request-controller.js.map +0 -1
  327. package/dist/browser/rsc-router.d.ts +0 -129
  328. package/dist/browser/rsc-router.d.ts.map +0 -1
  329. package/dist/browser/rsc-router.js +0 -195
  330. package/dist/browser/rsc-router.js.map +0 -1
  331. package/dist/browser/scroll-restoration.d.ts +0 -93
  332. package/dist/browser/scroll-restoration.d.ts.map +0 -1
  333. package/dist/browser/scroll-restoration.js +0 -321
  334. package/dist/browser/scroll-restoration.js.map +0 -1
  335. package/dist/browser/segment-structure-assert.d.ts +0 -17
  336. package/dist/browser/segment-structure-assert.d.ts.map +0 -1
  337. package/dist/browser/segment-structure-assert.js +0 -59
  338. package/dist/browser/segment-structure-assert.js.map +0 -1
  339. package/dist/browser/server-action-bridge.d.ts +0 -26
  340. package/dist/browser/server-action-bridge.d.ts.map +0 -1
  341. package/dist/browser/server-action-bridge.js +0 -668
  342. package/dist/browser/server-action-bridge.js.map +0 -1
  343. package/dist/browser/shallow.d.ts +0 -12
  344. package/dist/browser/shallow.d.ts.map +0 -1
  345. package/dist/browser/shallow.js +0 -34
  346. package/dist/browser/shallow.js.map +0 -1
  347. package/dist/browser/types.d.ts +0 -369
  348. package/dist/browser/types.d.ts.map +0 -1
  349. package/dist/browser/types.js +0 -2
  350. package/dist/browser/types.js.map +0 -1
  351. package/dist/build/__tests__/generate-cli.test.d.ts +0 -2
  352. package/dist/build/__tests__/generate-cli.test.d.ts.map +0 -1
  353. package/dist/build/__tests__/generate-cli.test.js +0 -237
  354. package/dist/build/__tests__/generate-cli.test.js.map +0 -1
  355. package/dist/build/__tests__/generate-manifest.test.d.ts +0 -2
  356. package/dist/build/__tests__/generate-manifest.test.d.ts.map +0 -1
  357. package/dist/build/__tests__/generate-manifest.test.js +0 -119
  358. package/dist/build/__tests__/generate-manifest.test.js.map +0 -1
  359. package/dist/build/__tests__/generate-route-types.test.d.ts +0 -2
  360. package/dist/build/__tests__/generate-route-types.test.d.ts.map +0 -1
  361. package/dist/build/__tests__/generate-route-types.test.js +0 -620
  362. package/dist/build/__tests__/generate-route-types.test.js.map +0 -1
  363. package/dist/build/__tests__/per-router-manifest.test.d.ts +0 -2
  364. package/dist/build/__tests__/per-router-manifest.test.d.ts.map +0 -1
  365. package/dist/build/__tests__/per-router-manifest.test.js +0 -308
  366. package/dist/build/__tests__/per-router-manifest.test.js.map +0 -1
  367. package/dist/build/generate-manifest.d.ts +0 -81
  368. package/dist/build/generate-manifest.d.ts.map +0 -1
  369. package/dist/build/generate-manifest.js +0 -276
  370. package/dist/build/generate-manifest.js.map +0 -1
  371. package/dist/build/generate-route-types.d.ts +0 -115
  372. package/dist/build/generate-route-types.d.ts.map +0 -1
  373. package/dist/build/generate-route-types.js +0 -740
  374. package/dist/build/generate-route-types.js.map +0 -1
  375. package/dist/build/index.d.ts +0 -21
  376. package/dist/build/index.d.ts.map +0 -1
  377. package/dist/build/index.js +0 -21
  378. package/dist/build/index.js.map +0 -1
  379. package/dist/build/route-trie.d.ts +0 -71
  380. package/dist/build/route-trie.d.ts.map +0 -1
  381. package/dist/build/route-trie.js +0 -175
  382. package/dist/build/route-trie.js.map +0 -1
  383. package/dist/cache/__tests__/cache-scope.test.d.ts +0 -2
  384. package/dist/cache/__tests__/cache-scope.test.d.ts.map +0 -1
  385. package/dist/cache/__tests__/cache-scope.test.js +0 -208
  386. package/dist/cache/__tests__/cache-scope.test.js.map +0 -1
  387. package/dist/cache/__tests__/document-cache.test.d.ts +0 -2
  388. package/dist/cache/__tests__/document-cache.test.d.ts.map +0 -1
  389. package/dist/cache/__tests__/document-cache.test.js +0 -345
  390. package/dist/cache/__tests__/document-cache.test.js.map +0 -1
  391. package/dist/cache/__tests__/memory-segment-store.test.d.ts +0 -2
  392. package/dist/cache/__tests__/memory-segment-store.test.d.ts.map +0 -1
  393. package/dist/cache/__tests__/memory-segment-store.test.js +0 -425
  394. package/dist/cache/__tests__/memory-segment-store.test.js.map +0 -1
  395. package/dist/cache/__tests__/memory-store.test.d.ts +0 -2
  396. package/dist/cache/__tests__/memory-store.test.d.ts.map +0 -1
  397. package/dist/cache/__tests__/memory-store.test.js +0 -367
  398. package/dist/cache/__tests__/memory-store.test.js.map +0 -1
  399. package/dist/cache/cache-scope.d.ts +0 -102
  400. package/dist/cache/cache-scope.d.ts.map +0 -1
  401. package/dist/cache/cache-scope.js +0 -440
  402. package/dist/cache/cache-scope.js.map +0 -1
  403. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts +0 -2
  404. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts.map +0 -1
  405. package/dist/cache/cf/__tests__/cf-cache-store.test.js +0 -330
  406. package/dist/cache/cf/__tests__/cf-cache-store.test.js.map +0 -1
  407. package/dist/cache/cf/cf-cache-store.d.ts +0 -165
  408. package/dist/cache/cf/cf-cache-store.d.ts.map +0 -1
  409. package/dist/cache/cf/cf-cache-store.js +0 -242
  410. package/dist/cache/cf/cf-cache-store.js.map +0 -1
  411. package/dist/cache/cf/index.d.ts +0 -14
  412. package/dist/cache/cf/index.d.ts.map +0 -1
  413. package/dist/cache/cf/index.js +0 -17
  414. package/dist/cache/cf/index.js.map +0 -1
  415. package/dist/cache/document-cache.d.ts +0 -64
  416. package/dist/cache/document-cache.d.ts.map +0 -1
  417. package/dist/cache/document-cache.js +0 -228
  418. package/dist/cache/document-cache.js.map +0 -1
  419. package/dist/cache/index.d.ts +0 -19
  420. package/dist/cache/index.d.ts.map +0 -1
  421. package/dist/cache/index.js +0 -21
  422. package/dist/cache/index.js.map +0 -1
  423. package/dist/cache/memory-segment-store.d.ts +0 -110
  424. package/dist/cache/memory-segment-store.d.ts.map +0 -1
  425. package/dist/cache/memory-segment-store.js +0 -117
  426. package/dist/cache/memory-segment-store.js.map +0 -1
  427. package/dist/cache/memory-store.d.ts +0 -41
  428. package/dist/cache/memory-store.d.ts.map +0 -1
  429. package/dist/cache/memory-store.js +0 -191
  430. package/dist/cache/memory-store.js.map +0 -1
  431. package/dist/cache/types.d.ts +0 -317
  432. package/dist/cache/types.d.ts.map +0 -1
  433. package/dist/cache/types.js +0 -12
  434. package/dist/cache/types.js.map +0 -1
  435. package/dist/client.d.ts +0 -248
  436. package/dist/client.d.ts.map +0 -1
  437. package/dist/client.js +0 -367
  438. package/dist/client.js.map +0 -1
  439. package/dist/client.rsc.d.ts +0 -26
  440. package/dist/client.rsc.d.ts.map +0 -1
  441. package/dist/client.rsc.js +0 -46
  442. package/dist/client.rsc.js.map +0 -1
  443. package/dist/component-utils.d.ts +0 -36
  444. package/dist/component-utils.d.ts.map +0 -1
  445. package/dist/component-utils.js +0 -61
  446. package/dist/component-utils.js.map +0 -1
  447. package/dist/components/DefaultDocument.d.ts +0 -13
  448. package/dist/components/DefaultDocument.d.ts.map +0 -1
  449. package/dist/components/DefaultDocument.js +0 -15
  450. package/dist/components/DefaultDocument.js.map +0 -1
  451. package/dist/debug.d.ts +0 -58
  452. package/dist/debug.d.ts.map +0 -1
  453. package/dist/debug.js +0 -157
  454. package/dist/debug.js.map +0 -1
  455. package/dist/default-error-boundary.d.ts +0 -11
  456. package/dist/default-error-boundary.d.ts.map +0 -1
  457. package/dist/default-error-boundary.js +0 -45
  458. package/dist/default-error-boundary.js.map +0 -1
  459. package/dist/deps/browser.d.ts +0 -2
  460. package/dist/deps/browser.d.ts.map +0 -1
  461. package/dist/deps/browser.js +0 -3
  462. package/dist/deps/browser.js.map +0 -1
  463. package/dist/deps/html-stream-client.d.ts +0 -2
  464. package/dist/deps/html-stream-client.d.ts.map +0 -1
  465. package/dist/deps/html-stream-client.js +0 -3
  466. package/dist/deps/html-stream-client.js.map +0 -1
  467. package/dist/deps/html-stream-server.d.ts +0 -2
  468. package/dist/deps/html-stream-server.d.ts.map +0 -1
  469. package/dist/deps/html-stream-server.js +0 -3
  470. package/dist/deps/html-stream-server.js.map +0 -1
  471. package/dist/deps/rsc.d.ts +0 -2
  472. package/dist/deps/rsc.d.ts.map +0 -1
  473. package/dist/deps/rsc.js +0 -4
  474. package/dist/deps/rsc.js.map +0 -1
  475. package/dist/deps/ssr.d.ts +0 -2
  476. package/dist/deps/ssr.d.ts.map +0 -1
  477. package/dist/deps/ssr.js +0 -3
  478. package/dist/deps/ssr.js.map +0 -1
  479. package/dist/errors.d.ts +0 -174
  480. package/dist/errors.d.ts.map +0 -1
  481. package/dist/errors.js +0 -241
  482. package/dist/errors.js.map +0 -1
  483. package/dist/handle.d.ts +0 -78
  484. package/dist/handle.d.ts.map +0 -1
  485. package/dist/handle.js +0 -82
  486. package/dist/handle.js.map +0 -1
  487. package/dist/handles/MetaTags.d.ts +0 -14
  488. package/dist/handles/MetaTags.d.ts.map +0 -1
  489. package/dist/handles/MetaTags.js +0 -136
  490. package/dist/handles/MetaTags.js.map +0 -1
  491. package/dist/handles/index.d.ts +0 -6
  492. package/dist/handles/index.d.ts.map +0 -1
  493. package/dist/handles/index.js +0 -6
  494. package/dist/handles/index.js.map +0 -1
  495. package/dist/handles/meta.d.ts +0 -39
  496. package/dist/handles/meta.d.ts.map +0 -1
  497. package/dist/handles/meta.js +0 -202
  498. package/dist/handles/meta.js.map +0 -1
  499. package/dist/host/__tests__/errors.test.d.ts +0 -2
  500. package/dist/host/__tests__/errors.test.d.ts.map +0 -1
  501. package/dist/host/__tests__/errors.test.js +0 -76
  502. package/dist/host/__tests__/errors.test.js.map +0 -1
  503. package/dist/host/__tests__/pattern-comprehensive.test.d.ts +0 -2
  504. package/dist/host/__tests__/pattern-comprehensive.test.d.ts.map +0 -1
  505. package/dist/host/__tests__/pattern-comprehensive.test.js +0 -732
  506. package/dist/host/__tests__/pattern-comprehensive.test.js.map +0 -1
  507. package/dist/host/__tests__/pattern-matcher.test.d.ts +0 -2
  508. package/dist/host/__tests__/pattern-matcher.test.d.ts.map +0 -1
  509. package/dist/host/__tests__/pattern-matcher.test.js +0 -251
  510. package/dist/host/__tests__/pattern-matcher.test.js.map +0 -1
  511. package/dist/host/__tests__/router.test.d.ts +0 -2
  512. package/dist/host/__tests__/router.test.d.ts.map +0 -1
  513. package/dist/host/__tests__/router.test.js +0 -241
  514. package/dist/host/__tests__/router.test.js.map +0 -1
  515. package/dist/host/__tests__/testing.test.d.ts +0 -2
  516. package/dist/host/__tests__/testing.test.d.ts.map +0 -1
  517. package/dist/host/__tests__/testing.test.js +0 -64
  518. package/dist/host/__tests__/testing.test.js.map +0 -1
  519. package/dist/host/__tests__/utils.test.d.ts +0 -2
  520. package/dist/host/__tests__/utils.test.d.ts.map +0 -1
  521. package/dist/host/__tests__/utils.test.js +0 -29
  522. package/dist/host/__tests__/utils.test.js.map +0 -1
  523. package/dist/host/cookie-handler.d.ts +0 -34
  524. package/dist/host/cookie-handler.d.ts.map +0 -1
  525. package/dist/host/cookie-handler.js +0 -124
  526. package/dist/host/cookie-handler.js.map +0 -1
  527. package/dist/host/errors.d.ts +0 -56
  528. package/dist/host/errors.d.ts.map +0 -1
  529. package/dist/host/errors.js +0 -79
  530. package/dist/host/errors.js.map +0 -1
  531. package/dist/host/index.d.ts +0 -29
  532. package/dist/host/index.d.ts.map +0 -1
  533. package/dist/host/index.js +0 -32
  534. package/dist/host/index.js.map +0 -1
  535. package/dist/host/pattern-matcher.d.ts +0 -36
  536. package/dist/host/pattern-matcher.d.ts.map +0 -1
  537. package/dist/host/pattern-matcher.js +0 -172
  538. package/dist/host/pattern-matcher.js.map +0 -1
  539. package/dist/host/router.d.ts +0 -26
  540. package/dist/host/router.d.ts.map +0 -1
  541. package/dist/host/router.js +0 -218
  542. package/dist/host/router.js.map +0 -1
  543. package/dist/host/testing.d.ts +0 -36
  544. package/dist/host/testing.d.ts.map +0 -1
  545. package/dist/host/testing.js +0 -55
  546. package/dist/host/testing.js.map +0 -1
  547. package/dist/host/types.d.ts +0 -115
  548. package/dist/host/types.d.ts.map +0 -1
  549. package/dist/host/types.js +0 -7
  550. package/dist/host/types.js.map +0 -1
  551. package/dist/host/utils.d.ts +0 -21
  552. package/dist/host/utils.d.ts.map +0 -1
  553. package/dist/host/utils.js +0 -23
  554. package/dist/host/utils.js.map +0 -1
  555. package/dist/href-client.d.ts +0 -131
  556. package/dist/href-client.d.ts.map +0 -1
  557. package/dist/href-client.js +0 -64
  558. package/dist/href-client.js.map +0 -1
  559. package/dist/href-context.d.ts +0 -29
  560. package/dist/href-context.d.ts.map +0 -1
  561. package/dist/href-context.js +0 -21
  562. package/dist/href-context.js.map +0 -1
  563. package/dist/index.d.ts +0 -73
  564. package/dist/index.d.ts.map +0 -1
  565. package/dist/index.js +0 -91
  566. package/dist/index.js.map +0 -1
  567. package/dist/index.rsc.d.ts +0 -32
  568. package/dist/index.rsc.d.ts.map +0 -1
  569. package/dist/index.rsc.js +0 -40
  570. package/dist/index.rsc.js.map +0 -1
  571. package/dist/internal-debug.d.ts +0 -2
  572. package/dist/internal-debug.d.ts.map +0 -1
  573. package/dist/internal-debug.js +0 -5
  574. package/dist/internal-debug.js.map +0 -1
  575. package/dist/loader.d.ts +0 -14
  576. package/dist/loader.d.ts.map +0 -1
  577. package/dist/loader.js +0 -20
  578. package/dist/loader.js.map +0 -1
  579. package/dist/loader.rsc.d.ts +0 -19
  580. package/dist/loader.rsc.d.ts.map +0 -1
  581. package/dist/loader.rsc.js +0 -99
  582. package/dist/loader.rsc.js.map +0 -1
  583. package/dist/network-error-thrower.d.ts +0 -17
  584. package/dist/network-error-thrower.d.ts.map +0 -1
  585. package/dist/network-error-thrower.js +0 -14
  586. package/dist/network-error-thrower.js.map +0 -1
  587. package/dist/outlet-context.d.ts +0 -13
  588. package/dist/outlet-context.d.ts.map +0 -1
  589. package/dist/outlet-context.js +0 -3
  590. package/dist/outlet-context.js.map +0 -1
  591. package/dist/prerender/__tests__/param-hash.test.d.ts +0 -2
  592. package/dist/prerender/__tests__/param-hash.test.d.ts.map +0 -1
  593. package/dist/prerender/__tests__/param-hash.test.js +0 -148
  594. package/dist/prerender/__tests__/param-hash.test.js.map +0 -1
  595. package/dist/prerender/param-hash.d.ts +0 -16
  596. package/dist/prerender/param-hash.d.ts.map +0 -1
  597. package/dist/prerender/param-hash.js +0 -36
  598. package/dist/prerender/param-hash.js.map +0 -1
  599. package/dist/prerender/store.d.ts +0 -38
  600. package/dist/prerender/store.d.ts.map +0 -1
  601. package/dist/prerender/store.js +0 -61
  602. package/dist/prerender/store.js.map +0 -1
  603. package/dist/prerender.d.ts +0 -66
  604. package/dist/prerender.d.ts.map +0 -1
  605. package/dist/prerender.js +0 -57
  606. package/dist/prerender.js.map +0 -1
  607. package/dist/reverse.d.ts +0 -196
  608. package/dist/reverse.d.ts.map +0 -1
  609. package/dist/reverse.js +0 -78
  610. package/dist/reverse.js.map +0 -1
  611. package/dist/root-error-boundary.d.ts +0 -33
  612. package/dist/root-error-boundary.d.ts.map +0 -1
  613. package/dist/root-error-boundary.js +0 -165
  614. package/dist/root-error-boundary.js.map +0 -1
  615. package/dist/route-content-wrapper.d.ts +0 -46
  616. package/dist/route-content-wrapper.d.ts.map +0 -1
  617. package/dist/route-content-wrapper.js +0 -77
  618. package/dist/route-content-wrapper.js.map +0 -1
  619. package/dist/route-definition.d.ts +0 -421
  620. package/dist/route-definition.d.ts.map +0 -1
  621. package/dist/route-definition.js +0 -868
  622. package/dist/route-definition.js.map +0 -1
  623. package/dist/route-map-builder.d.ts +0 -155
  624. package/dist/route-map-builder.d.ts.map +0 -1
  625. package/dist/route-map-builder.js +0 -237
  626. package/dist/route-map-builder.js.map +0 -1
  627. package/dist/route-types.d.ts +0 -165
  628. package/dist/route-types.d.ts.map +0 -1
  629. package/dist/route-types.js +0 -7
  630. package/dist/route-types.js.map +0 -1
  631. package/dist/router/__tests__/handler-context.test.d.ts +0 -2
  632. package/dist/router/__tests__/handler-context.test.d.ts.map +0 -1
  633. package/dist/router/__tests__/handler-context.test.js +0 -65
  634. package/dist/router/__tests__/handler-context.test.js.map +0 -1
  635. package/dist/router/__tests__/loader-cycle-detection.test.d.ts +0 -2
  636. package/dist/router/__tests__/loader-cycle-detection.test.d.ts.map +0 -1
  637. package/dist/router/__tests__/loader-cycle-detection.test.js +0 -221
  638. package/dist/router/__tests__/loader-cycle-detection.test.js.map +0 -1
  639. package/dist/router/__tests__/match-context.test.d.ts +0 -2
  640. package/dist/router/__tests__/match-context.test.d.ts.map +0 -1
  641. package/dist/router/__tests__/match-context.test.js +0 -92
  642. package/dist/router/__tests__/match-context.test.js.map +0 -1
  643. package/dist/router/__tests__/match-pipelines.test.d.ts +0 -2
  644. package/dist/router/__tests__/match-pipelines.test.d.ts.map +0 -1
  645. package/dist/router/__tests__/match-pipelines.test.js +0 -417
  646. package/dist/router/__tests__/match-pipelines.test.js.map +0 -1
  647. package/dist/router/__tests__/match-result.test.d.ts +0 -2
  648. package/dist/router/__tests__/match-result.test.d.ts.map +0 -1
  649. package/dist/router/__tests__/match-result.test.js +0 -457
  650. package/dist/router/__tests__/match-result.test.js.map +0 -1
  651. package/dist/router/__tests__/on-error.test.d.ts +0 -2
  652. package/dist/router/__tests__/on-error.test.d.ts.map +0 -1
  653. package/dist/router/__tests__/on-error.test.js +0 -678
  654. package/dist/router/__tests__/on-error.test.js.map +0 -1
  655. package/dist/router/__tests__/pattern-matching.test.d.ts +0 -2
  656. package/dist/router/__tests__/pattern-matching.test.d.ts.map +0 -1
  657. package/dist/router/__tests__/pattern-matching.test.js +0 -629
  658. package/dist/router/__tests__/pattern-matching.test.js.map +0 -1
  659. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts +0 -2
  660. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts.map +0 -1
  661. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js +0 -155
  662. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js.map +0 -1
  663. package/dist/router/error-handling.d.ts +0 -77
  664. package/dist/router/error-handling.d.ts.map +0 -1
  665. package/dist/router/error-handling.js +0 -202
  666. package/dist/router/error-handling.js.map +0 -1
  667. package/dist/router/handler-context.d.ts +0 -20
  668. package/dist/router/handler-context.d.ts.map +0 -1
  669. package/dist/router/handler-context.js +0 -198
  670. package/dist/router/handler-context.js.map +0 -1
  671. package/dist/router/intercept-resolution.d.ts +0 -66
  672. package/dist/router/intercept-resolution.d.ts.map +0 -1
  673. package/dist/router/intercept-resolution.js +0 -246
  674. package/dist/router/intercept-resolution.js.map +0 -1
  675. package/dist/router/loader-resolution.d.ts +0 -64
  676. package/dist/router/loader-resolution.d.ts.map +0 -1
  677. package/dist/router/loader-resolution.js +0 -284
  678. package/dist/router/loader-resolution.js.map +0 -1
  679. package/dist/router/logging.d.ts +0 -15
  680. package/dist/router/logging.d.ts.map +0 -1
  681. package/dist/router/logging.js +0 -99
  682. package/dist/router/logging.js.map +0 -1
  683. package/dist/router/manifest.d.ts +0 -22
  684. package/dist/router/manifest.d.ts.map +0 -1
  685. package/dist/router/manifest.js +0 -181
  686. package/dist/router/manifest.js.map +0 -1
  687. package/dist/router/match-api.d.ts +0 -35
  688. package/dist/router/match-api.d.ts.map +0 -1
  689. package/dist/router/match-api.js +0 -406
  690. package/dist/router/match-api.js.map +0 -1
  691. package/dist/router/match-context.d.ts +0 -206
  692. package/dist/router/match-context.d.ts.map +0 -1
  693. package/dist/router/match-context.js +0 -17
  694. package/dist/router/match-context.js.map +0 -1
  695. package/dist/router/match-middleware/background-revalidation.d.ts +0 -127
  696. package/dist/router/match-middleware/background-revalidation.d.ts.map +0 -1
  697. package/dist/router/match-middleware/background-revalidation.js +0 -75
  698. package/dist/router/match-middleware/background-revalidation.js.map +0 -1
  699. package/dist/router/match-middleware/cache-lookup.d.ts +0 -112
  700. package/dist/router/match-middleware/cache-lookup.d.ts.map +0 -1
  701. package/dist/router/match-middleware/cache-lookup.js +0 -257
  702. package/dist/router/match-middleware/cache-lookup.js.map +0 -1
  703. package/dist/router/match-middleware/cache-store.d.ts +0 -113
  704. package/dist/router/match-middleware/cache-store.d.ts.map +0 -1
  705. package/dist/router/match-middleware/cache-store.js +0 -108
  706. package/dist/router/match-middleware/cache-store.js.map +0 -1
  707. package/dist/router/match-middleware/index.d.ts +0 -81
  708. package/dist/router/match-middleware/index.d.ts.map +0 -1
  709. package/dist/router/match-middleware/index.js +0 -80
  710. package/dist/router/match-middleware/index.js.map +0 -1
  711. package/dist/router/match-middleware/intercept-resolution.d.ts +0 -117
  712. package/dist/router/match-middleware/intercept-resolution.d.ts.map +0 -1
  713. package/dist/router/match-middleware/intercept-resolution.js +0 -134
  714. package/dist/router/match-middleware/intercept-resolution.js.map +0 -1
  715. package/dist/router/match-middleware/segment-resolution.d.ts +0 -99
  716. package/dist/router/match-middleware/segment-resolution.d.ts.map +0 -1
  717. package/dist/router/match-middleware/segment-resolution.js +0 -53
  718. package/dist/router/match-middleware/segment-resolution.js.map +0 -1
  719. package/dist/router/match-pipelines.d.ts +0 -147
  720. package/dist/router/match-pipelines.d.ts.map +0 -1
  721. package/dist/router/match-pipelines.js +0 -82
  722. package/dist/router/match-pipelines.js.map +0 -1
  723. package/dist/router/match-result.d.ts +0 -126
  724. package/dist/router/match-result.d.ts.map +0 -1
  725. package/dist/router/match-result.js +0 -93
  726. package/dist/router/match-result.js.map +0 -1
  727. package/dist/router/metrics.d.ts +0 -20
  728. package/dist/router/metrics.d.ts.map +0 -1
  729. package/dist/router/metrics.js +0 -47
  730. package/dist/router/metrics.js.map +0 -1
  731. package/dist/router/middleware.d.ts +0 -249
  732. package/dist/router/middleware.d.ts.map +0 -1
  733. package/dist/router/middleware.js +0 -434
  734. package/dist/router/middleware.js.map +0 -1
  735. package/dist/router/middleware.test.d.ts +0 -2
  736. package/dist/router/middleware.test.d.ts.map +0 -1
  737. package/dist/router/middleware.test.js +0 -816
  738. package/dist/router/middleware.test.js.map +0 -1
  739. package/dist/router/pattern-matching.d.ts +0 -149
  740. package/dist/router/pattern-matching.d.ts.map +0 -1
  741. package/dist/router/pattern-matching.js +0 -349
  742. package/dist/router/pattern-matching.js.map +0 -1
  743. package/dist/router/revalidation.d.ts +0 -44
  744. package/dist/router/revalidation.d.ts.map +0 -1
  745. package/dist/router/revalidation.js +0 -147
  746. package/dist/router/revalidation.js.map +0 -1
  747. package/dist/router/router-context.d.ts +0 -135
  748. package/dist/router/router-context.d.ts.map +0 -1
  749. package/dist/router/router-context.js +0 -36
  750. package/dist/router/router-context.js.map +0 -1
  751. package/dist/router/segment-resolution.d.ts +0 -127
  752. package/dist/router/segment-resolution.d.ts.map +0 -1
  753. package/dist/router/segment-resolution.js +0 -919
  754. package/dist/router/segment-resolution.js.map +0 -1
  755. package/dist/router/trie-matching.d.ts +0 -40
  756. package/dist/router/trie-matching.d.ts.map +0 -1
  757. package/dist/router/trie-matching.js +0 -127
  758. package/dist/router/trie-matching.js.map +0 -1
  759. package/dist/router/types.d.ts +0 -136
  760. package/dist/router/types.d.ts.map +0 -1
  761. package/dist/router/types.js +0 -7
  762. package/dist/router/types.js.map +0 -1
  763. package/dist/router.d.ts +0 -753
  764. package/dist/router.d.ts.map +0 -1
  765. package/dist/router.gen.d.ts +0 -6
  766. package/dist/router.gen.d.ts.map +0 -1
  767. package/dist/router.gen.js +0 -6
  768. package/dist/router.gen.js.map +0 -1
  769. package/dist/router.js +0 -1304
  770. package/dist/router.js.map +0 -1
  771. package/dist/rsc/__tests__/helpers.test.d.ts +0 -2
  772. package/dist/rsc/__tests__/helpers.test.d.ts.map +0 -1
  773. package/dist/rsc/__tests__/helpers.test.js +0 -140
  774. package/dist/rsc/__tests__/helpers.test.js.map +0 -1
  775. package/dist/rsc/handler.d.ts +0 -45
  776. package/dist/rsc/handler.d.ts.map +0 -1
  777. package/dist/rsc/handler.js +0 -1172
  778. package/dist/rsc/handler.js.map +0 -1
  779. package/dist/rsc/helpers.d.ts +0 -16
  780. package/dist/rsc/helpers.d.ts.map +0 -1
  781. package/dist/rsc/helpers.js +0 -55
  782. package/dist/rsc/helpers.js.map +0 -1
  783. package/dist/rsc/index.d.ts +0 -22
  784. package/dist/rsc/index.d.ts.map +0 -1
  785. package/dist/rsc/index.js +0 -23
  786. package/dist/rsc/index.js.map +0 -1
  787. package/dist/rsc/nonce.d.ts +0 -9
  788. package/dist/rsc/nonce.d.ts.map +0 -1
  789. package/dist/rsc/nonce.js +0 -18
  790. package/dist/rsc/nonce.js.map +0 -1
  791. package/dist/rsc/types.d.ts +0 -206
  792. package/dist/rsc/types.d.ts.map +0 -1
  793. package/dist/rsc/types.js +0 -8
  794. package/dist/rsc/types.js.map +0 -1
  795. package/dist/search-params.d.ts +0 -103
  796. package/dist/search-params.d.ts.map +0 -1
  797. package/dist/search-params.js +0 -74
  798. package/dist/search-params.js.map +0 -1
  799. package/dist/segment-system.d.ts +0 -75
  800. package/dist/segment-system.d.ts.map +0 -1
  801. package/dist/segment-system.js +0 -336
  802. package/dist/segment-system.js.map +0 -1
  803. package/dist/server/context.d.ts +0 -245
  804. package/dist/server/context.d.ts.map +0 -1
  805. package/dist/server/context.js +0 -197
  806. package/dist/server/context.js.map +0 -1
  807. package/dist/server/fetchable-loader-store.d.ts +0 -18
  808. package/dist/server/fetchable-loader-store.d.ts.map +0 -1
  809. package/dist/server/fetchable-loader-store.js +0 -18
  810. package/dist/server/fetchable-loader-store.js.map +0 -1
  811. package/dist/server/handle-store.d.ts +0 -85
  812. package/dist/server/handle-store.d.ts.map +0 -1
  813. package/dist/server/handle-store.js +0 -142
  814. package/dist/server/handle-store.js.map +0 -1
  815. package/dist/server/loader-registry.d.ts +0 -55
  816. package/dist/server/loader-registry.d.ts.map +0 -1
  817. package/dist/server/loader-registry.js +0 -132
  818. package/dist/server/loader-registry.js.map +0 -1
  819. package/dist/server/request-context.d.ts +0 -226
  820. package/dist/server/request-context.d.ts.map +0 -1
  821. package/dist/server/request-context.js +0 -290
  822. package/dist/server/request-context.js.map +0 -1
  823. package/dist/server/root-layout.d.ts +0 -4
  824. package/dist/server/root-layout.d.ts.map +0 -1
  825. package/dist/server/root-layout.js +0 -5
  826. package/dist/server/root-layout.js.map +0 -1
  827. package/dist/server.d.ts +0 -15
  828. package/dist/server.d.ts.map +0 -1
  829. package/dist/server.js +0 -20
  830. package/dist/server.js.map +0 -1
  831. package/dist/ssr/__tests__/ssr-handler.test.d.ts +0 -2
  832. package/dist/ssr/__tests__/ssr-handler.test.d.ts.map +0 -1
  833. package/dist/ssr/__tests__/ssr-handler.test.js +0 -132
  834. package/dist/ssr/__tests__/ssr-handler.test.js.map +0 -1
  835. package/dist/ssr/index.d.ts +0 -98
  836. package/dist/ssr/index.d.ts.map +0 -1
  837. package/dist/ssr/index.js +0 -158
  838. package/dist/ssr/index.js.map +0 -1
  839. package/dist/static-handler.d.ts +0 -50
  840. package/dist/static-handler.d.ts.map +0 -1
  841. package/dist/static-handler.gen.d.ts +0 -5
  842. package/dist/static-handler.gen.d.ts.map +0 -1
  843. package/dist/static-handler.gen.js +0 -5
  844. package/dist/static-handler.gen.js.map +0 -1
  845. package/dist/static-handler.js +0 -29
  846. package/dist/static-handler.js.map +0 -1
  847. package/dist/theme/ThemeProvider.d.ts +0 -20
  848. package/dist/theme/ThemeProvider.d.ts.map +0 -1
  849. package/dist/theme/ThemeProvider.js +0 -240
  850. package/dist/theme/ThemeProvider.js.map +0 -1
  851. package/dist/theme/ThemeScript.d.ts +0 -48
  852. package/dist/theme/ThemeScript.d.ts.map +0 -1
  853. package/dist/theme/ThemeScript.js +0 -13
  854. package/dist/theme/ThemeScript.js.map +0 -1
  855. package/dist/theme/__tests__/theme.test.d.ts +0 -2
  856. package/dist/theme/__tests__/theme.test.d.ts.map +0 -1
  857. package/dist/theme/__tests__/theme.test.js +0 -103
  858. package/dist/theme/__tests__/theme.test.js.map +0 -1
  859. package/dist/theme/constants.d.ts +0 -29
  860. package/dist/theme/constants.d.ts.map +0 -1
  861. package/dist/theme/constants.js +0 -48
  862. package/dist/theme/constants.js.map +0 -1
  863. package/dist/theme/index.d.ts +0 -31
  864. package/dist/theme/index.d.ts.map +0 -1
  865. package/dist/theme/index.js +0 -36
  866. package/dist/theme/index.js.map +0 -1
  867. package/dist/theme/theme-context.d.ts +0 -40
  868. package/dist/theme/theme-context.d.ts.map +0 -1
  869. package/dist/theme/theme-context.js +0 -60
  870. package/dist/theme/theme-context.js.map +0 -1
  871. package/dist/theme/theme-script.d.ts +0 -27
  872. package/dist/theme/theme-script.d.ts.map +0 -1
  873. package/dist/theme/theme-script.js +0 -147
  874. package/dist/theme/theme-script.js.map +0 -1
  875. package/dist/theme/types.d.ts +0 -163
  876. package/dist/theme/types.d.ts.map +0 -1
  877. package/dist/theme/types.js +0 -11
  878. package/dist/theme/types.js.map +0 -1
  879. package/dist/theme/use-theme.d.ts +0 -12
  880. package/dist/theme/use-theme.d.ts.map +0 -1
  881. package/dist/theme/use-theme.js +0 -40
  882. package/dist/theme/use-theme.js.map +0 -1
  883. package/dist/types.d.ts +0 -1479
  884. package/dist/types.d.ts.map +0 -1
  885. package/dist/types.js +0 -10
  886. package/dist/types.js.map +0 -1
  887. package/dist/urls.d.ts +0 -441
  888. package/dist/urls.d.ts.map +0 -1
  889. package/dist/urls.gen.d.ts +0 -8
  890. package/dist/urls.gen.d.ts.map +0 -1
  891. package/dist/urls.gen.js +0 -8
  892. package/dist/urls.gen.js.map +0 -1
  893. package/dist/urls.js +0 -443
  894. package/dist/urls.js.map +0 -1
  895. package/dist/use-loader.d.ts +0 -127
  896. package/dist/use-loader.d.ts.map +0 -1
  897. package/dist/use-loader.js +0 -237
  898. package/dist/use-loader.js.map +0 -1
  899. package/dist/vite/__tests__/ast-handler-extract.test.d.ts +0 -2
  900. package/dist/vite/__tests__/ast-handler-extract.test.d.ts.map +0 -1
  901. package/dist/vite/__tests__/ast-handler-extract.test.js +0 -294
  902. package/dist/vite/__tests__/ast-handler-extract.test.js.map +0 -1
  903. package/dist/vite/__tests__/expose-id-utils.test.d.ts +0 -2
  904. package/dist/vite/__tests__/expose-id-utils.test.d.ts.map +0 -1
  905. package/dist/vite/__tests__/expose-id-utils.test.js +0 -224
  906. package/dist/vite/__tests__/expose-id-utils.test.js.map +0 -1
  907. package/dist/vite/__tests__/expose-internal-ids.test.d.ts +0 -2
  908. package/dist/vite/__tests__/expose-internal-ids.test.d.ts.map +0 -1
  909. package/dist/vite/__tests__/expose-internal-ids.test.js +0 -647
  910. package/dist/vite/__tests__/expose-internal-ids.test.js.map +0 -1
  911. package/dist/vite/__tests__/expose-router-id.test.d.ts +0 -2
  912. package/dist/vite/__tests__/expose-router-id.test.d.ts.map +0 -1
  913. package/dist/vite/__tests__/expose-router-id.test.js +0 -39
  914. package/dist/vite/__tests__/expose-router-id.test.js.map +0 -1
  915. package/dist/vite/ast-handler-extract.d.ts +0 -49
  916. package/dist/vite/ast-handler-extract.d.ts.map +0 -1
  917. package/dist/vite/ast-handler-extract.js +0 -249
  918. package/dist/vite/ast-handler-extract.js.map +0 -1
  919. package/dist/vite/expose-action-id.d.ts +0 -19
  920. package/dist/vite/expose-action-id.d.ts.map +0 -1
  921. package/dist/vite/expose-action-id.js +0 -250
  922. package/dist/vite/expose-action-id.js.map +0 -1
  923. package/dist/vite/expose-id-utils.d.ts +0 -69
  924. package/dist/vite/expose-id-utils.d.ts.map +0 -1
  925. package/dist/vite/expose-id-utils.js +0 -289
  926. package/dist/vite/expose-id-utils.js.map +0 -1
  927. package/dist/vite/expose-internal-ids.d.ts +0 -22
  928. package/dist/vite/expose-internal-ids.d.ts.map +0 -1
  929. package/dist/vite/expose-internal-ids.js +0 -886
  930. package/dist/vite/expose-internal-ids.js.map +0 -1
  931. package/dist/vite/index.d.ts +0 -149
  932. package/dist/vite/index.d.ts.map +0 -1
  933. package/dist/vite/index.js.map +0 -1
  934. package/dist/vite/index.named-routes.gen.ts +0 -103
  935. package/dist/vite/package-resolution.d.ts +0 -43
  936. package/dist/vite/package-resolution.d.ts.map +0 -1
  937. package/dist/vite/package-resolution.js +0 -112
  938. package/dist/vite/package-resolution.js.map +0 -1
  939. package/dist/vite/virtual-entries.d.ts +0 -25
  940. package/dist/vite/virtual-entries.d.ts.map +0 -1
  941. package/dist/vite/virtual-entries.js +0 -110
  942. package/dist/vite/virtual-entries.js.map +0 -1
@@ -4,6 +4,7 @@ import type {
4
4
  NavigateOptionsInternal,
5
5
  ResolvedSegment,
6
6
  } from "./types.js";
7
+ import { setAppVersion } from "./app-version.js";
7
8
  import * as React from "react";
8
9
  import { startTransition } from "react";
9
10
  import {
@@ -67,8 +68,8 @@ export interface NavigationBridgeConfigWithController extends NavigationBridgeCo
67
68
  export function createNavigationBridge(
68
69
  config: NavigationBridgeConfigWithController,
69
70
  ): NavigationBridge {
70
- const { store, client, eventController, onUpdate, renderSegments, version } =
71
- config;
71
+ const { store, client, eventController, onUpdate, renderSegments } = config;
72
+ let version = config.version;
72
73
 
73
74
  // Create shared partial updater
74
75
  const fetchPartialUpdate = createPartialUpdater({
@@ -76,7 +77,7 @@ export function createNavigationBridge(
76
77
  client,
77
78
  onUpdate,
78
79
  renderSegments,
79
- version,
80
+ getVersion: () => version,
80
81
  });
81
82
 
82
83
  return {
@@ -447,6 +448,12 @@ export function createNavigationBridge(
447
448
  store.setCurrentUrl(url);
448
449
  store.setPath(new URL(url).pathname);
449
450
 
451
+ // Restore router identity from cache so subsequent navigations
452
+ // don't falsely detect an app switch.
453
+ if (cached?.routerId) {
454
+ store.setRouterId?.(cached.routerId);
455
+ }
456
+
450
457
  // Render from cache - force await to skip loading fallbacks
451
458
  try {
452
459
  const root = await renderSegments(cachedSegments, {
@@ -472,6 +479,7 @@ export function createNavigationBridge(
472
479
  cachedHandleData,
473
480
  params: cachedParams,
474
481
  },
482
+ scroll: { restore: true, isStreaming },
475
483
  };
476
484
  const hasTransition = cachedSegments.some((s) => s.transition);
477
485
  if (hasTransition) {
@@ -485,9 +493,6 @@ export function createNavigationBridge(
485
493
  onUpdate(popstateUpdate);
486
494
  }
487
495
 
488
- // Restore scroll position for back/forward navigation
489
- handleNavigationEnd({ restore: true, isStreaming });
490
-
491
496
  // SWR: If stale, trigger background revalidation
492
497
  if (isStale) {
493
498
  debugLog("[Browser] Cache is stale, background revalidating...");
@@ -634,6 +639,12 @@ export function createNavigationBridge(
634
639
  window.removeEventListener("pageshow", handlePageShow);
635
640
  };
636
641
  },
642
+
643
+ updateVersion(newVersion: string): void {
644
+ version = newVersion;
645
+ setAppVersion(newVersion);
646
+ store.clearHistoryCache();
647
+ },
637
648
  };
638
649
  }
639
650
 
@@ -17,7 +17,11 @@ import {
17
17
  emptyResponse,
18
18
  teeWithCompletion,
19
19
  } from "./response-adapter.js";
20
- import { buildPrefetchKey, consumePrefetch } from "./prefetch/cache.js";
20
+ import {
21
+ buildPrefetchKey,
22
+ consumeInflightPrefetch,
23
+ consumePrefetch,
24
+ } from "./prefetch/cache.js";
21
25
 
22
26
  /**
23
27
  * Create a navigation client for fetching RSC payloads
@@ -57,6 +61,7 @@ export function createNavigationClient(
57
61
  staleRevalidation,
58
62
  interceptSourceUrl,
59
63
  version,
64
+ routerId,
60
65
  hmr,
61
66
  } = options;
62
67
 
@@ -84,50 +89,85 @@ export function createNavigationClient(
84
89
  if (version) {
85
90
  fetchUrl.searchParams.set("_rsc_v", version);
86
91
  }
92
+ if (routerId) {
93
+ fetchUrl.searchParams.set("_rsc_rid", routerId);
94
+ }
87
95
 
88
- // Check in-memory prefetch cache before making a network request.
96
+ // Check completed in-memory prefetch cache before making a network request.
89
97
  // The cache key includes the source URL (previousUrl) because the
90
98
  // server's diff response depends on the source page context.
91
99
  // Skip cache for stale revalidation (needs fresh data), HMR (needs
92
100
  // fresh modules), and intercept contexts (source-dependent responses).
101
+ //
102
+ const canUsePrefetch = !staleRevalidation && !hmr && !interceptSourceUrl;
93
103
  const cacheKey = buildPrefetchKey(previousUrl, fetchUrl);
94
- const cachedResponse =
95
- !staleRevalidation && !hmr && !interceptSourceUrl
96
- ? consumePrefetch(cacheKey)
97
- : null;
98
-
104
+ const cachedResponse = canUsePrefetch ? consumePrefetch(cacheKey) : null;
105
+ const inflightResponsePromise = canUsePrefetch
106
+ ? consumeInflightPrefetch(cacheKey)
107
+ : null;
99
108
  // Track when the stream completes
100
109
  let resolveStreamComplete: () => void;
101
110
  const streamComplete = new Promise<void>((resolve) => {
102
111
  resolveStreamComplete = resolve;
103
112
  });
104
113
 
105
- let responsePromise: Promise<Response>;
114
+ /**
115
+ * Validate RSC control headers on any response (fresh, cached, or
116
+ * in-flight). Handles version-mismatch reloads and server redirects.
117
+ * Returns the response unchanged when no control header is present.
118
+ */
119
+ const validateRscHeaders = (
120
+ response: Response,
121
+ source: string,
122
+ ): Response | Promise<Response> => {
123
+ // Version mismatch — server wants a full page reload
124
+ const reload = extractRscHeaderUrl(response, "X-RSC-Reload");
125
+ if (reload === "blocked") {
126
+ resolveStreamComplete();
127
+ return emptyResponse();
128
+ }
129
+ if (reload) {
130
+ if (tx) {
131
+ browserDebugLog(tx, `version mismatch, reloading (${source})`, {
132
+ reloadUrl: reload.url,
133
+ });
134
+ }
135
+ window.location.href = reload.url;
136
+ // Block further processing — page is reloading
137
+ return new Promise<Response>(() => {});
138
+ }
106
139
 
107
- if (cachedResponse) {
108
- if (tx) {
109
- browserDebugLog(tx, "prefetch cache hit", { key: cacheKey });
140
+ // Server-side redirect without state: the server returned 204 with
141
+ // X-RSC-Redirect instead of a 3xx (which fetch would auto-follow
142
+ // to a URL rendering full HTML). Throw ServerRedirect so the
143
+ // navigation bridge catches it and re-navigates with _skipCache.
144
+ const redirect = extractRscHeaderUrl(response, "X-RSC-Redirect");
145
+ if (redirect === "blocked") {
146
+ resolveStreamComplete();
147
+ return emptyResponse();
110
148
  }
111
- // Cached response body is already fully buffered (arrayBuffer),
112
- // so stream completion is immediate.
113
- responsePromise = Promise.resolve(cachedResponse).then((response) => {
114
- return teeWithCompletion(
115
- response,
116
- () => {
117
- if (tx) browserDebugLog(tx, "stream complete (from cache)");
118
- resolveStreamComplete();
119
- },
120
- signal,
121
- );
122
- });
123
- } else {
149
+ if (redirect) {
150
+ if (tx) {
151
+ browserDebugLog(tx, `server redirect (${source})`, {
152
+ redirectUrl: redirect.url,
153
+ });
154
+ }
155
+ resolveStreamComplete();
156
+ throw new ServerRedirect(redirect.url, undefined);
157
+ }
158
+
159
+ return response;
160
+ };
161
+
162
+ /** Start a fresh navigation fetch (no cache / inflight hit). */
163
+ const doFreshFetch = (): Promise<Response> => {
124
164
  if (tx) {
125
165
  browserDebugLog(tx, "fetching", {
126
166
  path: `${fetchUrl.pathname}${fetchUrl.search}`,
127
167
  });
128
168
  }
129
169
 
130
- responsePromise = fetch(fetchUrl, {
170
+ return fetch(fetchUrl, {
131
171
  headers: {
132
172
  "X-RSC-Router-Client-Path": previousUrl,
133
173
  "X-Rango-State": getRangoState(),
@@ -139,55 +179,72 @@ export function createNavigationClient(
139
179
  },
140
180
  signal,
141
181
  }).then((response) => {
142
- // Check for version mismatch - server wants us to reload
143
- const reload = extractRscHeaderUrl(response, "X-RSC-Reload");
144
- if (reload === "blocked") {
145
- resolveStreamComplete();
146
- return emptyResponse();
147
- }
148
- if (reload) {
149
- if (tx) {
150
- browserDebugLog(tx, "version mismatch, reloading", {
151
- reloadUrl: reload.url,
152
- });
153
- }
154
- window.location.href = reload.url;
155
- return new Promise<Response>(() => {});
156
- }
182
+ const validated = validateRscHeaders(response, "fetch");
183
+ if (validated instanceof Promise) return validated;
157
184
 
158
- // Server-side redirect without state: the server returned 204 with
159
- // X-RSC-Redirect instead of a 3xx (which fetch would auto-follow
160
- // to a URL rendering full HTML). Throw ServerRedirect so the
161
- // navigation bridge catches it and re-navigates with _skipCache.
162
- const redirect = extractRscHeaderUrl(response, "X-RSC-Redirect");
163
- if (redirect === "blocked") {
164
- resolveStreamComplete();
165
- return emptyResponse();
166
- }
167
- if (redirect) {
185
+ return teeWithCompletion(
186
+ validated,
187
+ () => {
188
+ if (tx) browserDebugLog(tx, "stream complete");
189
+ resolveStreamComplete();
190
+ },
191
+ signal,
192
+ );
193
+ });
194
+ };
195
+
196
+ let responsePromise: Promise<Response>;
197
+
198
+ if (cachedResponse) {
199
+ if (tx) {
200
+ browserDebugLog(tx, "prefetch cache hit", { key: cacheKey });
201
+ }
202
+ responsePromise = Promise.resolve(cachedResponse).then((response) => {
203
+ const validated = validateRscHeaders(response, "prefetch cache");
204
+ if (validated instanceof Promise) return validated;
205
+
206
+ return teeWithCompletion(
207
+ validated,
208
+ () => {
209
+ if (tx) browserDebugLog(tx, "stream complete (from cache)");
210
+ resolveStreamComplete();
211
+ },
212
+ signal,
213
+ );
214
+ });
215
+ } else if (inflightResponsePromise) {
216
+ if (tx) {
217
+ browserDebugLog(tx, "reusing inflight prefetch", { key: cacheKey });
218
+ }
219
+ responsePromise = inflightResponsePromise.then(async (response) => {
220
+ if (!response) {
168
221
  if (tx) {
169
- browserDebugLog(tx, "server redirect", {
170
- redirectUrl: redirect.url,
171
- });
222
+ browserDebugLog(tx, "inflight prefetch unavailable, refetching");
172
223
  }
173
- resolveStreamComplete();
174
- throw new ServerRedirect(redirect.url, undefined);
224
+ return doFreshFetch();
175
225
  }
176
226
 
227
+ const validated = validateRscHeaders(response, "inflight prefetch");
228
+ if (validated instanceof Promise) return validated;
229
+
177
230
  return teeWithCompletion(
178
- response,
231
+ validated,
179
232
  () => {
180
- if (tx) browserDebugLog(tx, "stream complete");
233
+ if (tx) {
234
+ browserDebugLog(tx, "stream complete (from inflight prefetch)");
235
+ }
181
236
  resolveStreamComplete();
182
237
  },
183
238
  signal,
184
239
  );
185
240
  });
241
+ } else {
242
+ responsePromise = doFreshFetch();
186
243
  }
187
244
 
188
245
  try {
189
- // Deserialize RSC payload
190
246
  const payload = await deps.createFromFetch<RscPayload>(responsePromise);
247
+
191
248
  if (tx) {
192
249
  browserDebugLog(tx, "response received", {
193
250
  isPartial: payload.metadata?.isPartial,
@@ -28,9 +28,15 @@ const DEFAULT_ACTION_STATE: TrackedActionState = {
28
28
  // Maximum number of history entries to cache (URLs visited)
29
29
  const HISTORY_CACHE_SIZE = 20;
30
30
 
31
- // Cache entry: [url-key, segments, stale, handleData?]
31
+ // Cache entry: [url-key, segments, stale, handleData?, routerId?]
32
32
  // stale=true means the data may be outdated and should be revalidated on access
33
- type HistoryCacheEntry = [string, ResolvedSegment[], boolean, HandleData?];
33
+ type HistoryCacheEntry = [
34
+ string,
35
+ ResolvedSegment[],
36
+ boolean,
37
+ HandleData?,
38
+ string?,
39
+ ];
34
40
 
35
41
  /**
36
42
  * Shallow clone handleData to avoid reference sharing between cache entries.
@@ -258,6 +264,11 @@ export function createNavigationStore(
258
264
  // Used to maintain intercept context during action revalidation
259
265
  let interceptSourceUrl: string | null = null;
260
266
 
267
+ // Router identity - tracks which router is currently active.
268
+ // When this changes on a partial response, the client forces a full
269
+ // tree replacement instead of reconciling with stale segments.
270
+ let currentRouterId: string | undefined;
271
+
261
272
  // Action state tracking (for useAction hook)
262
273
  // Maps action function ID to its tracked state
263
274
  const actionStates = new Map<string, TrackedActionState>();
@@ -571,10 +582,17 @@ export function createNavigationStore(
571
582
  segments,
572
583
  false,
573
584
  clonedHandleData,
585
+ currentRouterId,
574
586
  ];
575
587
  } else {
576
588
  // Add new entry at the end (not stale)
577
- historyCache.push([historyKey, segments, false, clonedHandleData]);
589
+ historyCache.push([
590
+ historyKey,
591
+ segments,
592
+ false,
593
+ clonedHandleData,
594
+ currentRouterId,
595
+ ]);
578
596
  // Remove oldest entries if over limit
579
597
  while (historyCache.length > cacheSize) {
580
598
  historyCache.shift();
@@ -586,14 +604,22 @@ export function createNavigationStore(
586
604
  * Get cached segments for a history entry
587
605
  * Returns { segments, stale, handleData } or undefined if not cached
588
606
  */
589
- getCachedSegments(
590
- historyKey: string,
591
- ):
592
- | { segments: ResolvedSegment[]; stale: boolean; handleData?: HandleData }
607
+ getCachedSegments(historyKey: string):
608
+ | {
609
+ segments: ResolvedSegment[];
610
+ stale: boolean;
611
+ handleData?: HandleData;
612
+ routerId?: string;
613
+ }
593
614
  | undefined {
594
615
  const entry = historyCache.find(([key]) => key === historyKey);
595
616
  if (!entry) return undefined;
596
- return { segments: entry[1], stale: entry[2], handleData: entry[3] };
617
+ return {
618
+ segments: entry[1],
619
+ stale: entry[2],
620
+ handleData: entry[3],
621
+ routerId: entry[4],
622
+ };
597
623
  },
598
624
 
599
625
  /**
@@ -621,6 +647,7 @@ export function createNavigationStore(
621
647
  entry[1],
622
648
  entry[2],
623
649
  clonedHandleData,
650
+ entry[4], // preserve routerId
624
651
  ];
625
652
  }
626
653
  },
@@ -687,6 +714,14 @@ export function createNavigationStore(
687
714
  interceptSourceUrl = url;
688
715
  },
689
716
 
717
+ getRouterId(): string | undefined {
718
+ return currentRouterId;
719
+ },
720
+
721
+ setRouterId(id: string): void {
722
+ currentRouterId = id;
723
+ },
724
+
690
725
  // ========================================================================
691
726
  // UI Update Notifications
692
727
  // ========================================================================
@@ -7,7 +7,6 @@ import type {
7
7
  import { generateHistoryKey } from "./navigation-store.js";
8
8
  import {
9
9
  handleNavigationStart,
10
- handleNavigationEnd,
11
10
  ensureHistoryKey,
12
11
  } from "./scroll-restoration.js";
13
12
  import type { EventController, NavigationHandle } from "./event-controller.js";
@@ -81,11 +80,12 @@ export interface BoundTransaction {
81
80
  readonly currentUrl: string;
82
81
  /** Start streaming and get a token to end it when the stream completes */
83
82
  startStreaming(): StreamingToken;
83
+ /** Commit the navigation. Returns the effective scroll option for the caller to handle. */
84
84
  commit(
85
85
  segmentIds: string[],
86
86
  segments: ResolvedSegment[],
87
87
  overrides?: BoundCommitOverrides,
88
- ): void;
88
+ ): { scroll?: boolean };
89
89
  }
90
90
 
91
91
  /**
@@ -93,7 +93,7 @@ export interface BoundTransaction {
93
93
  * Uses the event controller handle for lifecycle management
94
94
  */
95
95
  interface NavigationTransaction extends Disposable {
96
- commit(options: CommitOptions): void;
96
+ commit(options: CommitOptions): { scroll?: boolean };
97
97
  with(
98
98
  options: Omit<CommitOptions, "segmentIds" | "segments">,
99
99
  ): BoundTransaction;
@@ -120,7 +120,7 @@ export function createNavigationTransaction(
120
120
  /**
121
121
  * Commit the navigation - updates store and URL atomically
122
122
  */
123
- function commit(opts: CommitOptions): void {
123
+ function commit(opts: CommitOptions): { scroll?: boolean } {
124
124
  committed = true;
125
125
 
126
126
  const {
@@ -150,7 +150,7 @@ export function createNavigationTransaction(
150
150
  // Without this, the entry lingers and weakens state-machine invariants.
151
151
  handle.complete(parsedUrl);
152
152
  debugLog("[Browser] Cache-only commit, historyKey:", historyKey);
153
- return;
153
+ return { scroll: false };
154
154
  }
155
155
 
156
156
  // Save current scroll position before navigating
@@ -172,7 +172,7 @@ export function createNavigationTransaction(
172
172
  debugLog("[Browser] Store updated (action)");
173
173
  // Complete navigation to clear loading state
174
174
  handle.complete(parsedUrl);
175
- return;
175
+ return { scroll: false };
176
176
  }
177
177
 
178
178
  // Build history state - include user state, intercept info, and server-set state
@@ -205,14 +205,16 @@ export function createNavigationTransaction(
205
205
  // Complete the navigation in event controller (sets idle state, updates location)
206
206
  handle.complete(parsedUrl);
207
207
 
208
- // Handle scroll after navigation
209
- handleNavigationEnd({ scroll });
208
+ // NOTE: Scroll is NOT handled here. The caller (partial-update.ts) handles
209
+ // scroll AFTER onUpdate() so React has the new content before we scroll.
210
210
 
211
211
  debugLog(
212
212
  "[Browser] Navigation committed, historyKey:",
213
213
  historyKey,
214
214
  intercept ? "(intercept)" : "",
215
215
  );
216
+
217
+ return { scroll };
216
218
  }
217
219
 
218
220
  return {
@@ -263,7 +265,7 @@ export function createNavigationTransaction(
263
265
  overrides?.state !== undefined ? overrides.state : opts.state;
264
266
  // Server-set location state: only from overrides (set by partial-update)
265
267
  const serverState = overrides?.serverState;
266
- commit({
268
+ return commit({
267
269
  ...opts,
268
270
  segmentIds,
269
271
  segments,