@rangojs/router 0.0.0-experimental.dfa55db4 → 0.0.0-experimental.dfdb0387

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 (820) hide show
  1. package/dist/vite/index.js +30 -15
  2. package/package.json +1 -1
  3. package/src/browser/navigation-client.ts +34 -6
  4. package/src/browser/partial-update.ts +5 -0
  5. package/src/browser/prefetch/cache.ts +16 -6
  6. package/src/browser/prefetch/fetch.ts +44 -4
  7. package/src/browser/react/Link.tsx +25 -2
  8. package/src/browser/segment-reconciler.ts +26 -0
  9. package/src/router/match-result.ts +82 -4
  10. package/src/router/segment-resolution/fresh.ts +5 -0
  11. package/src/router/segment-resolution/revalidation.ts +7 -1
  12. package/src/rsc/handler.ts +8 -4
  13. package/src/types/segments.ts +1 -0
  14. package/src/use-loader.tsx +4 -1
  15. package/src/vite/plugins/expose-id-utils.ts +12 -0
  16. package/src/vite/plugins/expose-internal-ids.ts +56 -31
  17. package/dist/__internal.d.ts +0 -83
  18. package/dist/__internal.d.ts.map +0 -1
  19. package/dist/__internal.js +0 -19
  20. package/dist/__internal.js.map +0 -1
  21. package/dist/__mocks__/version.d.ts +0 -7
  22. package/dist/__mocks__/version.d.ts.map +0 -1
  23. package/dist/__mocks__/version.js +0 -7
  24. package/dist/__mocks__/version.js.map +0 -1
  25. package/dist/__tests__/client-href.test.d.ts +0 -2
  26. package/dist/__tests__/client-href.test.d.ts.map +0 -1
  27. package/dist/__tests__/client-href.test.js +0 -74
  28. package/dist/__tests__/client-href.test.js.map +0 -1
  29. package/dist/__tests__/component-utils.test.d.ts +0 -2
  30. package/dist/__tests__/component-utils.test.d.ts.map +0 -1
  31. package/dist/__tests__/component-utils.test.js +0 -51
  32. package/dist/__tests__/component-utils.test.js.map +0 -1
  33. package/dist/__tests__/event-controller.test.d.ts +0 -2
  34. package/dist/__tests__/event-controller.test.d.ts.map +0 -1
  35. package/dist/__tests__/event-controller.test.js +0 -538
  36. package/dist/__tests__/event-controller.test.js.map +0 -1
  37. package/dist/__tests__/helpers/route-tree.d.ts +0 -118
  38. package/dist/__tests__/helpers/route-tree.d.ts.map +0 -1
  39. package/dist/__tests__/helpers/route-tree.js +0 -374
  40. package/dist/__tests__/helpers/route-tree.js.map +0 -1
  41. package/dist/__tests__/match-result.test.d.ts +0 -2
  42. package/dist/__tests__/match-result.test.d.ts.map +0 -1
  43. package/dist/__tests__/match-result.test.js +0 -154
  44. package/dist/__tests__/match-result.test.js.map +0 -1
  45. package/dist/__tests__/navigation-store.test.d.ts +0 -2
  46. package/dist/__tests__/navigation-store.test.d.ts.map +0 -1
  47. package/dist/__tests__/navigation-store.test.js +0 -440
  48. package/dist/__tests__/navigation-store.test.js.map +0 -1
  49. package/dist/__tests__/partial-update.test.d.ts +0 -2
  50. package/dist/__tests__/partial-update.test.d.ts.map +0 -1
  51. package/dist/__tests__/partial-update.test.js +0 -1009
  52. package/dist/__tests__/partial-update.test.js.map +0 -1
  53. package/dist/__tests__/reverse-types.test.d.ts +0 -8
  54. package/dist/__tests__/reverse-types.test.d.ts.map +0 -1
  55. package/dist/__tests__/reverse-types.test.js +0 -656
  56. package/dist/__tests__/reverse-types.test.js.map +0 -1
  57. package/dist/__tests__/route-definition.test.d.ts +0 -2
  58. package/dist/__tests__/route-definition.test.d.ts.map +0 -1
  59. package/dist/__tests__/route-definition.test.js +0 -55
  60. package/dist/__tests__/route-definition.test.js.map +0 -1
  61. package/dist/__tests__/router-helpers.test.d.ts +0 -2
  62. package/dist/__tests__/router-helpers.test.d.ts.map +0 -1
  63. package/dist/__tests__/router-helpers.test.js +0 -377
  64. package/dist/__tests__/router-helpers.test.js.map +0 -1
  65. package/dist/__tests__/router-integration-2.test.d.ts +0 -2
  66. package/dist/__tests__/router-integration-2.test.d.ts.map +0 -1
  67. package/dist/__tests__/router-integration-2.test.js +0 -426
  68. package/dist/__tests__/router-integration-2.test.js.map +0 -1
  69. package/dist/__tests__/router-integration.test.d.ts +0 -2
  70. package/dist/__tests__/router-integration.test.d.ts.map +0 -1
  71. package/dist/__tests__/router-integration.test.js +0 -1051
  72. package/dist/__tests__/router-integration.test.js.map +0 -1
  73. package/dist/__tests__/search-params.test.d.ts +0 -5
  74. package/dist/__tests__/search-params.test.d.ts.map +0 -1
  75. package/dist/__tests__/search-params.test.js +0 -306
  76. package/dist/__tests__/search-params.test.js.map +0 -1
  77. package/dist/__tests__/segment-system.test.d.ts +0 -2
  78. package/dist/__tests__/segment-system.test.d.ts.map +0 -1
  79. package/dist/__tests__/segment-system.test.js +0 -627
  80. package/dist/__tests__/segment-system.test.js.map +0 -1
  81. package/dist/__tests__/static-handler-types.test.d.ts +0 -8
  82. package/dist/__tests__/static-handler-types.test.d.ts.map +0 -1
  83. package/dist/__tests__/static-handler-types.test.js +0 -63
  84. package/dist/__tests__/static-handler-types.test.js.map +0 -1
  85. package/dist/__tests__/urls.test.d.ts +0 -2
  86. package/dist/__tests__/urls.test.d.ts.map +0 -1
  87. package/dist/__tests__/urls.test.js +0 -421
  88. package/dist/__tests__/urls.test.js.map +0 -1
  89. package/dist/__tests__/use-mount.test.d.ts +0 -2
  90. package/dist/__tests__/use-mount.test.d.ts.map +0 -1
  91. package/dist/__tests__/use-mount.test.js +0 -35
  92. package/dist/__tests__/use-mount.test.js.map +0 -1
  93. package/dist/bin/rango.d.ts +0 -2
  94. package/dist/bin/rango.d.ts.map +0 -1
  95. package/dist/bin/rango.js.map +0 -1
  96. package/dist/browser/event-controller.d.ts +0 -191
  97. package/dist/browser/event-controller.d.ts.map +0 -1
  98. package/dist/browser/event-controller.js +0 -559
  99. package/dist/browser/event-controller.js.map +0 -1
  100. package/dist/browser/index.d.ts +0 -2
  101. package/dist/browser/index.d.ts.map +0 -1
  102. package/dist/browser/index.js +0 -14
  103. package/dist/browser/index.js.map +0 -1
  104. package/dist/browser/link-interceptor.d.ts +0 -38
  105. package/dist/browser/link-interceptor.d.ts.map +0 -1
  106. package/dist/browser/link-interceptor.js +0 -99
  107. package/dist/browser/link-interceptor.js.map +0 -1
  108. package/dist/browser/logging.d.ts +0 -10
  109. package/dist/browser/logging.d.ts.map +0 -1
  110. package/dist/browser/logging.js +0 -29
  111. package/dist/browser/logging.js.map +0 -1
  112. package/dist/browser/lru-cache.d.ts +0 -17
  113. package/dist/browser/lru-cache.d.ts.map +0 -1
  114. package/dist/browser/lru-cache.js +0 -50
  115. package/dist/browser/lru-cache.js.map +0 -1
  116. package/dist/browser/merge-segment-loaders.d.ts +0 -39
  117. package/dist/browser/merge-segment-loaders.d.ts.map +0 -1
  118. package/dist/browser/merge-segment-loaders.js +0 -102
  119. package/dist/browser/merge-segment-loaders.js.map +0 -1
  120. package/dist/browser/navigation-bridge.d.ts +0 -102
  121. package/dist/browser/navigation-bridge.d.ts.map +0 -1
  122. package/dist/browser/navigation-bridge.js +0 -708
  123. package/dist/browser/navigation-bridge.js.map +0 -1
  124. package/dist/browser/navigation-client.d.ts +0 -25
  125. package/dist/browser/navigation-client.d.ts.map +0 -1
  126. package/dist/browser/navigation-client.js +0 -157
  127. package/dist/browser/navigation-client.js.map +0 -1
  128. package/dist/browser/navigation-store.d.ts +0 -101
  129. package/dist/browser/navigation-store.d.ts.map +0 -1
  130. package/dist/browser/navigation-store.js +0 -625
  131. package/dist/browser/navigation-store.js.map +0 -1
  132. package/dist/browser/partial-update.d.ts +0 -75
  133. package/dist/browser/partial-update.d.ts.map +0 -1
  134. package/dist/browser/partial-update.js +0 -426
  135. package/dist/browser/partial-update.js.map +0 -1
  136. package/dist/browser/react/Link.d.ts +0 -86
  137. package/dist/browser/react/Link.d.ts.map +0 -1
  138. package/dist/browser/react/Link.js +0 -128
  139. package/dist/browser/react/Link.js.map +0 -1
  140. package/dist/browser/react/NavigationProvider.d.ts +0 -63
  141. package/dist/browser/react/NavigationProvider.d.ts.map +0 -1
  142. package/dist/browser/react/NavigationProvider.js +0 -216
  143. package/dist/browser/react/NavigationProvider.js.map +0 -1
  144. package/dist/browser/react/ScrollRestoration.d.ts +0 -75
  145. package/dist/browser/react/ScrollRestoration.d.ts.map +0 -1
  146. package/dist/browser/react/ScrollRestoration.js +0 -57
  147. package/dist/browser/react/ScrollRestoration.js.map +0 -1
  148. package/dist/browser/react/context.d.ts +0 -46
  149. package/dist/browser/react/context.d.ts.map +0 -1
  150. package/dist/browser/react/context.js +0 -10
  151. package/dist/browser/react/context.js.map +0 -1
  152. package/dist/browser/react/index.d.ts +0 -11
  153. package/dist/browser/react/index.d.ts.map +0 -1
  154. package/dist/browser/react/index.js +0 -22
  155. package/dist/browser/react/index.js.map +0 -1
  156. package/dist/browser/react/location-state-shared.d.ts +0 -63
  157. package/dist/browser/react/location-state-shared.d.ts.map +0 -1
  158. package/dist/browser/react/location-state-shared.js +0 -81
  159. package/dist/browser/react/location-state-shared.js.map +0 -1
  160. package/dist/browser/react/location-state.d.ts +0 -23
  161. package/dist/browser/react/location-state.d.ts.map +0 -1
  162. package/dist/browser/react/location-state.js +0 -29
  163. package/dist/browser/react/location-state.js.map +0 -1
  164. package/dist/browser/react/mount-context.d.ts +0 -24
  165. package/dist/browser/react/mount-context.d.ts.map +0 -1
  166. package/dist/browser/react/mount-context.js +0 -24
  167. package/dist/browser/react/mount-context.js.map +0 -1
  168. package/dist/browser/react/use-action.d.ts +0 -64
  169. package/dist/browser/react/use-action.d.ts.map +0 -1
  170. package/dist/browser/react/use-action.js +0 -134
  171. package/dist/browser/react/use-action.js.map +0 -1
  172. package/dist/browser/react/use-client-cache.d.ts +0 -41
  173. package/dist/browser/react/use-client-cache.d.ts.map +0 -1
  174. package/dist/browser/react/use-client-cache.js +0 -39
  175. package/dist/browser/react/use-client-cache.js.map +0 -1
  176. package/dist/browser/react/use-handle.d.ts +0 -31
  177. package/dist/browser/react/use-handle.d.ts.map +0 -1
  178. package/dist/browser/react/use-handle.js +0 -144
  179. package/dist/browser/react/use-handle.js.map +0 -1
  180. package/dist/browser/react/use-href.d.ts +0 -33
  181. package/dist/browser/react/use-href.d.ts.map +0 -1
  182. package/dist/browser/react/use-href.js +0 -39
  183. package/dist/browser/react/use-href.js.map +0 -1
  184. package/dist/browser/react/use-link-status.d.ts +0 -37
  185. package/dist/browser/react/use-link-status.d.ts.map +0 -1
  186. package/dist/browser/react/use-link-status.js +0 -99
  187. package/dist/browser/react/use-link-status.js.map +0 -1
  188. package/dist/browser/react/use-mount.d.ts +0 -25
  189. package/dist/browser/react/use-mount.d.ts.map +0 -1
  190. package/dist/browser/react/use-mount.js +0 -30
  191. package/dist/browser/react/use-mount.js.map +0 -1
  192. package/dist/browser/react/use-navigation.d.ts +0 -27
  193. package/dist/browser/react/use-navigation.d.ts.map +0 -1
  194. package/dist/browser/react/use-navigation.js +0 -87
  195. package/dist/browser/react/use-navigation.js.map +0 -1
  196. package/dist/browser/react/use-segments.d.ts +0 -38
  197. package/dist/browser/react/use-segments.d.ts.map +0 -1
  198. package/dist/browser/react/use-segments.js +0 -130
  199. package/dist/browser/react/use-segments.js.map +0 -1
  200. package/dist/browser/request-controller.d.ts +0 -26
  201. package/dist/browser/request-controller.d.ts.map +0 -1
  202. package/dist/browser/request-controller.js +0 -147
  203. package/dist/browser/request-controller.js.map +0 -1
  204. package/dist/browser/rsc-router.d.ts +0 -129
  205. package/dist/browser/rsc-router.d.ts.map +0 -1
  206. package/dist/browser/rsc-router.js +0 -195
  207. package/dist/browser/rsc-router.js.map +0 -1
  208. package/dist/browser/scroll-restoration.d.ts +0 -93
  209. package/dist/browser/scroll-restoration.d.ts.map +0 -1
  210. package/dist/browser/scroll-restoration.js +0 -321
  211. package/dist/browser/scroll-restoration.js.map +0 -1
  212. package/dist/browser/segment-structure-assert.d.ts +0 -17
  213. package/dist/browser/segment-structure-assert.d.ts.map +0 -1
  214. package/dist/browser/segment-structure-assert.js +0 -59
  215. package/dist/browser/segment-structure-assert.js.map +0 -1
  216. package/dist/browser/server-action-bridge.d.ts +0 -26
  217. package/dist/browser/server-action-bridge.d.ts.map +0 -1
  218. package/dist/browser/server-action-bridge.js +0 -668
  219. package/dist/browser/server-action-bridge.js.map +0 -1
  220. package/dist/browser/shallow.d.ts +0 -12
  221. package/dist/browser/shallow.d.ts.map +0 -1
  222. package/dist/browser/shallow.js +0 -34
  223. package/dist/browser/shallow.js.map +0 -1
  224. package/dist/browser/types.d.ts +0 -369
  225. package/dist/browser/types.d.ts.map +0 -1
  226. package/dist/browser/types.js +0 -2
  227. package/dist/browser/types.js.map +0 -1
  228. package/dist/build/__tests__/generate-cli.test.d.ts +0 -2
  229. package/dist/build/__tests__/generate-cli.test.d.ts.map +0 -1
  230. package/dist/build/__tests__/generate-cli.test.js +0 -237
  231. package/dist/build/__tests__/generate-cli.test.js.map +0 -1
  232. package/dist/build/__tests__/generate-manifest.test.d.ts +0 -2
  233. package/dist/build/__tests__/generate-manifest.test.d.ts.map +0 -1
  234. package/dist/build/__tests__/generate-manifest.test.js +0 -119
  235. package/dist/build/__tests__/generate-manifest.test.js.map +0 -1
  236. package/dist/build/__tests__/generate-route-types.test.d.ts +0 -2
  237. package/dist/build/__tests__/generate-route-types.test.d.ts.map +0 -1
  238. package/dist/build/__tests__/generate-route-types.test.js +0 -620
  239. package/dist/build/__tests__/generate-route-types.test.js.map +0 -1
  240. package/dist/build/__tests__/per-router-manifest.test.d.ts +0 -2
  241. package/dist/build/__tests__/per-router-manifest.test.d.ts.map +0 -1
  242. package/dist/build/__tests__/per-router-manifest.test.js +0 -308
  243. package/dist/build/__tests__/per-router-manifest.test.js.map +0 -1
  244. package/dist/build/generate-manifest.d.ts +0 -81
  245. package/dist/build/generate-manifest.d.ts.map +0 -1
  246. package/dist/build/generate-manifest.js +0 -276
  247. package/dist/build/generate-manifest.js.map +0 -1
  248. package/dist/build/generate-route-types.d.ts +0 -115
  249. package/dist/build/generate-route-types.d.ts.map +0 -1
  250. package/dist/build/generate-route-types.js +0 -740
  251. package/dist/build/generate-route-types.js.map +0 -1
  252. package/dist/build/index.d.ts +0 -21
  253. package/dist/build/index.d.ts.map +0 -1
  254. package/dist/build/index.js +0 -21
  255. package/dist/build/index.js.map +0 -1
  256. package/dist/build/route-trie.d.ts +0 -71
  257. package/dist/build/route-trie.d.ts.map +0 -1
  258. package/dist/build/route-trie.js +0 -175
  259. package/dist/build/route-trie.js.map +0 -1
  260. package/dist/cache/__tests__/cache-scope.test.d.ts +0 -2
  261. package/dist/cache/__tests__/cache-scope.test.d.ts.map +0 -1
  262. package/dist/cache/__tests__/cache-scope.test.js +0 -208
  263. package/dist/cache/__tests__/cache-scope.test.js.map +0 -1
  264. package/dist/cache/__tests__/document-cache.test.d.ts +0 -2
  265. package/dist/cache/__tests__/document-cache.test.d.ts.map +0 -1
  266. package/dist/cache/__tests__/document-cache.test.js +0 -345
  267. package/dist/cache/__tests__/document-cache.test.js.map +0 -1
  268. package/dist/cache/__tests__/memory-segment-store.test.d.ts +0 -2
  269. package/dist/cache/__tests__/memory-segment-store.test.d.ts.map +0 -1
  270. package/dist/cache/__tests__/memory-segment-store.test.js +0 -425
  271. package/dist/cache/__tests__/memory-segment-store.test.js.map +0 -1
  272. package/dist/cache/__tests__/memory-store.test.d.ts +0 -2
  273. package/dist/cache/__tests__/memory-store.test.d.ts.map +0 -1
  274. package/dist/cache/__tests__/memory-store.test.js +0 -367
  275. package/dist/cache/__tests__/memory-store.test.js.map +0 -1
  276. package/dist/cache/cache-scope.d.ts +0 -102
  277. package/dist/cache/cache-scope.d.ts.map +0 -1
  278. package/dist/cache/cache-scope.js +0 -440
  279. package/dist/cache/cache-scope.js.map +0 -1
  280. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts +0 -2
  281. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts.map +0 -1
  282. package/dist/cache/cf/__tests__/cf-cache-store.test.js +0 -330
  283. package/dist/cache/cf/__tests__/cf-cache-store.test.js.map +0 -1
  284. package/dist/cache/cf/cf-cache-store.d.ts +0 -165
  285. package/dist/cache/cf/cf-cache-store.d.ts.map +0 -1
  286. package/dist/cache/cf/cf-cache-store.js +0 -242
  287. package/dist/cache/cf/cf-cache-store.js.map +0 -1
  288. package/dist/cache/cf/index.d.ts +0 -14
  289. package/dist/cache/cf/index.d.ts.map +0 -1
  290. package/dist/cache/cf/index.js +0 -17
  291. package/dist/cache/cf/index.js.map +0 -1
  292. package/dist/cache/document-cache.d.ts +0 -64
  293. package/dist/cache/document-cache.d.ts.map +0 -1
  294. package/dist/cache/document-cache.js +0 -228
  295. package/dist/cache/document-cache.js.map +0 -1
  296. package/dist/cache/index.d.ts +0 -19
  297. package/dist/cache/index.d.ts.map +0 -1
  298. package/dist/cache/index.js +0 -21
  299. package/dist/cache/index.js.map +0 -1
  300. package/dist/cache/memory-segment-store.d.ts +0 -110
  301. package/dist/cache/memory-segment-store.d.ts.map +0 -1
  302. package/dist/cache/memory-segment-store.js +0 -117
  303. package/dist/cache/memory-segment-store.js.map +0 -1
  304. package/dist/cache/memory-store.d.ts +0 -41
  305. package/dist/cache/memory-store.d.ts.map +0 -1
  306. package/dist/cache/memory-store.js +0 -191
  307. package/dist/cache/memory-store.js.map +0 -1
  308. package/dist/cache/types.d.ts +0 -317
  309. package/dist/cache/types.d.ts.map +0 -1
  310. package/dist/cache/types.js +0 -12
  311. package/dist/cache/types.js.map +0 -1
  312. package/dist/client.d.ts +0 -248
  313. package/dist/client.d.ts.map +0 -1
  314. package/dist/client.js +0 -367
  315. package/dist/client.js.map +0 -1
  316. package/dist/client.rsc.d.ts +0 -26
  317. package/dist/client.rsc.d.ts.map +0 -1
  318. package/dist/client.rsc.js +0 -46
  319. package/dist/client.rsc.js.map +0 -1
  320. package/dist/component-utils.d.ts +0 -36
  321. package/dist/component-utils.d.ts.map +0 -1
  322. package/dist/component-utils.js +0 -61
  323. package/dist/component-utils.js.map +0 -1
  324. package/dist/components/DefaultDocument.d.ts +0 -13
  325. package/dist/components/DefaultDocument.d.ts.map +0 -1
  326. package/dist/components/DefaultDocument.js +0 -15
  327. package/dist/components/DefaultDocument.js.map +0 -1
  328. package/dist/debug.d.ts +0 -58
  329. package/dist/debug.d.ts.map +0 -1
  330. package/dist/debug.js +0 -157
  331. package/dist/debug.js.map +0 -1
  332. package/dist/default-error-boundary.d.ts +0 -11
  333. package/dist/default-error-boundary.d.ts.map +0 -1
  334. package/dist/default-error-boundary.js +0 -45
  335. package/dist/default-error-boundary.js.map +0 -1
  336. package/dist/deps/browser.d.ts +0 -2
  337. package/dist/deps/browser.d.ts.map +0 -1
  338. package/dist/deps/browser.js +0 -3
  339. package/dist/deps/browser.js.map +0 -1
  340. package/dist/deps/html-stream-client.d.ts +0 -2
  341. package/dist/deps/html-stream-client.d.ts.map +0 -1
  342. package/dist/deps/html-stream-client.js +0 -3
  343. package/dist/deps/html-stream-client.js.map +0 -1
  344. package/dist/deps/html-stream-server.d.ts +0 -2
  345. package/dist/deps/html-stream-server.d.ts.map +0 -1
  346. package/dist/deps/html-stream-server.js +0 -3
  347. package/dist/deps/html-stream-server.js.map +0 -1
  348. package/dist/deps/rsc.d.ts +0 -2
  349. package/dist/deps/rsc.d.ts.map +0 -1
  350. package/dist/deps/rsc.js +0 -4
  351. package/dist/deps/rsc.js.map +0 -1
  352. package/dist/deps/ssr.d.ts +0 -2
  353. package/dist/deps/ssr.d.ts.map +0 -1
  354. package/dist/deps/ssr.js +0 -3
  355. package/dist/deps/ssr.js.map +0 -1
  356. package/dist/errors.d.ts +0 -174
  357. package/dist/errors.d.ts.map +0 -1
  358. package/dist/errors.js +0 -241
  359. package/dist/errors.js.map +0 -1
  360. package/dist/handle.d.ts +0 -78
  361. package/dist/handle.d.ts.map +0 -1
  362. package/dist/handle.js +0 -82
  363. package/dist/handle.js.map +0 -1
  364. package/dist/handles/MetaTags.d.ts +0 -14
  365. package/dist/handles/MetaTags.d.ts.map +0 -1
  366. package/dist/handles/MetaTags.js +0 -136
  367. package/dist/handles/MetaTags.js.map +0 -1
  368. package/dist/handles/index.d.ts +0 -6
  369. package/dist/handles/index.d.ts.map +0 -1
  370. package/dist/handles/index.js +0 -6
  371. package/dist/handles/index.js.map +0 -1
  372. package/dist/handles/meta.d.ts +0 -39
  373. package/dist/handles/meta.d.ts.map +0 -1
  374. package/dist/handles/meta.js +0 -202
  375. package/dist/handles/meta.js.map +0 -1
  376. package/dist/host/__tests__/errors.test.d.ts +0 -2
  377. package/dist/host/__tests__/errors.test.d.ts.map +0 -1
  378. package/dist/host/__tests__/errors.test.js +0 -76
  379. package/dist/host/__tests__/errors.test.js.map +0 -1
  380. package/dist/host/__tests__/pattern-comprehensive.test.d.ts +0 -2
  381. package/dist/host/__tests__/pattern-comprehensive.test.d.ts.map +0 -1
  382. package/dist/host/__tests__/pattern-comprehensive.test.js +0 -732
  383. package/dist/host/__tests__/pattern-comprehensive.test.js.map +0 -1
  384. package/dist/host/__tests__/pattern-matcher.test.d.ts +0 -2
  385. package/dist/host/__tests__/pattern-matcher.test.d.ts.map +0 -1
  386. package/dist/host/__tests__/pattern-matcher.test.js +0 -251
  387. package/dist/host/__tests__/pattern-matcher.test.js.map +0 -1
  388. package/dist/host/__tests__/router.test.d.ts +0 -2
  389. package/dist/host/__tests__/router.test.d.ts.map +0 -1
  390. package/dist/host/__tests__/router.test.js +0 -241
  391. package/dist/host/__tests__/router.test.js.map +0 -1
  392. package/dist/host/__tests__/testing.test.d.ts +0 -2
  393. package/dist/host/__tests__/testing.test.d.ts.map +0 -1
  394. package/dist/host/__tests__/testing.test.js +0 -64
  395. package/dist/host/__tests__/testing.test.js.map +0 -1
  396. package/dist/host/__tests__/utils.test.d.ts +0 -2
  397. package/dist/host/__tests__/utils.test.d.ts.map +0 -1
  398. package/dist/host/__tests__/utils.test.js +0 -29
  399. package/dist/host/__tests__/utils.test.js.map +0 -1
  400. package/dist/host/cookie-handler.d.ts +0 -34
  401. package/dist/host/cookie-handler.d.ts.map +0 -1
  402. package/dist/host/cookie-handler.js +0 -124
  403. package/dist/host/cookie-handler.js.map +0 -1
  404. package/dist/host/errors.d.ts +0 -56
  405. package/dist/host/errors.d.ts.map +0 -1
  406. package/dist/host/errors.js +0 -79
  407. package/dist/host/errors.js.map +0 -1
  408. package/dist/host/index.d.ts +0 -29
  409. package/dist/host/index.d.ts.map +0 -1
  410. package/dist/host/index.js +0 -32
  411. package/dist/host/index.js.map +0 -1
  412. package/dist/host/pattern-matcher.d.ts +0 -36
  413. package/dist/host/pattern-matcher.d.ts.map +0 -1
  414. package/dist/host/pattern-matcher.js +0 -172
  415. package/dist/host/pattern-matcher.js.map +0 -1
  416. package/dist/host/router.d.ts +0 -26
  417. package/dist/host/router.d.ts.map +0 -1
  418. package/dist/host/router.js +0 -218
  419. package/dist/host/router.js.map +0 -1
  420. package/dist/host/testing.d.ts +0 -36
  421. package/dist/host/testing.d.ts.map +0 -1
  422. package/dist/host/testing.js +0 -55
  423. package/dist/host/testing.js.map +0 -1
  424. package/dist/host/types.d.ts +0 -115
  425. package/dist/host/types.d.ts.map +0 -1
  426. package/dist/host/types.js +0 -7
  427. package/dist/host/types.js.map +0 -1
  428. package/dist/host/utils.d.ts +0 -21
  429. package/dist/host/utils.d.ts.map +0 -1
  430. package/dist/host/utils.js +0 -23
  431. package/dist/host/utils.js.map +0 -1
  432. package/dist/href-client.d.ts +0 -131
  433. package/dist/href-client.d.ts.map +0 -1
  434. package/dist/href-client.js +0 -64
  435. package/dist/href-client.js.map +0 -1
  436. package/dist/href-context.d.ts +0 -29
  437. package/dist/href-context.d.ts.map +0 -1
  438. package/dist/href-context.js +0 -21
  439. package/dist/href-context.js.map +0 -1
  440. package/dist/index.d.ts +0 -73
  441. package/dist/index.d.ts.map +0 -1
  442. package/dist/index.js +0 -91
  443. package/dist/index.js.map +0 -1
  444. package/dist/index.rsc.d.ts +0 -32
  445. package/dist/index.rsc.d.ts.map +0 -1
  446. package/dist/index.rsc.js +0 -40
  447. package/dist/index.rsc.js.map +0 -1
  448. package/dist/internal-debug.d.ts +0 -2
  449. package/dist/internal-debug.d.ts.map +0 -1
  450. package/dist/internal-debug.js +0 -5
  451. package/dist/internal-debug.js.map +0 -1
  452. package/dist/loader.d.ts +0 -14
  453. package/dist/loader.d.ts.map +0 -1
  454. package/dist/loader.js +0 -20
  455. package/dist/loader.js.map +0 -1
  456. package/dist/loader.rsc.d.ts +0 -19
  457. package/dist/loader.rsc.d.ts.map +0 -1
  458. package/dist/loader.rsc.js +0 -99
  459. package/dist/loader.rsc.js.map +0 -1
  460. package/dist/network-error-thrower.d.ts +0 -17
  461. package/dist/network-error-thrower.d.ts.map +0 -1
  462. package/dist/network-error-thrower.js +0 -14
  463. package/dist/network-error-thrower.js.map +0 -1
  464. package/dist/outlet-context.d.ts +0 -13
  465. package/dist/outlet-context.d.ts.map +0 -1
  466. package/dist/outlet-context.js +0 -3
  467. package/dist/outlet-context.js.map +0 -1
  468. package/dist/prerender/__tests__/param-hash.test.d.ts +0 -2
  469. package/dist/prerender/__tests__/param-hash.test.d.ts.map +0 -1
  470. package/dist/prerender/__tests__/param-hash.test.js +0 -148
  471. package/dist/prerender/__tests__/param-hash.test.js.map +0 -1
  472. package/dist/prerender/param-hash.d.ts +0 -16
  473. package/dist/prerender/param-hash.d.ts.map +0 -1
  474. package/dist/prerender/param-hash.js +0 -36
  475. package/dist/prerender/param-hash.js.map +0 -1
  476. package/dist/prerender/store.d.ts +0 -38
  477. package/dist/prerender/store.d.ts.map +0 -1
  478. package/dist/prerender/store.js +0 -61
  479. package/dist/prerender/store.js.map +0 -1
  480. package/dist/prerender.d.ts +0 -66
  481. package/dist/prerender.d.ts.map +0 -1
  482. package/dist/prerender.js +0 -57
  483. package/dist/prerender.js.map +0 -1
  484. package/dist/reverse.d.ts +0 -196
  485. package/dist/reverse.d.ts.map +0 -1
  486. package/dist/reverse.js +0 -78
  487. package/dist/reverse.js.map +0 -1
  488. package/dist/root-error-boundary.d.ts +0 -33
  489. package/dist/root-error-boundary.d.ts.map +0 -1
  490. package/dist/root-error-boundary.js +0 -165
  491. package/dist/root-error-boundary.js.map +0 -1
  492. package/dist/route-content-wrapper.d.ts +0 -46
  493. package/dist/route-content-wrapper.d.ts.map +0 -1
  494. package/dist/route-content-wrapper.js +0 -77
  495. package/dist/route-content-wrapper.js.map +0 -1
  496. package/dist/route-definition.d.ts +0 -421
  497. package/dist/route-definition.d.ts.map +0 -1
  498. package/dist/route-definition.js +0 -868
  499. package/dist/route-definition.js.map +0 -1
  500. package/dist/route-map-builder.d.ts +0 -155
  501. package/dist/route-map-builder.d.ts.map +0 -1
  502. package/dist/route-map-builder.js +0 -237
  503. package/dist/route-map-builder.js.map +0 -1
  504. package/dist/route-types.d.ts +0 -165
  505. package/dist/route-types.d.ts.map +0 -1
  506. package/dist/route-types.js +0 -7
  507. package/dist/route-types.js.map +0 -1
  508. package/dist/router/__tests__/handler-context.test.d.ts +0 -2
  509. package/dist/router/__tests__/handler-context.test.d.ts.map +0 -1
  510. package/dist/router/__tests__/handler-context.test.js +0 -65
  511. package/dist/router/__tests__/handler-context.test.js.map +0 -1
  512. package/dist/router/__tests__/loader-cycle-detection.test.d.ts +0 -2
  513. package/dist/router/__tests__/loader-cycle-detection.test.d.ts.map +0 -1
  514. package/dist/router/__tests__/loader-cycle-detection.test.js +0 -221
  515. package/dist/router/__tests__/loader-cycle-detection.test.js.map +0 -1
  516. package/dist/router/__tests__/match-context.test.d.ts +0 -2
  517. package/dist/router/__tests__/match-context.test.d.ts.map +0 -1
  518. package/dist/router/__tests__/match-context.test.js +0 -92
  519. package/dist/router/__tests__/match-context.test.js.map +0 -1
  520. package/dist/router/__tests__/match-pipelines.test.d.ts +0 -2
  521. package/dist/router/__tests__/match-pipelines.test.d.ts.map +0 -1
  522. package/dist/router/__tests__/match-pipelines.test.js +0 -417
  523. package/dist/router/__tests__/match-pipelines.test.js.map +0 -1
  524. package/dist/router/__tests__/match-result.test.d.ts +0 -2
  525. package/dist/router/__tests__/match-result.test.d.ts.map +0 -1
  526. package/dist/router/__tests__/match-result.test.js +0 -457
  527. package/dist/router/__tests__/match-result.test.js.map +0 -1
  528. package/dist/router/__tests__/on-error.test.d.ts +0 -2
  529. package/dist/router/__tests__/on-error.test.d.ts.map +0 -1
  530. package/dist/router/__tests__/on-error.test.js +0 -678
  531. package/dist/router/__tests__/on-error.test.js.map +0 -1
  532. package/dist/router/__tests__/pattern-matching.test.d.ts +0 -2
  533. package/dist/router/__tests__/pattern-matching.test.d.ts.map +0 -1
  534. package/dist/router/__tests__/pattern-matching.test.js +0 -629
  535. package/dist/router/__tests__/pattern-matching.test.js.map +0 -1
  536. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts +0 -2
  537. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts.map +0 -1
  538. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js +0 -155
  539. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js.map +0 -1
  540. package/dist/router/error-handling.d.ts +0 -77
  541. package/dist/router/error-handling.d.ts.map +0 -1
  542. package/dist/router/error-handling.js +0 -202
  543. package/dist/router/error-handling.js.map +0 -1
  544. package/dist/router/handler-context.d.ts +0 -20
  545. package/dist/router/handler-context.d.ts.map +0 -1
  546. package/dist/router/handler-context.js +0 -198
  547. package/dist/router/handler-context.js.map +0 -1
  548. package/dist/router/intercept-resolution.d.ts +0 -66
  549. package/dist/router/intercept-resolution.d.ts.map +0 -1
  550. package/dist/router/intercept-resolution.js +0 -246
  551. package/dist/router/intercept-resolution.js.map +0 -1
  552. package/dist/router/loader-resolution.d.ts +0 -64
  553. package/dist/router/loader-resolution.d.ts.map +0 -1
  554. package/dist/router/loader-resolution.js +0 -284
  555. package/dist/router/loader-resolution.js.map +0 -1
  556. package/dist/router/logging.d.ts +0 -15
  557. package/dist/router/logging.d.ts.map +0 -1
  558. package/dist/router/logging.js +0 -99
  559. package/dist/router/logging.js.map +0 -1
  560. package/dist/router/manifest.d.ts +0 -22
  561. package/dist/router/manifest.d.ts.map +0 -1
  562. package/dist/router/manifest.js +0 -181
  563. package/dist/router/manifest.js.map +0 -1
  564. package/dist/router/match-api.d.ts +0 -35
  565. package/dist/router/match-api.d.ts.map +0 -1
  566. package/dist/router/match-api.js +0 -406
  567. package/dist/router/match-api.js.map +0 -1
  568. package/dist/router/match-context.d.ts +0 -206
  569. package/dist/router/match-context.d.ts.map +0 -1
  570. package/dist/router/match-context.js +0 -17
  571. package/dist/router/match-context.js.map +0 -1
  572. package/dist/router/match-middleware/background-revalidation.d.ts +0 -127
  573. package/dist/router/match-middleware/background-revalidation.d.ts.map +0 -1
  574. package/dist/router/match-middleware/background-revalidation.js +0 -75
  575. package/dist/router/match-middleware/background-revalidation.js.map +0 -1
  576. package/dist/router/match-middleware/cache-lookup.d.ts +0 -112
  577. package/dist/router/match-middleware/cache-lookup.d.ts.map +0 -1
  578. package/dist/router/match-middleware/cache-lookup.js +0 -257
  579. package/dist/router/match-middleware/cache-lookup.js.map +0 -1
  580. package/dist/router/match-middleware/cache-store.d.ts +0 -113
  581. package/dist/router/match-middleware/cache-store.d.ts.map +0 -1
  582. package/dist/router/match-middleware/cache-store.js +0 -108
  583. package/dist/router/match-middleware/cache-store.js.map +0 -1
  584. package/dist/router/match-middleware/index.d.ts +0 -81
  585. package/dist/router/match-middleware/index.d.ts.map +0 -1
  586. package/dist/router/match-middleware/index.js +0 -80
  587. package/dist/router/match-middleware/index.js.map +0 -1
  588. package/dist/router/match-middleware/intercept-resolution.d.ts +0 -117
  589. package/dist/router/match-middleware/intercept-resolution.d.ts.map +0 -1
  590. package/dist/router/match-middleware/intercept-resolution.js +0 -134
  591. package/dist/router/match-middleware/intercept-resolution.js.map +0 -1
  592. package/dist/router/match-middleware/segment-resolution.d.ts +0 -99
  593. package/dist/router/match-middleware/segment-resolution.d.ts.map +0 -1
  594. package/dist/router/match-middleware/segment-resolution.js +0 -53
  595. package/dist/router/match-middleware/segment-resolution.js.map +0 -1
  596. package/dist/router/match-pipelines.d.ts +0 -147
  597. package/dist/router/match-pipelines.d.ts.map +0 -1
  598. package/dist/router/match-pipelines.js +0 -82
  599. package/dist/router/match-pipelines.js.map +0 -1
  600. package/dist/router/match-result.d.ts +0 -126
  601. package/dist/router/match-result.d.ts.map +0 -1
  602. package/dist/router/match-result.js +0 -93
  603. package/dist/router/match-result.js.map +0 -1
  604. package/dist/router/metrics.d.ts +0 -20
  605. package/dist/router/metrics.d.ts.map +0 -1
  606. package/dist/router/metrics.js +0 -47
  607. package/dist/router/metrics.js.map +0 -1
  608. package/dist/router/middleware.d.ts +0 -249
  609. package/dist/router/middleware.d.ts.map +0 -1
  610. package/dist/router/middleware.js +0 -434
  611. package/dist/router/middleware.js.map +0 -1
  612. package/dist/router/middleware.test.d.ts +0 -2
  613. package/dist/router/middleware.test.d.ts.map +0 -1
  614. package/dist/router/middleware.test.js +0 -816
  615. package/dist/router/middleware.test.js.map +0 -1
  616. package/dist/router/pattern-matching.d.ts +0 -149
  617. package/dist/router/pattern-matching.d.ts.map +0 -1
  618. package/dist/router/pattern-matching.js +0 -349
  619. package/dist/router/pattern-matching.js.map +0 -1
  620. package/dist/router/revalidation.d.ts +0 -44
  621. package/dist/router/revalidation.d.ts.map +0 -1
  622. package/dist/router/revalidation.js +0 -147
  623. package/dist/router/revalidation.js.map +0 -1
  624. package/dist/router/router-context.d.ts +0 -135
  625. package/dist/router/router-context.d.ts.map +0 -1
  626. package/dist/router/router-context.js +0 -36
  627. package/dist/router/router-context.js.map +0 -1
  628. package/dist/router/segment-resolution.d.ts +0 -127
  629. package/dist/router/segment-resolution.d.ts.map +0 -1
  630. package/dist/router/segment-resolution.js +0 -919
  631. package/dist/router/segment-resolution.js.map +0 -1
  632. package/dist/router/trie-matching.d.ts +0 -40
  633. package/dist/router/trie-matching.d.ts.map +0 -1
  634. package/dist/router/trie-matching.js +0 -127
  635. package/dist/router/trie-matching.js.map +0 -1
  636. package/dist/router/types.d.ts +0 -136
  637. package/dist/router/types.d.ts.map +0 -1
  638. package/dist/router/types.js +0 -7
  639. package/dist/router/types.js.map +0 -1
  640. package/dist/router.d.ts +0 -753
  641. package/dist/router.d.ts.map +0 -1
  642. package/dist/router.gen.d.ts +0 -6
  643. package/dist/router.gen.d.ts.map +0 -1
  644. package/dist/router.gen.js +0 -6
  645. package/dist/router.gen.js.map +0 -1
  646. package/dist/router.js +0 -1304
  647. package/dist/router.js.map +0 -1
  648. package/dist/rsc/__tests__/helpers.test.d.ts +0 -2
  649. package/dist/rsc/__tests__/helpers.test.d.ts.map +0 -1
  650. package/dist/rsc/__tests__/helpers.test.js +0 -140
  651. package/dist/rsc/__tests__/helpers.test.js.map +0 -1
  652. package/dist/rsc/handler.d.ts +0 -45
  653. package/dist/rsc/handler.d.ts.map +0 -1
  654. package/dist/rsc/handler.js +0 -1172
  655. package/dist/rsc/handler.js.map +0 -1
  656. package/dist/rsc/helpers.d.ts +0 -16
  657. package/dist/rsc/helpers.d.ts.map +0 -1
  658. package/dist/rsc/helpers.js +0 -55
  659. package/dist/rsc/helpers.js.map +0 -1
  660. package/dist/rsc/index.d.ts +0 -22
  661. package/dist/rsc/index.d.ts.map +0 -1
  662. package/dist/rsc/index.js +0 -23
  663. package/dist/rsc/index.js.map +0 -1
  664. package/dist/rsc/nonce.d.ts +0 -9
  665. package/dist/rsc/nonce.d.ts.map +0 -1
  666. package/dist/rsc/nonce.js +0 -18
  667. package/dist/rsc/nonce.js.map +0 -1
  668. package/dist/rsc/types.d.ts +0 -206
  669. package/dist/rsc/types.d.ts.map +0 -1
  670. package/dist/rsc/types.js +0 -8
  671. package/dist/rsc/types.js.map +0 -1
  672. package/dist/search-params.d.ts +0 -103
  673. package/dist/search-params.d.ts.map +0 -1
  674. package/dist/search-params.js +0 -74
  675. package/dist/search-params.js.map +0 -1
  676. package/dist/segment-system.d.ts +0 -75
  677. package/dist/segment-system.d.ts.map +0 -1
  678. package/dist/segment-system.js +0 -336
  679. package/dist/segment-system.js.map +0 -1
  680. package/dist/server/context.d.ts +0 -245
  681. package/dist/server/context.d.ts.map +0 -1
  682. package/dist/server/context.js +0 -197
  683. package/dist/server/context.js.map +0 -1
  684. package/dist/server/fetchable-loader-store.d.ts +0 -18
  685. package/dist/server/fetchable-loader-store.d.ts.map +0 -1
  686. package/dist/server/fetchable-loader-store.js +0 -18
  687. package/dist/server/fetchable-loader-store.js.map +0 -1
  688. package/dist/server/handle-store.d.ts +0 -85
  689. package/dist/server/handle-store.d.ts.map +0 -1
  690. package/dist/server/handle-store.js +0 -142
  691. package/dist/server/handle-store.js.map +0 -1
  692. package/dist/server/loader-registry.d.ts +0 -55
  693. package/dist/server/loader-registry.d.ts.map +0 -1
  694. package/dist/server/loader-registry.js +0 -132
  695. package/dist/server/loader-registry.js.map +0 -1
  696. package/dist/server/request-context.d.ts +0 -226
  697. package/dist/server/request-context.d.ts.map +0 -1
  698. package/dist/server/request-context.js +0 -290
  699. package/dist/server/request-context.js.map +0 -1
  700. package/dist/server/root-layout.d.ts +0 -4
  701. package/dist/server/root-layout.d.ts.map +0 -1
  702. package/dist/server/root-layout.js +0 -5
  703. package/dist/server/root-layout.js.map +0 -1
  704. package/dist/server.d.ts +0 -15
  705. package/dist/server.d.ts.map +0 -1
  706. package/dist/server.js +0 -20
  707. package/dist/server.js.map +0 -1
  708. package/dist/ssr/__tests__/ssr-handler.test.d.ts +0 -2
  709. package/dist/ssr/__tests__/ssr-handler.test.d.ts.map +0 -1
  710. package/dist/ssr/__tests__/ssr-handler.test.js +0 -132
  711. package/dist/ssr/__tests__/ssr-handler.test.js.map +0 -1
  712. package/dist/ssr/index.d.ts +0 -98
  713. package/dist/ssr/index.d.ts.map +0 -1
  714. package/dist/ssr/index.js +0 -158
  715. package/dist/ssr/index.js.map +0 -1
  716. package/dist/static-handler.d.ts +0 -50
  717. package/dist/static-handler.d.ts.map +0 -1
  718. package/dist/static-handler.gen.d.ts +0 -5
  719. package/dist/static-handler.gen.d.ts.map +0 -1
  720. package/dist/static-handler.gen.js +0 -5
  721. package/dist/static-handler.gen.js.map +0 -1
  722. package/dist/static-handler.js +0 -29
  723. package/dist/static-handler.js.map +0 -1
  724. package/dist/theme/ThemeProvider.d.ts +0 -20
  725. package/dist/theme/ThemeProvider.d.ts.map +0 -1
  726. package/dist/theme/ThemeProvider.js +0 -240
  727. package/dist/theme/ThemeProvider.js.map +0 -1
  728. package/dist/theme/ThemeScript.d.ts +0 -48
  729. package/dist/theme/ThemeScript.d.ts.map +0 -1
  730. package/dist/theme/ThemeScript.js +0 -13
  731. package/dist/theme/ThemeScript.js.map +0 -1
  732. package/dist/theme/__tests__/theme.test.d.ts +0 -2
  733. package/dist/theme/__tests__/theme.test.d.ts.map +0 -1
  734. package/dist/theme/__tests__/theme.test.js +0 -103
  735. package/dist/theme/__tests__/theme.test.js.map +0 -1
  736. package/dist/theme/constants.d.ts +0 -29
  737. package/dist/theme/constants.d.ts.map +0 -1
  738. package/dist/theme/constants.js +0 -48
  739. package/dist/theme/constants.js.map +0 -1
  740. package/dist/theme/index.d.ts +0 -31
  741. package/dist/theme/index.d.ts.map +0 -1
  742. package/dist/theme/index.js +0 -36
  743. package/dist/theme/index.js.map +0 -1
  744. package/dist/theme/theme-context.d.ts +0 -40
  745. package/dist/theme/theme-context.d.ts.map +0 -1
  746. package/dist/theme/theme-context.js +0 -60
  747. package/dist/theme/theme-context.js.map +0 -1
  748. package/dist/theme/theme-script.d.ts +0 -27
  749. package/dist/theme/theme-script.d.ts.map +0 -1
  750. package/dist/theme/theme-script.js +0 -147
  751. package/dist/theme/theme-script.js.map +0 -1
  752. package/dist/theme/types.d.ts +0 -163
  753. package/dist/theme/types.d.ts.map +0 -1
  754. package/dist/theme/types.js +0 -11
  755. package/dist/theme/types.js.map +0 -1
  756. package/dist/theme/use-theme.d.ts +0 -12
  757. package/dist/theme/use-theme.d.ts.map +0 -1
  758. package/dist/theme/use-theme.js +0 -40
  759. package/dist/theme/use-theme.js.map +0 -1
  760. package/dist/types.d.ts +0 -1479
  761. package/dist/types.d.ts.map +0 -1
  762. package/dist/types.js +0 -10
  763. package/dist/types.js.map +0 -1
  764. package/dist/urls.d.ts +0 -441
  765. package/dist/urls.d.ts.map +0 -1
  766. package/dist/urls.gen.d.ts +0 -8
  767. package/dist/urls.gen.d.ts.map +0 -1
  768. package/dist/urls.gen.js +0 -8
  769. package/dist/urls.gen.js.map +0 -1
  770. package/dist/urls.js +0 -443
  771. package/dist/urls.js.map +0 -1
  772. package/dist/use-loader.d.ts +0 -127
  773. package/dist/use-loader.d.ts.map +0 -1
  774. package/dist/use-loader.js +0 -237
  775. package/dist/use-loader.js.map +0 -1
  776. package/dist/vite/__tests__/ast-handler-extract.test.d.ts +0 -2
  777. package/dist/vite/__tests__/ast-handler-extract.test.d.ts.map +0 -1
  778. package/dist/vite/__tests__/ast-handler-extract.test.js +0 -294
  779. package/dist/vite/__tests__/ast-handler-extract.test.js.map +0 -1
  780. package/dist/vite/__tests__/expose-id-utils.test.d.ts +0 -2
  781. package/dist/vite/__tests__/expose-id-utils.test.d.ts.map +0 -1
  782. package/dist/vite/__tests__/expose-id-utils.test.js +0 -224
  783. package/dist/vite/__tests__/expose-id-utils.test.js.map +0 -1
  784. package/dist/vite/__tests__/expose-internal-ids.test.d.ts +0 -2
  785. package/dist/vite/__tests__/expose-internal-ids.test.d.ts.map +0 -1
  786. package/dist/vite/__tests__/expose-internal-ids.test.js +0 -647
  787. package/dist/vite/__tests__/expose-internal-ids.test.js.map +0 -1
  788. package/dist/vite/__tests__/expose-router-id.test.d.ts +0 -2
  789. package/dist/vite/__tests__/expose-router-id.test.d.ts.map +0 -1
  790. package/dist/vite/__tests__/expose-router-id.test.js +0 -39
  791. package/dist/vite/__tests__/expose-router-id.test.js.map +0 -1
  792. package/dist/vite/ast-handler-extract.d.ts +0 -49
  793. package/dist/vite/ast-handler-extract.d.ts.map +0 -1
  794. package/dist/vite/ast-handler-extract.js +0 -249
  795. package/dist/vite/ast-handler-extract.js.map +0 -1
  796. package/dist/vite/expose-action-id.d.ts +0 -19
  797. package/dist/vite/expose-action-id.d.ts.map +0 -1
  798. package/dist/vite/expose-action-id.js +0 -250
  799. package/dist/vite/expose-action-id.js.map +0 -1
  800. package/dist/vite/expose-id-utils.d.ts +0 -69
  801. package/dist/vite/expose-id-utils.d.ts.map +0 -1
  802. package/dist/vite/expose-id-utils.js +0 -289
  803. package/dist/vite/expose-id-utils.js.map +0 -1
  804. package/dist/vite/expose-internal-ids.d.ts +0 -22
  805. package/dist/vite/expose-internal-ids.d.ts.map +0 -1
  806. package/dist/vite/expose-internal-ids.js +0 -886
  807. package/dist/vite/expose-internal-ids.js.map +0 -1
  808. package/dist/vite/index.d.ts +0 -149
  809. package/dist/vite/index.d.ts.map +0 -1
  810. package/dist/vite/index.js.bak +0 -5448
  811. package/dist/vite/index.js.map +0 -1
  812. package/dist/vite/index.named-routes.gen.ts +0 -103
  813. package/dist/vite/package-resolution.d.ts +0 -43
  814. package/dist/vite/package-resolution.d.ts.map +0 -1
  815. package/dist/vite/package-resolution.js +0 -112
  816. package/dist/vite/package-resolution.js.map +0 -1
  817. package/dist/vite/virtual-entries.d.ts +0 -25
  818. package/dist/vite/virtual-entries.d.ts.map +0 -1
  819. package/dist/vite/virtual-entries.js +0 -110
  820. package/dist/vite/virtual-entries.js.map +0 -1
@@ -18,6 +18,9 @@ function hashId(filePath, exportName) {
18
18
  const hash = crypto.createHash("sha256").update(input).digest("hex");
19
19
  return `${hash.slice(0, 8)}#${exportName}`;
20
20
  }
21
+ function makeStubId(filePath, exportName, isBuild) {
22
+ return isBuild ? hashId(filePath, exportName) : `${filePath}#${exportName}`;
23
+ }
21
24
  function hashInlineId(filePath, lineNumber, index) {
22
25
  const input = index !== void 0 && index > 0 ? `${filePath}:${lineNumber}:${index}` : `${filePath}:${lineNumber}`;
23
26
  return crypto.createHash("sha256").update(input).digest("hex").slice(0, 8);
@@ -1336,8 +1339,9 @@ ${lazyImports.join(",\n")}
1336
1339
  const localDeclPattern = /(?:^|;|\n)\s*(?:const|let|var|function)\s+(\w+)/g;
1337
1340
  let declMatch;
1338
1341
  while ((declMatch = localDeclPattern.exec(code)) !== null) {
1339
- if (!exportedLocals.has(declMatch[1])) {
1340
- strippedBindings.push(declMatch[1]);
1342
+ const name = declMatch[1];
1343
+ if (!exportedLocals.has(name) && !/^_c\d*$/.test(name)) {
1344
+ strippedBindings.push(name);
1341
1345
  }
1342
1346
  }
1343
1347
  const importPattern = /import\s*\{([^}]*)\}\s*from\s*["'](?!@rangojs\/router)[^"']*["']/g;
@@ -1352,16 +1356,21 @@ ${lazyImports.join(",\n")}
1352
1356
  while ((importMatch = defaultImportPattern.exec(code)) !== null) {
1353
1357
  strippedBindings.push(importMatch[1]);
1354
1358
  }
1359
+ const nsImportPattern = /import\s+\*\s+as\s+([A-Za-z_$][\w$]*)\s+from\s*["'](?!@rangojs\/router)[^"']*["']/g;
1360
+ while ((importMatch = nsImportPattern.exec(code)) !== null) {
1361
+ strippedBindings.push(importMatch[1]);
1362
+ }
1355
1363
  if (strippedBindings.length > 0) {
1356
1364
  const preservedBindings = allBindings.filter((b) => {
1357
1365
  const fc = code.slice(b.callExprStart, b.callOpenParenPos + 1);
1358
1366
  return handleFnNames.some((n) => fc.includes(n)) || lsFnNames.some((n) => fc.includes(n));
1359
1367
  });
1368
+ const strippedRe = new RegExp(
1369
+ `\\b(?:${strippedBindings.join("|")})\\b`
1370
+ );
1360
1371
  canStubWholeFile = !preservedBindings.some((b) => {
1361
1372
  const expr = code.slice(b.callExprStart, b.callCloseParenPos + 1);
1362
- return strippedBindings.some(
1363
- (name) => new RegExp(`\\b${name}\\b`).test(expr)
1364
- );
1373
+ return strippedRe.test(expr);
1365
1374
  });
1366
1375
  }
1367
1376
  }
@@ -1383,25 +1392,31 @@ ${lazyImports.join(",\n")}
1383
1392
  const isHandle = handleFnNames.some((n) => fnCall.includes(n));
1384
1393
  const isLocationState = lsFnNames.some((n) => fnCall.includes(n));
1385
1394
  const primaryName = binding.exportNames[0];
1386
- const stubId = isBuild ? hashId(filePath, primaryName) : `${filePath}#${primaryName}`;
1395
+ const stubId = makeStubId(filePath, primaryName, isBuild);
1387
1396
  if (isHandle || isLocationState) {
1388
- const rawCallExpr = code.slice(
1389
- binding.callExprStart,
1390
- binding.callCloseParenPos + 1
1391
- );
1397
+ const rawArgs = code.slice(binding.callOpenParenPos + 1, binding.callCloseParenPos).replace(/\b_c\d*\s*=\s*/g, "");
1392
1398
  const canonicalName = isHandle ? "createHandle" : "createLocationState";
1393
1399
  const activeFnNames = isHandle ? handleFnNames : lsFnNames;
1394
- let callExpr = rawCallExpr;
1400
+ let rawCallee = code.slice(
1401
+ binding.callExprStart,
1402
+ binding.callOpenParenPos
1403
+ );
1395
1404
  for (const alias of activeFnNames) {
1396
- if (alias !== canonicalName && callExpr.startsWith(alias)) {
1397
- callExpr = canonicalName + callExpr.slice(alias.length);
1405
+ if (alias !== canonicalName && rawCallee.startsWith(alias)) {
1406
+ rawCallee = canonicalName + rawCallee.slice(alias.length);
1398
1407
  break;
1399
1408
  }
1400
1409
  }
1401
- lines.push(`export const ${primaryName} = ${callExpr};`);
1402
1410
  if (isHandle) {
1411
+ const idParam = binding.argCount === 0 ? `undefined, "${stubId}"` : `, "${stubId}"`;
1412
+ lines.push(
1413
+ `export const ${primaryName} = ${rawCallee}(${rawArgs}${idParam});`
1414
+ );
1403
1415
  lines.push(`${primaryName}.$$id = "${stubId}";`);
1404
1416
  } else {
1417
+ lines.push(
1418
+ `export const ${primaryName} = ${rawCallee}(${rawArgs});`
1419
+ );
1405
1420
  lines.push(
1406
1421
  `${primaryName}.__rsc_ls_key = "__rsc_ls_${stubId}";`
1407
1422
  );
@@ -1849,7 +1864,7 @@ import { resolve } from "node:path";
1849
1864
  // package.json
1850
1865
  var package_default = {
1851
1866
  name: "@rangojs/router",
1852
- version: "0.0.0-experimental.dfa55db4",
1867
+ version: "0.0.0-experimental.dfdb0387",
1853
1868
  description: "Django-inspired RSC router with composable URL patterns",
1854
1869
  keywords: [
1855
1870
  "react",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rangojs/router",
3
- "version": "0.0.0-experimental.dfa55db4",
3
+ "version": "0.0.0-experimental.dfdb0387",
4
4
  "description": "Django-inspired RSC router with composable URL patterns",
5
5
  "keywords": [
6
6
  "react",
@@ -101,10 +101,32 @@ export function createNavigationClient(
101
101
  //
102
102
  const canUsePrefetch = !staleRevalidation && !hmr && !interceptSourceUrl;
103
103
  const cacheKey = buildPrefetchKey(previousUrl, fetchUrl);
104
- const cachedResponse = canUsePrefetch ? consumePrefetch(cacheKey) : null;
105
- const inflightResponsePromise = canUsePrefetch
106
- ? consumeInflightPrefetch(cacheKey)
107
- : null;
104
+ // Wildcard key matches prefetch entries stored with a custom prefetchKey
105
+ // (Link's prefetchKey prop stores under "*" instead of the source URL).
106
+ const wildcardKey = "*\0" + fetchUrl.pathname + fetchUrl.search;
107
+
108
+ let cachedResponse: Response | null = null;
109
+ let hitKey: string | null = null;
110
+ if (canUsePrefetch) {
111
+ cachedResponse = consumePrefetch(cacheKey);
112
+ if (cachedResponse) {
113
+ hitKey = cacheKey;
114
+ } else {
115
+ cachedResponse = consumePrefetch(wildcardKey);
116
+ if (cachedResponse) hitKey = wildcardKey;
117
+ }
118
+ }
119
+
120
+ let inflightResponsePromise: Promise<Response | null> | null = null;
121
+ if (canUsePrefetch && !cachedResponse) {
122
+ inflightResponsePromise = consumeInflightPrefetch(cacheKey);
123
+ if (inflightResponsePromise) {
124
+ hitKey = cacheKey;
125
+ } else {
126
+ inflightResponsePromise = consumeInflightPrefetch(wildcardKey);
127
+ if (inflightResponsePromise) hitKey = wildcardKey;
128
+ }
129
+ }
108
130
  // Track when the stream completes
109
131
  let resolveStreamComplete: () => void;
110
132
  const streamComplete = new Promise<void>((resolve) => {
@@ -197,7 +219,10 @@ export function createNavigationClient(
197
219
 
198
220
  if (cachedResponse) {
199
221
  if (tx) {
200
- browserDebugLog(tx, "prefetch cache hit", { key: cacheKey });
222
+ browserDebugLog(tx, "prefetch cache hit", {
223
+ key: hitKey,
224
+ wildcard: hitKey === wildcardKey,
225
+ });
201
226
  }
202
227
  responsePromise = Promise.resolve(cachedResponse).then((response) => {
203
228
  const validated = validateRscHeaders(response, "prefetch cache");
@@ -214,7 +239,10 @@ export function createNavigationClient(
214
239
  });
215
240
  } else if (inflightResponsePromise) {
216
241
  if (tx) {
217
- browserDebugLog(tx, "reusing inflight prefetch", { key: cacheKey });
242
+ browserDebugLog(tx, "reusing inflight prefetch", {
243
+ key: hitKey,
244
+ wildcard: hitKey === wildcardKey,
245
+ });
218
246
  }
219
247
  responsePromise = inflightResponsePromise.then(async (response) => {
220
248
  if (!response) {
@@ -188,6 +188,11 @@ export function createPartialUpdater(
188
188
  targetCache && targetCache.length > 0
189
189
  ? targetCache
190
190
  : getCurrentCachedSegments();
191
+ const cachedSegsSource =
192
+ targetCache && targetCache.length > 0 ? "history-cache" : "current-page";
193
+ debugLog(
194
+ `[Browser] cachedSegs source: ${cachedSegsSource} (${cachedSegs.length} segments: ${cachedSegs.map((s) => s.id).join(", ")})`,
195
+ );
191
196
 
192
197
  // Fetch partial payload (no abort signal - RSC doesn't support it well)
193
198
  let fetchResult: Awaited<ReturnType<NavigationClient["fetchPartial"]>>;
@@ -61,13 +61,23 @@ const inflightPromises = new Map<string, Promise<Response | null>>();
61
61
  let generation = 0;
62
62
 
63
63
  /**
64
- * Build a source-dependent cache key.
65
- * Includes the source page href so the same target prefetched from
66
- * different pages gets separate entries the server response varies
67
- * based on the source page context (diff-based rendering).
64
+ * Build a cache key for prefetched responses.
65
+ *
66
+ * By default the key includes the source page href so the same target
67
+ * prefetched from different pages gets separate entries (the server's
68
+ * diff response depends on the source page context).
69
+ *
70
+ * When `prefetchKey` is provided, the source portion is replaced with
71
+ * a `*` sentinel so all custom-keyed entries share one cache slot per
72
+ * target — enabling source-agnostic cache reuse.
68
73
  */
69
- export function buildPrefetchKey(sourceHref: string, targetUrl: URL): string {
70
- return sourceHref + "\0" + targetUrl.pathname + targetUrl.search;
74
+ export function buildPrefetchKey(
75
+ sourceHref: string,
76
+ targetUrl: URL,
77
+ prefetchKey?: string | ((from: string) => string),
78
+ ): string {
79
+ const source = prefetchKey != null ? "*" : sourceHref;
80
+ return source + "\0" + targetUrl.pathname + targetUrl.search;
71
81
  }
72
82
 
73
83
  /**
@@ -23,6 +23,7 @@ import {
23
23
  import { getRangoState } from "../rango-state.js";
24
24
  import { enqueuePrefetch } from "./queue.js";
25
25
  import { shouldPrefetch } from "./policy.js";
26
+ import { debugLog } from "../logging.js";
26
27
 
27
28
  /**
28
29
  * Build an RSC partial URL for prefetching.
@@ -113,13 +114,32 @@ export function prefetchDirect(
113
114
  segmentIds: string[],
114
115
  version?: string,
115
116
  routerId?: string,
117
+ prefetchKey?: string | ((from: string) => string),
116
118
  ): void {
117
119
  if (!shouldPrefetch()) return;
118
120
 
119
121
  const targetUrl = buildPrefetchUrl(url, segmentIds, version, routerId);
120
122
  if (!targetUrl) return;
121
- const key = buildPrefetchKey(window.location.href, targetUrl);
122
- if (hasPrefetch(key)) return;
123
+ // Skip same-page prefetch with prefetchKey — a same-page diff is trivial
124
+ // and would corrupt the wildcard cache entry for cross-page navigation.
125
+ if (prefetchKey != null && targetUrl.pathname === window.location.pathname) {
126
+ return;
127
+ }
128
+ const key = buildPrefetchKey(window.location.href, targetUrl, prefetchKey);
129
+ if (hasPrefetch(key)) {
130
+ debugLog("[prefetch] direct dedup (key already exists)", {
131
+ url,
132
+ key,
133
+ prefetchKey: prefetchKey != null ? String(prefetchKey) : undefined,
134
+ });
135
+ return;
136
+ }
137
+ debugLog("[prefetch] direct fetch", {
138
+ url,
139
+ key,
140
+ source: window.location.href,
141
+ prefetchKey: prefetchKey != null ? String(prefetchKey) : undefined,
142
+ });
123
143
  executePrefetchFetch(key, targetUrl.toString());
124
144
  }
125
145
 
@@ -133,17 +153,37 @@ export function prefetchQueued(
133
153
  segmentIds: string[],
134
154
  version?: string,
135
155
  routerId?: string,
156
+ prefetchKey?: string | ((from: string) => string),
136
157
  ): string {
137
158
  if (!shouldPrefetch()) return "";
138
159
  const targetUrl = buildPrefetchUrl(url, segmentIds, version, routerId);
139
160
  if (!targetUrl) return "";
140
- const key = buildPrefetchKey(window.location.href, targetUrl);
141
- if (hasPrefetch(key)) return key;
161
+ // Skip same-page prefetch with prefetchKey — a same-page diff is trivial
162
+ // and would corrupt the wildcard cache entry for cross-page navigation.
163
+ if (prefetchKey != null && targetUrl.pathname === window.location.pathname) {
164
+ return "";
165
+ }
166
+ const key = buildPrefetchKey(window.location.href, targetUrl, prefetchKey);
167
+ if (hasPrefetch(key)) {
168
+ debugLog("[prefetch] queued dedup (key already exists)", {
169
+ url,
170
+ key,
171
+ prefetchKey: prefetchKey != null ? String(prefetchKey) : undefined,
172
+ });
173
+ return key;
174
+ }
142
175
  const fetchUrlStr = targetUrl.toString();
176
+ const targetPathname = targetUrl.pathname;
143
177
  enqueuePrefetch(key, (signal) => {
144
178
  // Re-check at execution time: a hover-triggered prefetchDirect may
145
179
  // have started or completed this key while the item sat in the queue.
146
180
  if (hasPrefetch(key)) return Promise.resolve();
181
+ // By execution time, the user may have navigated to the target page.
182
+ // A same-page prefetch produces a trivial diff that would overwrite
183
+ // the useful cross-page entry in the wildcard cache.
184
+ if (prefetchKey != null && targetPathname === window.location.pathname) {
185
+ return Promise.resolve();
186
+ }
147
187
  return executePrefetchFetch(key, fetchUrlStr, signal).then(() => {});
148
188
  });
149
189
  return key;
@@ -97,6 +97,26 @@ export interface LinkProps extends Omit<
97
97
  * @default "none"
98
98
  */
99
99
  prefetch?: PrefetchStrategy;
100
+ /**
101
+ * Custom prefetch cache key for source-agnostic cache reuse.
102
+ * When set, prefetch responses are cached independently of the current
103
+ * page URL, so navigating to the same target from different source pages
104
+ * reuses the cached prefetch.
105
+ *
106
+ * - String: static group name (e.g., `"pages"`)
107
+ * - Function: receives current URL (`window.location.href`), returns a
108
+ * normalized source key
109
+ *
110
+ * @example
111
+ * ```tsx
112
+ * // Static group — all "pages" links share one cache entry per target
113
+ * <Link to="/page/3" prefetch="hover" prefetchKey="pages" />
114
+ *
115
+ * // Normalize — strip trailing page number from source URL
116
+ * <Link to="/page/3" prefetch="hover" prefetchKey={(from) => from.replace(/\/\d+$/, '')} />
117
+ * ```
118
+ */
119
+ prefetchKey?: string | ((from: string) => string);
100
120
  /**
101
121
  * State to pass to history.pushState/replaceState.
102
122
  * Accessible via useLocationState() hook.
@@ -184,6 +204,7 @@ export const Link: ForwardRefExoticComponent<
184
204
  reloadDocument = false,
185
205
  revalidate,
186
206
  prefetch = "none",
207
+ prefetchKey,
187
208
  state,
188
209
  children,
189
210
  onClick,
@@ -320,9 +341,10 @@ export const Link: ForwardRefExoticComponent<
320
341
  segmentState.currentSegmentIds,
321
342
  getAppVersion(),
322
343
  ctx.store.getRouterId?.(),
344
+ prefetchKey,
323
345
  );
324
346
  }
325
- }, [resolvedStrategy, resolvedTo, isExternal, ctx]);
347
+ }, [resolvedStrategy, resolvedTo, isExternal, ctx, prefetchKey]);
326
348
 
327
349
  // Viewport/render prefetch: waits for idle before starting,
328
350
  // uses concurrency-limited queue to avoid flooding.
@@ -344,6 +366,7 @@ export const Link: ForwardRefExoticComponent<
344
366
  segmentState.currentSegmentIds,
345
367
  getAppVersion(),
346
368
  ctx.store.getRouterId?.(),
369
+ prefetchKey,
347
370
  );
348
371
  };
349
372
 
@@ -383,7 +406,7 @@ export const Link: ForwardRefExoticComponent<
383
406
  unobserveForPrefetch(observedElement);
384
407
  }
385
408
  };
386
- }, [resolvedStrategy, resolvedTo, isExternal, ctx]);
409
+ }, [resolvedStrategy, resolvedTo, isExternal, ctx, prefetchKey]);
387
410
 
388
411
  return (
389
412
  <a
@@ -6,6 +6,7 @@ import {
6
6
  } from "./merge-segment-loaders.js";
7
7
  import { assertSegmentStructure } from "./segment-structure-assert.js";
8
8
  import { splitInterceptSegments } from "./intercept-utils.js";
9
+ import { debugLog } from "./logging.js";
9
10
 
10
11
  /**
11
12
  * Determines the merging behavior for segment reconciliation.
@@ -85,14 +86,29 @@ export function reconcileSegments(input: ReconcileInput): ReconcileResult {
85
86
  const cachedSegments = new Map<string, ResolvedSegment>();
86
87
  input.cachedSegments.forEach((s) => cachedSegments.set(s.id, s));
87
88
 
89
+ const diffSet = new Set(diff);
90
+ debugLog(
91
+ `[reconcile] actor=${actor}, matched=${matched.length}, diff=${diff.length}`,
92
+ );
93
+ debugLog(
94
+ `[reconcile] server segments: ${[...serverSegments.keys()].join(", ")}`,
95
+ );
96
+ debugLog(
97
+ `[reconcile] cached segments: ${[...cachedSegments.keys()].join(", ")}`,
98
+ );
99
+
88
100
  const segments = matched
89
101
  .map((segId: string) => {
90
102
  const fromServer = serverSegments.get(segId);
91
103
  const fromCache = cachedSegments.get(segId);
92
104
 
93
105
  if (fromServer) {
106
+ const inDiff = diffSet.has(segId);
94
107
  // Merge partial loader data when server returns fewer loaders than cached
95
108
  if (shouldMergeLoaders && needsLoaderMerge(fromServer, fromCache)) {
109
+ debugLog(
110
+ `[reconcile] ${segId}: MERGE loaders (server partial, ${inDiff ? "in diff" : "not in diff"})`,
111
+ );
96
112
  return mergeSegmentLoaders(fromServer, fromCache);
97
113
  }
98
114
 
@@ -143,8 +159,14 @@ export function reconcileSegments(input: ReconcileInput): ReconcileResult {
143
159
  // above fails to preserve a value it should have.
144
160
  assertSegmentStructure(fromCache, merged, context);
145
161
 
162
+ debugLog(
163
+ `[reconcile] ${segId}: SERVER+CACHE merge (${inDiff ? "in diff" : "not in diff"}, type=${fromServer.type}, component=${fromServer.component === null ? "null→cached" : "server"})`,
164
+ );
146
165
  return merged;
147
166
  }
167
+ debugLog(
168
+ `[reconcile] ${segId}: SERVER only (${inDiff ? "in diff" : "not in diff"}, type=${fromServer.type}, no cache entry)`,
169
+ );
148
170
  return fromServer;
149
171
  }
150
172
 
@@ -158,6 +180,10 @@ export function reconcileSegments(input: ReconcileInput): ReconcileResult {
158
180
  return fromCache;
159
181
  }
160
182
 
183
+ debugLog(
184
+ `[reconcile] ${segId}: CACHE only (not from server, type=${fromCache.type}, component=${fromCache.component != null ? "yes" : "null"})`,
185
+ );
186
+
161
187
  // For non-action actors: cached segments the server decided not to re-render.
162
188
  // - Preserve loading=false (suppressed boundary) to maintain tree structure
163
189
  // - Preserve parallel segment loading so renderSegments can reconstruct
@@ -125,6 +125,69 @@ export async function collectSegments(
125
125
  return segments;
126
126
  }
127
127
 
128
+ /**
129
+ * Deduplicate inherited loader segments by loaderId.
130
+ *
131
+ * When a route has loaders and a child layout has parallel slots, the same
132
+ * loader is resolved twice: once for the route and once inherited into the
133
+ * layout (tagged with `_inherited`). The inherited copy is only needed when
134
+ * the route uses `loading()` — in that case, the loader data is inside a
135
+ * LoaderBoundary/Suspense that parallel slots can't reach through. Without
136
+ * loading(), useLoader() traverses parent contexts and finds the data.
137
+ */
138
+ function deduplicateLoaderSegments(
139
+ segments: ResolvedSegment[],
140
+ logPrefix: string,
141
+ ): ResolvedSegment[] {
142
+ // First pass: collect loaderIds of original (non-inherited) segments
143
+ // and whether their parent entry uses loading()
144
+ const originalLoaders = new Set<string>();
145
+ const loadersWithLoading = new Set<string>();
146
+ for (const s of segments) {
147
+ if (s.type === "loader" && s.loaderId && !s._inherited) {
148
+ originalLoaders.add(s.loaderId);
149
+ // If the segment has a sibling with loading, the parent uses loading()
150
+ // We detect this by checking if any non-loader segment in the same
151
+ // namespace has loading defined
152
+ }
153
+ }
154
+ // Check if any layout/route segment has loading — if a loader's namespace
155
+ // matches a segment with loading, the inherited copy is needed
156
+ for (const s of segments) {
157
+ if (s.type !== "loader" && s.loading !== undefined && s.loading !== false) {
158
+ // Find loaders in this namespace
159
+ for (const l of segments) {
160
+ if (l.type === "loader" && l.namespace === s.namespace && l.loaderId) {
161
+ loadersWithLoading.add(l.loaderId);
162
+ }
163
+ }
164
+ }
165
+ }
166
+
167
+ const result: ResolvedSegment[] = [];
168
+ let dedupCount = 0;
169
+
170
+ for (const s of segments) {
171
+ if (
172
+ s.type === "loader" &&
173
+ s.loaderId &&
174
+ s._inherited &&
175
+ originalLoaders.has(s.loaderId) &&
176
+ !loadersWithLoading.has(s.loaderId)
177
+ ) {
178
+ dedupCount++;
179
+ continue;
180
+ }
181
+ result.push(s);
182
+ }
183
+
184
+ if (dedupCount > 0) {
185
+ debugLog(logPrefix, `deduped ${dedupCount} inherited loader segment(s)`);
186
+ }
187
+
188
+ return result;
189
+ }
190
+
128
191
  /**
129
192
  * Build the final MatchResult from collected segments and context
130
193
  */
@@ -181,6 +244,11 @@ export function buildMatchResult<TEnv>(
181
244
  );
182
245
  }
183
246
 
247
+ const dedupedSegments = deduplicateLoaderSegments(
248
+ segmentsToRender,
249
+ logPrefix,
250
+ );
251
+
184
252
  debugLog(logPrefix, "all segments", {
185
253
  segments: allSegments.map((s) => ({
186
254
  id: s.id,
@@ -189,13 +257,23 @@ export function buildMatchResult<TEnv>(
189
257
  })),
190
258
  });
191
259
  debugLog(logPrefix, "segments to render", {
192
- segmentIds: segmentsToRender.map((s) => s.id),
260
+ segmentIds: dedupedSegments.map((s) => s.id),
193
261
  });
194
262
 
263
+ // Remove deduped loader IDs from matched so the client doesn't treat
264
+ // them as missing segments and trigger a fallback refetch.
265
+ const removedIds = new Set(
266
+ segmentsToRender
267
+ .filter((s) => !dedupedSegments.includes(s))
268
+ .map((s) => s.id),
269
+ );
270
+ const matchedIds =
271
+ removedIds.size > 0 ? allIds.filter((id) => !removedIds.has(id)) : allIds;
272
+
195
273
  return {
196
- segments: segmentsToRender,
197
- matched: allIds,
198
- diff: segmentsToRender.map((s) => s.id),
274
+ segments: dedupedSegments,
275
+ matched: matchedIds,
276
+ diff: dedupedSegments.map((s) => s.id),
199
277
  params: ctx.matched.params,
200
278
  routeName: ctx.routeKey,
201
279
  slots: Object.keys(state.slots).length > 0 ? state.slots : undefined,
@@ -419,6 +419,10 @@ export async function resolveOrphanLayout<TEnv>(
419
419
  deps,
420
420
  orphan.shortCode,
421
421
  );
422
+ // Tag as inherited so buildMatchResult can deduplicate when safe
423
+ for (const s of inheritedLoaders) {
424
+ s._inherited = true;
425
+ }
422
426
  segments.push(...inheritedLoaders);
423
427
  }
424
428
  }
@@ -728,6 +732,7 @@ export async function resolveLoadersOnly<TEnv>(
728
732
  for (const seg of inherited) {
729
733
  if (!seenIds.has(seg.id)) {
730
734
  seenIds.add(seg.id);
735
+ seg._inherited = true;
731
736
  loaderSegments.push(seg);
732
737
  }
733
738
  }
@@ -346,6 +346,7 @@ export async function resolveLoadersOnlyWithRevalidation<TEnv>(
346
346
  for (const seg of inherited.segments) {
347
347
  if (!seenIds.has(seg.id)) {
348
348
  seenIds.add(seg.id);
349
+ seg._inherited = true;
349
350
  allLoaderSegments.push(seg);
350
351
  }
351
352
  }
@@ -1036,6 +1037,10 @@ export async function resolveOrphanLayoutWithRevalidation<TEnv>(
1036
1037
  orphan.shortCode,
1037
1038
  stale,
1038
1039
  );
1040
+ // Tag as inherited so buildMatchResult can deduplicate when safe
1041
+ for (const s of inheritedResult.segments) {
1042
+ s._inherited = true;
1043
+ }
1039
1044
  segments.push(...inheritedResult.segments);
1040
1045
  matchedIds.push(...inheritedResult.matchedIds);
1041
1046
  }
@@ -1126,6 +1131,7 @@ export async function resolveOrphanLayoutWithRevalidation<TEnv>(
1126
1131
  );
1127
1132
 
1128
1133
  if (!resolvedParallelEntries.has(parallelEntry.id)) {
1134
+ // shortCodeOverride must match the parent layout, not the parallel entry.
1129
1135
  const loaderResult = await resolveLoadersWithRevalidation(
1130
1136
  parallelEntry,
1131
1137
  context,
@@ -1138,7 +1144,7 @@ export async function resolveOrphanLayoutWithRevalidation<TEnv>(
1138
1144
  routeKey,
1139
1145
  deps,
1140
1146
  actionContext,
1141
- undefined,
1147
+ orphan.shortCode,
1142
1148
  stale,
1143
1149
  );
1144
1150
  segments.push(...loaderResult.segments);
@@ -15,6 +15,7 @@ import {
15
15
  setRequestContextParams,
16
16
  requireRequestContext,
17
17
  getRequestContext,
18
+ _getRequestContext,
18
19
  createRequestContext,
19
20
  } from "../server/request-context.js";
20
21
  import * as rscDeps from "@vitejs/plugin-rsc/rsc";
@@ -166,10 +167,13 @@ export function createRSCHandler<
166
167
  phase: ErrorPhase,
167
168
  context: Parameters<typeof invokeOnError<TEnv>>[3],
168
169
  ): void {
169
- if (error != null && typeof error === "object") {
170
- const reportedErrors = requireRequestContext()._reportedErrors;
171
- if (reportedErrors.has(error)) return;
172
- reportedErrors.add(error);
170
+ // Guard: abort signal handlers fire asynchronously outside the ALS
171
+ // request scope, so the context may be gone. Skip dedup in that
172
+ // case — the error is from a cancelled stream, not a real failure.
173
+ const reqCtx = _getRequestContext();
174
+ if (error != null && typeof error === "object" && reqCtx) {
175
+ if (reqCtx._reportedErrors.has(error)) return;
176
+ reqCtx._reportedErrors.add(error);
173
177
  }
174
178
  invokeOnError(router.onError, error, phase, context, "RSC");
175
179
  }
@@ -50,6 +50,7 @@ export interface ResolvedSegment {
50
50
  parallelName?: string; // For parallels: the parallel group name (used to match with revalidations)
51
51
  // Loader-specific fields
52
52
  loaderId?: string; // For loaders: the loader $$id identifier
53
+ _inherited?: boolean; // For inherited loaders: dedup marker for buildMatchResult
53
54
  loaderData?: any; // For loaders: the resolved data from loader execution
54
55
  parallelLoading?: ReactNode; // For parallel-owned loaders: the parallel's loading fallback
55
56
  // Intercept loader fields (for streaming loader data in parallel segments)
@@ -2,6 +2,7 @@
2
2
 
3
3
  import {
4
4
  isValidElement,
5
+ startTransition,
5
6
  useCallback,
6
7
  useContext,
7
8
  useEffect,
@@ -284,7 +285,9 @@ function useLoaderInternal<T>(
284
285
 
285
286
  const result = payload.loaderResult;
286
287
  if (requestId === requestIdRef.current) {
287
- setFetchedData(result);
288
+ startTransition(() => {
289
+ setFetchedData(result);
290
+ });
288
291
  }
289
292
  return result;
290
293
  } catch (e) {
@@ -19,6 +19,18 @@ export function hashId(filePath: string, exportName: string): string {
19
19
  return `${hash.slice(0, 8)}#${exportName}`;
20
20
  }
21
21
 
22
+ /**
23
+ * Build a stable ID for an export binding. Uses hashed IDs in production
24
+ * builds (short + opaque) and readable path#name IDs in dev.
25
+ */
26
+ export function makeStubId(
27
+ filePath: string,
28
+ exportName: string,
29
+ isBuild: boolean,
30
+ ): string {
31
+ return isBuild ? hashId(filePath, exportName) : `${filePath}#${exportName}`;
32
+ }
33
+
22
34
  /**
23
35
  * Generate an 8-char hex hash for an inline static handler call site.
24
36
  * Uses file path and line number (plus optional index for same-line collisions).