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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (942) hide show
  1. package/README.md +76 -18
  2. package/dist/bin/rango.js +138 -50
  3. package/dist/vite/index.js +839 -429
  4. package/package.json +2 -2
  5. package/skills/cache-guide/SKILL.md +32 -0
  6. package/skills/caching/SKILL.md +45 -4
  7. package/skills/links/SKILL.md +3 -1
  8. package/skills/loader/SKILL.md +53 -43
  9. package/skills/middleware/SKILL.md +2 -0
  10. package/skills/parallel/SKILL.md +126 -0
  11. package/skills/prerender/SKILL.md +110 -68
  12. package/skills/route/SKILL.md +31 -0
  13. package/skills/router-setup/SKILL.md +87 -2
  14. package/skills/typesafety/SKILL.md +10 -0
  15. package/src/__internal.ts +1 -1
  16. package/src/browser/app-version.ts +14 -0
  17. package/src/browser/event-controller.ts +5 -0
  18. package/src/browser/navigation-bridge.ts +17 -6
  19. package/src/browser/navigation-client.ts +115 -58
  20. package/src/browser/navigation-store.ts +43 -8
  21. package/src/browser/navigation-transaction.ts +11 -9
  22. package/src/browser/partial-update.ts +76 -13
  23. package/src/browser/prefetch/cache.ts +57 -5
  24. package/src/browser/prefetch/fetch.ts +38 -23
  25. package/src/browser/prefetch/queue.ts +92 -20
  26. package/src/browser/prefetch/resource-ready.ts +77 -0
  27. package/src/browser/react/Link.tsx +53 -9
  28. package/src/browser/react/NavigationProvider.tsx +40 -4
  29. package/src/browser/react/context.ts +7 -2
  30. package/src/browser/react/use-handle.ts +9 -58
  31. package/src/browser/react/use-router.ts +21 -8
  32. package/src/browser/rsc-router.tsx +134 -59
  33. package/src/browser/scroll-restoration.ts +30 -15
  34. package/src/browser/segment-reconciler.ts +6 -1
  35. package/src/browser/server-action-bridge.ts +8 -6
  36. package/src/browser/types.ts +36 -5
  37. package/src/build/generate-manifest.ts +6 -6
  38. package/src/build/generate-route-types.ts +3 -0
  39. package/src/build/route-types/include-resolution.ts +8 -1
  40. package/src/build/route-types/router-processing.ts +223 -74
  41. package/src/build/route-types/scan-filter.ts +8 -1
  42. package/src/cache/cache-runtime.ts +15 -11
  43. package/src/cache/cache-scope.ts +48 -7
  44. package/src/cache/cf/cf-cache-store.ts +453 -11
  45. package/src/cache/cf/index.ts +5 -1
  46. package/src/cache/document-cache.ts +17 -7
  47. package/src/cache/index.ts +1 -0
  48. package/src/cache/taint.ts +55 -0
  49. package/src/client.tsx +2 -56
  50. package/src/context-var.ts +72 -2
  51. package/src/debug.ts +2 -2
  52. package/src/handle.ts +40 -0
  53. package/src/index.rsc.ts +3 -1
  54. package/src/index.ts +12 -0
  55. package/src/prerender/store.ts +5 -4
  56. package/src/prerender.ts +138 -77
  57. package/src/reverse.ts +22 -1
  58. package/src/route-definition/dsl-helpers.ts +73 -25
  59. package/src/route-definition/helpers-types.ts +10 -6
  60. package/src/route-definition/index.ts +3 -0
  61. package/src/route-definition/redirect.ts +11 -3
  62. package/src/route-definition/resolve-handler-use.ts +149 -0
  63. package/src/route-map-builder.ts +7 -1
  64. package/src/route-types.ts +11 -0
  65. package/src/router/content-negotiation.ts +100 -1
  66. package/src/router/find-match.ts +4 -2
  67. package/src/router/handler-context.ts +79 -23
  68. package/src/router/intercept-resolution.ts +11 -4
  69. package/src/router/lazy-includes.ts +4 -1
  70. package/src/router/loader-resolution.ts +156 -21
  71. package/src/router/logging.ts +5 -2
  72. package/src/router/manifest.ts +9 -3
  73. package/src/router/match-api.ts +124 -189
  74. package/src/router/match-middleware/background-revalidation.ts +30 -2
  75. package/src/router/match-middleware/cache-lookup.ts +92 -16
  76. package/src/router/match-middleware/cache-store.ts +53 -10
  77. package/src/router/match-middleware/intercept-resolution.ts +9 -7
  78. package/src/router/match-middleware/segment-resolution.ts +60 -5
  79. package/src/router/match-result.ts +22 -6
  80. package/src/router/metrics.ts +6 -1
  81. package/src/router/middleware-types.ts +6 -8
  82. package/src/router/middleware.ts +4 -6
  83. package/src/router/navigation-snapshot.ts +182 -0
  84. package/src/router/prerender-match.ts +110 -10
  85. package/src/router/preview-match.ts +30 -102
  86. package/src/router/request-classification.ts +310 -0
  87. package/src/router/route-snapshot.ts +245 -0
  88. package/src/router/router-context.ts +5 -1
  89. package/src/router/router-interfaces.ts +36 -4
  90. package/src/router/router-options.ts +37 -11
  91. package/src/router/segment-resolution/fresh.ts +193 -20
  92. package/src/router/segment-resolution/helpers.ts +29 -24
  93. package/src/router/segment-resolution/loader-cache.ts +1 -0
  94. package/src/router/segment-resolution/revalidation.ts +429 -296
  95. package/src/router/types.ts +1 -0
  96. package/src/router.ts +59 -6
  97. package/src/rsc/handler.ts +472 -372
  98. package/src/rsc/loader-fetch.ts +23 -3
  99. package/src/rsc/manifest-init.ts +5 -1
  100. package/src/rsc/progressive-enhancement.ts +14 -2
  101. package/src/rsc/rsc-rendering.ts +10 -1
  102. package/src/rsc/server-action.ts +8 -0
  103. package/src/rsc/ssr-setup.ts +2 -2
  104. package/src/rsc/types.ts +9 -1
  105. package/src/segment-system.tsx +140 -4
  106. package/src/server/context.ts +140 -14
  107. package/src/server/handle-store.ts +19 -0
  108. package/src/server/loader-registry.ts +9 -8
  109. package/src/server/request-context.ts +185 -19
  110. package/src/ssr/index.tsx +4 -0
  111. package/src/static-handler.ts +18 -6
  112. package/src/types/cache-types.ts +4 -4
  113. package/src/types/handler-context.ts +137 -33
  114. package/src/types/loader-types.ts +36 -9
  115. package/src/types/route-entry.ts +8 -1
  116. package/src/types/segments.ts +2 -0
  117. package/src/urls/path-helper-types.ts +9 -2
  118. package/src/urls/path-helper.ts +48 -13
  119. package/src/urls/pattern-types.ts +12 -0
  120. package/src/urls/response-types.ts +16 -6
  121. package/src/use-loader.tsx +77 -5
  122. package/src/vite/discovery/bundle-postprocess.ts +30 -33
  123. package/src/vite/discovery/discover-routers.ts +5 -1
  124. package/src/vite/discovery/prerender-collection.ts +128 -74
  125. package/src/vite/discovery/state.ts +13 -6
  126. package/src/vite/index.ts +4 -0
  127. package/src/vite/plugin-types.ts +51 -79
  128. package/src/vite/plugins/expose-action-id.ts +1 -3
  129. package/src/vite/plugins/expose-id-utils.ts +12 -0
  130. package/src/vite/plugins/expose-ids/handler-transform.ts +30 -0
  131. package/src/vite/plugins/expose-internal-ids.ts +257 -40
  132. package/src/vite/plugins/performance-tracks.ts +88 -0
  133. package/src/vite/plugins/refresh-cmd.ts +88 -26
  134. package/src/vite/plugins/version-plugin.ts +13 -1
  135. package/src/vite/rango.ts +163 -211
  136. package/src/vite/router-discovery.ts +178 -45
  137. package/src/vite/utils/banner.ts +3 -3
  138. package/src/vite/utils/prerender-utils.ts +18 -0
  139. package/src/vite/utils/shared-utils.ts +3 -2
  140. package/dist/__internal.d.ts +0 -83
  141. package/dist/__internal.d.ts.map +0 -1
  142. package/dist/__internal.js +0 -19
  143. package/dist/__internal.js.map +0 -1
  144. package/dist/__mocks__/version.d.ts +0 -7
  145. package/dist/__mocks__/version.d.ts.map +0 -1
  146. package/dist/__mocks__/version.js +0 -7
  147. package/dist/__mocks__/version.js.map +0 -1
  148. package/dist/__tests__/client-href.test.d.ts +0 -2
  149. package/dist/__tests__/client-href.test.d.ts.map +0 -1
  150. package/dist/__tests__/client-href.test.js +0 -74
  151. package/dist/__tests__/client-href.test.js.map +0 -1
  152. package/dist/__tests__/component-utils.test.d.ts +0 -2
  153. package/dist/__tests__/component-utils.test.d.ts.map +0 -1
  154. package/dist/__tests__/component-utils.test.js +0 -51
  155. package/dist/__tests__/component-utils.test.js.map +0 -1
  156. package/dist/__tests__/event-controller.test.d.ts +0 -2
  157. package/dist/__tests__/event-controller.test.d.ts.map +0 -1
  158. package/dist/__tests__/event-controller.test.js +0 -538
  159. package/dist/__tests__/event-controller.test.js.map +0 -1
  160. package/dist/__tests__/helpers/route-tree.d.ts +0 -118
  161. package/dist/__tests__/helpers/route-tree.d.ts.map +0 -1
  162. package/dist/__tests__/helpers/route-tree.js +0 -374
  163. package/dist/__tests__/helpers/route-tree.js.map +0 -1
  164. package/dist/__tests__/match-result.test.d.ts +0 -2
  165. package/dist/__tests__/match-result.test.d.ts.map +0 -1
  166. package/dist/__tests__/match-result.test.js +0 -154
  167. package/dist/__tests__/match-result.test.js.map +0 -1
  168. package/dist/__tests__/navigation-store.test.d.ts +0 -2
  169. package/dist/__tests__/navigation-store.test.d.ts.map +0 -1
  170. package/dist/__tests__/navigation-store.test.js +0 -440
  171. package/dist/__tests__/navigation-store.test.js.map +0 -1
  172. package/dist/__tests__/partial-update.test.d.ts +0 -2
  173. package/dist/__tests__/partial-update.test.d.ts.map +0 -1
  174. package/dist/__tests__/partial-update.test.js +0 -1009
  175. package/dist/__tests__/partial-update.test.js.map +0 -1
  176. package/dist/__tests__/reverse-types.test.d.ts +0 -8
  177. package/dist/__tests__/reverse-types.test.d.ts.map +0 -1
  178. package/dist/__tests__/reverse-types.test.js +0 -656
  179. package/dist/__tests__/reverse-types.test.js.map +0 -1
  180. package/dist/__tests__/route-definition.test.d.ts +0 -2
  181. package/dist/__tests__/route-definition.test.d.ts.map +0 -1
  182. package/dist/__tests__/route-definition.test.js +0 -55
  183. package/dist/__tests__/route-definition.test.js.map +0 -1
  184. package/dist/__tests__/router-helpers.test.d.ts +0 -2
  185. package/dist/__tests__/router-helpers.test.d.ts.map +0 -1
  186. package/dist/__tests__/router-helpers.test.js +0 -377
  187. package/dist/__tests__/router-helpers.test.js.map +0 -1
  188. package/dist/__tests__/router-integration-2.test.d.ts +0 -2
  189. package/dist/__tests__/router-integration-2.test.d.ts.map +0 -1
  190. package/dist/__tests__/router-integration-2.test.js +0 -426
  191. package/dist/__tests__/router-integration-2.test.js.map +0 -1
  192. package/dist/__tests__/router-integration.test.d.ts +0 -2
  193. package/dist/__tests__/router-integration.test.d.ts.map +0 -1
  194. package/dist/__tests__/router-integration.test.js +0 -1051
  195. package/dist/__tests__/router-integration.test.js.map +0 -1
  196. package/dist/__tests__/search-params.test.d.ts +0 -5
  197. package/dist/__tests__/search-params.test.d.ts.map +0 -1
  198. package/dist/__tests__/search-params.test.js +0 -306
  199. package/dist/__tests__/search-params.test.js.map +0 -1
  200. package/dist/__tests__/segment-system.test.d.ts +0 -2
  201. package/dist/__tests__/segment-system.test.d.ts.map +0 -1
  202. package/dist/__tests__/segment-system.test.js +0 -627
  203. package/dist/__tests__/segment-system.test.js.map +0 -1
  204. package/dist/__tests__/static-handler-types.test.d.ts +0 -8
  205. package/dist/__tests__/static-handler-types.test.d.ts.map +0 -1
  206. package/dist/__tests__/static-handler-types.test.js +0 -63
  207. package/dist/__tests__/static-handler-types.test.js.map +0 -1
  208. package/dist/__tests__/urls.test.d.ts +0 -2
  209. package/dist/__tests__/urls.test.d.ts.map +0 -1
  210. package/dist/__tests__/urls.test.js +0 -421
  211. package/dist/__tests__/urls.test.js.map +0 -1
  212. package/dist/__tests__/use-mount.test.d.ts +0 -2
  213. package/dist/__tests__/use-mount.test.d.ts.map +0 -1
  214. package/dist/__tests__/use-mount.test.js +0 -35
  215. package/dist/__tests__/use-mount.test.js.map +0 -1
  216. package/dist/bin/rango.d.ts +0 -2
  217. package/dist/bin/rango.d.ts.map +0 -1
  218. package/dist/bin/rango.js.map +0 -1
  219. package/dist/browser/event-controller.d.ts +0 -191
  220. package/dist/browser/event-controller.d.ts.map +0 -1
  221. package/dist/browser/event-controller.js +0 -559
  222. package/dist/browser/event-controller.js.map +0 -1
  223. package/dist/browser/index.d.ts +0 -2
  224. package/dist/browser/index.d.ts.map +0 -1
  225. package/dist/browser/index.js +0 -14
  226. package/dist/browser/index.js.map +0 -1
  227. package/dist/browser/link-interceptor.d.ts +0 -38
  228. package/dist/browser/link-interceptor.d.ts.map +0 -1
  229. package/dist/browser/link-interceptor.js +0 -99
  230. package/dist/browser/link-interceptor.js.map +0 -1
  231. package/dist/browser/logging.d.ts +0 -10
  232. package/dist/browser/logging.d.ts.map +0 -1
  233. package/dist/browser/logging.js +0 -29
  234. package/dist/browser/logging.js.map +0 -1
  235. package/dist/browser/lru-cache.d.ts +0 -17
  236. package/dist/browser/lru-cache.d.ts.map +0 -1
  237. package/dist/browser/lru-cache.js +0 -50
  238. package/dist/browser/lru-cache.js.map +0 -1
  239. package/dist/browser/merge-segment-loaders.d.ts +0 -39
  240. package/dist/browser/merge-segment-loaders.d.ts.map +0 -1
  241. package/dist/browser/merge-segment-loaders.js +0 -102
  242. package/dist/browser/merge-segment-loaders.js.map +0 -1
  243. package/dist/browser/navigation-bridge.d.ts +0 -102
  244. package/dist/browser/navigation-bridge.d.ts.map +0 -1
  245. package/dist/browser/navigation-bridge.js +0 -708
  246. package/dist/browser/navigation-bridge.js.map +0 -1
  247. package/dist/browser/navigation-client.d.ts +0 -25
  248. package/dist/browser/navigation-client.d.ts.map +0 -1
  249. package/dist/browser/navigation-client.js +0 -157
  250. package/dist/browser/navigation-client.js.map +0 -1
  251. package/dist/browser/navigation-store.d.ts +0 -101
  252. package/dist/browser/navigation-store.d.ts.map +0 -1
  253. package/dist/browser/navigation-store.js +0 -625
  254. package/dist/browser/navigation-store.js.map +0 -1
  255. package/dist/browser/partial-update.d.ts +0 -75
  256. package/dist/browser/partial-update.d.ts.map +0 -1
  257. package/dist/browser/partial-update.js +0 -426
  258. package/dist/browser/partial-update.js.map +0 -1
  259. package/dist/browser/react/Link.d.ts +0 -86
  260. package/dist/browser/react/Link.d.ts.map +0 -1
  261. package/dist/browser/react/Link.js +0 -128
  262. package/dist/browser/react/Link.js.map +0 -1
  263. package/dist/browser/react/NavigationProvider.d.ts +0 -63
  264. package/dist/browser/react/NavigationProvider.d.ts.map +0 -1
  265. package/dist/browser/react/NavigationProvider.js +0 -216
  266. package/dist/browser/react/NavigationProvider.js.map +0 -1
  267. package/dist/browser/react/ScrollRestoration.d.ts +0 -75
  268. package/dist/browser/react/ScrollRestoration.d.ts.map +0 -1
  269. package/dist/browser/react/ScrollRestoration.js +0 -57
  270. package/dist/browser/react/ScrollRestoration.js.map +0 -1
  271. package/dist/browser/react/context.d.ts +0 -46
  272. package/dist/browser/react/context.d.ts.map +0 -1
  273. package/dist/browser/react/context.js +0 -10
  274. package/dist/browser/react/context.js.map +0 -1
  275. package/dist/browser/react/index.d.ts +0 -11
  276. package/dist/browser/react/index.d.ts.map +0 -1
  277. package/dist/browser/react/index.js +0 -22
  278. package/dist/browser/react/index.js.map +0 -1
  279. package/dist/browser/react/location-state-shared.d.ts +0 -63
  280. package/dist/browser/react/location-state-shared.d.ts.map +0 -1
  281. package/dist/browser/react/location-state-shared.js +0 -81
  282. package/dist/browser/react/location-state-shared.js.map +0 -1
  283. package/dist/browser/react/location-state.d.ts +0 -23
  284. package/dist/browser/react/location-state.d.ts.map +0 -1
  285. package/dist/browser/react/location-state.js +0 -29
  286. package/dist/browser/react/location-state.js.map +0 -1
  287. package/dist/browser/react/mount-context.d.ts +0 -24
  288. package/dist/browser/react/mount-context.d.ts.map +0 -1
  289. package/dist/browser/react/mount-context.js +0 -24
  290. package/dist/browser/react/mount-context.js.map +0 -1
  291. package/dist/browser/react/use-action.d.ts +0 -64
  292. package/dist/browser/react/use-action.d.ts.map +0 -1
  293. package/dist/browser/react/use-action.js +0 -134
  294. package/dist/browser/react/use-action.js.map +0 -1
  295. package/dist/browser/react/use-client-cache.d.ts +0 -41
  296. package/dist/browser/react/use-client-cache.d.ts.map +0 -1
  297. package/dist/browser/react/use-client-cache.js +0 -39
  298. package/dist/browser/react/use-client-cache.js.map +0 -1
  299. package/dist/browser/react/use-handle.d.ts +0 -31
  300. package/dist/browser/react/use-handle.d.ts.map +0 -1
  301. package/dist/browser/react/use-handle.js +0 -144
  302. package/dist/browser/react/use-handle.js.map +0 -1
  303. package/dist/browser/react/use-href.d.ts +0 -33
  304. package/dist/browser/react/use-href.d.ts.map +0 -1
  305. package/dist/browser/react/use-href.js +0 -39
  306. package/dist/browser/react/use-href.js.map +0 -1
  307. package/dist/browser/react/use-link-status.d.ts +0 -37
  308. package/dist/browser/react/use-link-status.d.ts.map +0 -1
  309. package/dist/browser/react/use-link-status.js +0 -99
  310. package/dist/browser/react/use-link-status.js.map +0 -1
  311. package/dist/browser/react/use-mount.d.ts +0 -25
  312. package/dist/browser/react/use-mount.d.ts.map +0 -1
  313. package/dist/browser/react/use-mount.js +0 -30
  314. package/dist/browser/react/use-mount.js.map +0 -1
  315. package/dist/browser/react/use-navigation.d.ts +0 -27
  316. package/dist/browser/react/use-navigation.d.ts.map +0 -1
  317. package/dist/browser/react/use-navigation.js +0 -87
  318. package/dist/browser/react/use-navigation.js.map +0 -1
  319. package/dist/browser/react/use-segments.d.ts +0 -38
  320. package/dist/browser/react/use-segments.d.ts.map +0 -1
  321. package/dist/browser/react/use-segments.js +0 -130
  322. package/dist/browser/react/use-segments.js.map +0 -1
  323. package/dist/browser/request-controller.d.ts +0 -26
  324. package/dist/browser/request-controller.d.ts.map +0 -1
  325. package/dist/browser/request-controller.js +0 -147
  326. package/dist/browser/request-controller.js.map +0 -1
  327. package/dist/browser/rsc-router.d.ts +0 -129
  328. package/dist/browser/rsc-router.d.ts.map +0 -1
  329. package/dist/browser/rsc-router.js +0 -195
  330. package/dist/browser/rsc-router.js.map +0 -1
  331. package/dist/browser/scroll-restoration.d.ts +0 -93
  332. package/dist/browser/scroll-restoration.d.ts.map +0 -1
  333. package/dist/browser/scroll-restoration.js +0 -321
  334. package/dist/browser/scroll-restoration.js.map +0 -1
  335. package/dist/browser/segment-structure-assert.d.ts +0 -17
  336. package/dist/browser/segment-structure-assert.d.ts.map +0 -1
  337. package/dist/browser/segment-structure-assert.js +0 -59
  338. package/dist/browser/segment-structure-assert.js.map +0 -1
  339. package/dist/browser/server-action-bridge.d.ts +0 -26
  340. package/dist/browser/server-action-bridge.d.ts.map +0 -1
  341. package/dist/browser/server-action-bridge.js +0 -668
  342. package/dist/browser/server-action-bridge.js.map +0 -1
  343. package/dist/browser/shallow.d.ts +0 -12
  344. package/dist/browser/shallow.d.ts.map +0 -1
  345. package/dist/browser/shallow.js +0 -34
  346. package/dist/browser/shallow.js.map +0 -1
  347. package/dist/browser/types.d.ts +0 -369
  348. package/dist/browser/types.d.ts.map +0 -1
  349. package/dist/browser/types.js +0 -2
  350. package/dist/browser/types.js.map +0 -1
  351. package/dist/build/__tests__/generate-cli.test.d.ts +0 -2
  352. package/dist/build/__tests__/generate-cli.test.d.ts.map +0 -1
  353. package/dist/build/__tests__/generate-cli.test.js +0 -237
  354. package/dist/build/__tests__/generate-cli.test.js.map +0 -1
  355. package/dist/build/__tests__/generate-manifest.test.d.ts +0 -2
  356. package/dist/build/__tests__/generate-manifest.test.d.ts.map +0 -1
  357. package/dist/build/__tests__/generate-manifest.test.js +0 -119
  358. package/dist/build/__tests__/generate-manifest.test.js.map +0 -1
  359. package/dist/build/__tests__/generate-route-types.test.d.ts +0 -2
  360. package/dist/build/__tests__/generate-route-types.test.d.ts.map +0 -1
  361. package/dist/build/__tests__/generate-route-types.test.js +0 -620
  362. package/dist/build/__tests__/generate-route-types.test.js.map +0 -1
  363. package/dist/build/__tests__/per-router-manifest.test.d.ts +0 -2
  364. package/dist/build/__tests__/per-router-manifest.test.d.ts.map +0 -1
  365. package/dist/build/__tests__/per-router-manifest.test.js +0 -308
  366. package/dist/build/__tests__/per-router-manifest.test.js.map +0 -1
  367. package/dist/build/generate-manifest.d.ts +0 -81
  368. package/dist/build/generate-manifest.d.ts.map +0 -1
  369. package/dist/build/generate-manifest.js +0 -276
  370. package/dist/build/generate-manifest.js.map +0 -1
  371. package/dist/build/generate-route-types.d.ts +0 -115
  372. package/dist/build/generate-route-types.d.ts.map +0 -1
  373. package/dist/build/generate-route-types.js +0 -740
  374. package/dist/build/generate-route-types.js.map +0 -1
  375. package/dist/build/index.d.ts +0 -21
  376. package/dist/build/index.d.ts.map +0 -1
  377. package/dist/build/index.js +0 -21
  378. package/dist/build/index.js.map +0 -1
  379. package/dist/build/route-trie.d.ts +0 -71
  380. package/dist/build/route-trie.d.ts.map +0 -1
  381. package/dist/build/route-trie.js +0 -175
  382. package/dist/build/route-trie.js.map +0 -1
  383. package/dist/cache/__tests__/cache-scope.test.d.ts +0 -2
  384. package/dist/cache/__tests__/cache-scope.test.d.ts.map +0 -1
  385. package/dist/cache/__tests__/cache-scope.test.js +0 -208
  386. package/dist/cache/__tests__/cache-scope.test.js.map +0 -1
  387. package/dist/cache/__tests__/document-cache.test.d.ts +0 -2
  388. package/dist/cache/__tests__/document-cache.test.d.ts.map +0 -1
  389. package/dist/cache/__tests__/document-cache.test.js +0 -345
  390. package/dist/cache/__tests__/document-cache.test.js.map +0 -1
  391. package/dist/cache/__tests__/memory-segment-store.test.d.ts +0 -2
  392. package/dist/cache/__tests__/memory-segment-store.test.d.ts.map +0 -1
  393. package/dist/cache/__tests__/memory-segment-store.test.js +0 -425
  394. package/dist/cache/__tests__/memory-segment-store.test.js.map +0 -1
  395. package/dist/cache/__tests__/memory-store.test.d.ts +0 -2
  396. package/dist/cache/__tests__/memory-store.test.d.ts.map +0 -1
  397. package/dist/cache/__tests__/memory-store.test.js +0 -367
  398. package/dist/cache/__tests__/memory-store.test.js.map +0 -1
  399. package/dist/cache/cache-scope.d.ts +0 -102
  400. package/dist/cache/cache-scope.d.ts.map +0 -1
  401. package/dist/cache/cache-scope.js +0 -440
  402. package/dist/cache/cache-scope.js.map +0 -1
  403. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts +0 -2
  404. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts.map +0 -1
  405. package/dist/cache/cf/__tests__/cf-cache-store.test.js +0 -330
  406. package/dist/cache/cf/__tests__/cf-cache-store.test.js.map +0 -1
  407. package/dist/cache/cf/cf-cache-store.d.ts +0 -165
  408. package/dist/cache/cf/cf-cache-store.d.ts.map +0 -1
  409. package/dist/cache/cf/cf-cache-store.js +0 -242
  410. package/dist/cache/cf/cf-cache-store.js.map +0 -1
  411. package/dist/cache/cf/index.d.ts +0 -14
  412. package/dist/cache/cf/index.d.ts.map +0 -1
  413. package/dist/cache/cf/index.js +0 -17
  414. package/dist/cache/cf/index.js.map +0 -1
  415. package/dist/cache/document-cache.d.ts +0 -64
  416. package/dist/cache/document-cache.d.ts.map +0 -1
  417. package/dist/cache/document-cache.js +0 -228
  418. package/dist/cache/document-cache.js.map +0 -1
  419. package/dist/cache/index.d.ts +0 -19
  420. package/dist/cache/index.d.ts.map +0 -1
  421. package/dist/cache/index.js +0 -21
  422. package/dist/cache/index.js.map +0 -1
  423. package/dist/cache/memory-segment-store.d.ts +0 -110
  424. package/dist/cache/memory-segment-store.d.ts.map +0 -1
  425. package/dist/cache/memory-segment-store.js +0 -117
  426. package/dist/cache/memory-segment-store.js.map +0 -1
  427. package/dist/cache/memory-store.d.ts +0 -41
  428. package/dist/cache/memory-store.d.ts.map +0 -1
  429. package/dist/cache/memory-store.js +0 -191
  430. package/dist/cache/memory-store.js.map +0 -1
  431. package/dist/cache/types.d.ts +0 -317
  432. package/dist/cache/types.d.ts.map +0 -1
  433. package/dist/cache/types.js +0 -12
  434. package/dist/cache/types.js.map +0 -1
  435. package/dist/client.d.ts +0 -248
  436. package/dist/client.d.ts.map +0 -1
  437. package/dist/client.js +0 -367
  438. package/dist/client.js.map +0 -1
  439. package/dist/client.rsc.d.ts +0 -26
  440. package/dist/client.rsc.d.ts.map +0 -1
  441. package/dist/client.rsc.js +0 -46
  442. package/dist/client.rsc.js.map +0 -1
  443. package/dist/component-utils.d.ts +0 -36
  444. package/dist/component-utils.d.ts.map +0 -1
  445. package/dist/component-utils.js +0 -61
  446. package/dist/component-utils.js.map +0 -1
  447. package/dist/components/DefaultDocument.d.ts +0 -13
  448. package/dist/components/DefaultDocument.d.ts.map +0 -1
  449. package/dist/components/DefaultDocument.js +0 -15
  450. package/dist/components/DefaultDocument.js.map +0 -1
  451. package/dist/debug.d.ts +0 -58
  452. package/dist/debug.d.ts.map +0 -1
  453. package/dist/debug.js +0 -157
  454. package/dist/debug.js.map +0 -1
  455. package/dist/default-error-boundary.d.ts +0 -11
  456. package/dist/default-error-boundary.d.ts.map +0 -1
  457. package/dist/default-error-boundary.js +0 -45
  458. package/dist/default-error-boundary.js.map +0 -1
  459. package/dist/deps/browser.d.ts +0 -2
  460. package/dist/deps/browser.d.ts.map +0 -1
  461. package/dist/deps/browser.js +0 -3
  462. package/dist/deps/browser.js.map +0 -1
  463. package/dist/deps/html-stream-client.d.ts +0 -2
  464. package/dist/deps/html-stream-client.d.ts.map +0 -1
  465. package/dist/deps/html-stream-client.js +0 -3
  466. package/dist/deps/html-stream-client.js.map +0 -1
  467. package/dist/deps/html-stream-server.d.ts +0 -2
  468. package/dist/deps/html-stream-server.d.ts.map +0 -1
  469. package/dist/deps/html-stream-server.js +0 -3
  470. package/dist/deps/html-stream-server.js.map +0 -1
  471. package/dist/deps/rsc.d.ts +0 -2
  472. package/dist/deps/rsc.d.ts.map +0 -1
  473. package/dist/deps/rsc.js +0 -4
  474. package/dist/deps/rsc.js.map +0 -1
  475. package/dist/deps/ssr.d.ts +0 -2
  476. package/dist/deps/ssr.d.ts.map +0 -1
  477. package/dist/deps/ssr.js +0 -3
  478. package/dist/deps/ssr.js.map +0 -1
  479. package/dist/errors.d.ts +0 -174
  480. package/dist/errors.d.ts.map +0 -1
  481. package/dist/errors.js +0 -241
  482. package/dist/errors.js.map +0 -1
  483. package/dist/handle.d.ts +0 -78
  484. package/dist/handle.d.ts.map +0 -1
  485. package/dist/handle.js +0 -82
  486. package/dist/handle.js.map +0 -1
  487. package/dist/handles/MetaTags.d.ts +0 -14
  488. package/dist/handles/MetaTags.d.ts.map +0 -1
  489. package/dist/handles/MetaTags.js +0 -136
  490. package/dist/handles/MetaTags.js.map +0 -1
  491. package/dist/handles/index.d.ts +0 -6
  492. package/dist/handles/index.d.ts.map +0 -1
  493. package/dist/handles/index.js +0 -6
  494. package/dist/handles/index.js.map +0 -1
  495. package/dist/handles/meta.d.ts +0 -39
  496. package/dist/handles/meta.d.ts.map +0 -1
  497. package/dist/handles/meta.js +0 -202
  498. package/dist/handles/meta.js.map +0 -1
  499. package/dist/host/__tests__/errors.test.d.ts +0 -2
  500. package/dist/host/__tests__/errors.test.d.ts.map +0 -1
  501. package/dist/host/__tests__/errors.test.js +0 -76
  502. package/dist/host/__tests__/errors.test.js.map +0 -1
  503. package/dist/host/__tests__/pattern-comprehensive.test.d.ts +0 -2
  504. package/dist/host/__tests__/pattern-comprehensive.test.d.ts.map +0 -1
  505. package/dist/host/__tests__/pattern-comprehensive.test.js +0 -732
  506. package/dist/host/__tests__/pattern-comprehensive.test.js.map +0 -1
  507. package/dist/host/__tests__/pattern-matcher.test.d.ts +0 -2
  508. package/dist/host/__tests__/pattern-matcher.test.d.ts.map +0 -1
  509. package/dist/host/__tests__/pattern-matcher.test.js +0 -251
  510. package/dist/host/__tests__/pattern-matcher.test.js.map +0 -1
  511. package/dist/host/__tests__/router.test.d.ts +0 -2
  512. package/dist/host/__tests__/router.test.d.ts.map +0 -1
  513. package/dist/host/__tests__/router.test.js +0 -241
  514. package/dist/host/__tests__/router.test.js.map +0 -1
  515. package/dist/host/__tests__/testing.test.d.ts +0 -2
  516. package/dist/host/__tests__/testing.test.d.ts.map +0 -1
  517. package/dist/host/__tests__/testing.test.js +0 -64
  518. package/dist/host/__tests__/testing.test.js.map +0 -1
  519. package/dist/host/__tests__/utils.test.d.ts +0 -2
  520. package/dist/host/__tests__/utils.test.d.ts.map +0 -1
  521. package/dist/host/__tests__/utils.test.js +0 -29
  522. package/dist/host/__tests__/utils.test.js.map +0 -1
  523. package/dist/host/cookie-handler.d.ts +0 -34
  524. package/dist/host/cookie-handler.d.ts.map +0 -1
  525. package/dist/host/cookie-handler.js +0 -124
  526. package/dist/host/cookie-handler.js.map +0 -1
  527. package/dist/host/errors.d.ts +0 -56
  528. package/dist/host/errors.d.ts.map +0 -1
  529. package/dist/host/errors.js +0 -79
  530. package/dist/host/errors.js.map +0 -1
  531. package/dist/host/index.d.ts +0 -29
  532. package/dist/host/index.d.ts.map +0 -1
  533. package/dist/host/index.js +0 -32
  534. package/dist/host/index.js.map +0 -1
  535. package/dist/host/pattern-matcher.d.ts +0 -36
  536. package/dist/host/pattern-matcher.d.ts.map +0 -1
  537. package/dist/host/pattern-matcher.js +0 -172
  538. package/dist/host/pattern-matcher.js.map +0 -1
  539. package/dist/host/router.d.ts +0 -26
  540. package/dist/host/router.d.ts.map +0 -1
  541. package/dist/host/router.js +0 -218
  542. package/dist/host/router.js.map +0 -1
  543. package/dist/host/testing.d.ts +0 -36
  544. package/dist/host/testing.d.ts.map +0 -1
  545. package/dist/host/testing.js +0 -55
  546. package/dist/host/testing.js.map +0 -1
  547. package/dist/host/types.d.ts +0 -115
  548. package/dist/host/types.d.ts.map +0 -1
  549. package/dist/host/types.js +0 -7
  550. package/dist/host/types.js.map +0 -1
  551. package/dist/host/utils.d.ts +0 -21
  552. package/dist/host/utils.d.ts.map +0 -1
  553. package/dist/host/utils.js +0 -23
  554. package/dist/host/utils.js.map +0 -1
  555. package/dist/href-client.d.ts +0 -131
  556. package/dist/href-client.d.ts.map +0 -1
  557. package/dist/href-client.js +0 -64
  558. package/dist/href-client.js.map +0 -1
  559. package/dist/href-context.d.ts +0 -29
  560. package/dist/href-context.d.ts.map +0 -1
  561. package/dist/href-context.js +0 -21
  562. package/dist/href-context.js.map +0 -1
  563. package/dist/index.d.ts +0 -73
  564. package/dist/index.d.ts.map +0 -1
  565. package/dist/index.js +0 -91
  566. package/dist/index.js.map +0 -1
  567. package/dist/index.rsc.d.ts +0 -32
  568. package/dist/index.rsc.d.ts.map +0 -1
  569. package/dist/index.rsc.js +0 -40
  570. package/dist/index.rsc.js.map +0 -1
  571. package/dist/internal-debug.d.ts +0 -2
  572. package/dist/internal-debug.d.ts.map +0 -1
  573. package/dist/internal-debug.js +0 -5
  574. package/dist/internal-debug.js.map +0 -1
  575. package/dist/loader.d.ts +0 -14
  576. package/dist/loader.d.ts.map +0 -1
  577. package/dist/loader.js +0 -20
  578. package/dist/loader.js.map +0 -1
  579. package/dist/loader.rsc.d.ts +0 -19
  580. package/dist/loader.rsc.d.ts.map +0 -1
  581. package/dist/loader.rsc.js +0 -99
  582. package/dist/loader.rsc.js.map +0 -1
  583. package/dist/network-error-thrower.d.ts +0 -17
  584. package/dist/network-error-thrower.d.ts.map +0 -1
  585. package/dist/network-error-thrower.js +0 -14
  586. package/dist/network-error-thrower.js.map +0 -1
  587. package/dist/outlet-context.d.ts +0 -13
  588. package/dist/outlet-context.d.ts.map +0 -1
  589. package/dist/outlet-context.js +0 -3
  590. package/dist/outlet-context.js.map +0 -1
  591. package/dist/prerender/__tests__/param-hash.test.d.ts +0 -2
  592. package/dist/prerender/__tests__/param-hash.test.d.ts.map +0 -1
  593. package/dist/prerender/__tests__/param-hash.test.js +0 -148
  594. package/dist/prerender/__tests__/param-hash.test.js.map +0 -1
  595. package/dist/prerender/param-hash.d.ts +0 -16
  596. package/dist/prerender/param-hash.d.ts.map +0 -1
  597. package/dist/prerender/param-hash.js +0 -36
  598. package/dist/prerender/param-hash.js.map +0 -1
  599. package/dist/prerender/store.d.ts +0 -38
  600. package/dist/prerender/store.d.ts.map +0 -1
  601. package/dist/prerender/store.js +0 -61
  602. package/dist/prerender/store.js.map +0 -1
  603. package/dist/prerender.d.ts +0 -66
  604. package/dist/prerender.d.ts.map +0 -1
  605. package/dist/prerender.js +0 -57
  606. package/dist/prerender.js.map +0 -1
  607. package/dist/reverse.d.ts +0 -196
  608. package/dist/reverse.d.ts.map +0 -1
  609. package/dist/reverse.js +0 -78
  610. package/dist/reverse.js.map +0 -1
  611. package/dist/root-error-boundary.d.ts +0 -33
  612. package/dist/root-error-boundary.d.ts.map +0 -1
  613. package/dist/root-error-boundary.js +0 -165
  614. package/dist/root-error-boundary.js.map +0 -1
  615. package/dist/route-content-wrapper.d.ts +0 -46
  616. package/dist/route-content-wrapper.d.ts.map +0 -1
  617. package/dist/route-content-wrapper.js +0 -77
  618. package/dist/route-content-wrapper.js.map +0 -1
  619. package/dist/route-definition.d.ts +0 -421
  620. package/dist/route-definition.d.ts.map +0 -1
  621. package/dist/route-definition.js +0 -868
  622. package/dist/route-definition.js.map +0 -1
  623. package/dist/route-map-builder.d.ts +0 -155
  624. package/dist/route-map-builder.d.ts.map +0 -1
  625. package/dist/route-map-builder.js +0 -237
  626. package/dist/route-map-builder.js.map +0 -1
  627. package/dist/route-types.d.ts +0 -165
  628. package/dist/route-types.d.ts.map +0 -1
  629. package/dist/route-types.js +0 -7
  630. package/dist/route-types.js.map +0 -1
  631. package/dist/router/__tests__/handler-context.test.d.ts +0 -2
  632. package/dist/router/__tests__/handler-context.test.d.ts.map +0 -1
  633. package/dist/router/__tests__/handler-context.test.js +0 -65
  634. package/dist/router/__tests__/handler-context.test.js.map +0 -1
  635. package/dist/router/__tests__/loader-cycle-detection.test.d.ts +0 -2
  636. package/dist/router/__tests__/loader-cycle-detection.test.d.ts.map +0 -1
  637. package/dist/router/__tests__/loader-cycle-detection.test.js +0 -221
  638. package/dist/router/__tests__/loader-cycle-detection.test.js.map +0 -1
  639. package/dist/router/__tests__/match-context.test.d.ts +0 -2
  640. package/dist/router/__tests__/match-context.test.d.ts.map +0 -1
  641. package/dist/router/__tests__/match-context.test.js +0 -92
  642. package/dist/router/__tests__/match-context.test.js.map +0 -1
  643. package/dist/router/__tests__/match-pipelines.test.d.ts +0 -2
  644. package/dist/router/__tests__/match-pipelines.test.d.ts.map +0 -1
  645. package/dist/router/__tests__/match-pipelines.test.js +0 -417
  646. package/dist/router/__tests__/match-pipelines.test.js.map +0 -1
  647. package/dist/router/__tests__/match-result.test.d.ts +0 -2
  648. package/dist/router/__tests__/match-result.test.d.ts.map +0 -1
  649. package/dist/router/__tests__/match-result.test.js +0 -457
  650. package/dist/router/__tests__/match-result.test.js.map +0 -1
  651. package/dist/router/__tests__/on-error.test.d.ts +0 -2
  652. package/dist/router/__tests__/on-error.test.d.ts.map +0 -1
  653. package/dist/router/__tests__/on-error.test.js +0 -678
  654. package/dist/router/__tests__/on-error.test.js.map +0 -1
  655. package/dist/router/__tests__/pattern-matching.test.d.ts +0 -2
  656. package/dist/router/__tests__/pattern-matching.test.d.ts.map +0 -1
  657. package/dist/router/__tests__/pattern-matching.test.js +0 -629
  658. package/dist/router/__tests__/pattern-matching.test.js.map +0 -1
  659. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts +0 -2
  660. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts.map +0 -1
  661. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js +0 -155
  662. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js.map +0 -1
  663. package/dist/router/error-handling.d.ts +0 -77
  664. package/dist/router/error-handling.d.ts.map +0 -1
  665. package/dist/router/error-handling.js +0 -202
  666. package/dist/router/error-handling.js.map +0 -1
  667. package/dist/router/handler-context.d.ts +0 -20
  668. package/dist/router/handler-context.d.ts.map +0 -1
  669. package/dist/router/handler-context.js +0 -198
  670. package/dist/router/handler-context.js.map +0 -1
  671. package/dist/router/intercept-resolution.d.ts +0 -66
  672. package/dist/router/intercept-resolution.d.ts.map +0 -1
  673. package/dist/router/intercept-resolution.js +0 -246
  674. package/dist/router/intercept-resolution.js.map +0 -1
  675. package/dist/router/loader-resolution.d.ts +0 -64
  676. package/dist/router/loader-resolution.d.ts.map +0 -1
  677. package/dist/router/loader-resolution.js +0 -284
  678. package/dist/router/loader-resolution.js.map +0 -1
  679. package/dist/router/logging.d.ts +0 -15
  680. package/dist/router/logging.d.ts.map +0 -1
  681. package/dist/router/logging.js +0 -99
  682. package/dist/router/logging.js.map +0 -1
  683. package/dist/router/manifest.d.ts +0 -22
  684. package/dist/router/manifest.d.ts.map +0 -1
  685. package/dist/router/manifest.js +0 -181
  686. package/dist/router/manifest.js.map +0 -1
  687. package/dist/router/match-api.d.ts +0 -35
  688. package/dist/router/match-api.d.ts.map +0 -1
  689. package/dist/router/match-api.js +0 -406
  690. package/dist/router/match-api.js.map +0 -1
  691. package/dist/router/match-context.d.ts +0 -206
  692. package/dist/router/match-context.d.ts.map +0 -1
  693. package/dist/router/match-context.js +0 -17
  694. package/dist/router/match-context.js.map +0 -1
  695. package/dist/router/match-middleware/background-revalidation.d.ts +0 -127
  696. package/dist/router/match-middleware/background-revalidation.d.ts.map +0 -1
  697. package/dist/router/match-middleware/background-revalidation.js +0 -75
  698. package/dist/router/match-middleware/background-revalidation.js.map +0 -1
  699. package/dist/router/match-middleware/cache-lookup.d.ts +0 -112
  700. package/dist/router/match-middleware/cache-lookup.d.ts.map +0 -1
  701. package/dist/router/match-middleware/cache-lookup.js +0 -257
  702. package/dist/router/match-middleware/cache-lookup.js.map +0 -1
  703. package/dist/router/match-middleware/cache-store.d.ts +0 -113
  704. package/dist/router/match-middleware/cache-store.d.ts.map +0 -1
  705. package/dist/router/match-middleware/cache-store.js +0 -108
  706. package/dist/router/match-middleware/cache-store.js.map +0 -1
  707. package/dist/router/match-middleware/index.d.ts +0 -81
  708. package/dist/router/match-middleware/index.d.ts.map +0 -1
  709. package/dist/router/match-middleware/index.js +0 -80
  710. package/dist/router/match-middleware/index.js.map +0 -1
  711. package/dist/router/match-middleware/intercept-resolution.d.ts +0 -117
  712. package/dist/router/match-middleware/intercept-resolution.d.ts.map +0 -1
  713. package/dist/router/match-middleware/intercept-resolution.js +0 -134
  714. package/dist/router/match-middleware/intercept-resolution.js.map +0 -1
  715. package/dist/router/match-middleware/segment-resolution.d.ts +0 -99
  716. package/dist/router/match-middleware/segment-resolution.d.ts.map +0 -1
  717. package/dist/router/match-middleware/segment-resolution.js +0 -53
  718. package/dist/router/match-middleware/segment-resolution.js.map +0 -1
  719. package/dist/router/match-pipelines.d.ts +0 -147
  720. package/dist/router/match-pipelines.d.ts.map +0 -1
  721. package/dist/router/match-pipelines.js +0 -82
  722. package/dist/router/match-pipelines.js.map +0 -1
  723. package/dist/router/match-result.d.ts +0 -126
  724. package/dist/router/match-result.d.ts.map +0 -1
  725. package/dist/router/match-result.js +0 -93
  726. package/dist/router/match-result.js.map +0 -1
  727. package/dist/router/metrics.d.ts +0 -20
  728. package/dist/router/metrics.d.ts.map +0 -1
  729. package/dist/router/metrics.js +0 -47
  730. package/dist/router/metrics.js.map +0 -1
  731. package/dist/router/middleware.d.ts +0 -249
  732. package/dist/router/middleware.d.ts.map +0 -1
  733. package/dist/router/middleware.js +0 -434
  734. package/dist/router/middleware.js.map +0 -1
  735. package/dist/router/middleware.test.d.ts +0 -2
  736. package/dist/router/middleware.test.d.ts.map +0 -1
  737. package/dist/router/middleware.test.js +0 -816
  738. package/dist/router/middleware.test.js.map +0 -1
  739. package/dist/router/pattern-matching.d.ts +0 -149
  740. package/dist/router/pattern-matching.d.ts.map +0 -1
  741. package/dist/router/pattern-matching.js +0 -349
  742. package/dist/router/pattern-matching.js.map +0 -1
  743. package/dist/router/revalidation.d.ts +0 -44
  744. package/dist/router/revalidation.d.ts.map +0 -1
  745. package/dist/router/revalidation.js +0 -147
  746. package/dist/router/revalidation.js.map +0 -1
  747. package/dist/router/router-context.d.ts +0 -135
  748. package/dist/router/router-context.d.ts.map +0 -1
  749. package/dist/router/router-context.js +0 -36
  750. package/dist/router/router-context.js.map +0 -1
  751. package/dist/router/segment-resolution.d.ts +0 -127
  752. package/dist/router/segment-resolution.d.ts.map +0 -1
  753. package/dist/router/segment-resolution.js +0 -919
  754. package/dist/router/segment-resolution.js.map +0 -1
  755. package/dist/router/trie-matching.d.ts +0 -40
  756. package/dist/router/trie-matching.d.ts.map +0 -1
  757. package/dist/router/trie-matching.js +0 -127
  758. package/dist/router/trie-matching.js.map +0 -1
  759. package/dist/router/types.d.ts +0 -136
  760. package/dist/router/types.d.ts.map +0 -1
  761. package/dist/router/types.js +0 -7
  762. package/dist/router/types.js.map +0 -1
  763. package/dist/router.d.ts +0 -753
  764. package/dist/router.d.ts.map +0 -1
  765. package/dist/router.gen.d.ts +0 -6
  766. package/dist/router.gen.d.ts.map +0 -1
  767. package/dist/router.gen.js +0 -6
  768. package/dist/router.gen.js.map +0 -1
  769. package/dist/router.js +0 -1304
  770. package/dist/router.js.map +0 -1
  771. package/dist/rsc/__tests__/helpers.test.d.ts +0 -2
  772. package/dist/rsc/__tests__/helpers.test.d.ts.map +0 -1
  773. package/dist/rsc/__tests__/helpers.test.js +0 -140
  774. package/dist/rsc/__tests__/helpers.test.js.map +0 -1
  775. package/dist/rsc/handler.d.ts +0 -45
  776. package/dist/rsc/handler.d.ts.map +0 -1
  777. package/dist/rsc/handler.js +0 -1172
  778. package/dist/rsc/handler.js.map +0 -1
  779. package/dist/rsc/helpers.d.ts +0 -16
  780. package/dist/rsc/helpers.d.ts.map +0 -1
  781. package/dist/rsc/helpers.js +0 -55
  782. package/dist/rsc/helpers.js.map +0 -1
  783. package/dist/rsc/index.d.ts +0 -22
  784. package/dist/rsc/index.d.ts.map +0 -1
  785. package/dist/rsc/index.js +0 -23
  786. package/dist/rsc/index.js.map +0 -1
  787. package/dist/rsc/nonce.d.ts +0 -9
  788. package/dist/rsc/nonce.d.ts.map +0 -1
  789. package/dist/rsc/nonce.js +0 -18
  790. package/dist/rsc/nonce.js.map +0 -1
  791. package/dist/rsc/types.d.ts +0 -206
  792. package/dist/rsc/types.d.ts.map +0 -1
  793. package/dist/rsc/types.js +0 -8
  794. package/dist/rsc/types.js.map +0 -1
  795. package/dist/search-params.d.ts +0 -103
  796. package/dist/search-params.d.ts.map +0 -1
  797. package/dist/search-params.js +0 -74
  798. package/dist/search-params.js.map +0 -1
  799. package/dist/segment-system.d.ts +0 -75
  800. package/dist/segment-system.d.ts.map +0 -1
  801. package/dist/segment-system.js +0 -336
  802. package/dist/segment-system.js.map +0 -1
  803. package/dist/server/context.d.ts +0 -245
  804. package/dist/server/context.d.ts.map +0 -1
  805. package/dist/server/context.js +0 -197
  806. package/dist/server/context.js.map +0 -1
  807. package/dist/server/fetchable-loader-store.d.ts +0 -18
  808. package/dist/server/fetchable-loader-store.d.ts.map +0 -1
  809. package/dist/server/fetchable-loader-store.js +0 -18
  810. package/dist/server/fetchable-loader-store.js.map +0 -1
  811. package/dist/server/handle-store.d.ts +0 -85
  812. package/dist/server/handle-store.d.ts.map +0 -1
  813. package/dist/server/handle-store.js +0 -142
  814. package/dist/server/handle-store.js.map +0 -1
  815. package/dist/server/loader-registry.d.ts +0 -55
  816. package/dist/server/loader-registry.d.ts.map +0 -1
  817. package/dist/server/loader-registry.js +0 -132
  818. package/dist/server/loader-registry.js.map +0 -1
  819. package/dist/server/request-context.d.ts +0 -226
  820. package/dist/server/request-context.d.ts.map +0 -1
  821. package/dist/server/request-context.js +0 -290
  822. package/dist/server/request-context.js.map +0 -1
  823. package/dist/server/root-layout.d.ts +0 -4
  824. package/dist/server/root-layout.d.ts.map +0 -1
  825. package/dist/server/root-layout.js +0 -5
  826. package/dist/server/root-layout.js.map +0 -1
  827. package/dist/server.d.ts +0 -15
  828. package/dist/server.d.ts.map +0 -1
  829. package/dist/server.js +0 -20
  830. package/dist/server.js.map +0 -1
  831. package/dist/ssr/__tests__/ssr-handler.test.d.ts +0 -2
  832. package/dist/ssr/__tests__/ssr-handler.test.d.ts.map +0 -1
  833. package/dist/ssr/__tests__/ssr-handler.test.js +0 -132
  834. package/dist/ssr/__tests__/ssr-handler.test.js.map +0 -1
  835. package/dist/ssr/index.d.ts +0 -98
  836. package/dist/ssr/index.d.ts.map +0 -1
  837. package/dist/ssr/index.js +0 -158
  838. package/dist/ssr/index.js.map +0 -1
  839. package/dist/static-handler.d.ts +0 -50
  840. package/dist/static-handler.d.ts.map +0 -1
  841. package/dist/static-handler.gen.d.ts +0 -5
  842. package/dist/static-handler.gen.d.ts.map +0 -1
  843. package/dist/static-handler.gen.js +0 -5
  844. package/dist/static-handler.gen.js.map +0 -1
  845. package/dist/static-handler.js +0 -29
  846. package/dist/static-handler.js.map +0 -1
  847. package/dist/theme/ThemeProvider.d.ts +0 -20
  848. package/dist/theme/ThemeProvider.d.ts.map +0 -1
  849. package/dist/theme/ThemeProvider.js +0 -240
  850. package/dist/theme/ThemeProvider.js.map +0 -1
  851. package/dist/theme/ThemeScript.d.ts +0 -48
  852. package/dist/theme/ThemeScript.d.ts.map +0 -1
  853. package/dist/theme/ThemeScript.js +0 -13
  854. package/dist/theme/ThemeScript.js.map +0 -1
  855. package/dist/theme/__tests__/theme.test.d.ts +0 -2
  856. package/dist/theme/__tests__/theme.test.d.ts.map +0 -1
  857. package/dist/theme/__tests__/theme.test.js +0 -103
  858. package/dist/theme/__tests__/theme.test.js.map +0 -1
  859. package/dist/theme/constants.d.ts +0 -29
  860. package/dist/theme/constants.d.ts.map +0 -1
  861. package/dist/theme/constants.js +0 -48
  862. package/dist/theme/constants.js.map +0 -1
  863. package/dist/theme/index.d.ts +0 -31
  864. package/dist/theme/index.d.ts.map +0 -1
  865. package/dist/theme/index.js +0 -36
  866. package/dist/theme/index.js.map +0 -1
  867. package/dist/theme/theme-context.d.ts +0 -40
  868. package/dist/theme/theme-context.d.ts.map +0 -1
  869. package/dist/theme/theme-context.js +0 -60
  870. package/dist/theme/theme-context.js.map +0 -1
  871. package/dist/theme/theme-script.d.ts +0 -27
  872. package/dist/theme/theme-script.d.ts.map +0 -1
  873. package/dist/theme/theme-script.js +0 -147
  874. package/dist/theme/theme-script.js.map +0 -1
  875. package/dist/theme/types.d.ts +0 -163
  876. package/dist/theme/types.d.ts.map +0 -1
  877. package/dist/theme/types.js +0 -11
  878. package/dist/theme/types.js.map +0 -1
  879. package/dist/theme/use-theme.d.ts +0 -12
  880. package/dist/theme/use-theme.d.ts.map +0 -1
  881. package/dist/theme/use-theme.js +0 -40
  882. package/dist/theme/use-theme.js.map +0 -1
  883. package/dist/types.d.ts +0 -1479
  884. package/dist/types.d.ts.map +0 -1
  885. package/dist/types.js +0 -10
  886. package/dist/types.js.map +0 -1
  887. package/dist/urls.d.ts +0 -441
  888. package/dist/urls.d.ts.map +0 -1
  889. package/dist/urls.gen.d.ts +0 -8
  890. package/dist/urls.gen.d.ts.map +0 -1
  891. package/dist/urls.gen.js +0 -8
  892. package/dist/urls.gen.js.map +0 -1
  893. package/dist/urls.js +0 -443
  894. package/dist/urls.js.map +0 -1
  895. package/dist/use-loader.d.ts +0 -127
  896. package/dist/use-loader.d.ts.map +0 -1
  897. package/dist/use-loader.js +0 -237
  898. package/dist/use-loader.js.map +0 -1
  899. package/dist/vite/__tests__/ast-handler-extract.test.d.ts +0 -2
  900. package/dist/vite/__tests__/ast-handler-extract.test.d.ts.map +0 -1
  901. package/dist/vite/__tests__/ast-handler-extract.test.js +0 -294
  902. package/dist/vite/__tests__/ast-handler-extract.test.js.map +0 -1
  903. package/dist/vite/__tests__/expose-id-utils.test.d.ts +0 -2
  904. package/dist/vite/__tests__/expose-id-utils.test.d.ts.map +0 -1
  905. package/dist/vite/__tests__/expose-id-utils.test.js +0 -224
  906. package/dist/vite/__tests__/expose-id-utils.test.js.map +0 -1
  907. package/dist/vite/__tests__/expose-internal-ids.test.d.ts +0 -2
  908. package/dist/vite/__tests__/expose-internal-ids.test.d.ts.map +0 -1
  909. package/dist/vite/__tests__/expose-internal-ids.test.js +0 -647
  910. package/dist/vite/__tests__/expose-internal-ids.test.js.map +0 -1
  911. package/dist/vite/__tests__/expose-router-id.test.d.ts +0 -2
  912. package/dist/vite/__tests__/expose-router-id.test.d.ts.map +0 -1
  913. package/dist/vite/__tests__/expose-router-id.test.js +0 -39
  914. package/dist/vite/__tests__/expose-router-id.test.js.map +0 -1
  915. package/dist/vite/ast-handler-extract.d.ts +0 -49
  916. package/dist/vite/ast-handler-extract.d.ts.map +0 -1
  917. package/dist/vite/ast-handler-extract.js +0 -249
  918. package/dist/vite/ast-handler-extract.js.map +0 -1
  919. package/dist/vite/expose-action-id.d.ts +0 -19
  920. package/dist/vite/expose-action-id.d.ts.map +0 -1
  921. package/dist/vite/expose-action-id.js +0 -250
  922. package/dist/vite/expose-action-id.js.map +0 -1
  923. package/dist/vite/expose-id-utils.d.ts +0 -69
  924. package/dist/vite/expose-id-utils.d.ts.map +0 -1
  925. package/dist/vite/expose-id-utils.js +0 -289
  926. package/dist/vite/expose-id-utils.js.map +0 -1
  927. package/dist/vite/expose-internal-ids.d.ts +0 -22
  928. package/dist/vite/expose-internal-ids.d.ts.map +0 -1
  929. package/dist/vite/expose-internal-ids.js +0 -886
  930. package/dist/vite/expose-internal-ids.js.map +0 -1
  931. package/dist/vite/index.d.ts +0 -149
  932. package/dist/vite/index.d.ts.map +0 -1
  933. package/dist/vite/index.js.map +0 -1
  934. package/dist/vite/index.named-routes.gen.ts +0 -103
  935. package/dist/vite/package-resolution.d.ts +0 -43
  936. package/dist/vite/package-resolution.d.ts.map +0 -1
  937. package/dist/vite/package-resolution.js +0 -112
  938. package/dist/vite/package-resolution.js.map +0 -1
  939. package/dist/vite/virtual-entries.d.ts +0 -25
  940. package/dist/vite/virtual-entries.d.ts.map +0 -1
  941. package/dist/vite/virtual-entries.js +0 -110
  942. package/dist/vite/virtual-entries.js.map +0 -1
@@ -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
@@ -94,6 +96,7 @@ import type { MatchContext, MatchPipelineState } from "../match-context.js";
94
96
  import { getRouterContext } from "../router-context.js";
95
97
  import { resolveSink, safeEmit } from "../telemetry.js";
96
98
  import { pushRevalidationTraceEntry, isTraceActive } from "../logging.js";
99
+ import { treeHasStreaming } from "./segment-resolution.js";
97
100
  import type { PrerenderStore, PrerenderEntry } from "../../prerender/store.js";
98
101
  import type { HandleStore } from "../../server/handle-store.js";
99
102
  import {
@@ -191,6 +194,16 @@ async function* yieldFromStore<TEnv>(
191
194
  state.cachedSegments = segments;
192
195
  state.cachedMatchedIds = segments.map((s) => s.id);
193
196
 
197
+ // Set streaming flag (once) and resolve render barrier.
198
+ const reqCtx = handleStoreRef ? undefined : _lazyGetRequestContext?.();
199
+ const barrierReqCtx = reqCtx ?? _getRequestContext();
200
+ if (barrierReqCtx) {
201
+ if (barrierReqCtx._treeHasStreaming === undefined) {
202
+ barrierReqCtx._treeHasStreaming = treeHasStreaming(ctx.entries);
203
+ }
204
+ barrierReqCtx._resolveRenderBarrier(segments);
205
+ }
206
+
194
207
  // For partial navigation, nullify components the client already has
195
208
  // so parent layouts stay live (client keeps its existing versions).
196
209
  // When params changed (e.g., different guide slug), the segments have
@@ -210,6 +223,9 @@ async function* yieldFromStore<TEnv>(
210
223
  }
211
224
 
212
225
  // Resolve loaders fresh (loaders are never pre-rendered/cached)
226
+ const ms = ctx.metricsStore;
227
+ const loaderStart = performance.now();
228
+
213
229
  if (ctx.isFullMatch) {
214
230
  if (resolveLoadersOnly) {
215
231
  const loaderSegments = await ctx.Store.run(() =>
@@ -249,11 +265,17 @@ async function* yieldFromStore<TEnv>(
249
265
  }
250
266
  }
251
267
 
252
- const ms = ctx.metricsStore;
253
268
  if (ms) {
269
+ const loaderEnd = performance.now();
270
+ ms.metrics.push({
271
+ label: "pipeline:loader-resolve",
272
+ duration: loaderEnd - loaderStart,
273
+ startTime: loaderStart - ms.requestStart,
274
+ depth: 1,
275
+ });
254
276
  ms.metrics.push({
255
- label: "pipeline:cache-lookup",
256
- duration: performance.now() - pipelineStart,
277
+ label: "pipeline:cache-hit",
278
+ duration: loaderEnd - pipelineStart,
257
279
  startTime: pipelineStart - ms.requestStart,
258
280
  });
259
281
  }
@@ -305,14 +327,15 @@ export function withCacheLookup<TEnv>(
305
327
 
306
328
  // Prerender lookup: check build-time cached data before runtime cache.
307
329
  // Prerender data is available regardless of runtime cache configuration.
308
- if (!ctx.isAction && ctx.matched.pr) {
330
+ // Skip for HMR requests — the dev prerender endpoint reads from a stale
331
+ // RouterRegistry snapshot; rendering fresh ensures edits are visible.
332
+ const isHmr = !!ctx.request.headers.get("X-RSC-HMR");
333
+ if (!ctx.isAction && !isHmr && ctx.matched.pr) {
309
334
  await ensurePrerenderDeps();
310
335
  if (prerenderStoreInstance) {
311
336
  const paramHash = _hashParams!(ctx.matched.params);
312
337
  const isPassthroughPrerenderRoute = ctx.entries.some(
313
- (entry) =>
314
- entry.type === "route" &&
315
- entry.prerenderDef?.options?.passthrough === true,
338
+ (entry) => entry.type === "route" && entry.isPassthrough === true,
316
339
  );
317
340
 
318
341
  if (ctx.isIntercept) {
@@ -382,9 +405,7 @@ export function withCacheLookup<TEnv>(
382
405
  if (prerenderStoreInstance) {
383
406
  const paramHash = _hashParams!(ctx.matched.params);
384
407
  const isPassthroughPrerenderRoute = ctx.entries.some(
385
- (entry) =>
386
- entry.type === "route" &&
387
- entry.prerenderDef?.options?.passthrough === true,
408
+ (entry) => entry.type === "route" && entry.isPassthrough === true,
388
409
  );
389
410
 
390
411
  if (ctx.isIntercept) {
@@ -437,7 +458,7 @@ export function withCacheLookup<TEnv>(
437
458
  yield* source;
438
459
  if (ms) {
439
460
  ms.metrics.push({
440
- label: "pipeline:cache-lookup",
461
+ label: "pipeline:cache-miss",
441
462
  duration: performance.now() - pipelineStart,
442
463
  startTime: pipelineStart - ms.requestStart,
443
464
  });
@@ -457,7 +478,7 @@ export function withCacheLookup<TEnv>(
457
478
  yield* source;
458
479
  if (ms) {
459
480
  ms.metrics.push({
460
- label: "pipeline:cache-lookup",
481
+ label: "pipeline:cache-miss",
461
482
  duration: performance.now() - pipelineStart,
462
483
  startTime: pipelineStart - ms.requestStart,
463
484
  });
@@ -509,7 +530,41 @@ export function withCacheLookup<TEnv>(
509
530
 
510
531
  // Look up revalidation rules for this segment
511
532
  const entryInfo = entryRevalidateMap?.get(segment.id);
533
+
534
+ // Even without explicit revalidation rules, route segments and their
535
+ // children must re-render when params or search params change — the
536
+ // handler reads ctx.params/ctx.searchParams so different values produce
537
+ // different content. Matches evaluateRevalidation's default logic.
538
+ const searchChanged = ctx.prevUrl.search !== ctx.url.search;
539
+ const routeParamsChanged = !paramsEqual(
540
+ ctx.matched.params,
541
+ ctx.prevParams,
542
+ );
543
+ const shouldDefaultRevalidate =
544
+ (searchChanged || routeParamsChanged) &&
545
+ (segment.type === "route" ||
546
+ (segment.belongsToRoute &&
547
+ (segment.type === "layout" || segment.type === "parallel")));
548
+
512
549
  if (!entryInfo || entryInfo.revalidate.length === 0) {
550
+ if (shouldDefaultRevalidate) {
551
+ // Params or search params changed — must re-render even without custom rules
552
+ if (isTraceActive()) {
553
+ pushRevalidationTraceEntry({
554
+ segmentId: segment.id,
555
+ segmentType: segment.type,
556
+ belongsToRoute: segment.belongsToRoute ?? false,
557
+ source: "cache-hit",
558
+ defaultShouldRevalidate: true,
559
+ finalShouldRevalidate: true,
560
+ reason: routeParamsChanged
561
+ ? "cached-params-changed"
562
+ : "cached-search-changed",
563
+ });
564
+ }
565
+ yield segment;
566
+ continue;
567
+ }
513
568
  // No revalidation rules, use default behavior (skip if client has)
514
569
  if (isTraceActive()) {
515
570
  pushRevalidationTraceEntry({
@@ -570,9 +625,19 @@ export function withCacheLookup<TEnv>(
570
625
  yield segment;
571
626
  }
572
627
 
628
+ // Set streaming flag (once) and resolve render barrier.
629
+ const barrierReqCtx = _getRequestContext();
630
+ if (barrierReqCtx) {
631
+ if (barrierReqCtx._treeHasStreaming === undefined) {
632
+ barrierReqCtx._treeHasStreaming = treeHasStreaming(ctx.entries);
633
+ }
634
+ barrierReqCtx._resolveRenderBarrier(cacheResult.segments);
635
+ }
636
+
573
637
  // Resolve loaders fresh (loaders are NOT cached by default)
574
638
  // This ensures fresh data even on cache hit
575
639
  const Store = ctx.Store;
640
+ const loaderStart = performance.now();
576
641
 
577
642
  if (ctx.isFullMatch) {
578
643
  // Full match (document request) - simple loader resolution without revalidation
@@ -605,7 +670,11 @@ export function withCacheLookup<TEnv>(
605
670
  ctx.url,
606
671
  ctx.routeKey,
607
672
  ctx.actionContext,
608
- cacheResult.shouldRevalidate || undefined,
673
+ // Loaders are never cached in the segment cache, so segment
674
+ // staleness (cacheResult.shouldRevalidate) must not propagate.
675
+ // But browser-sent staleness (ctx.stale) — indicating an action
676
+ // happened in this or another tab — must still reach loaders.
677
+ ctx.stale || undefined,
609
678
  ),
610
679
  );
611
680
 
@@ -624,9 +693,16 @@ export function withCacheLookup<TEnv>(
624
693
  }
625
694
  }
626
695
  if (ms) {
696
+ const loaderEnd = performance.now();
697
+ ms.metrics.push({
698
+ label: "pipeline:loader-resolve",
699
+ duration: loaderEnd - loaderStart,
700
+ startTime: loaderStart - ms.requestStart,
701
+ depth: 1,
702
+ });
627
703
  ms.metrics.push({
628
- label: "pipeline:cache-lookup",
629
- duration: performance.now() - pipelineStart,
704
+ label: "pipeline:cache-hit",
705
+ duration: loaderEnd - pipelineStart,
630
706
  startTime: pipelineStart - ms.requestStart,
631
707
  });
632
708
  }
@@ -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,53 @@ 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)
305
+ if (INTERNAL_RANGO_DEBUG) {
306
+ console.log(
307
+ `[RSC CacheStore][req:${reqId}] Direct cache path: scheduling cacheRoute for ${ctx.pathname} (${allSegmentsToCache.length} segments, hasNullComponents=${hasNullComponents})`,
308
+ );
309
+ }
274
310
  requestCtx.waitUntil(async () => {
311
+ const start = performance.now();
275
312
  await cacheScope.cacheRoute(
276
313
  ctx.pathname,
277
314
  ctx.matched.params,
278
315
  allSegmentsToCache,
279
316
  ctx.isIntercept,
280
317
  );
318
+ if (INTERNAL_RANGO_DEBUG) {
319
+ const dur = performance.now() - start;
320
+ console.log(
321
+ `[RSC Background][req:${reqId}] Cache store ${ctx.pathname} (${dur.toFixed(2)}ms) segments=${allSegmentsToCache.length}`,
322
+ );
323
+ }
281
324
  });
282
325
  }
283
326
 
@@ -287,8 +330,8 @@ export function withCacheStore<TEnv>(
287
330
  if (ms) {
288
331
  ms.metrics.push({
289
332
  label: "pipeline:cache-store",
290
- duration: performance.now() - pipelineStart,
291
- startTime: pipelineStart - ms.requestStart,
333
+ duration: performance.now() - ownStart,
334
+ startTime: ownStart - ms.requestStart,
292
335
  });
293
336
  }
294
337
  };
@@ -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
  };
@@ -87,10 +87,49 @@
87
87
  * if (state.cacheHit) return; // Now we can check
88
88
  */
89
89
  import type { ResolvedSegment } from "../../types.js";
90
+ import type { EntryData } from "../../server/context.js";
91
+ import { _getRequestContext } from "../../server/request-context.js";
90
92
  import type { MatchContext, MatchPipelineState } from "../match-context.js";
91
93
  import { getRouterContext } from "../router-context.js";
92
94
  import type { GeneratorMiddleware } from "./cache-lookup.js";
93
95
 
96
+ /**
97
+ * Check whether any entry in the tree uses loading() (streaming).
98
+ * Matches the router's streaming semantics in fresh.ts: streaming is
99
+ * enabled when `loading` is defined AND not `false`. `loading: false`
100
+ * explicitly disables streaming; `undefined` means no loading at all.
101
+ */
102
+ export function treeHasStreaming(entries: EntryData[]): boolean {
103
+ for (const entry of entries) {
104
+ if (
105
+ "loading" in entry &&
106
+ entry.loading !== undefined &&
107
+ entry.loading !== false
108
+ )
109
+ return true;
110
+ if (entry.layout) {
111
+ if (treeHasStreaming(entry.layout)) return true;
112
+ }
113
+ if (entry.parallel) {
114
+ for (const key in entry.parallel) {
115
+ const parallelEntry = entry.parallel[key as `@${string}`];
116
+ if (parallelEntry) {
117
+ if (
118
+ "loading" in parallelEntry &&
119
+ parallelEntry.loading !== undefined &&
120
+ parallelEntry.loading !== false
121
+ )
122
+ return true;
123
+ if (parallelEntry.layout) {
124
+ if (treeHasStreaming(parallelEntry.layout)) return true;
125
+ }
126
+ }
127
+ }
128
+ }
129
+ }
130
+ return false;
131
+ }
132
+
94
133
  /**
95
134
  * Creates segment resolution middleware
96
135
  *
@@ -104,7 +143,6 @@ export function withSegmentResolution<TEnv>(
104
143
  return async function* (
105
144
  source: AsyncGenerator<ResolvedSegment>,
106
145
  ): AsyncGenerator<ResolvedSegment> {
107
- const pipelineStart = performance.now();
108
146
  const ms = ctx.metricsStore;
109
147
 
110
148
  // IMPORTANT: Always iterate source first to give cache-lookup a chance
@@ -113,18 +151,27 @@ export function withSegmentResolution<TEnv>(
113
151
  yield segment;
114
152
  }
115
153
 
154
+ // Measure own work only (after source iteration completes)
155
+ const ownStart = performance.now();
156
+
116
157
  // If cache hit, segments were already yielded by cache lookup
158
+ // (render barrier is resolved on the cache-hit path)
117
159
  if (state.cacheHit) {
118
160
  if (ms) {
119
161
  ms.metrics.push({
120
162
  label: "pipeline:segment-resolve",
121
- duration: performance.now() - pipelineStart,
122
- startTime: pipelineStart - ms.requestStart,
163
+ duration: performance.now() - ownStart,
164
+ startTime: ownStart - ms.requestStart,
123
165
  });
124
166
  }
125
167
  return;
126
168
  }
127
169
 
170
+ const reqCtx = _getRequestContext();
171
+ if (reqCtx && reqCtx._treeHasStreaming === undefined) {
172
+ reqCtx._treeHasStreaming = treeHasStreaming(ctx.entries);
173
+ }
174
+
128
175
  const { resolveAllSegmentsWithRevalidation, resolveAllSegments } =
129
176
  getRouterContext<TEnv>();
130
177
 
@@ -146,6 +193,10 @@ export function withSegmentResolution<TEnv>(
146
193
  state.segments = segments;
147
194
  state.matchedIds = segments.map((s: { id: string }) => s.id);
148
195
 
196
+ if (reqCtx) {
197
+ reqCtx._resolveRenderBarrier(segments);
198
+ }
199
+
149
200
  // Yield all resolved segments
150
201
  for (const segment of segments) {
151
202
  yield segment;
@@ -176,6 +227,10 @@ export function withSegmentResolution<TEnv>(
176
227
  state.segments = result.segments;
177
228
  state.matchedIds = result.matchedIds;
178
229
 
230
+ if (reqCtx) {
231
+ reqCtx._resolveRenderBarrier(result.segments);
232
+ }
233
+
179
234
  // Yield all resolved segments
180
235
  for (const segment of result.segments) {
181
236
  yield segment;
@@ -185,8 +240,8 @@ export function withSegmentResolution<TEnv>(
185
240
  if (ms) {
186
241
  ms.metrics.push({
187
242
  label: "pipeline:segment-resolve",
188
- duration: performance.now() - pipelineStart,
189
- startTime: pipelineStart - ms.requestStart,
243
+ duration: performance.now() - ownStart,
244
+ startTime: ownStart - ms.requestStart,
190
245
  });
191
246
  }
192
247
  };
@@ -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 {
@@ -27,8 +27,12 @@ type GetVariableFn = {
27
27
  * Set variable function type
28
28
  */
29
29
  type SetVariableFn = {
30
- <T>(contextVar: ContextVar<T>, value: T): void;
31
- <K extends keyof DefaultVars>(key: K, value: DefaultVars[K]): void;
30
+ <T>(contextVar: ContextVar<T>, value: T, options?: { cache?: boolean }): void;
31
+ <K extends keyof DefaultVars>(
32
+ key: K,
33
+ value: DefaultVars[K],
34
+ options?: { cache?: boolean },
35
+ ): void;
32
36
  };
33
37
 
34
38
  /**
@@ -91,12 +95,6 @@ export interface MiddlewareContext<
91
95
  /** Set a context variable (shared with route handlers) */
92
96
  set: SetVariableFn;
93
97
 
94
- /**
95
- * Middleware-injected variables.
96
- * Same shared dictionary as `ctx.get()`/`ctx.set()`.
97
- */
98
- var: DefaultVars;
99
-
100
98
  /**
101
99
  * Set a response header - can be called before or after `next()`.
102
100
  *
@@ -21,6 +21,7 @@ import type {
21
21
  import { _getRequestContext } from "../server/request-context.js";
22
22
  import { isAutoGeneratedRouteName } from "../route-name.js";
23
23
  import { appendMetric, createMetricsStore } from "./metrics.js";
24
+ import { stripInternalParams } from "./handler-context.js";
24
25
 
25
26
  // Re-export types and cookie utilities for backward compatibility
26
27
  export type {
@@ -147,7 +148,7 @@ export function createMiddlewareContext<TEnv>(
147
148
  search?: Record<string, unknown>,
148
149
  ) => string,
149
150
  ): MiddlewareContext<TEnv> {
150
- const url = new URL(request.url);
151
+ const url = stripInternalParams(new URL(request.url));
151
152
 
152
153
  // Track the initial response to detect pre/post-next() phase.
153
154
  // Before next(): responseHolder.response === initialResponse (the stub).
@@ -203,12 +204,9 @@ export function createMiddlewareContext<TEnv>(
203
204
  get: ((keyOrVar: any) =>
204
205
  contextGet(variables, keyOrVar)) as MiddlewareContext<TEnv>["get"],
205
206
 
206
- set: ((keyOrVar: any, value: unknown) => {
207
- contextSet(variables, keyOrVar, value);
207
+ set: ((keyOrVar: any, value: unknown, options?: any) => {
208
+ contextSet(variables, keyOrVar, value, options);
208
209
  }) as MiddlewareContext<TEnv>["set"],
209
-
210
- var: variables as MiddlewareContext<TEnv>["var"],
211
-
212
210
  header(name: string, value: string): void {
213
211
  // Before next(): delegate to shared RequestContext stub
214
212
  if (isPreNext()) {