@rangojs/router 0.0.0-experimental.133 → 0.0.0-experimental.134

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 (859) hide show
  1. package/dist/vite/index.js +22 -9
  2. package/package.json +1 -1
  3. package/skills/composability/SKILL.md +0 -1
  4. package/skills/handler-use/SKILL.md +7 -7
  5. package/skills/intercept/SKILL.md +38 -13
  6. package/skills/migrate-nextjs/SKILL.md +3 -3
  7. package/skills/prerender/SKILL.md +20 -17
  8. package/skills/router-setup/SKILL.md +1 -2
  9. package/skills/testing/SKILL.md +1 -0
  10. package/skills/view-transitions/SKILL.md +43 -0
  11. package/src/browser/navigation-bridge.ts +65 -16
  12. package/src/browser/navigation-client.ts +15 -1
  13. package/src/browser/navigation-store.ts +82 -8
  14. package/src/browser/network-error-handler.ts +34 -7
  15. package/src/browser/partial-update.ts +27 -2
  16. package/src/browser/prefetch/cache.ts +8 -0
  17. package/src/browser/prefetch/fetch.ts +32 -4
  18. package/src/browser/react/NavigationProvider.tsx +195 -4
  19. package/src/browser/react/deferred-handle-resolution.ts +75 -0
  20. package/src/browser/response-adapter.ts +38 -9
  21. package/src/browser/types.ts +32 -1
  22. package/src/handles/MetaTags.tsx +6 -0
  23. package/src/index.rsc.ts +6 -1
  24. package/src/index.ts +6 -4
  25. package/src/internal-debug.ts +11 -8
  26. package/src/render-error-thrower.tsx +20 -0
  27. package/src/route-content-wrapper.tsx +12 -5
  28. package/src/route-definition/dsl-helpers.ts +21 -32
  29. package/src/route-definition/helper-factories.ts +0 -2
  30. package/src/route-definition/helpers-types.ts +38 -39
  31. package/src/route-definition/index.ts +1 -2
  32. package/src/route-definition/resolve-handler-use.ts +0 -1
  33. package/src/route-definition/use-item-types.ts +3 -6
  34. package/src/route-types.ts +0 -5
  35. package/src/router/match-api.ts +5 -1
  36. package/src/router/segment-resolution/fresh.ts +4 -0
  37. package/src/router/segment-resolution/revalidation.ts +3 -0
  38. package/src/router/segment-resolution/view-transition-default.ts +35 -15
  39. package/src/rsc/progressive-enhancement.ts +31 -2
  40. package/src/rsc/rsc-rendering.ts +7 -2
  41. package/src/rsc/server-action.ts +19 -2
  42. package/src/rsc/transition-gate.ts +89 -0
  43. package/src/segment-system.tsx +26 -8
  44. package/src/server/context.ts +13 -0
  45. package/src/server/request-context.ts +41 -3
  46. package/src/testing/index.ts +6 -0
  47. package/src/testing/run-transition-when.ts +164 -0
  48. package/src/types/handler-context.ts +1 -1
  49. package/src/types/index.ts +2 -0
  50. package/src/types/segments.ts +100 -0
  51. package/src/urls/path-helper-types.ts +10 -7
  52. package/src/urls/urls-function.ts +0 -1
  53. package/src/vite/inject-client-debug.ts +36 -0
  54. package/src/vite/router-discovery.ts +8 -13
  55. package/dist/__internal.d.ts +0 -83
  56. package/dist/__internal.d.ts.map +0 -1
  57. package/dist/__internal.js +0 -19
  58. package/dist/__internal.js.map +0 -1
  59. package/dist/__mocks__/version.d.ts +0 -7
  60. package/dist/__mocks__/version.d.ts.map +0 -1
  61. package/dist/__mocks__/version.js +0 -7
  62. package/dist/__mocks__/version.js.map +0 -1
  63. package/dist/__tests__/client-href.test.d.ts +0 -2
  64. package/dist/__tests__/client-href.test.d.ts.map +0 -1
  65. package/dist/__tests__/client-href.test.js +0 -74
  66. package/dist/__tests__/client-href.test.js.map +0 -1
  67. package/dist/__tests__/component-utils.test.d.ts +0 -2
  68. package/dist/__tests__/component-utils.test.d.ts.map +0 -1
  69. package/dist/__tests__/component-utils.test.js +0 -51
  70. package/dist/__tests__/component-utils.test.js.map +0 -1
  71. package/dist/__tests__/event-controller.test.d.ts +0 -2
  72. package/dist/__tests__/event-controller.test.d.ts.map +0 -1
  73. package/dist/__tests__/event-controller.test.js +0 -538
  74. package/dist/__tests__/event-controller.test.js.map +0 -1
  75. package/dist/__tests__/helpers/route-tree.d.ts +0 -118
  76. package/dist/__tests__/helpers/route-tree.d.ts.map +0 -1
  77. package/dist/__tests__/helpers/route-tree.js +0 -374
  78. package/dist/__tests__/helpers/route-tree.js.map +0 -1
  79. package/dist/__tests__/match-result.test.d.ts +0 -2
  80. package/dist/__tests__/match-result.test.d.ts.map +0 -1
  81. package/dist/__tests__/match-result.test.js +0 -154
  82. package/dist/__tests__/match-result.test.js.map +0 -1
  83. package/dist/__tests__/navigation-store.test.d.ts +0 -2
  84. package/dist/__tests__/navigation-store.test.d.ts.map +0 -1
  85. package/dist/__tests__/navigation-store.test.js +0 -440
  86. package/dist/__tests__/navigation-store.test.js.map +0 -1
  87. package/dist/__tests__/partial-update.test.d.ts +0 -2
  88. package/dist/__tests__/partial-update.test.d.ts.map +0 -1
  89. package/dist/__tests__/partial-update.test.js +0 -1009
  90. package/dist/__tests__/partial-update.test.js.map +0 -1
  91. package/dist/__tests__/reverse-types.test.d.ts +0 -8
  92. package/dist/__tests__/reverse-types.test.d.ts.map +0 -1
  93. package/dist/__tests__/reverse-types.test.js +0 -656
  94. package/dist/__tests__/reverse-types.test.js.map +0 -1
  95. package/dist/__tests__/route-definition.test.d.ts +0 -2
  96. package/dist/__tests__/route-definition.test.d.ts.map +0 -1
  97. package/dist/__tests__/route-definition.test.js +0 -55
  98. package/dist/__tests__/route-definition.test.js.map +0 -1
  99. package/dist/__tests__/router-helpers.test.d.ts +0 -2
  100. package/dist/__tests__/router-helpers.test.d.ts.map +0 -1
  101. package/dist/__tests__/router-helpers.test.js +0 -377
  102. package/dist/__tests__/router-helpers.test.js.map +0 -1
  103. package/dist/__tests__/router-integration-2.test.d.ts +0 -2
  104. package/dist/__tests__/router-integration-2.test.d.ts.map +0 -1
  105. package/dist/__tests__/router-integration-2.test.js +0 -426
  106. package/dist/__tests__/router-integration-2.test.js.map +0 -1
  107. package/dist/__tests__/router-integration.test.d.ts +0 -2
  108. package/dist/__tests__/router-integration.test.d.ts.map +0 -1
  109. package/dist/__tests__/router-integration.test.js +0 -1051
  110. package/dist/__tests__/router-integration.test.js.map +0 -1
  111. package/dist/__tests__/search-params.test.d.ts +0 -5
  112. package/dist/__tests__/search-params.test.d.ts.map +0 -1
  113. package/dist/__tests__/search-params.test.js +0 -306
  114. package/dist/__tests__/search-params.test.js.map +0 -1
  115. package/dist/__tests__/segment-system.test.d.ts +0 -2
  116. package/dist/__tests__/segment-system.test.d.ts.map +0 -1
  117. package/dist/__tests__/segment-system.test.js +0 -627
  118. package/dist/__tests__/segment-system.test.js.map +0 -1
  119. package/dist/__tests__/static-handler-types.test.d.ts +0 -8
  120. package/dist/__tests__/static-handler-types.test.d.ts.map +0 -1
  121. package/dist/__tests__/static-handler-types.test.js +0 -63
  122. package/dist/__tests__/static-handler-types.test.js.map +0 -1
  123. package/dist/__tests__/urls.test.d.ts +0 -2
  124. package/dist/__tests__/urls.test.d.ts.map +0 -1
  125. package/dist/__tests__/urls.test.js +0 -421
  126. package/dist/__tests__/urls.test.js.map +0 -1
  127. package/dist/__tests__/use-mount.test.d.ts +0 -2
  128. package/dist/__tests__/use-mount.test.d.ts.map +0 -1
  129. package/dist/__tests__/use-mount.test.js +0 -35
  130. package/dist/__tests__/use-mount.test.js.map +0 -1
  131. package/dist/bin/rango.d.ts +0 -2
  132. package/dist/bin/rango.d.ts.map +0 -1
  133. package/dist/bin/rango.js.map +0 -1
  134. package/dist/browser/event-controller.d.ts +0 -191
  135. package/dist/browser/event-controller.d.ts.map +0 -1
  136. package/dist/browser/event-controller.js +0 -559
  137. package/dist/browser/event-controller.js.map +0 -1
  138. package/dist/browser/index.d.ts +0 -2
  139. package/dist/browser/index.d.ts.map +0 -1
  140. package/dist/browser/index.js +0 -14
  141. package/dist/browser/index.js.map +0 -1
  142. package/dist/browser/link-interceptor.d.ts +0 -38
  143. package/dist/browser/link-interceptor.d.ts.map +0 -1
  144. package/dist/browser/link-interceptor.js +0 -99
  145. package/dist/browser/link-interceptor.js.map +0 -1
  146. package/dist/browser/logging.d.ts +0 -10
  147. package/dist/browser/logging.d.ts.map +0 -1
  148. package/dist/browser/logging.js +0 -29
  149. package/dist/browser/logging.js.map +0 -1
  150. package/dist/browser/lru-cache.d.ts +0 -17
  151. package/dist/browser/lru-cache.d.ts.map +0 -1
  152. package/dist/browser/lru-cache.js +0 -50
  153. package/dist/browser/lru-cache.js.map +0 -1
  154. package/dist/browser/merge-segment-loaders.d.ts +0 -39
  155. package/dist/browser/merge-segment-loaders.d.ts.map +0 -1
  156. package/dist/browser/merge-segment-loaders.js +0 -102
  157. package/dist/browser/merge-segment-loaders.js.map +0 -1
  158. package/dist/browser/navigation-bridge.d.ts +0 -102
  159. package/dist/browser/navigation-bridge.d.ts.map +0 -1
  160. package/dist/browser/navigation-bridge.js +0 -708
  161. package/dist/browser/navigation-bridge.js.map +0 -1
  162. package/dist/browser/navigation-client.d.ts +0 -25
  163. package/dist/browser/navigation-client.d.ts.map +0 -1
  164. package/dist/browser/navigation-client.js +0 -157
  165. package/dist/browser/navigation-client.js.map +0 -1
  166. package/dist/browser/navigation-store.d.ts +0 -101
  167. package/dist/browser/navigation-store.d.ts.map +0 -1
  168. package/dist/browser/navigation-store.js +0 -625
  169. package/dist/browser/navigation-store.js.map +0 -1
  170. package/dist/browser/partial-update.d.ts +0 -75
  171. package/dist/browser/partial-update.d.ts.map +0 -1
  172. package/dist/browser/partial-update.js +0 -426
  173. package/dist/browser/partial-update.js.map +0 -1
  174. package/dist/browser/react/Link.d.ts +0 -86
  175. package/dist/browser/react/Link.d.ts.map +0 -1
  176. package/dist/browser/react/Link.js +0 -128
  177. package/dist/browser/react/Link.js.map +0 -1
  178. package/dist/browser/react/NavigationProvider.d.ts +0 -63
  179. package/dist/browser/react/NavigationProvider.d.ts.map +0 -1
  180. package/dist/browser/react/NavigationProvider.js +0 -216
  181. package/dist/browser/react/NavigationProvider.js.map +0 -1
  182. package/dist/browser/react/ScrollRestoration.d.ts +0 -75
  183. package/dist/browser/react/ScrollRestoration.d.ts.map +0 -1
  184. package/dist/browser/react/ScrollRestoration.js +0 -57
  185. package/dist/browser/react/ScrollRestoration.js.map +0 -1
  186. package/dist/browser/react/context.d.ts +0 -46
  187. package/dist/browser/react/context.d.ts.map +0 -1
  188. package/dist/browser/react/context.js +0 -10
  189. package/dist/browser/react/context.js.map +0 -1
  190. package/dist/browser/react/index.d.ts +0 -11
  191. package/dist/browser/react/index.d.ts.map +0 -1
  192. package/dist/browser/react/index.js +0 -22
  193. package/dist/browser/react/index.js.map +0 -1
  194. package/dist/browser/react/location-state-shared.d.ts +0 -63
  195. package/dist/browser/react/location-state-shared.d.ts.map +0 -1
  196. package/dist/browser/react/location-state-shared.js +0 -81
  197. package/dist/browser/react/location-state-shared.js.map +0 -1
  198. package/dist/browser/react/location-state.d.ts +0 -23
  199. package/dist/browser/react/location-state.d.ts.map +0 -1
  200. package/dist/browser/react/location-state.js +0 -29
  201. package/dist/browser/react/location-state.js.map +0 -1
  202. package/dist/browser/react/mount-context.d.ts +0 -24
  203. package/dist/browser/react/mount-context.d.ts.map +0 -1
  204. package/dist/browser/react/mount-context.js +0 -24
  205. package/dist/browser/react/mount-context.js.map +0 -1
  206. package/dist/browser/react/use-action.d.ts +0 -64
  207. package/dist/browser/react/use-action.d.ts.map +0 -1
  208. package/dist/browser/react/use-action.js +0 -134
  209. package/dist/browser/react/use-action.js.map +0 -1
  210. package/dist/browser/react/use-client-cache.d.ts +0 -41
  211. package/dist/browser/react/use-client-cache.d.ts.map +0 -1
  212. package/dist/browser/react/use-client-cache.js +0 -39
  213. package/dist/browser/react/use-client-cache.js.map +0 -1
  214. package/dist/browser/react/use-handle.d.ts +0 -31
  215. package/dist/browser/react/use-handle.d.ts.map +0 -1
  216. package/dist/browser/react/use-handle.js +0 -144
  217. package/dist/browser/react/use-handle.js.map +0 -1
  218. package/dist/browser/react/use-href.d.ts +0 -33
  219. package/dist/browser/react/use-href.d.ts.map +0 -1
  220. package/dist/browser/react/use-href.js +0 -39
  221. package/dist/browser/react/use-href.js.map +0 -1
  222. package/dist/browser/react/use-link-status.d.ts +0 -37
  223. package/dist/browser/react/use-link-status.d.ts.map +0 -1
  224. package/dist/browser/react/use-link-status.js +0 -99
  225. package/dist/browser/react/use-link-status.js.map +0 -1
  226. package/dist/browser/react/use-mount.d.ts +0 -25
  227. package/dist/browser/react/use-mount.d.ts.map +0 -1
  228. package/dist/browser/react/use-mount.js +0 -30
  229. package/dist/browser/react/use-mount.js.map +0 -1
  230. package/dist/browser/react/use-navigation.d.ts +0 -27
  231. package/dist/browser/react/use-navigation.d.ts.map +0 -1
  232. package/dist/browser/react/use-navigation.js +0 -87
  233. package/dist/browser/react/use-navigation.js.map +0 -1
  234. package/dist/browser/react/use-segments.d.ts +0 -38
  235. package/dist/browser/react/use-segments.d.ts.map +0 -1
  236. package/dist/browser/react/use-segments.js +0 -130
  237. package/dist/browser/react/use-segments.js.map +0 -1
  238. package/dist/browser/request-controller.d.ts +0 -26
  239. package/dist/browser/request-controller.d.ts.map +0 -1
  240. package/dist/browser/request-controller.js +0 -147
  241. package/dist/browser/request-controller.js.map +0 -1
  242. package/dist/browser/rsc-router.d.ts +0 -129
  243. package/dist/browser/rsc-router.d.ts.map +0 -1
  244. package/dist/browser/rsc-router.js +0 -195
  245. package/dist/browser/rsc-router.js.map +0 -1
  246. package/dist/browser/scroll-restoration.d.ts +0 -93
  247. package/dist/browser/scroll-restoration.d.ts.map +0 -1
  248. package/dist/browser/scroll-restoration.js +0 -321
  249. package/dist/browser/scroll-restoration.js.map +0 -1
  250. package/dist/browser/segment-structure-assert.d.ts +0 -17
  251. package/dist/browser/segment-structure-assert.d.ts.map +0 -1
  252. package/dist/browser/segment-structure-assert.js +0 -59
  253. package/dist/browser/segment-structure-assert.js.map +0 -1
  254. package/dist/browser/server-action-bridge.d.ts +0 -26
  255. package/dist/browser/server-action-bridge.d.ts.map +0 -1
  256. package/dist/browser/server-action-bridge.js +0 -668
  257. package/dist/browser/server-action-bridge.js.map +0 -1
  258. package/dist/browser/shallow.d.ts +0 -12
  259. package/dist/browser/shallow.d.ts.map +0 -1
  260. package/dist/browser/shallow.js +0 -34
  261. package/dist/browser/shallow.js.map +0 -1
  262. package/dist/browser/types.d.ts +0 -369
  263. package/dist/browser/types.d.ts.map +0 -1
  264. package/dist/browser/types.js +0 -2
  265. package/dist/browser/types.js.map +0 -1
  266. package/dist/build/__tests__/generate-cli.test.d.ts +0 -2
  267. package/dist/build/__tests__/generate-cli.test.d.ts.map +0 -1
  268. package/dist/build/__tests__/generate-cli.test.js +0 -237
  269. package/dist/build/__tests__/generate-cli.test.js.map +0 -1
  270. package/dist/build/__tests__/generate-manifest.test.d.ts +0 -2
  271. package/dist/build/__tests__/generate-manifest.test.d.ts.map +0 -1
  272. package/dist/build/__tests__/generate-manifest.test.js +0 -119
  273. package/dist/build/__tests__/generate-manifest.test.js.map +0 -1
  274. package/dist/build/__tests__/generate-route-types.test.d.ts +0 -2
  275. package/dist/build/__tests__/generate-route-types.test.d.ts.map +0 -1
  276. package/dist/build/__tests__/generate-route-types.test.js +0 -620
  277. package/dist/build/__tests__/generate-route-types.test.js.map +0 -1
  278. package/dist/build/__tests__/per-router-manifest.test.d.ts +0 -2
  279. package/dist/build/__tests__/per-router-manifest.test.d.ts.map +0 -1
  280. package/dist/build/__tests__/per-router-manifest.test.js +0 -308
  281. package/dist/build/__tests__/per-router-manifest.test.js.map +0 -1
  282. package/dist/build/generate-manifest.d.ts +0 -81
  283. package/dist/build/generate-manifest.d.ts.map +0 -1
  284. package/dist/build/generate-manifest.js +0 -276
  285. package/dist/build/generate-manifest.js.map +0 -1
  286. package/dist/build/generate-route-types.d.ts +0 -115
  287. package/dist/build/generate-route-types.d.ts.map +0 -1
  288. package/dist/build/generate-route-types.js +0 -740
  289. package/dist/build/generate-route-types.js.map +0 -1
  290. package/dist/build/index.d.ts +0 -21
  291. package/dist/build/index.d.ts.map +0 -1
  292. package/dist/build/index.js +0 -21
  293. package/dist/build/index.js.map +0 -1
  294. package/dist/build/route-trie.d.ts +0 -71
  295. package/dist/build/route-trie.d.ts.map +0 -1
  296. package/dist/build/route-trie.js +0 -175
  297. package/dist/build/route-trie.js.map +0 -1
  298. package/dist/cache/__tests__/cache-scope.test.d.ts +0 -2
  299. package/dist/cache/__tests__/cache-scope.test.d.ts.map +0 -1
  300. package/dist/cache/__tests__/cache-scope.test.js +0 -208
  301. package/dist/cache/__tests__/cache-scope.test.js.map +0 -1
  302. package/dist/cache/__tests__/document-cache.test.d.ts +0 -2
  303. package/dist/cache/__tests__/document-cache.test.d.ts.map +0 -1
  304. package/dist/cache/__tests__/document-cache.test.js +0 -345
  305. package/dist/cache/__tests__/document-cache.test.js.map +0 -1
  306. package/dist/cache/__tests__/memory-segment-store.test.d.ts +0 -2
  307. package/dist/cache/__tests__/memory-segment-store.test.d.ts.map +0 -1
  308. package/dist/cache/__tests__/memory-segment-store.test.js +0 -425
  309. package/dist/cache/__tests__/memory-segment-store.test.js.map +0 -1
  310. package/dist/cache/__tests__/memory-store.test.d.ts +0 -2
  311. package/dist/cache/__tests__/memory-store.test.d.ts.map +0 -1
  312. package/dist/cache/__tests__/memory-store.test.js +0 -367
  313. package/dist/cache/__tests__/memory-store.test.js.map +0 -1
  314. package/dist/cache/cache-scope.d.ts +0 -102
  315. package/dist/cache/cache-scope.d.ts.map +0 -1
  316. package/dist/cache/cache-scope.js +0 -440
  317. package/dist/cache/cache-scope.js.map +0 -1
  318. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts +0 -2
  319. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts.map +0 -1
  320. package/dist/cache/cf/__tests__/cf-cache-store.test.js +0 -330
  321. package/dist/cache/cf/__tests__/cf-cache-store.test.js.map +0 -1
  322. package/dist/cache/cf/cf-cache-store.d.ts +0 -165
  323. package/dist/cache/cf/cf-cache-store.d.ts.map +0 -1
  324. package/dist/cache/cf/cf-cache-store.js +0 -242
  325. package/dist/cache/cf/cf-cache-store.js.map +0 -1
  326. package/dist/cache/cf/index.d.ts +0 -14
  327. package/dist/cache/cf/index.d.ts.map +0 -1
  328. package/dist/cache/cf/index.js +0 -17
  329. package/dist/cache/cf/index.js.map +0 -1
  330. package/dist/cache/document-cache.d.ts +0 -64
  331. package/dist/cache/document-cache.d.ts.map +0 -1
  332. package/dist/cache/document-cache.js +0 -228
  333. package/dist/cache/document-cache.js.map +0 -1
  334. package/dist/cache/index.d.ts +0 -19
  335. package/dist/cache/index.d.ts.map +0 -1
  336. package/dist/cache/index.js +0 -21
  337. package/dist/cache/index.js.map +0 -1
  338. package/dist/cache/memory-segment-store.d.ts +0 -110
  339. package/dist/cache/memory-segment-store.d.ts.map +0 -1
  340. package/dist/cache/memory-segment-store.js +0 -117
  341. package/dist/cache/memory-segment-store.js.map +0 -1
  342. package/dist/cache/memory-store.d.ts +0 -41
  343. package/dist/cache/memory-store.d.ts.map +0 -1
  344. package/dist/cache/memory-store.js +0 -191
  345. package/dist/cache/memory-store.js.map +0 -1
  346. package/dist/cache/types.d.ts +0 -317
  347. package/dist/cache/types.d.ts.map +0 -1
  348. package/dist/cache/types.js +0 -12
  349. package/dist/cache/types.js.map +0 -1
  350. package/dist/client.d.ts +0 -248
  351. package/dist/client.d.ts.map +0 -1
  352. package/dist/client.js +0 -367
  353. package/dist/client.js.map +0 -1
  354. package/dist/client.rsc.d.ts +0 -26
  355. package/dist/client.rsc.d.ts.map +0 -1
  356. package/dist/client.rsc.js +0 -46
  357. package/dist/client.rsc.js.map +0 -1
  358. package/dist/component-utils.d.ts +0 -36
  359. package/dist/component-utils.d.ts.map +0 -1
  360. package/dist/component-utils.js +0 -61
  361. package/dist/component-utils.js.map +0 -1
  362. package/dist/components/DefaultDocument.d.ts +0 -13
  363. package/dist/components/DefaultDocument.d.ts.map +0 -1
  364. package/dist/components/DefaultDocument.js +0 -15
  365. package/dist/components/DefaultDocument.js.map +0 -1
  366. package/dist/debug.d.ts +0 -58
  367. package/dist/debug.d.ts.map +0 -1
  368. package/dist/debug.js +0 -157
  369. package/dist/debug.js.map +0 -1
  370. package/dist/default-error-boundary.d.ts +0 -11
  371. package/dist/default-error-boundary.d.ts.map +0 -1
  372. package/dist/default-error-boundary.js +0 -45
  373. package/dist/default-error-boundary.js.map +0 -1
  374. package/dist/deps/browser.d.ts +0 -2
  375. package/dist/deps/browser.d.ts.map +0 -1
  376. package/dist/deps/browser.js +0 -3
  377. package/dist/deps/browser.js.map +0 -1
  378. package/dist/deps/html-stream-client.d.ts +0 -2
  379. package/dist/deps/html-stream-client.d.ts.map +0 -1
  380. package/dist/deps/html-stream-client.js +0 -3
  381. package/dist/deps/html-stream-client.js.map +0 -1
  382. package/dist/deps/html-stream-server.d.ts +0 -2
  383. package/dist/deps/html-stream-server.d.ts.map +0 -1
  384. package/dist/deps/html-stream-server.js +0 -3
  385. package/dist/deps/html-stream-server.js.map +0 -1
  386. package/dist/deps/rsc.d.ts +0 -2
  387. package/dist/deps/rsc.d.ts.map +0 -1
  388. package/dist/deps/rsc.js +0 -4
  389. package/dist/deps/rsc.js.map +0 -1
  390. package/dist/deps/ssr.d.ts +0 -2
  391. package/dist/deps/ssr.d.ts.map +0 -1
  392. package/dist/deps/ssr.js +0 -3
  393. package/dist/deps/ssr.js.map +0 -1
  394. package/dist/errors.d.ts +0 -174
  395. package/dist/errors.d.ts.map +0 -1
  396. package/dist/errors.js +0 -241
  397. package/dist/errors.js.map +0 -1
  398. package/dist/handle.d.ts +0 -78
  399. package/dist/handle.d.ts.map +0 -1
  400. package/dist/handle.js +0 -82
  401. package/dist/handle.js.map +0 -1
  402. package/dist/handles/MetaTags.d.ts +0 -14
  403. package/dist/handles/MetaTags.d.ts.map +0 -1
  404. package/dist/handles/MetaTags.js +0 -136
  405. package/dist/handles/MetaTags.js.map +0 -1
  406. package/dist/handles/index.d.ts +0 -6
  407. package/dist/handles/index.d.ts.map +0 -1
  408. package/dist/handles/index.js +0 -6
  409. package/dist/handles/index.js.map +0 -1
  410. package/dist/handles/meta.d.ts +0 -39
  411. package/dist/handles/meta.d.ts.map +0 -1
  412. package/dist/handles/meta.js +0 -202
  413. package/dist/handles/meta.js.map +0 -1
  414. package/dist/host/__tests__/errors.test.d.ts +0 -2
  415. package/dist/host/__tests__/errors.test.d.ts.map +0 -1
  416. package/dist/host/__tests__/errors.test.js +0 -76
  417. package/dist/host/__tests__/errors.test.js.map +0 -1
  418. package/dist/host/__tests__/pattern-comprehensive.test.d.ts +0 -2
  419. package/dist/host/__tests__/pattern-comprehensive.test.d.ts.map +0 -1
  420. package/dist/host/__tests__/pattern-comprehensive.test.js +0 -732
  421. package/dist/host/__tests__/pattern-comprehensive.test.js.map +0 -1
  422. package/dist/host/__tests__/pattern-matcher.test.d.ts +0 -2
  423. package/dist/host/__tests__/pattern-matcher.test.d.ts.map +0 -1
  424. package/dist/host/__tests__/pattern-matcher.test.js +0 -251
  425. package/dist/host/__tests__/pattern-matcher.test.js.map +0 -1
  426. package/dist/host/__tests__/router.test.d.ts +0 -2
  427. package/dist/host/__tests__/router.test.d.ts.map +0 -1
  428. package/dist/host/__tests__/router.test.js +0 -241
  429. package/dist/host/__tests__/router.test.js.map +0 -1
  430. package/dist/host/__tests__/testing.test.d.ts +0 -2
  431. package/dist/host/__tests__/testing.test.d.ts.map +0 -1
  432. package/dist/host/__tests__/testing.test.js +0 -64
  433. package/dist/host/__tests__/testing.test.js.map +0 -1
  434. package/dist/host/__tests__/utils.test.d.ts +0 -2
  435. package/dist/host/__tests__/utils.test.d.ts.map +0 -1
  436. package/dist/host/__tests__/utils.test.js +0 -29
  437. package/dist/host/__tests__/utils.test.js.map +0 -1
  438. package/dist/host/cookie-handler.d.ts +0 -34
  439. package/dist/host/cookie-handler.d.ts.map +0 -1
  440. package/dist/host/cookie-handler.js +0 -124
  441. package/dist/host/cookie-handler.js.map +0 -1
  442. package/dist/host/errors.d.ts +0 -56
  443. package/dist/host/errors.d.ts.map +0 -1
  444. package/dist/host/errors.js +0 -79
  445. package/dist/host/errors.js.map +0 -1
  446. package/dist/host/index.d.ts +0 -29
  447. package/dist/host/index.d.ts.map +0 -1
  448. package/dist/host/index.js +0 -32
  449. package/dist/host/index.js.map +0 -1
  450. package/dist/host/pattern-matcher.d.ts +0 -36
  451. package/dist/host/pattern-matcher.d.ts.map +0 -1
  452. package/dist/host/pattern-matcher.js +0 -172
  453. package/dist/host/pattern-matcher.js.map +0 -1
  454. package/dist/host/router.d.ts +0 -26
  455. package/dist/host/router.d.ts.map +0 -1
  456. package/dist/host/router.js +0 -218
  457. package/dist/host/router.js.map +0 -1
  458. package/dist/host/testing.d.ts +0 -36
  459. package/dist/host/testing.d.ts.map +0 -1
  460. package/dist/host/testing.js +0 -55
  461. package/dist/host/testing.js.map +0 -1
  462. package/dist/host/types.d.ts +0 -115
  463. package/dist/host/types.d.ts.map +0 -1
  464. package/dist/host/types.js +0 -7
  465. package/dist/host/types.js.map +0 -1
  466. package/dist/host/utils.d.ts +0 -21
  467. package/dist/host/utils.d.ts.map +0 -1
  468. package/dist/host/utils.js +0 -23
  469. package/dist/host/utils.js.map +0 -1
  470. package/dist/href-client.d.ts +0 -131
  471. package/dist/href-client.d.ts.map +0 -1
  472. package/dist/href-client.js +0 -64
  473. package/dist/href-client.js.map +0 -1
  474. package/dist/href-context.d.ts +0 -29
  475. package/dist/href-context.d.ts.map +0 -1
  476. package/dist/href-context.js +0 -21
  477. package/dist/href-context.js.map +0 -1
  478. package/dist/index.d.ts +0 -73
  479. package/dist/index.d.ts.map +0 -1
  480. package/dist/index.js +0 -91
  481. package/dist/index.js.map +0 -1
  482. package/dist/index.rsc.d.ts +0 -32
  483. package/dist/index.rsc.d.ts.map +0 -1
  484. package/dist/index.rsc.js +0 -40
  485. package/dist/index.rsc.js.map +0 -1
  486. package/dist/internal-debug.d.ts +0 -2
  487. package/dist/internal-debug.d.ts.map +0 -1
  488. package/dist/internal-debug.js +0 -5
  489. package/dist/internal-debug.js.map +0 -1
  490. package/dist/loader.d.ts +0 -14
  491. package/dist/loader.d.ts.map +0 -1
  492. package/dist/loader.js +0 -20
  493. package/dist/loader.js.map +0 -1
  494. package/dist/loader.rsc.d.ts +0 -19
  495. package/dist/loader.rsc.d.ts.map +0 -1
  496. package/dist/loader.rsc.js +0 -99
  497. package/dist/loader.rsc.js.map +0 -1
  498. package/dist/network-error-thrower.d.ts +0 -17
  499. package/dist/network-error-thrower.d.ts.map +0 -1
  500. package/dist/network-error-thrower.js +0 -14
  501. package/dist/network-error-thrower.js.map +0 -1
  502. package/dist/outlet-context.d.ts +0 -13
  503. package/dist/outlet-context.d.ts.map +0 -1
  504. package/dist/outlet-context.js +0 -3
  505. package/dist/outlet-context.js.map +0 -1
  506. package/dist/prerender/__tests__/param-hash.test.d.ts +0 -2
  507. package/dist/prerender/__tests__/param-hash.test.d.ts.map +0 -1
  508. package/dist/prerender/__tests__/param-hash.test.js +0 -148
  509. package/dist/prerender/__tests__/param-hash.test.js.map +0 -1
  510. package/dist/prerender/param-hash.d.ts +0 -16
  511. package/dist/prerender/param-hash.d.ts.map +0 -1
  512. package/dist/prerender/param-hash.js +0 -36
  513. package/dist/prerender/param-hash.js.map +0 -1
  514. package/dist/prerender/store.d.ts +0 -38
  515. package/dist/prerender/store.d.ts.map +0 -1
  516. package/dist/prerender/store.js +0 -61
  517. package/dist/prerender/store.js.map +0 -1
  518. package/dist/prerender.d.ts +0 -66
  519. package/dist/prerender.d.ts.map +0 -1
  520. package/dist/prerender.js +0 -57
  521. package/dist/prerender.js.map +0 -1
  522. package/dist/reverse.d.ts +0 -196
  523. package/dist/reverse.d.ts.map +0 -1
  524. package/dist/reverse.js +0 -78
  525. package/dist/reverse.js.map +0 -1
  526. package/dist/root-error-boundary.d.ts +0 -33
  527. package/dist/root-error-boundary.d.ts.map +0 -1
  528. package/dist/root-error-boundary.js +0 -165
  529. package/dist/root-error-boundary.js.map +0 -1
  530. package/dist/route-content-wrapper.d.ts +0 -46
  531. package/dist/route-content-wrapper.d.ts.map +0 -1
  532. package/dist/route-content-wrapper.js +0 -77
  533. package/dist/route-content-wrapper.js.map +0 -1
  534. package/dist/route-definition.d.ts +0 -421
  535. package/dist/route-definition.d.ts.map +0 -1
  536. package/dist/route-definition.js +0 -868
  537. package/dist/route-definition.js.map +0 -1
  538. package/dist/route-map-builder.d.ts +0 -155
  539. package/dist/route-map-builder.d.ts.map +0 -1
  540. package/dist/route-map-builder.js +0 -237
  541. package/dist/route-map-builder.js.map +0 -1
  542. package/dist/route-types.d.ts +0 -165
  543. package/dist/route-types.d.ts.map +0 -1
  544. package/dist/route-types.js +0 -7
  545. package/dist/route-types.js.map +0 -1
  546. package/dist/router/__tests__/handler-context.test.d.ts +0 -2
  547. package/dist/router/__tests__/handler-context.test.d.ts.map +0 -1
  548. package/dist/router/__tests__/handler-context.test.js +0 -65
  549. package/dist/router/__tests__/handler-context.test.js.map +0 -1
  550. package/dist/router/__tests__/loader-cycle-detection.test.d.ts +0 -2
  551. package/dist/router/__tests__/loader-cycle-detection.test.d.ts.map +0 -1
  552. package/dist/router/__tests__/loader-cycle-detection.test.js +0 -221
  553. package/dist/router/__tests__/loader-cycle-detection.test.js.map +0 -1
  554. package/dist/router/__tests__/match-context.test.d.ts +0 -2
  555. package/dist/router/__tests__/match-context.test.d.ts.map +0 -1
  556. package/dist/router/__tests__/match-context.test.js +0 -92
  557. package/dist/router/__tests__/match-context.test.js.map +0 -1
  558. package/dist/router/__tests__/match-pipelines.test.d.ts +0 -2
  559. package/dist/router/__tests__/match-pipelines.test.d.ts.map +0 -1
  560. package/dist/router/__tests__/match-pipelines.test.js +0 -417
  561. package/dist/router/__tests__/match-pipelines.test.js.map +0 -1
  562. package/dist/router/__tests__/match-result.test.d.ts +0 -2
  563. package/dist/router/__tests__/match-result.test.d.ts.map +0 -1
  564. package/dist/router/__tests__/match-result.test.js +0 -457
  565. package/dist/router/__tests__/match-result.test.js.map +0 -1
  566. package/dist/router/__tests__/on-error.test.d.ts +0 -2
  567. package/dist/router/__tests__/on-error.test.d.ts.map +0 -1
  568. package/dist/router/__tests__/on-error.test.js +0 -678
  569. package/dist/router/__tests__/on-error.test.js.map +0 -1
  570. package/dist/router/__tests__/pattern-matching.test.d.ts +0 -2
  571. package/dist/router/__tests__/pattern-matching.test.d.ts.map +0 -1
  572. package/dist/router/__tests__/pattern-matching.test.js +0 -629
  573. package/dist/router/__tests__/pattern-matching.test.js.map +0 -1
  574. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts +0 -2
  575. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts.map +0 -1
  576. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js +0 -155
  577. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js.map +0 -1
  578. package/dist/router/error-handling.d.ts +0 -77
  579. package/dist/router/error-handling.d.ts.map +0 -1
  580. package/dist/router/error-handling.js +0 -202
  581. package/dist/router/error-handling.js.map +0 -1
  582. package/dist/router/handler-context.d.ts +0 -20
  583. package/dist/router/handler-context.d.ts.map +0 -1
  584. package/dist/router/handler-context.js +0 -198
  585. package/dist/router/handler-context.js.map +0 -1
  586. package/dist/router/intercept-resolution.d.ts +0 -66
  587. package/dist/router/intercept-resolution.d.ts.map +0 -1
  588. package/dist/router/intercept-resolution.js +0 -246
  589. package/dist/router/intercept-resolution.js.map +0 -1
  590. package/dist/router/loader-resolution.d.ts +0 -64
  591. package/dist/router/loader-resolution.d.ts.map +0 -1
  592. package/dist/router/loader-resolution.js +0 -284
  593. package/dist/router/loader-resolution.js.map +0 -1
  594. package/dist/router/logging.d.ts +0 -15
  595. package/dist/router/logging.d.ts.map +0 -1
  596. package/dist/router/logging.js +0 -99
  597. package/dist/router/logging.js.map +0 -1
  598. package/dist/router/manifest.d.ts +0 -22
  599. package/dist/router/manifest.d.ts.map +0 -1
  600. package/dist/router/manifest.js +0 -181
  601. package/dist/router/manifest.js.map +0 -1
  602. package/dist/router/match-api.d.ts +0 -35
  603. package/dist/router/match-api.d.ts.map +0 -1
  604. package/dist/router/match-api.js +0 -406
  605. package/dist/router/match-api.js.map +0 -1
  606. package/dist/router/match-context.d.ts +0 -206
  607. package/dist/router/match-context.d.ts.map +0 -1
  608. package/dist/router/match-context.js +0 -17
  609. package/dist/router/match-context.js.map +0 -1
  610. package/dist/router/match-middleware/background-revalidation.d.ts +0 -127
  611. package/dist/router/match-middleware/background-revalidation.d.ts.map +0 -1
  612. package/dist/router/match-middleware/background-revalidation.js +0 -75
  613. package/dist/router/match-middleware/background-revalidation.js.map +0 -1
  614. package/dist/router/match-middleware/cache-lookup.d.ts +0 -112
  615. package/dist/router/match-middleware/cache-lookup.d.ts.map +0 -1
  616. package/dist/router/match-middleware/cache-lookup.js +0 -257
  617. package/dist/router/match-middleware/cache-lookup.js.map +0 -1
  618. package/dist/router/match-middleware/cache-store.d.ts +0 -113
  619. package/dist/router/match-middleware/cache-store.d.ts.map +0 -1
  620. package/dist/router/match-middleware/cache-store.js +0 -108
  621. package/dist/router/match-middleware/cache-store.js.map +0 -1
  622. package/dist/router/match-middleware/index.d.ts +0 -81
  623. package/dist/router/match-middleware/index.d.ts.map +0 -1
  624. package/dist/router/match-middleware/index.js +0 -80
  625. package/dist/router/match-middleware/index.js.map +0 -1
  626. package/dist/router/match-middleware/intercept-resolution.d.ts +0 -117
  627. package/dist/router/match-middleware/intercept-resolution.d.ts.map +0 -1
  628. package/dist/router/match-middleware/intercept-resolution.js +0 -134
  629. package/dist/router/match-middleware/intercept-resolution.js.map +0 -1
  630. package/dist/router/match-middleware/segment-resolution.d.ts +0 -99
  631. package/dist/router/match-middleware/segment-resolution.d.ts.map +0 -1
  632. package/dist/router/match-middleware/segment-resolution.js +0 -53
  633. package/dist/router/match-middleware/segment-resolution.js.map +0 -1
  634. package/dist/router/match-pipelines.d.ts +0 -147
  635. package/dist/router/match-pipelines.d.ts.map +0 -1
  636. package/dist/router/match-pipelines.js +0 -82
  637. package/dist/router/match-pipelines.js.map +0 -1
  638. package/dist/router/match-result.d.ts +0 -126
  639. package/dist/router/match-result.d.ts.map +0 -1
  640. package/dist/router/match-result.js +0 -93
  641. package/dist/router/match-result.js.map +0 -1
  642. package/dist/router/metrics.d.ts +0 -20
  643. package/dist/router/metrics.d.ts.map +0 -1
  644. package/dist/router/metrics.js +0 -47
  645. package/dist/router/metrics.js.map +0 -1
  646. package/dist/router/middleware.d.ts +0 -249
  647. package/dist/router/middleware.d.ts.map +0 -1
  648. package/dist/router/middleware.js +0 -434
  649. package/dist/router/middleware.js.map +0 -1
  650. package/dist/router/middleware.test.d.ts +0 -2
  651. package/dist/router/middleware.test.d.ts.map +0 -1
  652. package/dist/router/middleware.test.js +0 -816
  653. package/dist/router/middleware.test.js.map +0 -1
  654. package/dist/router/pattern-matching.d.ts +0 -149
  655. package/dist/router/pattern-matching.d.ts.map +0 -1
  656. package/dist/router/pattern-matching.js +0 -349
  657. package/dist/router/pattern-matching.js.map +0 -1
  658. package/dist/router/revalidation.d.ts +0 -44
  659. package/dist/router/revalidation.d.ts.map +0 -1
  660. package/dist/router/revalidation.js +0 -147
  661. package/dist/router/revalidation.js.map +0 -1
  662. package/dist/router/router-context.d.ts +0 -135
  663. package/dist/router/router-context.d.ts.map +0 -1
  664. package/dist/router/router-context.js +0 -36
  665. package/dist/router/router-context.js.map +0 -1
  666. package/dist/router/segment-resolution.d.ts +0 -127
  667. package/dist/router/segment-resolution.d.ts.map +0 -1
  668. package/dist/router/segment-resolution.js +0 -919
  669. package/dist/router/segment-resolution.js.map +0 -1
  670. package/dist/router/trie-matching.d.ts +0 -40
  671. package/dist/router/trie-matching.d.ts.map +0 -1
  672. package/dist/router/trie-matching.js +0 -127
  673. package/dist/router/trie-matching.js.map +0 -1
  674. package/dist/router/types.d.ts +0 -136
  675. package/dist/router/types.d.ts.map +0 -1
  676. package/dist/router/types.js +0 -7
  677. package/dist/router/types.js.map +0 -1
  678. package/dist/router.d.ts +0 -753
  679. package/dist/router.d.ts.map +0 -1
  680. package/dist/router.gen.d.ts +0 -6
  681. package/dist/router.gen.d.ts.map +0 -1
  682. package/dist/router.gen.js +0 -6
  683. package/dist/router.gen.js.map +0 -1
  684. package/dist/router.js +0 -1304
  685. package/dist/router.js.map +0 -1
  686. package/dist/rsc/__tests__/helpers.test.d.ts +0 -2
  687. package/dist/rsc/__tests__/helpers.test.d.ts.map +0 -1
  688. package/dist/rsc/__tests__/helpers.test.js +0 -140
  689. package/dist/rsc/__tests__/helpers.test.js.map +0 -1
  690. package/dist/rsc/handler.d.ts +0 -45
  691. package/dist/rsc/handler.d.ts.map +0 -1
  692. package/dist/rsc/handler.js +0 -1172
  693. package/dist/rsc/handler.js.map +0 -1
  694. package/dist/rsc/helpers.d.ts +0 -16
  695. package/dist/rsc/helpers.d.ts.map +0 -1
  696. package/dist/rsc/helpers.js +0 -55
  697. package/dist/rsc/helpers.js.map +0 -1
  698. package/dist/rsc/index.d.ts +0 -22
  699. package/dist/rsc/index.d.ts.map +0 -1
  700. package/dist/rsc/index.js +0 -23
  701. package/dist/rsc/index.js.map +0 -1
  702. package/dist/rsc/nonce.d.ts +0 -9
  703. package/dist/rsc/nonce.d.ts.map +0 -1
  704. package/dist/rsc/nonce.js +0 -18
  705. package/dist/rsc/nonce.js.map +0 -1
  706. package/dist/rsc/types.d.ts +0 -206
  707. package/dist/rsc/types.d.ts.map +0 -1
  708. package/dist/rsc/types.js +0 -8
  709. package/dist/rsc/types.js.map +0 -1
  710. package/dist/search-params.d.ts +0 -103
  711. package/dist/search-params.d.ts.map +0 -1
  712. package/dist/search-params.js +0 -74
  713. package/dist/search-params.js.map +0 -1
  714. package/dist/segment-system.d.ts +0 -75
  715. package/dist/segment-system.d.ts.map +0 -1
  716. package/dist/segment-system.js +0 -336
  717. package/dist/segment-system.js.map +0 -1
  718. package/dist/server/context.d.ts +0 -245
  719. package/dist/server/context.d.ts.map +0 -1
  720. package/dist/server/context.js +0 -197
  721. package/dist/server/context.js.map +0 -1
  722. package/dist/server/fetchable-loader-store.d.ts +0 -18
  723. package/dist/server/fetchable-loader-store.d.ts.map +0 -1
  724. package/dist/server/fetchable-loader-store.js +0 -18
  725. package/dist/server/fetchable-loader-store.js.map +0 -1
  726. package/dist/server/handle-store.d.ts +0 -85
  727. package/dist/server/handle-store.d.ts.map +0 -1
  728. package/dist/server/handle-store.js +0 -142
  729. package/dist/server/handle-store.js.map +0 -1
  730. package/dist/server/loader-registry.d.ts +0 -55
  731. package/dist/server/loader-registry.d.ts.map +0 -1
  732. package/dist/server/loader-registry.js +0 -132
  733. package/dist/server/loader-registry.js.map +0 -1
  734. package/dist/server/request-context.d.ts +0 -226
  735. package/dist/server/request-context.d.ts.map +0 -1
  736. package/dist/server/request-context.js +0 -290
  737. package/dist/server/request-context.js.map +0 -1
  738. package/dist/server/root-layout.d.ts +0 -4
  739. package/dist/server/root-layout.d.ts.map +0 -1
  740. package/dist/server/root-layout.js +0 -5
  741. package/dist/server/root-layout.js.map +0 -1
  742. package/dist/server.d.ts +0 -15
  743. package/dist/server.d.ts.map +0 -1
  744. package/dist/server.js +0 -20
  745. package/dist/server.js.map +0 -1
  746. package/dist/ssr/__tests__/ssr-handler.test.d.ts +0 -2
  747. package/dist/ssr/__tests__/ssr-handler.test.d.ts.map +0 -1
  748. package/dist/ssr/__tests__/ssr-handler.test.js +0 -132
  749. package/dist/ssr/__tests__/ssr-handler.test.js.map +0 -1
  750. package/dist/ssr/index.d.ts +0 -98
  751. package/dist/ssr/index.d.ts.map +0 -1
  752. package/dist/ssr/index.js +0 -158
  753. package/dist/ssr/index.js.map +0 -1
  754. package/dist/static-handler.d.ts +0 -50
  755. package/dist/static-handler.d.ts.map +0 -1
  756. package/dist/static-handler.gen.d.ts +0 -5
  757. package/dist/static-handler.gen.d.ts.map +0 -1
  758. package/dist/static-handler.gen.js +0 -5
  759. package/dist/static-handler.gen.js.map +0 -1
  760. package/dist/static-handler.js +0 -29
  761. package/dist/static-handler.js.map +0 -1
  762. package/dist/theme/ThemeProvider.d.ts +0 -20
  763. package/dist/theme/ThemeProvider.d.ts.map +0 -1
  764. package/dist/theme/ThemeProvider.js +0 -240
  765. package/dist/theme/ThemeProvider.js.map +0 -1
  766. package/dist/theme/ThemeScript.d.ts +0 -48
  767. package/dist/theme/ThemeScript.d.ts.map +0 -1
  768. package/dist/theme/ThemeScript.js +0 -13
  769. package/dist/theme/ThemeScript.js.map +0 -1
  770. package/dist/theme/__tests__/theme.test.d.ts +0 -2
  771. package/dist/theme/__tests__/theme.test.d.ts.map +0 -1
  772. package/dist/theme/__tests__/theme.test.js +0 -103
  773. package/dist/theme/__tests__/theme.test.js.map +0 -1
  774. package/dist/theme/constants.d.ts +0 -29
  775. package/dist/theme/constants.d.ts.map +0 -1
  776. package/dist/theme/constants.js +0 -48
  777. package/dist/theme/constants.js.map +0 -1
  778. package/dist/theme/index.d.ts +0 -31
  779. package/dist/theme/index.d.ts.map +0 -1
  780. package/dist/theme/index.js +0 -36
  781. package/dist/theme/index.js.map +0 -1
  782. package/dist/theme/theme-context.d.ts +0 -40
  783. package/dist/theme/theme-context.d.ts.map +0 -1
  784. package/dist/theme/theme-context.js +0 -60
  785. package/dist/theme/theme-context.js.map +0 -1
  786. package/dist/theme/theme-script.d.ts +0 -27
  787. package/dist/theme/theme-script.d.ts.map +0 -1
  788. package/dist/theme/theme-script.js +0 -147
  789. package/dist/theme/theme-script.js.map +0 -1
  790. package/dist/theme/types.d.ts +0 -163
  791. package/dist/theme/types.d.ts.map +0 -1
  792. package/dist/theme/types.js +0 -11
  793. package/dist/theme/types.js.map +0 -1
  794. package/dist/theme/use-theme.d.ts +0 -12
  795. package/dist/theme/use-theme.d.ts.map +0 -1
  796. package/dist/theme/use-theme.js +0 -40
  797. package/dist/theme/use-theme.js.map +0 -1
  798. package/dist/types.d.ts +0 -1479
  799. package/dist/types.d.ts.map +0 -1
  800. package/dist/types.js +0 -10
  801. package/dist/types.js.map +0 -1
  802. package/dist/urls.d.ts +0 -441
  803. package/dist/urls.d.ts.map +0 -1
  804. package/dist/urls.gen.d.ts +0 -8
  805. package/dist/urls.gen.d.ts.map +0 -1
  806. package/dist/urls.gen.js +0 -8
  807. package/dist/urls.gen.js.map +0 -1
  808. package/dist/urls.js +0 -443
  809. package/dist/urls.js.map +0 -1
  810. package/dist/use-loader.d.ts +0 -127
  811. package/dist/use-loader.d.ts.map +0 -1
  812. package/dist/use-loader.js +0 -237
  813. package/dist/use-loader.js.map +0 -1
  814. package/dist/vite/__tests__/ast-handler-extract.test.d.ts +0 -2
  815. package/dist/vite/__tests__/ast-handler-extract.test.d.ts.map +0 -1
  816. package/dist/vite/__tests__/ast-handler-extract.test.js +0 -294
  817. package/dist/vite/__tests__/ast-handler-extract.test.js.map +0 -1
  818. package/dist/vite/__tests__/expose-id-utils.test.d.ts +0 -2
  819. package/dist/vite/__tests__/expose-id-utils.test.d.ts.map +0 -1
  820. package/dist/vite/__tests__/expose-id-utils.test.js +0 -224
  821. package/dist/vite/__tests__/expose-id-utils.test.js.map +0 -1
  822. package/dist/vite/__tests__/expose-internal-ids.test.d.ts +0 -2
  823. package/dist/vite/__tests__/expose-internal-ids.test.d.ts.map +0 -1
  824. package/dist/vite/__tests__/expose-internal-ids.test.js +0 -647
  825. package/dist/vite/__tests__/expose-internal-ids.test.js.map +0 -1
  826. package/dist/vite/__tests__/expose-router-id.test.d.ts +0 -2
  827. package/dist/vite/__tests__/expose-router-id.test.d.ts.map +0 -1
  828. package/dist/vite/__tests__/expose-router-id.test.js +0 -39
  829. package/dist/vite/__tests__/expose-router-id.test.js.map +0 -1
  830. package/dist/vite/ast-handler-extract.d.ts +0 -49
  831. package/dist/vite/ast-handler-extract.d.ts.map +0 -1
  832. package/dist/vite/ast-handler-extract.js +0 -249
  833. package/dist/vite/ast-handler-extract.js.map +0 -1
  834. package/dist/vite/expose-action-id.d.ts +0 -19
  835. package/dist/vite/expose-action-id.d.ts.map +0 -1
  836. package/dist/vite/expose-action-id.js +0 -250
  837. package/dist/vite/expose-action-id.js.map +0 -1
  838. package/dist/vite/expose-id-utils.d.ts +0 -69
  839. package/dist/vite/expose-id-utils.d.ts.map +0 -1
  840. package/dist/vite/expose-id-utils.js +0 -289
  841. package/dist/vite/expose-id-utils.js.map +0 -1
  842. package/dist/vite/expose-internal-ids.d.ts +0 -22
  843. package/dist/vite/expose-internal-ids.d.ts.map +0 -1
  844. package/dist/vite/expose-internal-ids.js +0 -886
  845. package/dist/vite/expose-internal-ids.js.map +0 -1
  846. package/dist/vite/index.d.ts +0 -149
  847. package/dist/vite/index.d.ts.map +0 -1
  848. package/dist/vite/index.js.bak +0 -5448
  849. package/dist/vite/index.js.map +0 -1
  850. package/dist/vite/index.named-routes.gen.ts +0 -103
  851. package/dist/vite/package-resolution.d.ts +0 -43
  852. package/dist/vite/package-resolution.d.ts.map +0 -1
  853. package/dist/vite/package-resolution.js +0 -112
  854. package/dist/vite/package-resolution.js.map +0 -1
  855. package/dist/vite/virtual-entries.d.ts +0 -25
  856. package/dist/vite/virtual-entries.d.ts.map +0 -1
  857. package/dist/vite/virtual-entries.js +0 -110
  858. package/dist/vite/virtual-entries.js.map +0 -1
  859. package/src/network-error-thrower.tsx +0 -18
@@ -1,16 +1,14 @@
1
- import type { AllUseItems, WhenItem } from "../route-types.js";
1
+ import type { AllUseItems } from "../route-types.js";
2
2
 
3
3
  /**
4
4
  * The set of valid use-item `type` discriminants — the single runtime source of
5
5
  * truth for "is this a well-formed use item?" shape validation.
6
6
  *
7
7
  * Declared via a `Record<...>` so that adding a member to the union without
8
- * updating this map is a compile error. `when` is included because when() items
9
- * are valid inside intercept() even though WhenItem is not part of AllUseItems
10
- * (it lives only in InterceptUseItem). This is shape validation only; per-mount-
8
+ * updating this map is a compile error. This is shape validation only; per-mount-
11
9
  * site rules remain the narrower hand-written tables in resolve-handler-use.ts.
12
10
  */
13
- const USE_ITEM_TYPES: Record<AllUseItems["type"] | WhenItem["type"], true> = {
11
+ const USE_ITEM_TYPES: Record<AllUseItems["type"], true> = {
14
12
  layout: true,
15
13
  route: true,
16
14
  middleware: true,
@@ -21,7 +19,6 @@ const USE_ITEM_TYPES: Record<AllUseItems["type"] | WhenItem["type"], true> = {
21
19
  loading: true,
22
20
  errorBoundary: true,
23
21
  notFoundBoundary: true,
24
- when: true,
25
22
  cache: true,
26
23
  transition: true,
27
24
  include: true,
@@ -98,10 +98,6 @@ export type NotFoundBoundaryItem = {
98
98
  type: "notFoundBoundary";
99
99
  uses?: AllUseItems[];
100
100
  };
101
- export type WhenItem = {
102
- name: string;
103
- type: "when";
104
- };
105
101
  export type CacheItem = {
106
102
  name: string;
107
103
  type: "cache";
@@ -231,7 +227,6 @@ export type InterceptUseItem =
231
227
  | NotFoundBoundaryItem
232
228
  | LayoutItem
233
229
  | RouteItem
234
- | WhenItem
235
230
  | TransitionItem;
236
231
  export type LoaderUseItem = RevalidateItem | CacheItem;
237
232
 
@@ -287,7 +287,11 @@ export async function createMatchContextForPartial<TEnv>(
287
287
  });
288
288
  }
289
289
 
290
- setRequestContextPrevRouteKey(nav.effectiveFromMatch?.routeKey);
290
+ setRequestContextPrevRouteKey(
291
+ nav.effectiveFromMatch?.routeKey,
292
+ nav.effectiveFromUrl,
293
+ nav.effectiveFromMatch?.params ?? nav.prevParams,
294
+ );
291
295
 
292
296
  const interceptSelectorContext: InterceptSelectorContext = {
293
297
  from: nav.effectiveFromUrl,
@@ -202,6 +202,7 @@ export async function resolveSegment<TEnv>(
202
202
  transition: applyViewTransitionDefault(
203
203
  entry.transition,
204
204
  deps.viewTransitionDefault,
205
+ entry.shortCode,
205
206
  ),
206
207
  params,
207
208
  belongsToRoute: false,
@@ -345,6 +346,7 @@ export async function resolveSegment<TEnv>(
345
346
  transition: applyViewTransitionDefault(
346
347
  entry.transition,
347
348
  deps.viewTransitionDefault,
349
+ entry.shortCode,
348
350
  ),
349
351
  params,
350
352
  belongsToRoute: true,
@@ -432,6 +434,7 @@ export async function resolveOrphanLayout<TEnv>(
432
434
  transition: applyViewTransitionDefault(
433
435
  orphan.transition,
434
436
  deps.viewTransitionDefault,
437
+ orphan.shortCode,
435
438
  ),
436
439
  ...(orphan.mountPath ? { mountPath: orphan.mountPath } : {}),
437
440
  });
@@ -565,6 +568,7 @@ export async function resolveParallelEntry<TEnv>(
565
568
  transition: applyViewTransitionDefault(
566
569
  parallelEntry.transition,
567
570
  deps.viewTransitionDefault,
571
+ `${parentShortCode}.${slot}`,
568
572
  ),
569
573
  params,
570
574
  slot,
@@ -660,6 +660,7 @@ export async function resolveParallelSegmentsWithRevalidation<TEnv>(
660
660
  transition: applyViewTransitionDefault(
661
661
  parallelEntry.transition,
662
662
  deps.viewTransitionDefault,
663
+ parallelId,
663
664
  ),
664
665
  params,
665
666
  slot,
@@ -861,6 +862,7 @@ export async function resolveEntryHandlerWithRevalidation<TEnv>(
861
862
  transition: applyViewTransitionDefault(
862
863
  entry.transition,
863
864
  deps.viewTransitionDefault,
865
+ entry.shortCode,
864
866
  ),
865
867
  params,
866
868
  belongsToRoute,
@@ -1197,6 +1199,7 @@ export async function resolveOrphanLayoutWithRevalidation<TEnv>(
1197
1199
  transition: applyViewTransitionDefault(
1198
1200
  orphan.transition,
1199
1201
  deps.viewTransitionDefault,
1202
+ orphan.shortCode,
1200
1203
  ),
1201
1204
  ...(orphan.mountPath ? { mountPath: orphan.mountPath } : {}),
1202
1205
  });
@@ -8,29 +8,49 @@
8
8
  */
9
9
 
10
10
  import type { EntryData } from "../../server/context";
11
+ import { getRequestContext } from "../../server/request-context.js";
11
12
 
12
13
  /**
13
- * Resolve the effective `viewTransition` for a segment's transition config.
14
+ * Resolve a segment's transition config: stamp the `viewTransition` default and
15
+ * peel off a transition({ when }) predicate.
14
16
  *
15
- * The per-segment value (set via the transition() DSL) always wins. When it is
16
- * unset, the router-level createRouter({ viewTransition }) default is stamped
17
- * in so the render gate reads the boundary decision off the segment — server
18
- * and client, via the serialized segment — without the router option being
19
- * threaded to the client. Only `false` is ever stamped; an unset (or "auto")
20
- * value is left untouched because it already means "wrap" at the gate, which
21
- * also avoids needless object allocation and payload growth. Used by both the
22
- * fresh and revalidation resolution paths.
17
+ * `viewTransition`: the per-segment value (set via the transition() DSL) always
18
+ * wins. When it is unset, the router-level createRouter({ viewTransition })
19
+ * default is stamped in so the render gate reads the boundary decision off the
20
+ * segment — server and client, via the serialized segment — without the router
21
+ * option being threaded to the client. Only `false` is ever stamped; an unset
22
+ * (or "auto") value is left untouched because it already means "wrap" at the
23
+ * gate, which also avoids needless object allocation and payload growth.
24
+ *
25
+ * `when`: a server-only predicate. It is STRIPPED from the returned config (a
26
+ * function cannot cross Flight or the segment cache) and recorded on the request
27
+ * context keyed by `segmentId`, so rsc-rendering can evaluate it post-handler —
28
+ * outside any cache scope — and drop this segment's transition when it returns
29
+ * false. Used by both the fresh and revalidation resolution paths.
23
30
  */
24
31
  export function applyViewTransitionDefault(
25
32
  transition: EntryData["transition"],
26
33
  viewTransitionDefault: "auto" | false | undefined,
34
+ segmentId?: string,
27
35
  ): EntryData["transition"] {
28
36
  if (!transition) return transition;
29
- if (
30
- transition.viewTransition === undefined &&
31
- viewTransitionDefault === false
32
- ) {
33
- return { ...transition, viewTransition: false };
37
+ let result = transition;
38
+ if (result.when) {
39
+ if (segmentId !== undefined) {
40
+ try {
41
+ const ctx = getRequestContext();
42
+ (ctx._transitionWhen ??= []).push({ id: segmentId, when: result.when });
43
+ } catch {
44
+ // No active request context (e.g. a unit test calling this util
45
+ // directly). Skip collection; the strip below still applies so the
46
+ // serialized config never carries the function.
47
+ }
48
+ }
49
+ const { when: _when, ...rest } = result;
50
+ result = rest;
51
+ }
52
+ if (result.viewTransition === undefined && viewTransitionDefault === false) {
53
+ return { ...result, viewTransition: false };
34
54
  }
35
- return transition;
55
+ return result;
36
56
  }
@@ -14,6 +14,7 @@ import { getSSRSetup } from "./ssr-setup.js";
14
14
  import type { MiddlewareFn } from "../router/middleware.js";
15
15
  import { executeMiddleware } from "../router/middleware.js";
16
16
  import { observePhase, PHASES } from "../router/instrument.js";
17
+ import { gateTransitions } from "./transition-gate.js";
17
18
  import type { RscPayload, ReactFormState } from "./types.js";
18
19
  import {
19
20
  createResponseWithMergedHeaders,
@@ -278,12 +279,26 @@ export async function handleProgressiveEnhancement<TEnv>(
278
279
  });
279
280
  }
280
281
 
282
+ // Expose the no-JS action to the transition({ when }) gate. currentUrl/Params
283
+ // are absent on this full-render path (no navigation snapshot); useActionState
284
+ // ids are block-scoped, so only a direct action id is available here.
285
+ // actionUrl is the page the action was submitted from (this request's url).
286
+ const peReqCtx = getRequestContext();
287
+ peReqCtx._gateActionId = directActionId ?? undefined;
288
+ peReqCtx._gateActionUrl = new URL(url);
289
+ peReqCtx._gateActionResult = actionResult;
290
+ peReqCtx._gateFormData = formData;
291
+
281
292
  const payload: RscPayload = {
282
293
  metadata: {
283
294
  pathname: url.pathname,
284
295
  routerId: ctx.router.id,
285
296
  basename: ctx.router.basename,
286
- segments: match.segments,
297
+ segments: gateTransitions(
298
+ match.segments,
299
+ getRequestContext(),
300
+ ctx.router.onError,
301
+ ),
287
302
  matched: match.matched,
288
303
  diff: match.diff,
289
304
  resolvedIds: match.resolvedIds,
@@ -395,12 +410,26 @@ async function renderPeErrorBoundary<TEnv>(
395
410
 
396
411
  setRequestContextParams(errorResult.params, errorResult.routeName);
397
412
 
413
+ // Only the failing action id + URL are in scope here (no formData/actionResult
414
+ // thread into this helper). Expose the URL only when the action id is known:
415
+ // this helper also handles malformed form bodies before action detection, and
416
+ // those should not look like action-triggered renders to transition({ when }).
417
+ if (actionId != null) {
418
+ const peErrCtx = getRequestContext();
419
+ peErrCtx._gateActionId = actionId;
420
+ peErrCtx._gateActionUrl = new URL(url);
421
+ }
422
+
398
423
  const payload: RscPayload = {
399
424
  metadata: {
400
425
  pathname: url.pathname,
401
426
  routerId: ctx.router.id,
402
427
  basename: ctx.router.basename,
403
- segments: errorResult.segments,
428
+ segments: gateTransitions(
429
+ errorResult.segments,
430
+ getRequestContext(),
431
+ ctx.router.onError,
432
+ ),
404
433
  matched: errorResult.matched,
405
434
  diff: errorResult.diff,
406
435
  resolvedIds: errorResult.resolvedIds,
@@ -21,6 +21,7 @@ import {
21
21
  attachLocationStateIfPresent,
22
22
  } from "./helpers.js";
23
23
  import type { HandlerContext } from "./handler-context.js";
24
+ import { gateTransitions } from "./transition-gate.js";
24
25
 
25
26
  export function handleRscRendering<TEnv>(
26
27
  ctx: HandlerContext<TEnv>,
@@ -70,7 +71,7 @@ async function handleRscRenderingInner<TEnv>(
70
71
  pathname: url.pathname,
71
72
  routerId: ctx.router.id,
72
73
  basename: ctx.router.basename,
73
- segments: m.segments,
74
+ segments: gateTransitions(m.segments, reqCtx, ctx.router.onError),
74
75
  matched: m.matched,
75
76
  diff: m.diff,
76
77
  resolvedIds: m.resolvedIds,
@@ -126,7 +127,11 @@ async function handleRscRenderingInner<TEnv>(
126
127
  // intercepted server-side (X-RSC-Reload) and never delivers a
127
128
  // different-router payload to the client.
128
129
  routerId: ctx.router.id,
129
- segments: result.segments,
130
+ segments: gateTransitions(
131
+ result.segments,
132
+ reqCtx,
133
+ ctx.router.onError,
134
+ ),
130
135
  matched: result.matched,
131
136
  diff: result.diff,
132
137
  resolvedIds: result.resolvedIds,
@@ -21,6 +21,7 @@ import {
21
21
  } from "../server/request-context.js";
22
22
  import { appendMetric } from "../router/metrics.js";
23
23
  import { observePhase, PHASES } from "../router/instrument.js";
24
+ import { gateTransitions } from "./transition-gate.js";
24
25
  import type { RscPayload } from "./types.js";
25
26
  import {
26
27
  hasBodyContent,
@@ -363,6 +364,14 @@ async function revalidateAfterActionInner<TEnv>(
363
364
  const reqCtx = getRequestContext();
364
365
  const metricsStore = reqCtx._metricsStore;
365
366
 
367
+ // Expose the action that triggered this revalidation to the transition({ when })
368
+ // gate (covers both the error-boundary and success gate calls below). Mirrors
369
+ // the action fields a revalidate() predicate sees.
370
+ reqCtx._gateActionId = actionContext?.actionId;
371
+ reqCtx._gateActionUrl = actionContext?.actionUrl;
372
+ reqCtx._gateActionResult = actionContext?.actionResult;
373
+ reqCtx._gateFormData = actionContext?.formData;
374
+
366
375
  // Action threw and a boundary matched: render the (already-matched) error
367
376
  // boundary here so it runs inside the route-middleware wrapper, exactly like
368
377
  // the success branch below. setRequestContextParams + the payload mirror the
@@ -376,7 +385,11 @@ async function revalidateAfterActionInner<TEnv>(
376
385
  // routerId exposed for the frontend (current app identity); see
377
386
  // rsc-rendering.ts partial branch.
378
387
  routerId: ctx.router.id,
379
- segments: errorBoundary.segments,
388
+ segments: gateTransitions(
389
+ errorBoundary.segments,
390
+ reqCtx,
391
+ ctx.router.onError,
392
+ ),
380
393
  isPartial: true,
381
394
  matched: errorBoundary.matched,
382
395
  diff: errorBoundary.diff,
@@ -460,7 +473,11 @@ async function revalidateAfterActionInner<TEnv>(
460
473
  // routerId exposed for the frontend (current app identity); see
461
474
  // rsc-rendering.ts partial branch.
462
475
  routerId: ctx.router.id,
463
- segments: matchResult.segments,
476
+ segments: gateTransitions(
477
+ matchResult.segments,
478
+ reqCtx,
479
+ ctx.router.onError,
480
+ ),
464
481
  isPartial: true,
465
482
  matched: matchResult.matched,
466
483
  diff: matchResult.diff,
@@ -0,0 +1,89 @@
1
+ import type { MatchResult } from "../types.js";
2
+ import type { TransitionWhenContext } from "../types/segments.js";
3
+ import type { getRequestContext } from "../server/request-context.js";
4
+ import { invokeOnError } from "../router/error-handling.js";
5
+ import type { OnErrorCallback } from "../types/error-types.js";
6
+
7
+ /**
8
+ * Apply transition({ when }) gates to a payload's segments.
9
+ *
10
+ * The predicates were collected during resolution (keyed by segment id) and
11
+ * stripped from the serialized config; here — after handlers ran and outside any
12
+ * cache scope — we evaluate each and drop the segment's transition when the
13
+ * predicate does not hold, so the navigation streams its loading fallback
14
+ * instead of holding the previous content. A predicate that throws is reported
15
+ * to the router's onError (phase "rendering") and then treated as "do not hold"
16
+ * (conservative), so a buggy predicate degrades to no transition rather than
17
+ * failing the response.
18
+ *
19
+ * Mutating the segments here is safe: the segment cache stores a serialized copy
20
+ * (segment-codec), written during match() BEFORE this gate runs, so dropping a
21
+ * transition never corrupts a cache entry. The flip side is that a cache hit
22
+ * skips resolution, collects no predicate, and replays the cached transition
23
+ * as-is (it was serialized before the gate) — combining transition({ when })
24
+ * with cache() on the same segment freezes the gate to its cached state, so
25
+ * avoid caching a route whose transition decision is request-dependent.
26
+ *
27
+ * Returns the same array (mutated) for inline use at the payload's `segments`
28
+ * field.
29
+ */
30
+ export function gateTransitions(
31
+ segments: MatchResult["segments"],
32
+ ctx: ReturnType<typeof getRequestContext>,
33
+ onError?: OnErrorCallback,
34
+ ): MatchResult["segments"] {
35
+ const predicates = ctx._transitionWhen;
36
+ if (predicates && predicates.length) {
37
+ for (const { id, when } of predicates) {
38
+ let drop: boolean;
39
+ try {
40
+ // Assemble the ShouldRevalidateFn-shaped predicate context from the
41
+ // request context. Source fields (currentUrl/currentParams/fromRouteName)
42
+ // were stashed at match time from the navigation snapshot; action fields
43
+ // at the action-bearing gate call sites. nextUrl/nextParams/toRouteName/
44
+ // method/get/env come straight off ctx (setRequestContextParams ran
45
+ // before the gate). Source/action fields are undefined when absent —
46
+ // never fabricated (see TransitionWhenContext).
47
+ const whenCtx: TransitionWhenContext = {
48
+ currentUrl: ctx._gateCurrentUrl,
49
+ currentParams: ctx._gateCurrentParams,
50
+ fromRouteName:
51
+ ctx._prevRouteKey as TransitionWhenContext["fromRouteName"],
52
+ nextUrl: ctx.url,
53
+ nextParams: ctx.params,
54
+ toRouteName: ctx.routeName,
55
+ actionId: ctx._gateActionId,
56
+ actionUrl: ctx._gateActionUrl,
57
+ actionResult: ctx._gateActionResult,
58
+ formData: ctx._gateFormData,
59
+ method: ctx.request.method,
60
+ get: ctx.get,
61
+ env: ctx.env,
62
+ };
63
+ drop = when(whenCtx) === false;
64
+ } catch (error) {
65
+ // A throwing predicate must not fail the response: report it and treat
66
+ // the transition as gated off (do not hold). invokeOnError no-ops when
67
+ // onError is undefined.
68
+ drop = true;
69
+ invokeOnError(
70
+ onError,
71
+ error,
72
+ "rendering",
73
+ {
74
+ request: ctx.request,
75
+ url: ctx.url,
76
+ params: ctx.params,
77
+ segmentId: id,
78
+ },
79
+ "RSC",
80
+ );
81
+ }
82
+ if (drop) {
83
+ const seg = segments.find((s) => s.id === id);
84
+ if (seg) seg.transition = undefined;
85
+ }
86
+ }
87
+ }
88
+ return segments;
89
+ }
@@ -316,14 +316,32 @@ export async function renderSegments(
316
316
  resolvedComponent = await component;
317
317
  }
318
318
 
319
- let nodeContent: ReactNode = isRenderableLoading(loading)
320
- ? createElement(RouteContentWrapper, {
321
- key: `suspense-loading-${id}`,
322
- content: getMemoizedContentPromise(resolvedComponent),
323
- fallback: loading,
324
- segmentId: id,
325
- })
326
- : registerLazyRef(resolvedComponent);
319
+ let nodeContent: ReactNode = null;
320
+ if (isRenderableLoading(loading)) {
321
+ // forceAwait (popstate, stale-revalidation, fully-prefetched nav) renders a
322
+ // loading() route with the route content ALREADY resolved, so its
323
+ // RouteContentWrapper Suspender does not suspend for a microtask and flash
324
+ // the loading() fallback on a NORMAL (non-transition) commit. The router
325
+ // data is known-ready on these paths, so awaiting the content here is free.
326
+ // The wrapper tree is unchanged (RouteContentWrapper is still created with
327
+ // the same key/fallback) — only the `content` prop is a resolved node
328
+ // instead of a pending promise, which Suspender renders synchronously. This
329
+ // mirrors the forceAwait loaderData unwrap above; a CLIENT component that
330
+ // suspends on mount inside the content still reveals a fallback (it is not
331
+ // pre-resolved).
332
+ const contentPromise = getMemoizedContentPromise(resolvedComponent);
333
+ const loadingContent: Promise<ReactNode> | ReactNode = forceAwait
334
+ ? await contentPromise
335
+ : contentPromise;
336
+ nodeContent = createElement(RouteContentWrapper, {
337
+ key: `suspense-loading-${id}`,
338
+ content: loadingContent,
339
+ fallback: loading,
340
+ segmentId: id,
341
+ });
342
+ } else {
343
+ nodeContent = registerLazyRef(resolvedComponent);
344
+ }
327
345
 
328
346
  // Wrap with <ViewTransition> if transition config exists (React experimental only).
329
347
  // An empty config ({}) creates a bare <ViewTransition> boundary that participates
@@ -150,6 +150,19 @@ export type InterceptWhenFn<TEnv = any> = (
150
150
  ctx: InterceptSelectorContext<TEnv>,
151
151
  ) => boolean;
152
152
 
153
+ /**
154
+ * Config object passed to intercept() (its 4th argument). `when` gates whether
155
+ * the intercept activates on a soft navigation — a single match-time selector or
156
+ * an array of them (ALL must return true; omit to always activate). This is the
157
+ * intercept counterpart to transition({ when }); both express conditional
158
+ * behavior as a config field rather than a separate DSL helper.
159
+ *
160
+ * @internal This type is an implementation detail and may change without notice.
161
+ */
162
+ export interface InterceptConfig<TEnv = any> {
163
+ when?: InterceptWhenFn<TEnv> | InterceptWhenFn<TEnv>[];
164
+ }
165
+
153
166
  /**
154
167
  * Intercept entry stored in EntryData
155
168
  * Contains the slot name, route to intercept, and handler
@@ -48,6 +48,7 @@ import { getFetchableLoader } from "./fetchable-loader-store.js";
48
48
  import type { SegmentCacheStore } from "../cache/types.js";
49
49
  import type { Theme, ResolvedThemeConfig } from "../theme/types.js";
50
50
  import type { ExecutionContext, RequestScope } from "../types/request-scope.js";
51
+ import type { TransitionWhenFn } from "../types/segments.js";
51
52
  import type { ResolvedTracing } from "../router/tracing.js";
52
53
  import { fireAndForgetWaitUntil } from "../types/request-scope.js";
53
54
  import {
@@ -161,6 +162,15 @@ export interface RequestContext<
161
162
  /** @internal Handle store for tracking handle data across segments */
162
163
  _handleStore: HandleStore;
163
164
 
165
+ /**
166
+ * @internal transition({ when }) predicates for segments matched this request,
167
+ * keyed by segment id. Collected during resolution (the function is stripped
168
+ * from the serialized segment config), then evaluated post-handler in
169
+ * rsc-rendering — outside any cache scope — to drop the transition of any
170
+ * segment whose predicate returns false.
171
+ */
172
+ _transitionWhen?: Array<{ id: string; when: TransitionWhenFn }>;
173
+
164
174
  /** @internal Cache store for segment caching (optional, used by CacheScope) */
165
175
  _cacheStore?: SegmentCacheStore;
166
176
 
@@ -292,6 +302,20 @@ export interface RequestContext<
292
302
  /** @internal Previous route key (from the navigation source), used for revalidation */
293
303
  _prevRouteKey?: string;
294
304
 
305
+ /**
306
+ * @internal Navigation/action source data the transition({ when }) gate reads
307
+ * to build its ShouldRevalidateFn-shaped predicate context. currentUrl/Params
308
+ * come from the navigation snapshot (set at match time); action* are stashed
309
+ * at the action-bearing gate call sites. All undefined when there is no source
310
+ * (initial full load) or no action (plain navigation).
311
+ */
312
+ _gateCurrentUrl?: URL;
313
+ _gateCurrentParams?: Record<string, string>;
314
+ _gateActionId?: string;
315
+ _gateActionUrl?: URL;
316
+ _gateActionResult?: unknown;
317
+ _gateFormData?: FormData;
318
+
295
319
  /**
296
320
  * @internal Render barrier for experimental `rendered()` API.
297
321
  * Resolves when all non-loader segments have settled and handle data
@@ -413,6 +437,7 @@ export type PublicRequestContext<
413
437
  | "setCookie"
414
438
  | "deleteCookie"
415
439
  | "_handleStore"
440
+ | "_transitionWhen"
416
441
  | "_cacheStore"
417
442
  | "_explicitTaggedStores"
418
443
  | "_requestTags"
@@ -422,6 +447,12 @@ export type PublicRequestContext<
422
447
  | "_locationState"
423
448
  | "_routeName"
424
449
  | "_prevRouteKey"
450
+ | "_gateCurrentUrl"
451
+ | "_gateCurrentParams"
452
+ | "_gateActionId"
453
+ | "_gateActionUrl"
454
+ | "_gateActionResult"
455
+ | "_gateFormData"
425
456
  | "_reportedErrors"
426
457
  | "_renderBarrier"
427
458
  | "_resolveRenderBarrier"
@@ -527,11 +558,17 @@ export function setRequestContextParams(
527
558
  */
528
559
  export function setRequestContextPrevRouteKey(
529
560
  prevRouteKey: string | undefined,
561
+ currentUrl?: URL,
562
+ currentParams?: Record<string, string>,
530
563
  ): void {
531
564
  const ctx = requestContextStorage.getStore();
532
- if (ctx && prevRouteKey !== undefined) {
533
- ctx._prevRouteKey = prevRouteKey;
534
- }
565
+ if (!ctx) return;
566
+ if (prevRouteKey !== undefined) ctx._prevRouteKey = prevRouteKey;
567
+ // Source URL/params for the transition({ when }) gate (effectiveFromUrl /
568
+ // effectiveFromMatch.params from the navigation snapshot). Same write point as
569
+ // _prevRouteKey, which doubles as fromRouteName.
570
+ if (currentUrl !== undefined) ctx._gateCurrentUrl = currentUrl;
571
+ if (currentParams !== undefined) ctx._gateCurrentParams = currentParams;
535
572
  }
536
573
 
537
574
  /**
@@ -842,6 +879,7 @@ export function createRequestContext<TEnv>(
842
879
  method: request.method,
843
880
 
844
881
  _handleStore: handleStore,
882
+ _transitionWhen: [],
845
883
  _cacheStore: cacheStore,
846
884
  _explicitTaggedStores: explicitTaggedStores,
847
885
  _requestTags: new Set<string>(),
@@ -47,6 +47,12 @@ export type {
47
47
  TestLoaderContext,
48
48
  } from "./run-loader.js";
49
49
 
50
+ export { runTransitionWhen } from "./run-transition-when.js";
51
+ export type {
52
+ RunTransitionWhenOptions,
53
+ RunTransitionWhenResult,
54
+ } from "./run-transition-when.js";
55
+
50
56
  export { dispatch } from "./dispatch.js";
51
57
  export type { DispatchOptions } from "./dispatch.js";
52
58