@rangojs/router 0.0.0-experimental.9c9afef3 → 0.0.0-experimental.9eb4192e

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