@rangojs/router 0.0.0-experimental.46 → 0.0.0-experimental.48

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 +1 -1
  2. package/package.json +1 -1
  3. package/src/browser/partial-update.ts +11 -0
  4. package/src/cache/cache-runtime.ts +15 -11
  5. package/src/router/logging.ts +1 -1
  6. package/src/router/match-middleware/background-revalidation.ts +30 -2
  7. package/src/router/match-middleware/cache-lookup.ts +66 -9
  8. package/src/router/match-middleware/cache-store.ts +48 -10
  9. package/src/router/match-middleware/intercept-resolution.ts +9 -7
  10. package/src/router/match-middleware/segment-resolution.ts +7 -5
  11. package/src/router/match-result.ts +22 -6
  12. package/src/router/metrics.ts +6 -1
  13. package/src/router/router-context.ts +1 -0
  14. package/src/router/segment-resolution/fresh.ts +54 -14
  15. package/src/router/segment-resolution/loader-cache.ts +1 -0
  16. package/src/router/segment-resolution/revalidation.ts +38 -19
  17. package/src/types/handler-context.ts +103 -17
  18. package/dist/__internal.d.ts +0 -83
  19. package/dist/__internal.d.ts.map +0 -1
  20. package/dist/__internal.js +0 -19
  21. package/dist/__internal.js.map +0 -1
  22. package/dist/__mocks__/version.d.ts +0 -7
  23. package/dist/__mocks__/version.d.ts.map +0 -1
  24. package/dist/__mocks__/version.js +0 -7
  25. package/dist/__mocks__/version.js.map +0 -1
  26. package/dist/__tests__/client-href.test.d.ts +0 -2
  27. package/dist/__tests__/client-href.test.d.ts.map +0 -1
  28. package/dist/__tests__/client-href.test.js +0 -74
  29. package/dist/__tests__/client-href.test.js.map +0 -1
  30. package/dist/__tests__/component-utils.test.d.ts +0 -2
  31. package/dist/__tests__/component-utils.test.d.ts.map +0 -1
  32. package/dist/__tests__/component-utils.test.js +0 -51
  33. package/dist/__tests__/component-utils.test.js.map +0 -1
  34. package/dist/__tests__/event-controller.test.d.ts +0 -2
  35. package/dist/__tests__/event-controller.test.d.ts.map +0 -1
  36. package/dist/__tests__/event-controller.test.js +0 -538
  37. package/dist/__tests__/event-controller.test.js.map +0 -1
  38. package/dist/__tests__/helpers/route-tree.d.ts +0 -118
  39. package/dist/__tests__/helpers/route-tree.d.ts.map +0 -1
  40. package/dist/__tests__/helpers/route-tree.js +0 -374
  41. package/dist/__tests__/helpers/route-tree.js.map +0 -1
  42. package/dist/__tests__/match-result.test.d.ts +0 -2
  43. package/dist/__tests__/match-result.test.d.ts.map +0 -1
  44. package/dist/__tests__/match-result.test.js +0 -154
  45. package/dist/__tests__/match-result.test.js.map +0 -1
  46. package/dist/__tests__/navigation-store.test.d.ts +0 -2
  47. package/dist/__tests__/navigation-store.test.d.ts.map +0 -1
  48. package/dist/__tests__/navigation-store.test.js +0 -440
  49. package/dist/__tests__/navigation-store.test.js.map +0 -1
  50. package/dist/__tests__/partial-update.test.d.ts +0 -2
  51. package/dist/__tests__/partial-update.test.d.ts.map +0 -1
  52. package/dist/__tests__/partial-update.test.js +0 -1009
  53. package/dist/__tests__/partial-update.test.js.map +0 -1
  54. package/dist/__tests__/reverse-types.test.d.ts +0 -8
  55. package/dist/__tests__/reverse-types.test.d.ts.map +0 -1
  56. package/dist/__tests__/reverse-types.test.js +0 -656
  57. package/dist/__tests__/reverse-types.test.js.map +0 -1
  58. package/dist/__tests__/route-definition.test.d.ts +0 -2
  59. package/dist/__tests__/route-definition.test.d.ts.map +0 -1
  60. package/dist/__tests__/route-definition.test.js +0 -55
  61. package/dist/__tests__/route-definition.test.js.map +0 -1
  62. package/dist/__tests__/router-helpers.test.d.ts +0 -2
  63. package/dist/__tests__/router-helpers.test.d.ts.map +0 -1
  64. package/dist/__tests__/router-helpers.test.js +0 -377
  65. package/dist/__tests__/router-helpers.test.js.map +0 -1
  66. package/dist/__tests__/router-integration-2.test.d.ts +0 -2
  67. package/dist/__tests__/router-integration-2.test.d.ts.map +0 -1
  68. package/dist/__tests__/router-integration-2.test.js +0 -426
  69. package/dist/__tests__/router-integration-2.test.js.map +0 -1
  70. package/dist/__tests__/router-integration.test.d.ts +0 -2
  71. package/dist/__tests__/router-integration.test.d.ts.map +0 -1
  72. package/dist/__tests__/router-integration.test.js +0 -1051
  73. package/dist/__tests__/router-integration.test.js.map +0 -1
  74. package/dist/__tests__/search-params.test.d.ts +0 -5
  75. package/dist/__tests__/search-params.test.d.ts.map +0 -1
  76. package/dist/__tests__/search-params.test.js +0 -306
  77. package/dist/__tests__/search-params.test.js.map +0 -1
  78. package/dist/__tests__/segment-system.test.d.ts +0 -2
  79. package/dist/__tests__/segment-system.test.d.ts.map +0 -1
  80. package/dist/__tests__/segment-system.test.js +0 -627
  81. package/dist/__tests__/segment-system.test.js.map +0 -1
  82. package/dist/__tests__/static-handler-types.test.d.ts +0 -8
  83. package/dist/__tests__/static-handler-types.test.d.ts.map +0 -1
  84. package/dist/__tests__/static-handler-types.test.js +0 -63
  85. package/dist/__tests__/static-handler-types.test.js.map +0 -1
  86. package/dist/__tests__/urls.test.d.ts +0 -2
  87. package/dist/__tests__/urls.test.d.ts.map +0 -1
  88. package/dist/__tests__/urls.test.js +0 -421
  89. package/dist/__tests__/urls.test.js.map +0 -1
  90. package/dist/__tests__/use-mount.test.d.ts +0 -2
  91. package/dist/__tests__/use-mount.test.d.ts.map +0 -1
  92. package/dist/__tests__/use-mount.test.js +0 -35
  93. package/dist/__tests__/use-mount.test.js.map +0 -1
  94. package/dist/bin/rango.d.ts +0 -2
  95. package/dist/bin/rango.d.ts.map +0 -1
  96. package/dist/bin/rango.js.map +0 -1
  97. package/dist/browser/event-controller.d.ts +0 -191
  98. package/dist/browser/event-controller.d.ts.map +0 -1
  99. package/dist/browser/event-controller.js +0 -559
  100. package/dist/browser/event-controller.js.map +0 -1
  101. package/dist/browser/index.d.ts +0 -2
  102. package/dist/browser/index.d.ts.map +0 -1
  103. package/dist/browser/index.js +0 -14
  104. package/dist/browser/index.js.map +0 -1
  105. package/dist/browser/link-interceptor.d.ts +0 -38
  106. package/dist/browser/link-interceptor.d.ts.map +0 -1
  107. package/dist/browser/link-interceptor.js +0 -99
  108. package/dist/browser/link-interceptor.js.map +0 -1
  109. package/dist/browser/logging.d.ts +0 -10
  110. package/dist/browser/logging.d.ts.map +0 -1
  111. package/dist/browser/logging.js +0 -29
  112. package/dist/browser/logging.js.map +0 -1
  113. package/dist/browser/lru-cache.d.ts +0 -17
  114. package/dist/browser/lru-cache.d.ts.map +0 -1
  115. package/dist/browser/lru-cache.js +0 -50
  116. package/dist/browser/lru-cache.js.map +0 -1
  117. package/dist/browser/merge-segment-loaders.d.ts +0 -39
  118. package/dist/browser/merge-segment-loaders.d.ts.map +0 -1
  119. package/dist/browser/merge-segment-loaders.js +0 -102
  120. package/dist/browser/merge-segment-loaders.js.map +0 -1
  121. package/dist/browser/navigation-bridge.d.ts +0 -102
  122. package/dist/browser/navigation-bridge.d.ts.map +0 -1
  123. package/dist/browser/navigation-bridge.js +0 -708
  124. package/dist/browser/navigation-bridge.js.map +0 -1
  125. package/dist/browser/navigation-client.d.ts +0 -25
  126. package/dist/browser/navigation-client.d.ts.map +0 -1
  127. package/dist/browser/navigation-client.js +0 -157
  128. package/dist/browser/navigation-client.js.map +0 -1
  129. package/dist/browser/navigation-store.d.ts +0 -101
  130. package/dist/browser/navigation-store.d.ts.map +0 -1
  131. package/dist/browser/navigation-store.js +0 -625
  132. package/dist/browser/navigation-store.js.map +0 -1
  133. package/dist/browser/partial-update.d.ts +0 -75
  134. package/dist/browser/partial-update.d.ts.map +0 -1
  135. package/dist/browser/partial-update.js +0 -426
  136. package/dist/browser/partial-update.js.map +0 -1
  137. package/dist/browser/react/Link.d.ts +0 -86
  138. package/dist/browser/react/Link.d.ts.map +0 -1
  139. package/dist/browser/react/Link.js +0 -128
  140. package/dist/browser/react/Link.js.map +0 -1
  141. package/dist/browser/react/NavigationProvider.d.ts +0 -63
  142. package/dist/browser/react/NavigationProvider.d.ts.map +0 -1
  143. package/dist/browser/react/NavigationProvider.js +0 -216
  144. package/dist/browser/react/NavigationProvider.js.map +0 -1
  145. package/dist/browser/react/ScrollRestoration.d.ts +0 -75
  146. package/dist/browser/react/ScrollRestoration.d.ts.map +0 -1
  147. package/dist/browser/react/ScrollRestoration.js +0 -57
  148. package/dist/browser/react/ScrollRestoration.js.map +0 -1
  149. package/dist/browser/react/context.d.ts +0 -46
  150. package/dist/browser/react/context.d.ts.map +0 -1
  151. package/dist/browser/react/context.js +0 -10
  152. package/dist/browser/react/context.js.map +0 -1
  153. package/dist/browser/react/index.d.ts +0 -11
  154. package/dist/browser/react/index.d.ts.map +0 -1
  155. package/dist/browser/react/index.js +0 -22
  156. package/dist/browser/react/index.js.map +0 -1
  157. package/dist/browser/react/location-state-shared.d.ts +0 -63
  158. package/dist/browser/react/location-state-shared.d.ts.map +0 -1
  159. package/dist/browser/react/location-state-shared.js +0 -81
  160. package/dist/browser/react/location-state-shared.js.map +0 -1
  161. package/dist/browser/react/location-state.d.ts +0 -23
  162. package/dist/browser/react/location-state.d.ts.map +0 -1
  163. package/dist/browser/react/location-state.js +0 -29
  164. package/dist/browser/react/location-state.js.map +0 -1
  165. package/dist/browser/react/mount-context.d.ts +0 -24
  166. package/dist/browser/react/mount-context.d.ts.map +0 -1
  167. package/dist/browser/react/mount-context.js +0 -24
  168. package/dist/browser/react/mount-context.js.map +0 -1
  169. package/dist/browser/react/use-action.d.ts +0 -64
  170. package/dist/browser/react/use-action.d.ts.map +0 -1
  171. package/dist/browser/react/use-action.js +0 -134
  172. package/dist/browser/react/use-action.js.map +0 -1
  173. package/dist/browser/react/use-client-cache.d.ts +0 -41
  174. package/dist/browser/react/use-client-cache.d.ts.map +0 -1
  175. package/dist/browser/react/use-client-cache.js +0 -39
  176. package/dist/browser/react/use-client-cache.js.map +0 -1
  177. package/dist/browser/react/use-handle.d.ts +0 -31
  178. package/dist/browser/react/use-handle.d.ts.map +0 -1
  179. package/dist/browser/react/use-handle.js +0 -144
  180. package/dist/browser/react/use-handle.js.map +0 -1
  181. package/dist/browser/react/use-href.d.ts +0 -33
  182. package/dist/browser/react/use-href.d.ts.map +0 -1
  183. package/dist/browser/react/use-href.js +0 -39
  184. package/dist/browser/react/use-href.js.map +0 -1
  185. package/dist/browser/react/use-link-status.d.ts +0 -37
  186. package/dist/browser/react/use-link-status.d.ts.map +0 -1
  187. package/dist/browser/react/use-link-status.js +0 -99
  188. package/dist/browser/react/use-link-status.js.map +0 -1
  189. package/dist/browser/react/use-mount.d.ts +0 -25
  190. package/dist/browser/react/use-mount.d.ts.map +0 -1
  191. package/dist/browser/react/use-mount.js +0 -30
  192. package/dist/browser/react/use-mount.js.map +0 -1
  193. package/dist/browser/react/use-navigation.d.ts +0 -27
  194. package/dist/browser/react/use-navigation.d.ts.map +0 -1
  195. package/dist/browser/react/use-navigation.js +0 -87
  196. package/dist/browser/react/use-navigation.js.map +0 -1
  197. package/dist/browser/react/use-segments.d.ts +0 -38
  198. package/dist/browser/react/use-segments.d.ts.map +0 -1
  199. package/dist/browser/react/use-segments.js +0 -130
  200. package/dist/browser/react/use-segments.js.map +0 -1
  201. package/dist/browser/request-controller.d.ts +0 -26
  202. package/dist/browser/request-controller.d.ts.map +0 -1
  203. package/dist/browser/request-controller.js +0 -147
  204. package/dist/browser/request-controller.js.map +0 -1
  205. package/dist/browser/rsc-router.d.ts +0 -129
  206. package/dist/browser/rsc-router.d.ts.map +0 -1
  207. package/dist/browser/rsc-router.js +0 -195
  208. package/dist/browser/rsc-router.js.map +0 -1
  209. package/dist/browser/scroll-restoration.d.ts +0 -93
  210. package/dist/browser/scroll-restoration.d.ts.map +0 -1
  211. package/dist/browser/scroll-restoration.js +0 -321
  212. package/dist/browser/scroll-restoration.js.map +0 -1
  213. package/dist/browser/segment-structure-assert.d.ts +0 -17
  214. package/dist/browser/segment-structure-assert.d.ts.map +0 -1
  215. package/dist/browser/segment-structure-assert.js +0 -59
  216. package/dist/browser/segment-structure-assert.js.map +0 -1
  217. package/dist/browser/server-action-bridge.d.ts +0 -26
  218. package/dist/browser/server-action-bridge.d.ts.map +0 -1
  219. package/dist/browser/server-action-bridge.js +0 -668
  220. package/dist/browser/server-action-bridge.js.map +0 -1
  221. package/dist/browser/shallow.d.ts +0 -12
  222. package/dist/browser/shallow.d.ts.map +0 -1
  223. package/dist/browser/shallow.js +0 -34
  224. package/dist/browser/shallow.js.map +0 -1
  225. package/dist/browser/types.d.ts +0 -369
  226. package/dist/browser/types.d.ts.map +0 -1
  227. package/dist/browser/types.js +0 -2
  228. package/dist/browser/types.js.map +0 -1
  229. package/dist/build/__tests__/generate-cli.test.d.ts +0 -2
  230. package/dist/build/__tests__/generate-cli.test.d.ts.map +0 -1
  231. package/dist/build/__tests__/generate-cli.test.js +0 -237
  232. package/dist/build/__tests__/generate-cli.test.js.map +0 -1
  233. package/dist/build/__tests__/generate-manifest.test.d.ts +0 -2
  234. package/dist/build/__tests__/generate-manifest.test.d.ts.map +0 -1
  235. package/dist/build/__tests__/generate-manifest.test.js +0 -119
  236. package/dist/build/__tests__/generate-manifest.test.js.map +0 -1
  237. package/dist/build/__tests__/generate-route-types.test.d.ts +0 -2
  238. package/dist/build/__tests__/generate-route-types.test.d.ts.map +0 -1
  239. package/dist/build/__tests__/generate-route-types.test.js +0 -620
  240. package/dist/build/__tests__/generate-route-types.test.js.map +0 -1
  241. package/dist/build/__tests__/per-router-manifest.test.d.ts +0 -2
  242. package/dist/build/__tests__/per-router-manifest.test.d.ts.map +0 -1
  243. package/dist/build/__tests__/per-router-manifest.test.js +0 -308
  244. package/dist/build/__tests__/per-router-manifest.test.js.map +0 -1
  245. package/dist/build/generate-manifest.d.ts +0 -81
  246. package/dist/build/generate-manifest.d.ts.map +0 -1
  247. package/dist/build/generate-manifest.js +0 -276
  248. package/dist/build/generate-manifest.js.map +0 -1
  249. package/dist/build/generate-route-types.d.ts +0 -115
  250. package/dist/build/generate-route-types.d.ts.map +0 -1
  251. package/dist/build/generate-route-types.js +0 -740
  252. package/dist/build/generate-route-types.js.map +0 -1
  253. package/dist/build/index.d.ts +0 -21
  254. package/dist/build/index.d.ts.map +0 -1
  255. package/dist/build/index.js +0 -21
  256. package/dist/build/index.js.map +0 -1
  257. package/dist/build/route-trie.d.ts +0 -71
  258. package/dist/build/route-trie.d.ts.map +0 -1
  259. package/dist/build/route-trie.js +0 -175
  260. package/dist/build/route-trie.js.map +0 -1
  261. package/dist/cache/__tests__/cache-scope.test.d.ts +0 -2
  262. package/dist/cache/__tests__/cache-scope.test.d.ts.map +0 -1
  263. package/dist/cache/__tests__/cache-scope.test.js +0 -208
  264. package/dist/cache/__tests__/cache-scope.test.js.map +0 -1
  265. package/dist/cache/__tests__/document-cache.test.d.ts +0 -2
  266. package/dist/cache/__tests__/document-cache.test.d.ts.map +0 -1
  267. package/dist/cache/__tests__/document-cache.test.js +0 -345
  268. package/dist/cache/__tests__/document-cache.test.js.map +0 -1
  269. package/dist/cache/__tests__/memory-segment-store.test.d.ts +0 -2
  270. package/dist/cache/__tests__/memory-segment-store.test.d.ts.map +0 -1
  271. package/dist/cache/__tests__/memory-segment-store.test.js +0 -425
  272. package/dist/cache/__tests__/memory-segment-store.test.js.map +0 -1
  273. package/dist/cache/__tests__/memory-store.test.d.ts +0 -2
  274. package/dist/cache/__tests__/memory-store.test.d.ts.map +0 -1
  275. package/dist/cache/__tests__/memory-store.test.js +0 -367
  276. package/dist/cache/__tests__/memory-store.test.js.map +0 -1
  277. package/dist/cache/cache-scope.d.ts +0 -102
  278. package/dist/cache/cache-scope.d.ts.map +0 -1
  279. package/dist/cache/cache-scope.js +0 -440
  280. package/dist/cache/cache-scope.js.map +0 -1
  281. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts +0 -2
  282. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts.map +0 -1
  283. package/dist/cache/cf/__tests__/cf-cache-store.test.js +0 -330
  284. package/dist/cache/cf/__tests__/cf-cache-store.test.js.map +0 -1
  285. package/dist/cache/cf/cf-cache-store.d.ts +0 -165
  286. package/dist/cache/cf/cf-cache-store.d.ts.map +0 -1
  287. package/dist/cache/cf/cf-cache-store.js +0 -242
  288. package/dist/cache/cf/cf-cache-store.js.map +0 -1
  289. package/dist/cache/cf/index.d.ts +0 -14
  290. package/dist/cache/cf/index.d.ts.map +0 -1
  291. package/dist/cache/cf/index.js +0 -17
  292. package/dist/cache/cf/index.js.map +0 -1
  293. package/dist/cache/document-cache.d.ts +0 -64
  294. package/dist/cache/document-cache.d.ts.map +0 -1
  295. package/dist/cache/document-cache.js +0 -228
  296. package/dist/cache/document-cache.js.map +0 -1
  297. package/dist/cache/index.d.ts +0 -19
  298. package/dist/cache/index.d.ts.map +0 -1
  299. package/dist/cache/index.js +0 -21
  300. package/dist/cache/index.js.map +0 -1
  301. package/dist/cache/memory-segment-store.d.ts +0 -110
  302. package/dist/cache/memory-segment-store.d.ts.map +0 -1
  303. package/dist/cache/memory-segment-store.js +0 -117
  304. package/dist/cache/memory-segment-store.js.map +0 -1
  305. package/dist/cache/memory-store.d.ts +0 -41
  306. package/dist/cache/memory-store.d.ts.map +0 -1
  307. package/dist/cache/memory-store.js +0 -191
  308. package/dist/cache/memory-store.js.map +0 -1
  309. package/dist/cache/types.d.ts +0 -317
  310. package/dist/cache/types.d.ts.map +0 -1
  311. package/dist/cache/types.js +0 -12
  312. package/dist/cache/types.js.map +0 -1
  313. package/dist/client.d.ts +0 -248
  314. package/dist/client.d.ts.map +0 -1
  315. package/dist/client.js +0 -367
  316. package/dist/client.js.map +0 -1
  317. package/dist/client.rsc.d.ts +0 -26
  318. package/dist/client.rsc.d.ts.map +0 -1
  319. package/dist/client.rsc.js +0 -46
  320. package/dist/client.rsc.js.map +0 -1
  321. package/dist/component-utils.d.ts +0 -36
  322. package/dist/component-utils.d.ts.map +0 -1
  323. package/dist/component-utils.js +0 -61
  324. package/dist/component-utils.js.map +0 -1
  325. package/dist/components/DefaultDocument.d.ts +0 -13
  326. package/dist/components/DefaultDocument.d.ts.map +0 -1
  327. package/dist/components/DefaultDocument.js +0 -15
  328. package/dist/components/DefaultDocument.js.map +0 -1
  329. package/dist/debug.d.ts +0 -58
  330. package/dist/debug.d.ts.map +0 -1
  331. package/dist/debug.js +0 -157
  332. package/dist/debug.js.map +0 -1
  333. package/dist/default-error-boundary.d.ts +0 -11
  334. package/dist/default-error-boundary.d.ts.map +0 -1
  335. package/dist/default-error-boundary.js +0 -45
  336. package/dist/default-error-boundary.js.map +0 -1
  337. package/dist/deps/browser.d.ts +0 -2
  338. package/dist/deps/browser.d.ts.map +0 -1
  339. package/dist/deps/browser.js +0 -3
  340. package/dist/deps/browser.js.map +0 -1
  341. package/dist/deps/html-stream-client.d.ts +0 -2
  342. package/dist/deps/html-stream-client.d.ts.map +0 -1
  343. package/dist/deps/html-stream-client.js +0 -3
  344. package/dist/deps/html-stream-client.js.map +0 -1
  345. package/dist/deps/html-stream-server.d.ts +0 -2
  346. package/dist/deps/html-stream-server.d.ts.map +0 -1
  347. package/dist/deps/html-stream-server.js +0 -3
  348. package/dist/deps/html-stream-server.js.map +0 -1
  349. package/dist/deps/rsc.d.ts +0 -2
  350. package/dist/deps/rsc.d.ts.map +0 -1
  351. package/dist/deps/rsc.js +0 -4
  352. package/dist/deps/rsc.js.map +0 -1
  353. package/dist/deps/ssr.d.ts +0 -2
  354. package/dist/deps/ssr.d.ts.map +0 -1
  355. package/dist/deps/ssr.js +0 -3
  356. package/dist/deps/ssr.js.map +0 -1
  357. package/dist/errors.d.ts +0 -174
  358. package/dist/errors.d.ts.map +0 -1
  359. package/dist/errors.js +0 -241
  360. package/dist/errors.js.map +0 -1
  361. package/dist/handle.d.ts +0 -78
  362. package/dist/handle.d.ts.map +0 -1
  363. package/dist/handle.js +0 -82
  364. package/dist/handle.js.map +0 -1
  365. package/dist/handles/MetaTags.d.ts +0 -14
  366. package/dist/handles/MetaTags.d.ts.map +0 -1
  367. package/dist/handles/MetaTags.js +0 -136
  368. package/dist/handles/MetaTags.js.map +0 -1
  369. package/dist/handles/index.d.ts +0 -6
  370. package/dist/handles/index.d.ts.map +0 -1
  371. package/dist/handles/index.js +0 -6
  372. package/dist/handles/index.js.map +0 -1
  373. package/dist/handles/meta.d.ts +0 -39
  374. package/dist/handles/meta.d.ts.map +0 -1
  375. package/dist/handles/meta.js +0 -202
  376. package/dist/handles/meta.js.map +0 -1
  377. package/dist/host/__tests__/errors.test.d.ts +0 -2
  378. package/dist/host/__tests__/errors.test.d.ts.map +0 -1
  379. package/dist/host/__tests__/errors.test.js +0 -76
  380. package/dist/host/__tests__/errors.test.js.map +0 -1
  381. package/dist/host/__tests__/pattern-comprehensive.test.d.ts +0 -2
  382. package/dist/host/__tests__/pattern-comprehensive.test.d.ts.map +0 -1
  383. package/dist/host/__tests__/pattern-comprehensive.test.js +0 -732
  384. package/dist/host/__tests__/pattern-comprehensive.test.js.map +0 -1
  385. package/dist/host/__tests__/pattern-matcher.test.d.ts +0 -2
  386. package/dist/host/__tests__/pattern-matcher.test.d.ts.map +0 -1
  387. package/dist/host/__tests__/pattern-matcher.test.js +0 -251
  388. package/dist/host/__tests__/pattern-matcher.test.js.map +0 -1
  389. package/dist/host/__tests__/router.test.d.ts +0 -2
  390. package/dist/host/__tests__/router.test.d.ts.map +0 -1
  391. package/dist/host/__tests__/router.test.js +0 -241
  392. package/dist/host/__tests__/router.test.js.map +0 -1
  393. package/dist/host/__tests__/testing.test.d.ts +0 -2
  394. package/dist/host/__tests__/testing.test.d.ts.map +0 -1
  395. package/dist/host/__tests__/testing.test.js +0 -64
  396. package/dist/host/__tests__/testing.test.js.map +0 -1
  397. package/dist/host/__tests__/utils.test.d.ts +0 -2
  398. package/dist/host/__tests__/utils.test.d.ts.map +0 -1
  399. package/dist/host/__tests__/utils.test.js +0 -29
  400. package/dist/host/__tests__/utils.test.js.map +0 -1
  401. package/dist/host/cookie-handler.d.ts +0 -34
  402. package/dist/host/cookie-handler.d.ts.map +0 -1
  403. package/dist/host/cookie-handler.js +0 -124
  404. package/dist/host/cookie-handler.js.map +0 -1
  405. package/dist/host/errors.d.ts +0 -56
  406. package/dist/host/errors.d.ts.map +0 -1
  407. package/dist/host/errors.js +0 -79
  408. package/dist/host/errors.js.map +0 -1
  409. package/dist/host/index.d.ts +0 -29
  410. package/dist/host/index.d.ts.map +0 -1
  411. package/dist/host/index.js +0 -32
  412. package/dist/host/index.js.map +0 -1
  413. package/dist/host/pattern-matcher.d.ts +0 -36
  414. package/dist/host/pattern-matcher.d.ts.map +0 -1
  415. package/dist/host/pattern-matcher.js +0 -172
  416. package/dist/host/pattern-matcher.js.map +0 -1
  417. package/dist/host/router.d.ts +0 -26
  418. package/dist/host/router.d.ts.map +0 -1
  419. package/dist/host/router.js +0 -218
  420. package/dist/host/router.js.map +0 -1
  421. package/dist/host/testing.d.ts +0 -36
  422. package/dist/host/testing.d.ts.map +0 -1
  423. package/dist/host/testing.js +0 -55
  424. package/dist/host/testing.js.map +0 -1
  425. package/dist/host/types.d.ts +0 -115
  426. package/dist/host/types.d.ts.map +0 -1
  427. package/dist/host/types.js +0 -7
  428. package/dist/host/types.js.map +0 -1
  429. package/dist/host/utils.d.ts +0 -21
  430. package/dist/host/utils.d.ts.map +0 -1
  431. package/dist/host/utils.js +0 -23
  432. package/dist/host/utils.js.map +0 -1
  433. package/dist/href-client.d.ts +0 -131
  434. package/dist/href-client.d.ts.map +0 -1
  435. package/dist/href-client.js +0 -64
  436. package/dist/href-client.js.map +0 -1
  437. package/dist/href-context.d.ts +0 -29
  438. package/dist/href-context.d.ts.map +0 -1
  439. package/dist/href-context.js +0 -21
  440. package/dist/href-context.js.map +0 -1
  441. package/dist/index.d.ts +0 -73
  442. package/dist/index.d.ts.map +0 -1
  443. package/dist/index.js +0 -91
  444. package/dist/index.js.map +0 -1
  445. package/dist/index.rsc.d.ts +0 -32
  446. package/dist/index.rsc.d.ts.map +0 -1
  447. package/dist/index.rsc.js +0 -40
  448. package/dist/index.rsc.js.map +0 -1
  449. package/dist/internal-debug.d.ts +0 -2
  450. package/dist/internal-debug.d.ts.map +0 -1
  451. package/dist/internal-debug.js +0 -5
  452. package/dist/internal-debug.js.map +0 -1
  453. package/dist/loader.d.ts +0 -14
  454. package/dist/loader.d.ts.map +0 -1
  455. package/dist/loader.js +0 -20
  456. package/dist/loader.js.map +0 -1
  457. package/dist/loader.rsc.d.ts +0 -19
  458. package/dist/loader.rsc.d.ts.map +0 -1
  459. package/dist/loader.rsc.js +0 -99
  460. package/dist/loader.rsc.js.map +0 -1
  461. package/dist/network-error-thrower.d.ts +0 -17
  462. package/dist/network-error-thrower.d.ts.map +0 -1
  463. package/dist/network-error-thrower.js +0 -14
  464. package/dist/network-error-thrower.js.map +0 -1
  465. package/dist/outlet-context.d.ts +0 -13
  466. package/dist/outlet-context.d.ts.map +0 -1
  467. package/dist/outlet-context.js +0 -3
  468. package/dist/outlet-context.js.map +0 -1
  469. package/dist/prerender/__tests__/param-hash.test.d.ts +0 -2
  470. package/dist/prerender/__tests__/param-hash.test.d.ts.map +0 -1
  471. package/dist/prerender/__tests__/param-hash.test.js +0 -148
  472. package/dist/prerender/__tests__/param-hash.test.js.map +0 -1
  473. package/dist/prerender/param-hash.d.ts +0 -16
  474. package/dist/prerender/param-hash.d.ts.map +0 -1
  475. package/dist/prerender/param-hash.js +0 -36
  476. package/dist/prerender/param-hash.js.map +0 -1
  477. package/dist/prerender/store.d.ts +0 -38
  478. package/dist/prerender/store.d.ts.map +0 -1
  479. package/dist/prerender/store.js +0 -61
  480. package/dist/prerender/store.js.map +0 -1
  481. package/dist/prerender.d.ts +0 -66
  482. package/dist/prerender.d.ts.map +0 -1
  483. package/dist/prerender.js +0 -57
  484. package/dist/prerender.js.map +0 -1
  485. package/dist/reverse.d.ts +0 -196
  486. package/dist/reverse.d.ts.map +0 -1
  487. package/dist/reverse.js +0 -78
  488. package/dist/reverse.js.map +0 -1
  489. package/dist/root-error-boundary.d.ts +0 -33
  490. package/dist/root-error-boundary.d.ts.map +0 -1
  491. package/dist/root-error-boundary.js +0 -165
  492. package/dist/root-error-boundary.js.map +0 -1
  493. package/dist/route-content-wrapper.d.ts +0 -46
  494. package/dist/route-content-wrapper.d.ts.map +0 -1
  495. package/dist/route-content-wrapper.js +0 -77
  496. package/dist/route-content-wrapper.js.map +0 -1
  497. package/dist/route-definition.d.ts +0 -421
  498. package/dist/route-definition.d.ts.map +0 -1
  499. package/dist/route-definition.js +0 -868
  500. package/dist/route-definition.js.map +0 -1
  501. package/dist/route-map-builder.d.ts +0 -155
  502. package/dist/route-map-builder.d.ts.map +0 -1
  503. package/dist/route-map-builder.js +0 -237
  504. package/dist/route-map-builder.js.map +0 -1
  505. package/dist/route-types.d.ts +0 -165
  506. package/dist/route-types.d.ts.map +0 -1
  507. package/dist/route-types.js +0 -7
  508. package/dist/route-types.js.map +0 -1
  509. package/dist/router/__tests__/handler-context.test.d.ts +0 -2
  510. package/dist/router/__tests__/handler-context.test.d.ts.map +0 -1
  511. package/dist/router/__tests__/handler-context.test.js +0 -65
  512. package/dist/router/__tests__/handler-context.test.js.map +0 -1
  513. package/dist/router/__tests__/loader-cycle-detection.test.d.ts +0 -2
  514. package/dist/router/__tests__/loader-cycle-detection.test.d.ts.map +0 -1
  515. package/dist/router/__tests__/loader-cycle-detection.test.js +0 -221
  516. package/dist/router/__tests__/loader-cycle-detection.test.js.map +0 -1
  517. package/dist/router/__tests__/match-context.test.d.ts +0 -2
  518. package/dist/router/__tests__/match-context.test.d.ts.map +0 -1
  519. package/dist/router/__tests__/match-context.test.js +0 -92
  520. package/dist/router/__tests__/match-context.test.js.map +0 -1
  521. package/dist/router/__tests__/match-pipelines.test.d.ts +0 -2
  522. package/dist/router/__tests__/match-pipelines.test.d.ts.map +0 -1
  523. package/dist/router/__tests__/match-pipelines.test.js +0 -417
  524. package/dist/router/__tests__/match-pipelines.test.js.map +0 -1
  525. package/dist/router/__tests__/match-result.test.d.ts +0 -2
  526. package/dist/router/__tests__/match-result.test.d.ts.map +0 -1
  527. package/dist/router/__tests__/match-result.test.js +0 -457
  528. package/dist/router/__tests__/match-result.test.js.map +0 -1
  529. package/dist/router/__tests__/on-error.test.d.ts +0 -2
  530. package/dist/router/__tests__/on-error.test.d.ts.map +0 -1
  531. package/dist/router/__tests__/on-error.test.js +0 -678
  532. package/dist/router/__tests__/on-error.test.js.map +0 -1
  533. package/dist/router/__tests__/pattern-matching.test.d.ts +0 -2
  534. package/dist/router/__tests__/pattern-matching.test.d.ts.map +0 -1
  535. package/dist/router/__tests__/pattern-matching.test.js +0 -629
  536. package/dist/router/__tests__/pattern-matching.test.js.map +0 -1
  537. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts +0 -2
  538. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts.map +0 -1
  539. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js +0 -155
  540. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js.map +0 -1
  541. package/dist/router/error-handling.d.ts +0 -77
  542. package/dist/router/error-handling.d.ts.map +0 -1
  543. package/dist/router/error-handling.js +0 -202
  544. package/dist/router/error-handling.js.map +0 -1
  545. package/dist/router/handler-context.d.ts +0 -20
  546. package/dist/router/handler-context.d.ts.map +0 -1
  547. package/dist/router/handler-context.js +0 -198
  548. package/dist/router/handler-context.js.map +0 -1
  549. package/dist/router/intercept-resolution.d.ts +0 -66
  550. package/dist/router/intercept-resolution.d.ts.map +0 -1
  551. package/dist/router/intercept-resolution.js +0 -246
  552. package/dist/router/intercept-resolution.js.map +0 -1
  553. package/dist/router/loader-resolution.d.ts +0 -64
  554. package/dist/router/loader-resolution.d.ts.map +0 -1
  555. package/dist/router/loader-resolution.js +0 -284
  556. package/dist/router/loader-resolution.js.map +0 -1
  557. package/dist/router/logging.d.ts +0 -15
  558. package/dist/router/logging.d.ts.map +0 -1
  559. package/dist/router/logging.js +0 -99
  560. package/dist/router/logging.js.map +0 -1
  561. package/dist/router/manifest.d.ts +0 -22
  562. package/dist/router/manifest.d.ts.map +0 -1
  563. package/dist/router/manifest.js +0 -181
  564. package/dist/router/manifest.js.map +0 -1
  565. package/dist/router/match-api.d.ts +0 -35
  566. package/dist/router/match-api.d.ts.map +0 -1
  567. package/dist/router/match-api.js +0 -406
  568. package/dist/router/match-api.js.map +0 -1
  569. package/dist/router/match-context.d.ts +0 -206
  570. package/dist/router/match-context.d.ts.map +0 -1
  571. package/dist/router/match-context.js +0 -17
  572. package/dist/router/match-context.js.map +0 -1
  573. package/dist/router/match-middleware/background-revalidation.d.ts +0 -127
  574. package/dist/router/match-middleware/background-revalidation.d.ts.map +0 -1
  575. package/dist/router/match-middleware/background-revalidation.js +0 -75
  576. package/dist/router/match-middleware/background-revalidation.js.map +0 -1
  577. package/dist/router/match-middleware/cache-lookup.d.ts +0 -112
  578. package/dist/router/match-middleware/cache-lookup.d.ts.map +0 -1
  579. package/dist/router/match-middleware/cache-lookup.js +0 -257
  580. package/dist/router/match-middleware/cache-lookup.js.map +0 -1
  581. package/dist/router/match-middleware/cache-store.d.ts +0 -113
  582. package/dist/router/match-middleware/cache-store.d.ts.map +0 -1
  583. package/dist/router/match-middleware/cache-store.js +0 -108
  584. package/dist/router/match-middleware/cache-store.js.map +0 -1
  585. package/dist/router/match-middleware/index.d.ts +0 -81
  586. package/dist/router/match-middleware/index.d.ts.map +0 -1
  587. package/dist/router/match-middleware/index.js +0 -80
  588. package/dist/router/match-middleware/index.js.map +0 -1
  589. package/dist/router/match-middleware/intercept-resolution.d.ts +0 -117
  590. package/dist/router/match-middleware/intercept-resolution.d.ts.map +0 -1
  591. package/dist/router/match-middleware/intercept-resolution.js +0 -134
  592. package/dist/router/match-middleware/intercept-resolution.js.map +0 -1
  593. package/dist/router/match-middleware/segment-resolution.d.ts +0 -99
  594. package/dist/router/match-middleware/segment-resolution.d.ts.map +0 -1
  595. package/dist/router/match-middleware/segment-resolution.js +0 -53
  596. package/dist/router/match-middleware/segment-resolution.js.map +0 -1
  597. package/dist/router/match-pipelines.d.ts +0 -147
  598. package/dist/router/match-pipelines.d.ts.map +0 -1
  599. package/dist/router/match-pipelines.js +0 -82
  600. package/dist/router/match-pipelines.js.map +0 -1
  601. package/dist/router/match-result.d.ts +0 -126
  602. package/dist/router/match-result.d.ts.map +0 -1
  603. package/dist/router/match-result.js +0 -93
  604. package/dist/router/match-result.js.map +0 -1
  605. package/dist/router/metrics.d.ts +0 -20
  606. package/dist/router/metrics.d.ts.map +0 -1
  607. package/dist/router/metrics.js +0 -47
  608. package/dist/router/metrics.js.map +0 -1
  609. package/dist/router/middleware.d.ts +0 -249
  610. package/dist/router/middleware.d.ts.map +0 -1
  611. package/dist/router/middleware.js +0 -434
  612. package/dist/router/middleware.js.map +0 -1
  613. package/dist/router/middleware.test.d.ts +0 -2
  614. package/dist/router/middleware.test.d.ts.map +0 -1
  615. package/dist/router/middleware.test.js +0 -816
  616. package/dist/router/middleware.test.js.map +0 -1
  617. package/dist/router/pattern-matching.d.ts +0 -149
  618. package/dist/router/pattern-matching.d.ts.map +0 -1
  619. package/dist/router/pattern-matching.js +0 -349
  620. package/dist/router/pattern-matching.js.map +0 -1
  621. package/dist/router/revalidation.d.ts +0 -44
  622. package/dist/router/revalidation.d.ts.map +0 -1
  623. package/dist/router/revalidation.js +0 -147
  624. package/dist/router/revalidation.js.map +0 -1
  625. package/dist/router/router-context.d.ts +0 -135
  626. package/dist/router/router-context.d.ts.map +0 -1
  627. package/dist/router/router-context.js +0 -36
  628. package/dist/router/router-context.js.map +0 -1
  629. package/dist/router/segment-resolution.d.ts +0 -127
  630. package/dist/router/segment-resolution.d.ts.map +0 -1
  631. package/dist/router/segment-resolution.js +0 -919
  632. package/dist/router/segment-resolution.js.map +0 -1
  633. package/dist/router/trie-matching.d.ts +0 -40
  634. package/dist/router/trie-matching.d.ts.map +0 -1
  635. package/dist/router/trie-matching.js +0 -127
  636. package/dist/router/trie-matching.js.map +0 -1
  637. package/dist/router/types.d.ts +0 -136
  638. package/dist/router/types.d.ts.map +0 -1
  639. package/dist/router/types.js +0 -7
  640. package/dist/router/types.js.map +0 -1
  641. package/dist/router.d.ts +0 -753
  642. package/dist/router.d.ts.map +0 -1
  643. package/dist/router.gen.d.ts +0 -6
  644. package/dist/router.gen.d.ts.map +0 -1
  645. package/dist/router.gen.js +0 -6
  646. package/dist/router.gen.js.map +0 -1
  647. package/dist/router.js +0 -1304
  648. package/dist/router.js.map +0 -1
  649. package/dist/rsc/__tests__/helpers.test.d.ts +0 -2
  650. package/dist/rsc/__tests__/helpers.test.d.ts.map +0 -1
  651. package/dist/rsc/__tests__/helpers.test.js +0 -140
  652. package/dist/rsc/__tests__/helpers.test.js.map +0 -1
  653. package/dist/rsc/handler.d.ts +0 -45
  654. package/dist/rsc/handler.d.ts.map +0 -1
  655. package/dist/rsc/handler.js +0 -1172
  656. package/dist/rsc/handler.js.map +0 -1
  657. package/dist/rsc/helpers.d.ts +0 -16
  658. package/dist/rsc/helpers.d.ts.map +0 -1
  659. package/dist/rsc/helpers.js +0 -55
  660. package/dist/rsc/helpers.js.map +0 -1
  661. package/dist/rsc/index.d.ts +0 -22
  662. package/dist/rsc/index.d.ts.map +0 -1
  663. package/dist/rsc/index.js +0 -23
  664. package/dist/rsc/index.js.map +0 -1
  665. package/dist/rsc/nonce.d.ts +0 -9
  666. package/dist/rsc/nonce.d.ts.map +0 -1
  667. package/dist/rsc/nonce.js +0 -18
  668. package/dist/rsc/nonce.js.map +0 -1
  669. package/dist/rsc/types.d.ts +0 -206
  670. package/dist/rsc/types.d.ts.map +0 -1
  671. package/dist/rsc/types.js +0 -8
  672. package/dist/rsc/types.js.map +0 -1
  673. package/dist/search-params.d.ts +0 -103
  674. package/dist/search-params.d.ts.map +0 -1
  675. package/dist/search-params.js +0 -74
  676. package/dist/search-params.js.map +0 -1
  677. package/dist/segment-system.d.ts +0 -75
  678. package/dist/segment-system.d.ts.map +0 -1
  679. package/dist/segment-system.js +0 -336
  680. package/dist/segment-system.js.map +0 -1
  681. package/dist/server/context.d.ts +0 -245
  682. package/dist/server/context.d.ts.map +0 -1
  683. package/dist/server/context.js +0 -197
  684. package/dist/server/context.js.map +0 -1
  685. package/dist/server/fetchable-loader-store.d.ts +0 -18
  686. package/dist/server/fetchable-loader-store.d.ts.map +0 -1
  687. package/dist/server/fetchable-loader-store.js +0 -18
  688. package/dist/server/fetchable-loader-store.js.map +0 -1
  689. package/dist/server/handle-store.d.ts +0 -85
  690. package/dist/server/handle-store.d.ts.map +0 -1
  691. package/dist/server/handle-store.js +0 -142
  692. package/dist/server/handle-store.js.map +0 -1
  693. package/dist/server/loader-registry.d.ts +0 -55
  694. package/dist/server/loader-registry.d.ts.map +0 -1
  695. package/dist/server/loader-registry.js +0 -132
  696. package/dist/server/loader-registry.js.map +0 -1
  697. package/dist/server/request-context.d.ts +0 -226
  698. package/dist/server/request-context.d.ts.map +0 -1
  699. package/dist/server/request-context.js +0 -290
  700. package/dist/server/request-context.js.map +0 -1
  701. package/dist/server/root-layout.d.ts +0 -4
  702. package/dist/server/root-layout.d.ts.map +0 -1
  703. package/dist/server/root-layout.js +0 -5
  704. package/dist/server/root-layout.js.map +0 -1
  705. package/dist/server.d.ts +0 -15
  706. package/dist/server.d.ts.map +0 -1
  707. package/dist/server.js +0 -20
  708. package/dist/server.js.map +0 -1
  709. package/dist/ssr/__tests__/ssr-handler.test.d.ts +0 -2
  710. package/dist/ssr/__tests__/ssr-handler.test.d.ts.map +0 -1
  711. package/dist/ssr/__tests__/ssr-handler.test.js +0 -132
  712. package/dist/ssr/__tests__/ssr-handler.test.js.map +0 -1
  713. package/dist/ssr/index.d.ts +0 -98
  714. package/dist/ssr/index.d.ts.map +0 -1
  715. package/dist/ssr/index.js +0 -158
  716. package/dist/ssr/index.js.map +0 -1
  717. package/dist/static-handler.d.ts +0 -50
  718. package/dist/static-handler.d.ts.map +0 -1
  719. package/dist/static-handler.gen.d.ts +0 -5
  720. package/dist/static-handler.gen.d.ts.map +0 -1
  721. package/dist/static-handler.gen.js +0 -5
  722. package/dist/static-handler.gen.js.map +0 -1
  723. package/dist/static-handler.js +0 -29
  724. package/dist/static-handler.js.map +0 -1
  725. package/dist/theme/ThemeProvider.d.ts +0 -20
  726. package/dist/theme/ThemeProvider.d.ts.map +0 -1
  727. package/dist/theme/ThemeProvider.js +0 -240
  728. package/dist/theme/ThemeProvider.js.map +0 -1
  729. package/dist/theme/ThemeScript.d.ts +0 -48
  730. package/dist/theme/ThemeScript.d.ts.map +0 -1
  731. package/dist/theme/ThemeScript.js +0 -13
  732. package/dist/theme/ThemeScript.js.map +0 -1
  733. package/dist/theme/__tests__/theme.test.d.ts +0 -2
  734. package/dist/theme/__tests__/theme.test.d.ts.map +0 -1
  735. package/dist/theme/__tests__/theme.test.js +0 -103
  736. package/dist/theme/__tests__/theme.test.js.map +0 -1
  737. package/dist/theme/constants.d.ts +0 -29
  738. package/dist/theme/constants.d.ts.map +0 -1
  739. package/dist/theme/constants.js +0 -48
  740. package/dist/theme/constants.js.map +0 -1
  741. package/dist/theme/index.d.ts +0 -31
  742. package/dist/theme/index.d.ts.map +0 -1
  743. package/dist/theme/index.js +0 -36
  744. package/dist/theme/index.js.map +0 -1
  745. package/dist/theme/theme-context.d.ts +0 -40
  746. package/dist/theme/theme-context.d.ts.map +0 -1
  747. package/dist/theme/theme-context.js +0 -60
  748. package/dist/theme/theme-context.js.map +0 -1
  749. package/dist/theme/theme-script.d.ts +0 -27
  750. package/dist/theme/theme-script.d.ts.map +0 -1
  751. package/dist/theme/theme-script.js +0 -147
  752. package/dist/theme/theme-script.js.map +0 -1
  753. package/dist/theme/types.d.ts +0 -163
  754. package/dist/theme/types.d.ts.map +0 -1
  755. package/dist/theme/types.js +0 -11
  756. package/dist/theme/types.js.map +0 -1
  757. package/dist/theme/use-theme.d.ts +0 -12
  758. package/dist/theme/use-theme.d.ts.map +0 -1
  759. package/dist/theme/use-theme.js +0 -40
  760. package/dist/theme/use-theme.js.map +0 -1
  761. package/dist/types.d.ts +0 -1479
  762. package/dist/types.d.ts.map +0 -1
  763. package/dist/types.js +0 -10
  764. package/dist/types.js.map +0 -1
  765. package/dist/urls.d.ts +0 -441
  766. package/dist/urls.d.ts.map +0 -1
  767. package/dist/urls.gen.d.ts +0 -8
  768. package/dist/urls.gen.d.ts.map +0 -1
  769. package/dist/urls.gen.js +0 -8
  770. package/dist/urls.gen.js.map +0 -1
  771. package/dist/urls.js +0 -443
  772. package/dist/urls.js.map +0 -1
  773. package/dist/use-loader.d.ts +0 -127
  774. package/dist/use-loader.d.ts.map +0 -1
  775. package/dist/use-loader.js +0 -237
  776. package/dist/use-loader.js.map +0 -1
  777. package/dist/vite/__tests__/ast-handler-extract.test.d.ts +0 -2
  778. package/dist/vite/__tests__/ast-handler-extract.test.d.ts.map +0 -1
  779. package/dist/vite/__tests__/ast-handler-extract.test.js +0 -294
  780. package/dist/vite/__tests__/ast-handler-extract.test.js.map +0 -1
  781. package/dist/vite/__tests__/expose-id-utils.test.d.ts +0 -2
  782. package/dist/vite/__tests__/expose-id-utils.test.d.ts.map +0 -1
  783. package/dist/vite/__tests__/expose-id-utils.test.js +0 -224
  784. package/dist/vite/__tests__/expose-id-utils.test.js.map +0 -1
  785. package/dist/vite/__tests__/expose-internal-ids.test.d.ts +0 -2
  786. package/dist/vite/__tests__/expose-internal-ids.test.d.ts.map +0 -1
  787. package/dist/vite/__tests__/expose-internal-ids.test.js +0 -647
  788. package/dist/vite/__tests__/expose-internal-ids.test.js.map +0 -1
  789. package/dist/vite/__tests__/expose-router-id.test.d.ts +0 -2
  790. package/dist/vite/__tests__/expose-router-id.test.d.ts.map +0 -1
  791. package/dist/vite/__tests__/expose-router-id.test.js +0 -39
  792. package/dist/vite/__tests__/expose-router-id.test.js.map +0 -1
  793. package/dist/vite/ast-handler-extract.d.ts +0 -49
  794. package/dist/vite/ast-handler-extract.d.ts.map +0 -1
  795. package/dist/vite/ast-handler-extract.js +0 -249
  796. package/dist/vite/ast-handler-extract.js.map +0 -1
  797. package/dist/vite/expose-action-id.d.ts +0 -19
  798. package/dist/vite/expose-action-id.d.ts.map +0 -1
  799. package/dist/vite/expose-action-id.js +0 -250
  800. package/dist/vite/expose-action-id.js.map +0 -1
  801. package/dist/vite/expose-id-utils.d.ts +0 -69
  802. package/dist/vite/expose-id-utils.d.ts.map +0 -1
  803. package/dist/vite/expose-id-utils.js +0 -289
  804. package/dist/vite/expose-id-utils.js.map +0 -1
  805. package/dist/vite/expose-internal-ids.d.ts +0 -22
  806. package/dist/vite/expose-internal-ids.d.ts.map +0 -1
  807. package/dist/vite/expose-internal-ids.js +0 -886
  808. package/dist/vite/expose-internal-ids.js.map +0 -1
  809. package/dist/vite/index.d.ts +0 -149
  810. package/dist/vite/index.d.ts.map +0 -1
  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
@@ -1745,7 +1745,7 @@ import { resolve } from "node:path";
1745
1745
  // package.json
1746
1746
  var package_default = {
1747
1747
  name: "@rangojs/router",
1748
- version: "0.0.0-experimental.46",
1748
+ version: "0.0.0-experimental.48",
1749
1749
  description: "Django-inspired RSC router with composable URL patterns",
1750
1750
  keywords: [
1751
1751
  "react",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rangojs/router",
3
- "version": "0.0.0-experimental.46",
3
+ "version": "0.0.0-experimental.48",
4
4
  "description": "Django-inspired RSC router with composable URL patterns",
5
5
  "keywords": [
6
6
  "react",
@@ -259,6 +259,17 @@ export function createPartialUpdater(
259
259
  existingSegments,
260
260
  );
261
261
 
262
+ // Fix: tx.commit() cached the source page's handleData because
263
+ // eventController hasn't been updated yet. Overwrite with the
264
+ // correct cached handleData to prevent cache corruption on
265
+ // subsequent navigations to this same URL.
266
+ if (mode.targetCacheHandleData) {
267
+ store.updateCacheHandleData(
268
+ store.getHistoryKey(),
269
+ mode.targetCacheHandleData,
270
+ );
271
+ }
272
+
262
273
  // Include cachedHandleData in metadata so NavigationProvider can restore
263
274
  // breadcrumbs and other handle data from cache.
264
275
  // Remove `handles` from metadata to prevent NavigationProvider from
@@ -214,11 +214,21 @@ export function registerCachedFunction<T extends (...args: any[]) => any>(
214
214
  bgStopCapture = c.stop;
215
215
  }
216
216
 
217
- // Stamp tainted args and RequestContext so request-scoped
218
- // reads (cookies, headers) and side effects (ctx.set, etc.)
219
- // throw inside background revalidation, same as the miss path.
220
- // Uses ref-counted stamp/unstamp so overlapping executions
221
- // sharing the same ctx don't clear each other's guards.
217
+ // Stamp tainted ARGS only not requestCtx. The args stamp guards
218
+ // direct ctx method calls (ctx.set, ctx.header, ctx.onResponse, etc.)
219
+ // which is sufficient for correctness.
220
+ //
221
+ // We intentionally skip stamping requestCtx here because:
222
+ // 1. runBackground starts the async task synchronously (before the
223
+ // first await), so stampCacheExec would pollute the shared
224
+ // requestCtx while the foreground pipeline is still running.
225
+ // This causes assertNotInsideCacheExec to fire when cache-store
226
+ // later calls requestCtx.onResponse().
227
+ // 2. requestCtx methods are closure-bound to the original ctx, so
228
+ // neither Object.create() nor a proxy can isolate the stamp.
229
+ // 3. The foreground miss path already stamps requestCtx and catches
230
+ // cookies()/headers() misuse on first execution. The background
231
+ // re-runs the same function with the same request.
222
232
  const bgTaintedArgs: unknown[] = [];
223
233
  for (const arg of args) {
224
234
  if (isTainted(arg)) {
@@ -226,9 +236,6 @@ export function registerCachedFunction<T extends (...args: any[]) => any>(
226
236
  bgTaintedArgs.push(arg);
227
237
  }
228
238
  }
229
- if (requestCtx) {
230
- stampCacheExec(requestCtx as object);
231
- }
232
239
 
233
240
  try {
234
241
  const freshResult = await fn.apply(this, args);
@@ -249,9 +256,6 @@ export function registerCachedFunction<T extends (...args: any[]) => any>(
249
256
  for (const arg of bgTaintedArgs) {
250
257
  unstampCacheExec(arg as object);
251
258
  }
252
- if (requestCtx) {
253
- unstampCacheExec(requestCtx as object);
254
- }
255
259
  // Restore original handle store
256
260
  if (originalHandleStore && requestCtx) {
257
261
  requestCtx._handleStore = originalHandleStore;
@@ -74,7 +74,7 @@ function getHeaderRequestId(request: Request): string | null {
74
74
  return trimmed.length > 0 ? trimmed : null;
75
75
  }
76
76
 
77
- function getOrCreateRequestId(request: Request): string {
77
+ export function getOrCreateRequestId(request: Request): string {
78
78
  const existing = requestIds.get(request);
79
79
  if (existing) return existing;
80
80
 
@@ -103,7 +103,8 @@ import type { ResolvedSegment } from "../../types.js";
103
103
  import type { MatchContext, MatchPipelineState } from "../match-context.js";
104
104
  import { getRouterContext } from "../router-context.js";
105
105
  import type { GeneratorMiddleware } from "./cache-lookup.js";
106
- import { debugLog, debugWarn } from "../logging.js";
106
+ import { debugLog, debugWarn, getOrCreateRequestId } from "../logging.js";
107
+ import { INTERNAL_RANGO_DEBUG } from "../../internal-debug.js";
107
108
 
108
109
  /**
109
110
  * Creates background revalidation middleware
@@ -143,8 +144,19 @@ export function withBackgroundRevalidation<TEnv>(
143
144
 
144
145
  const requestCtx = getRequestContext();
145
146
  const cacheScope = ctx.cacheScope;
147
+ const reqId = INTERNAL_RANGO_DEBUG
148
+ ? getOrCreateRequestId(ctx.request)
149
+ : undefined;
146
150
 
147
151
  requestCtx?.waitUntil(async () => {
152
+ // Prevent background metrics from polluting foreground timeline.
153
+ // The foreground uses its own metricsStore reference directly (via
154
+ // appendMetric), so nulling Store.metrics only affects track() calls
155
+ // inside this background Store.run() scope.
156
+ const savedMetrics = ctx.Store.metrics;
157
+ ctx.Store.metrics = undefined;
158
+
159
+ const start = performance.now();
148
160
  debugLog("backgroundRevalidation", "revalidating stale route", {
149
161
  pathname: ctx.pathname,
150
162
  fullMatch: ctx.isFullMatch,
@@ -174,7 +186,9 @@ export function withBackgroundRevalidation<TEnv>(
174
186
  setupLoaderAccess(freshHandlerContext, freshLoaderPromises);
175
187
 
176
188
  // Resolve all segments fresh (without revalidation logic)
177
- // to ensure complete components for caching
189
+ // to ensure complete components for caching.
190
+ // Skip DSL loaders — they are never cached (cacheRoute filters them)
191
+ // and are always resolved fresh on each request.
178
192
  const freshSegments = await ctx.Store.run(() =>
179
193
  resolveAllSegments(
180
194
  ctx.entries,
@@ -182,6 +196,7 @@ export function withBackgroundRevalidation<TEnv>(
182
196
  ctx.matched.params,
183
197
  freshHandlerContext,
184
198
  freshLoaderPromises,
199
+ { skipLoaders: true },
185
200
  ),
186
201
  );
187
202
 
@@ -207,16 +222,29 @@ export function withBackgroundRevalidation<TEnv>(
207
222
  completeSegments,
208
223
  ctx.isIntercept,
209
224
  );
225
+ if (INTERNAL_RANGO_DEBUG) {
226
+ const dur = performance.now() - start;
227
+ console.log(
228
+ `[RSC Background][req:${reqId}] SWR revalidation ${ctx.pathname} (${dur.toFixed(2)}ms) segments=${completeSegments.length}`,
229
+ );
230
+ }
210
231
  debugLog("backgroundRevalidation", "revalidation complete", {
211
232
  pathname: ctx.pathname,
212
233
  });
213
234
  } catch (error) {
235
+ if (INTERNAL_RANGO_DEBUG) {
236
+ const dur = performance.now() - start;
237
+ console.log(
238
+ `[RSC Background][req:${reqId}] SWR revalidation ${ctx.pathname} FAILED (${dur.toFixed(2)}ms) error=${String(error)}`,
239
+ );
240
+ }
214
241
  debugWarn("backgroundRevalidation", "revalidation failed", {
215
242
  pathname: ctx.pathname,
216
243
  error: String(error),
217
244
  });
218
245
  } finally {
219
246
  requestCtx._handleStore = originalHandleStore;
247
+ ctx.Store.metrics = savedMetrics;
220
248
  }
221
249
  });
222
250
  };
@@ -70,9 +70,11 @@
70
70
  * - No segments yielded from this middleware
71
71
  *
72
72
  * Loaders:
73
- * - NEVER cached by design
73
+ * - NEVER cached in the segment cache
74
74
  * - Always resolved fresh on every request
75
75
  * - Ensures data freshness even with cached UI components
76
+ * - Segment cache staleness does NOT propagate to loader revalidation;
77
+ * loaders use their own revalidation rules (actionId, user-defined)
76
78
  *
77
79
  *
78
80
  * REVALIDATION RULES
@@ -210,6 +212,9 @@ async function* yieldFromStore<TEnv>(
210
212
  }
211
213
 
212
214
  // Resolve loaders fresh (loaders are never pre-rendered/cached)
215
+ const ms = ctx.metricsStore;
216
+ const loaderStart = performance.now();
217
+
213
218
  if (ctx.isFullMatch) {
214
219
  if (resolveLoadersOnly) {
215
220
  const loaderSegments = await ctx.Store.run(() =>
@@ -249,11 +254,17 @@ async function* yieldFromStore<TEnv>(
249
254
  }
250
255
  }
251
256
 
252
- const ms = ctx.metricsStore;
253
257
  if (ms) {
258
+ const loaderEnd = performance.now();
254
259
  ms.metrics.push({
255
- label: "pipeline:cache-lookup",
256
- duration: performance.now() - pipelineStart,
260
+ label: "pipeline:loader-resolve",
261
+ duration: loaderEnd - loaderStart,
262
+ startTime: loaderStart - ms.requestStart,
263
+ depth: 1,
264
+ });
265
+ ms.metrics.push({
266
+ label: "pipeline:cache-hit",
267
+ duration: loaderEnd - pipelineStart,
257
268
  startTime: pipelineStart - ms.requestStart,
258
269
  });
259
270
  }
@@ -437,7 +448,7 @@ export function withCacheLookup<TEnv>(
437
448
  yield* source;
438
449
  if (ms) {
439
450
  ms.metrics.push({
440
- label: "pipeline:cache-lookup",
451
+ label: "pipeline:cache-miss",
441
452
  duration: performance.now() - pipelineStart,
442
453
  startTime: pipelineStart - ms.requestStart,
443
454
  });
@@ -457,7 +468,7 @@ export function withCacheLookup<TEnv>(
457
468
  yield* source;
458
469
  if (ms) {
459
470
  ms.metrics.push({
460
- label: "pipeline:cache-lookup",
471
+ label: "pipeline:cache-miss",
461
472
  duration: performance.now() - pipelineStart,
462
473
  startTime: pipelineStart - ms.requestStart,
463
474
  });
@@ -509,7 +520,41 @@ export function withCacheLookup<TEnv>(
509
520
 
510
521
  // Look up revalidation rules for this segment
511
522
  const entryInfo = entryRevalidateMap?.get(segment.id);
523
+
524
+ // Even without explicit revalidation rules, route segments and their
525
+ // children must re-render when params or search params change — the
526
+ // handler reads ctx.params/ctx.searchParams so different values produce
527
+ // different content. Matches evaluateRevalidation's default logic.
528
+ const searchChanged = ctx.prevUrl.search !== ctx.url.search;
529
+ const routeParamsChanged = !paramsEqual(
530
+ ctx.matched.params,
531
+ ctx.prevParams,
532
+ );
533
+ const shouldDefaultRevalidate =
534
+ (searchChanged || routeParamsChanged) &&
535
+ (segment.type === "route" ||
536
+ (segment.belongsToRoute &&
537
+ (segment.type === "layout" || segment.type === "parallel")));
538
+
512
539
  if (!entryInfo || entryInfo.revalidate.length === 0) {
540
+ if (shouldDefaultRevalidate) {
541
+ // Params or search params changed — must re-render even without custom rules
542
+ if (isTraceActive()) {
543
+ pushRevalidationTraceEntry({
544
+ segmentId: segment.id,
545
+ segmentType: segment.type,
546
+ belongsToRoute: segment.belongsToRoute ?? false,
547
+ source: "cache-hit",
548
+ defaultShouldRevalidate: true,
549
+ finalShouldRevalidate: true,
550
+ reason: routeParamsChanged
551
+ ? "cached-params-changed"
552
+ : "cached-search-changed",
553
+ });
554
+ }
555
+ yield segment;
556
+ continue;
557
+ }
513
558
  // No revalidation rules, use default behavior (skip if client has)
514
559
  if (isTraceActive()) {
515
560
  pushRevalidationTraceEntry({
@@ -573,6 +618,7 @@ export function withCacheLookup<TEnv>(
573
618
  // Resolve loaders fresh (loaders are NOT cached by default)
574
619
  // This ensures fresh data even on cache hit
575
620
  const Store = ctx.Store;
621
+ const loaderStart = performance.now();
576
622
 
577
623
  if (ctx.isFullMatch) {
578
624
  // Full match (document request) - simple loader resolution without revalidation
@@ -605,7 +651,11 @@ export function withCacheLookup<TEnv>(
605
651
  ctx.url,
606
652
  ctx.routeKey,
607
653
  ctx.actionContext,
608
- cacheResult.shouldRevalidate || undefined,
654
+ // Loaders are never cached in the segment cache, so segment
655
+ // staleness (cacheResult.shouldRevalidate) must not propagate.
656
+ // But browser-sent staleness (ctx.stale) — indicating an action
657
+ // happened in this or another tab — must still reach loaders.
658
+ ctx.stale || undefined,
609
659
  ),
610
660
  );
611
661
 
@@ -624,9 +674,16 @@ export function withCacheLookup<TEnv>(
624
674
  }
625
675
  }
626
676
  if (ms) {
677
+ const loaderEnd = performance.now();
678
+ ms.metrics.push({
679
+ label: "pipeline:loader-resolve",
680
+ duration: loaderEnd - loaderStart,
681
+ startTime: loaderStart - ms.requestStart,
682
+ depth: 1,
683
+ });
627
684
  ms.metrics.push({
628
- label: "pipeline:cache-lookup",
629
- duration: performance.now() - pipelineStart,
685
+ label: "pipeline:cache-hit",
686
+ duration: loaderEnd - pipelineStart,
630
687
  startTime: pipelineStart - ms.requestStart,
631
688
  });
632
689
  }
@@ -104,7 +104,8 @@ import type { ResolvedSegment } from "../../types.js";
104
104
  import { getRequestContext } from "../../server/request-context.js";
105
105
  import type { MatchContext, MatchPipelineState } from "../match-context.js";
106
106
  import { getRouterContext } from "../router-context.js";
107
- import { debugLog, debugWarn } from "../logging.js";
107
+ import { debugLog, debugWarn, getOrCreateRequestId } from "../logging.js";
108
+ import { INTERNAL_RANGO_DEBUG } from "../../internal-debug.js";
108
109
  import type { GeneratorMiddleware } from "./cache-lookup.js";
109
110
 
110
111
  /**
@@ -120,7 +121,6 @@ export function withCacheStore<TEnv>(
120
121
  return async function* (
121
122
  source: AsyncGenerator<ResolvedSegment>,
122
123
  ): AsyncGenerator<ResolvedSegment> {
123
- const pipelineStart = performance.now();
124
124
  const ms = ctx.metricsStore;
125
125
 
126
126
  // Collect all segments while passing them through
@@ -130,6 +130,9 @@ export function withCacheStore<TEnv>(
130
130
  yield segment;
131
131
  }
132
132
 
133
+ // Measure own work only (after source iteration completes)
134
+ const ownStart = performance.now();
135
+
133
136
  // Skip caching if:
134
137
  // 1. Cache miss but cache scope is disabled
135
138
  // 2. This is an action (actions don't cache)
@@ -144,8 +147,8 @@ export function withCacheStore<TEnv>(
144
147
  if (ms) {
145
148
  ms.metrics.push({
146
149
  label: "pipeline:cache-store",
147
- duration: performance.now() - pipelineStart,
148
- startTime: pipelineStart - ms.requestStart,
150
+ duration: performance.now() - ownStart,
151
+ startTime: ownStart - ms.requestStart,
149
152
  });
150
153
  }
151
154
  return;
@@ -162,16 +165,23 @@ export function withCacheStore<TEnv>(
162
165
  // Combine main segments with intercept segments
163
166
  const allSegmentsToCache = [...allSegments, ...state.interceptSegments];
164
167
 
165
- // Check if any non-loader segments have null components
166
- // This happens when client already had those segments (partial navigation)
168
+ // Check if any non-loader segments have null components from revalidation
169
+ // skip (client already had them). Segments where the handler intentionally
170
+ // returned null are not revalidation skips — re-rendering them will still
171
+ // produce null, so proactive caching would be wasted work.
172
+ const clientIdSet = new Set(ctx.clientSegmentIds);
167
173
  const hasNullComponents = allSegmentsToCache.some(
168
- (s) => s.component === null && s.type !== "loader",
174
+ (s) =>
175
+ s.component === null && s.type !== "loader" && clientIdSet.has(s.id),
169
176
  );
170
177
 
171
178
  const requestCtx = getRequestContext();
172
179
  if (!requestCtx) return;
173
180
 
174
181
  const cacheScope = ctx.cacheScope;
182
+ const reqId = INTERNAL_RANGO_DEBUG
183
+ ? getOrCreateRequestId(ctx.request)
184
+ : undefined;
175
185
 
176
186
  // Register onResponse callback to skip caching for non-200 responses
177
187
  // Note: error/notFound status codes are set elsewhere (not caching-specific)
@@ -189,6 +199,11 @@ export function withCacheStore<TEnv>(
189
199
  // Proactive caching: render all segments fresh in background
190
200
  // This ensures cache has complete components for future requests
191
201
  requestCtx.waitUntil(async () => {
202
+ // Prevent background metrics from polluting foreground timeline.
203
+ const savedMetrics = ctx.Store.metrics;
204
+ ctx.Store.metrics = undefined;
205
+
206
+ const start = performance.now();
192
207
  debugLog("cacheStore", "proactive caching started", {
193
208
  pathname: ctx.pathname,
194
209
  });
@@ -218,7 +233,9 @@ export function withCacheStore<TEnv>(
218
233
  // Use normal loader access so handle data is captured
219
234
  setupLoaderAccess(proactiveHandlerContext, proactiveLoaderPromises);
220
235
 
221
- // Re-resolve ALL segments without revalidation
236
+ // Re-resolve ALL segments without revalidation.
237
+ // Skip DSL loaders — they are never cached (cacheRoute filters them)
238
+ // and are always resolved fresh on each request.
222
239
  const Store = ctx.Store;
223
240
  const freshSegments = await Store.run(() =>
224
241
  resolveAllSegments(
@@ -227,6 +244,7 @@ export function withCacheStore<TEnv>(
227
244
  ctx.matched.params,
228
245
  proactiveHandlerContext,
229
246
  proactiveLoaderPromises,
247
+ { skipLoaders: true },
230
248
  ),
231
249
  );
232
250
 
@@ -256,28 +274,48 @@ export function withCacheStore<TEnv>(
256
274
  completeSegments,
257
275
  ctx.isIntercept,
258
276
  );
277
+ if (INTERNAL_RANGO_DEBUG) {
278
+ const dur = performance.now() - start;
279
+ console.log(
280
+ `[RSC Background][req:${reqId}] Proactive cache ${ctx.pathname} (${dur.toFixed(2)}ms) segments=${completeSegments.length}`,
281
+ );
282
+ }
259
283
  debugLog("cacheStore", "proactive caching complete", {
260
284
  pathname: ctx.pathname,
261
285
  });
262
286
  } catch (error) {
287
+ if (INTERNAL_RANGO_DEBUG) {
288
+ const dur = performance.now() - start;
289
+ console.log(
290
+ `[RSC Background][req:${reqId}] Proactive cache ${ctx.pathname} FAILED (${dur.toFixed(2)}ms) error=${String(error)}`,
291
+ );
292
+ }
263
293
  debugWarn("cacheStore", "proactive caching failed", {
264
294
  pathname: ctx.pathname,
265
295
  error: String(error),
266
296
  });
267
297
  } finally {
268
298
  requestCtx._handleStore = originalHandleStore;
299
+ ctx.Store.metrics = savedMetrics;
269
300
  }
270
301
  });
271
302
  } else {
272
303
  // All segments have components - cache directly
273
304
  // Schedule caching in waitUntil since cacheRoute is now async (key resolution)
274
305
  requestCtx.waitUntil(async () => {
306
+ const start = performance.now();
275
307
  await cacheScope.cacheRoute(
276
308
  ctx.pathname,
277
309
  ctx.matched.params,
278
310
  allSegmentsToCache,
279
311
  ctx.isIntercept,
280
312
  );
313
+ if (INTERNAL_RANGO_DEBUG) {
314
+ const dur = performance.now() - start;
315
+ console.log(
316
+ `[RSC Background][req:${reqId}] Cache store ${ctx.pathname} (${dur.toFixed(2)}ms) segments=${allSegmentsToCache.length}`,
317
+ );
318
+ }
281
319
  });
282
320
  }
283
321
 
@@ -287,8 +325,8 @@ export function withCacheStore<TEnv>(
287
325
  if (ms) {
288
326
  ms.metrics.push({
289
327
  label: "pipeline:cache-store",
290
- duration: performance.now() - pipelineStart,
291
- startTime: pipelineStart - ms.requestStart,
328
+ duration: performance.now() - ownStart,
329
+ startTime: ownStart - ms.requestStart,
292
330
  });
293
331
  }
294
332
  };
@@ -123,7 +123,6 @@ export function withInterceptResolution<TEnv>(
123
123
  return async function* (
124
124
  source: AsyncGenerator<ResolvedSegment>,
125
125
  ): AsyncGenerator<ResolvedSegment> {
126
- const pipelineStart = performance.now();
127
126
  const ms = ctx.metricsStore;
128
127
 
129
128
  // First, yield all segments from the source (main segment resolution or cache)
@@ -133,13 +132,16 @@ export function withInterceptResolution<TEnv>(
133
132
  yield segment;
134
133
  }
135
134
 
135
+ // Measure own work only (after source iteration completes)
136
+ const ownStart = performance.now();
137
+
136
138
  // Skip intercept resolution for full match (document requests don't have intercepts)
137
139
  if (ctx.isFullMatch) {
138
140
  if (ms) {
139
141
  ms.metrics.push({
140
142
  label: "pipeline:intercept",
141
- duration: performance.now() - pipelineStart,
142
- startTime: pipelineStart - ms.requestStart,
143
+ duration: performance.now() - ownStart,
144
+ startTime: ownStart - ms.requestStart,
143
145
  });
144
146
  }
145
147
  return;
@@ -163,8 +165,8 @@ export function withInterceptResolution<TEnv>(
163
165
  if (ms) {
164
166
  ms.metrics.push({
165
167
  label: "pipeline:intercept",
166
- duration: performance.now() - pipelineStart,
167
- startTime: pipelineStart - ms.requestStart,
168
+ duration: performance.now() - ownStart,
169
+ startTime: ownStart - ms.requestStart,
168
170
  });
169
171
  }
170
172
  return;
@@ -216,8 +218,8 @@ export function withInterceptResolution<TEnv>(
216
218
  if (ms) {
217
219
  ms.metrics.push({
218
220
  label: "pipeline:intercept",
219
- duration: performance.now() - pipelineStart,
220
- startTime: pipelineStart - ms.requestStart,
221
+ duration: performance.now() - ownStart,
222
+ startTime: ownStart - ms.requestStart,
221
223
  });
222
224
  }
223
225
  };
@@ -104,7 +104,6 @@ export function withSegmentResolution<TEnv>(
104
104
  return async function* (
105
105
  source: AsyncGenerator<ResolvedSegment>,
106
106
  ): AsyncGenerator<ResolvedSegment> {
107
- const pipelineStart = performance.now();
108
107
  const ms = ctx.metricsStore;
109
108
 
110
109
  // IMPORTANT: Always iterate source first to give cache-lookup a chance
@@ -113,13 +112,16 @@ export function withSegmentResolution<TEnv>(
113
112
  yield segment;
114
113
  }
115
114
 
115
+ // Measure own work only (after source iteration completes)
116
+ const ownStart = performance.now();
117
+
116
118
  // If cache hit, segments were already yielded by cache lookup
117
119
  if (state.cacheHit) {
118
120
  if (ms) {
119
121
  ms.metrics.push({
120
122
  label: "pipeline:segment-resolve",
121
- duration: performance.now() - pipelineStart,
122
- startTime: pipelineStart - ms.requestStart,
123
+ duration: performance.now() - ownStart,
124
+ startTime: ownStart - ms.requestStart,
123
125
  });
124
126
  }
125
127
  return;
@@ -185,8 +187,8 @@ export function withSegmentResolution<TEnv>(
185
187
  if (ms) {
186
188
  ms.metrics.push({
187
189
  label: "pipeline:segment-resolve",
188
- duration: performance.now() - pipelineStart,
189
- startTime: pipelineStart - ms.requestStart,
190
+ duration: performance.now() - ownStart,
191
+ startTime: ownStart - ms.requestStart,
190
192
  });
191
193
  }
192
194
  };
@@ -67,10 +67,11 @@
67
67
  * Keep if:
68
68
  * - component !== null (needs rendering)
69
69
  * - type === "loader" (carries data even with null component)
70
+ * - client doesn't have the segment (structurally required parent node)
70
71
  *
71
72
  * Skip if:
72
- * - component === null AND type !== "loader"
73
- * - (Client already has this segment's UI)
73
+ * - component === null AND type !== "loader" AND client has it cached
74
+ * - (Revalidation skip — client already has this segment's UI)
74
75
  *
75
76
  *
76
77
  * INTERCEPT HANDLING
@@ -109,6 +110,7 @@
109
110
  import type { MatchResult, ResolvedSegment } from "../types.js";
110
111
  import type { MatchContext, MatchPipelineState } from "./match-context.js";
111
112
  import { debugLog } from "./logging.js";
113
+ import { appendMetric } from "./metrics.js";
112
114
 
113
115
  /**
114
116
  * Collect all segments from an async generator
@@ -167,10 +169,15 @@ export function buildMatchResult<TEnv>(
167
169
  // Deduplicate allIds (defense-in-depth for partial match path)
168
170
  allIds = [...new Set(allIds)];
169
171
 
170
- // Filter out segments with null components (client already has them)
171
- // BUT always include loader segments - they carry data even with null component
172
+ // Filter out null-component segments only when the client already has
173
+ // them cached (revalidation skip). If the client doesn't have the segment,
174
+ // it must be included even with null component — it's structurally required
175
+ // as a parent node for child layouts/parallels to reconcile against.
176
+ // Loader segments are always included as they carry data.
177
+ const clientIdSet = new Set(ctx.clientSegmentIds);
172
178
  segmentsToRender = allSegments.filter(
173
- (s) => s.component !== null || s.type === "loader",
179
+ (s) =>
180
+ s.component !== null || s.type === "loader" || !clientIdSet.has(s.id),
174
181
  );
175
182
  }
176
183
 
@@ -210,10 +217,19 @@ export async function collectMatchResult<TEnv>(
210
217
  ): Promise<MatchResult> {
211
218
  const allSegments = await collectSegments(pipeline);
212
219
 
220
+ const buildStart = performance.now();
221
+
213
222
  // Update state with collected segments if not already set
214
223
  if (state.segments.length === 0) {
215
224
  state.segments = allSegments;
216
225
  }
217
226
 
218
- return buildMatchResult(allSegments, ctx, state);
227
+ const result = buildMatchResult(allSegments, ctx, state);
228
+ appendMetric(
229
+ ctx.metricsStore,
230
+ "collect-result",
231
+ buildStart,
232
+ performance.now() - buildStart,
233
+ );
234
+ return result;
219
235
  }
@@ -15,7 +15,12 @@ function formatMs(value: number): string {
15
15
  }
16
16
 
17
17
  function sortMetrics(metrics: PerformanceMetric[]): PerformanceMetric[] {
18
- return [...metrics].sort((a, b) => a.startTime - b.startTime);
18
+ return [...metrics].sort((a, b) => {
19
+ // handler:total always goes last (it wraps everything)
20
+ if (a.label === "handler:total") return 1;
21
+ if (b.label === "handler:total") return -1;
22
+ return a.startTime - b.startTime;
23
+ });
19
24
  }
20
25
 
21
26
  interface Span {
@@ -210,6 +210,7 @@ export interface RouterContext<TEnv = any> {
210
210
  params: Record<string, string>,
211
211
  handlerContext: HandlerContext<any, TEnv>,
212
212
  loaderPromises: Map<string, Promise<any>>,
213
+ options?: { skipLoaders?: boolean },
213
214
  ) => Promise<ResolvedSegment[]>;
214
215
 
215
216
  // Generator-based simple resolution