@rangojs/router 0.0.0-experimental.7dc955ec → 0.0.0-experimental.7f5e6b80

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 (1246) hide show
  1. package/AGENTS.md +8 -4
  2. package/README.md +303 -741
  3. package/dist/__internal.d.ts +83 -0
  4. package/dist/__internal.d.ts.map +1 -0
  5. package/dist/__internal.js +19 -0
  6. package/dist/__internal.js.map +1 -0
  7. package/dist/__mocks__/version.d.ts +7 -0
  8. package/dist/__mocks__/version.d.ts.map +1 -0
  9. package/dist/__mocks__/version.js +7 -0
  10. package/dist/__mocks__/version.js.map +1 -0
  11. package/dist/__tests__/client-href.test.d.ts +2 -0
  12. package/dist/__tests__/client-href.test.d.ts.map +1 -0
  13. package/dist/__tests__/client-href.test.js +74 -0
  14. package/dist/__tests__/client-href.test.js.map +1 -0
  15. package/dist/__tests__/component-utils.test.d.ts +2 -0
  16. package/dist/__tests__/component-utils.test.d.ts.map +1 -0
  17. package/dist/__tests__/component-utils.test.js +51 -0
  18. package/dist/__tests__/component-utils.test.js.map +1 -0
  19. package/dist/__tests__/event-controller.test.d.ts +2 -0
  20. package/dist/__tests__/event-controller.test.d.ts.map +1 -0
  21. package/dist/__tests__/event-controller.test.js +538 -0
  22. package/dist/__tests__/event-controller.test.js.map +1 -0
  23. package/dist/__tests__/helpers/route-tree.d.ts +118 -0
  24. package/dist/__tests__/helpers/route-tree.d.ts.map +1 -0
  25. package/dist/__tests__/helpers/route-tree.js +374 -0
  26. package/dist/__tests__/helpers/route-tree.js.map +1 -0
  27. package/dist/__tests__/match-result.test.d.ts +2 -0
  28. package/dist/__tests__/match-result.test.d.ts.map +1 -0
  29. package/dist/__tests__/match-result.test.js +154 -0
  30. package/dist/__tests__/match-result.test.js.map +1 -0
  31. package/dist/__tests__/navigation-store.test.d.ts +2 -0
  32. package/dist/__tests__/navigation-store.test.d.ts.map +1 -0
  33. package/dist/__tests__/navigation-store.test.js +440 -0
  34. package/dist/__tests__/navigation-store.test.js.map +1 -0
  35. package/dist/__tests__/partial-update.test.d.ts +2 -0
  36. package/dist/__tests__/partial-update.test.d.ts.map +1 -0
  37. package/dist/__tests__/partial-update.test.js +1009 -0
  38. package/dist/__tests__/partial-update.test.js.map +1 -0
  39. package/dist/__tests__/reverse-types.test.d.ts +8 -0
  40. package/dist/__tests__/reverse-types.test.d.ts.map +1 -0
  41. package/dist/__tests__/reverse-types.test.js +656 -0
  42. package/dist/__tests__/reverse-types.test.js.map +1 -0
  43. package/dist/__tests__/route-definition.test.d.ts +2 -0
  44. package/dist/__tests__/route-definition.test.d.ts.map +1 -0
  45. package/dist/__tests__/route-definition.test.js +55 -0
  46. package/dist/__tests__/route-definition.test.js.map +1 -0
  47. package/dist/__tests__/router-helpers.test.d.ts +2 -0
  48. package/dist/__tests__/router-helpers.test.d.ts.map +1 -0
  49. package/dist/__tests__/router-helpers.test.js +377 -0
  50. package/dist/__tests__/router-helpers.test.js.map +1 -0
  51. package/dist/__tests__/router-integration-2.test.d.ts +2 -0
  52. package/dist/__tests__/router-integration-2.test.d.ts.map +1 -0
  53. package/dist/__tests__/router-integration-2.test.js +426 -0
  54. package/dist/__tests__/router-integration-2.test.js.map +1 -0
  55. package/dist/__tests__/router-integration.test.d.ts +2 -0
  56. package/dist/__tests__/router-integration.test.d.ts.map +1 -0
  57. package/dist/__tests__/router-integration.test.js +1051 -0
  58. package/dist/__tests__/router-integration.test.js.map +1 -0
  59. package/dist/__tests__/search-params.test.d.ts +5 -0
  60. package/dist/__tests__/search-params.test.d.ts.map +1 -0
  61. package/dist/__tests__/search-params.test.js +306 -0
  62. package/dist/__tests__/search-params.test.js.map +1 -0
  63. package/dist/__tests__/segment-system.test.d.ts +2 -0
  64. package/dist/__tests__/segment-system.test.d.ts.map +1 -0
  65. package/dist/__tests__/segment-system.test.js +627 -0
  66. package/dist/__tests__/segment-system.test.js.map +1 -0
  67. package/dist/__tests__/static-handler-types.test.d.ts +8 -0
  68. package/dist/__tests__/static-handler-types.test.d.ts.map +1 -0
  69. package/dist/__tests__/static-handler-types.test.js +63 -0
  70. package/dist/__tests__/static-handler-types.test.js.map +1 -0
  71. package/dist/__tests__/urls.test.d.ts +2 -0
  72. package/dist/__tests__/urls.test.d.ts.map +1 -0
  73. package/dist/__tests__/urls.test.js +421 -0
  74. package/dist/__tests__/urls.test.js.map +1 -0
  75. package/dist/__tests__/use-mount.test.d.ts +2 -0
  76. package/dist/__tests__/use-mount.test.d.ts.map +1 -0
  77. package/dist/__tests__/use-mount.test.js +35 -0
  78. package/dist/__tests__/use-mount.test.js.map +1 -0
  79. package/dist/bin/rango.d.ts +2 -0
  80. package/dist/bin/rango.d.ts.map +1 -0
  81. package/dist/bin/rango.js +724 -183
  82. package/dist/bin/rango.js.map +1 -0
  83. package/dist/browser/event-controller.d.ts +191 -0
  84. package/dist/browser/event-controller.d.ts.map +1 -0
  85. package/dist/browser/event-controller.js +559 -0
  86. package/dist/browser/event-controller.js.map +1 -0
  87. package/dist/browser/index.d.ts +2 -0
  88. package/dist/browser/index.d.ts.map +1 -0
  89. package/dist/browser/index.js +14 -0
  90. package/dist/browser/index.js.map +1 -0
  91. package/dist/browser/link-interceptor.d.ts +38 -0
  92. package/dist/browser/link-interceptor.d.ts.map +1 -0
  93. package/dist/browser/link-interceptor.js +99 -0
  94. package/dist/browser/link-interceptor.js.map +1 -0
  95. package/dist/browser/logging.d.ts +10 -0
  96. package/dist/browser/logging.d.ts.map +1 -0
  97. package/dist/browser/logging.js +29 -0
  98. package/dist/browser/logging.js.map +1 -0
  99. package/dist/browser/lru-cache.d.ts +17 -0
  100. package/dist/browser/lru-cache.d.ts.map +1 -0
  101. package/dist/browser/lru-cache.js +50 -0
  102. package/dist/browser/lru-cache.js.map +1 -0
  103. package/dist/browser/merge-segment-loaders.d.ts +39 -0
  104. package/dist/browser/merge-segment-loaders.d.ts.map +1 -0
  105. package/dist/browser/merge-segment-loaders.js +102 -0
  106. package/dist/browser/merge-segment-loaders.js.map +1 -0
  107. package/dist/browser/navigation-bridge.d.ts +102 -0
  108. package/dist/browser/navigation-bridge.d.ts.map +1 -0
  109. package/dist/browser/navigation-bridge.js +708 -0
  110. package/dist/browser/navigation-bridge.js.map +1 -0
  111. package/dist/browser/navigation-client.d.ts +25 -0
  112. package/dist/browser/navigation-client.d.ts.map +1 -0
  113. package/dist/browser/navigation-client.js +157 -0
  114. package/dist/browser/navigation-client.js.map +1 -0
  115. package/dist/browser/navigation-store.d.ts +101 -0
  116. package/dist/browser/navigation-store.d.ts.map +1 -0
  117. package/dist/browser/navigation-store.js +625 -0
  118. package/dist/browser/navigation-store.js.map +1 -0
  119. package/dist/browser/partial-update.d.ts +75 -0
  120. package/dist/browser/partial-update.d.ts.map +1 -0
  121. package/dist/browser/partial-update.js +426 -0
  122. package/dist/browser/partial-update.js.map +1 -0
  123. package/dist/browser/react/Link.d.ts +86 -0
  124. package/dist/browser/react/Link.d.ts.map +1 -0
  125. package/dist/browser/react/Link.js +128 -0
  126. package/dist/browser/react/Link.js.map +1 -0
  127. package/dist/browser/react/NavigationProvider.d.ts +63 -0
  128. package/dist/browser/react/NavigationProvider.d.ts.map +1 -0
  129. package/dist/browser/react/NavigationProvider.js +216 -0
  130. package/dist/browser/react/NavigationProvider.js.map +1 -0
  131. package/dist/browser/react/ScrollRestoration.d.ts +75 -0
  132. package/dist/browser/react/ScrollRestoration.d.ts.map +1 -0
  133. package/dist/browser/react/ScrollRestoration.js +57 -0
  134. package/dist/browser/react/ScrollRestoration.js.map +1 -0
  135. package/dist/browser/react/context.d.ts +46 -0
  136. package/dist/browser/react/context.d.ts.map +1 -0
  137. package/dist/browser/react/context.js +10 -0
  138. package/dist/browser/react/context.js.map +1 -0
  139. package/dist/browser/react/index.d.ts +11 -0
  140. package/dist/browser/react/index.d.ts.map +1 -0
  141. package/dist/browser/react/index.js +22 -0
  142. package/dist/browser/react/index.js.map +1 -0
  143. package/dist/browser/react/location-state-shared.d.ts +63 -0
  144. package/dist/browser/react/location-state-shared.d.ts.map +1 -0
  145. package/dist/browser/react/location-state-shared.js +81 -0
  146. package/dist/browser/react/location-state-shared.js.map +1 -0
  147. package/dist/browser/react/location-state.d.ts +23 -0
  148. package/dist/browser/react/location-state.d.ts.map +1 -0
  149. package/dist/browser/react/location-state.js +29 -0
  150. package/dist/browser/react/location-state.js.map +1 -0
  151. package/dist/browser/react/mount-context.d.ts +24 -0
  152. package/dist/browser/react/mount-context.d.ts.map +1 -0
  153. package/dist/browser/react/mount-context.js +24 -0
  154. package/dist/browser/react/mount-context.js.map +1 -0
  155. package/dist/browser/react/use-action.d.ts +64 -0
  156. package/dist/browser/react/use-action.d.ts.map +1 -0
  157. package/dist/browser/react/use-action.js +134 -0
  158. package/dist/browser/react/use-action.js.map +1 -0
  159. package/dist/browser/react/use-client-cache.d.ts +41 -0
  160. package/dist/browser/react/use-client-cache.d.ts.map +1 -0
  161. package/{src/browser/react/use-client-cache.ts → dist/browser/react/use-client-cache.js} +9 -28
  162. package/dist/browser/react/use-client-cache.js.map +1 -0
  163. package/dist/browser/react/use-handle.d.ts +31 -0
  164. package/dist/browser/react/use-handle.d.ts.map +1 -0
  165. package/dist/browser/react/use-handle.js +144 -0
  166. package/dist/browser/react/use-handle.js.map +1 -0
  167. package/dist/browser/react/use-href.d.ts +33 -0
  168. package/dist/browser/react/use-href.d.ts.map +1 -0
  169. package/dist/browser/react/use-href.js +39 -0
  170. package/dist/browser/react/use-href.js.map +1 -0
  171. package/dist/browser/react/use-link-status.d.ts +37 -0
  172. package/dist/browser/react/use-link-status.d.ts.map +1 -0
  173. package/dist/browser/react/use-link-status.js +99 -0
  174. package/dist/browser/react/use-link-status.js.map +1 -0
  175. package/dist/browser/react/use-mount.d.ts +25 -0
  176. package/dist/browser/react/use-mount.d.ts.map +1 -0
  177. package/dist/browser/react/use-mount.js +30 -0
  178. package/dist/browser/react/use-mount.js.map +1 -0
  179. package/dist/browser/react/use-navigation.d.ts +27 -0
  180. package/dist/browser/react/use-navigation.d.ts.map +1 -0
  181. package/dist/browser/react/use-navigation.js +87 -0
  182. package/dist/browser/react/use-navigation.js.map +1 -0
  183. package/dist/browser/react/use-segments.d.ts +38 -0
  184. package/dist/browser/react/use-segments.d.ts.map +1 -0
  185. package/dist/browser/react/use-segments.js +130 -0
  186. package/dist/browser/react/use-segments.js.map +1 -0
  187. package/dist/browser/request-controller.d.ts +26 -0
  188. package/dist/browser/request-controller.d.ts.map +1 -0
  189. package/dist/browser/request-controller.js +147 -0
  190. package/dist/browser/request-controller.js.map +1 -0
  191. package/dist/browser/rsc-router.d.ts +129 -0
  192. package/dist/browser/rsc-router.d.ts.map +1 -0
  193. package/dist/browser/rsc-router.js +195 -0
  194. package/dist/browser/rsc-router.js.map +1 -0
  195. package/dist/browser/scroll-restoration.d.ts +93 -0
  196. package/dist/browser/scroll-restoration.d.ts.map +1 -0
  197. package/dist/browser/scroll-restoration.js +321 -0
  198. package/dist/browser/scroll-restoration.js.map +1 -0
  199. package/dist/browser/segment-structure-assert.d.ts +17 -0
  200. package/dist/browser/segment-structure-assert.d.ts.map +1 -0
  201. package/dist/browser/segment-structure-assert.js +59 -0
  202. package/dist/browser/segment-structure-assert.js.map +1 -0
  203. package/dist/browser/server-action-bridge.d.ts +26 -0
  204. package/dist/browser/server-action-bridge.d.ts.map +1 -0
  205. package/dist/browser/server-action-bridge.js +668 -0
  206. package/dist/browser/server-action-bridge.js.map +1 -0
  207. package/dist/browser/shallow.d.ts +12 -0
  208. package/dist/browser/shallow.d.ts.map +1 -0
  209. package/dist/browser/shallow.js +34 -0
  210. package/dist/browser/shallow.js.map +1 -0
  211. package/dist/browser/types.d.ts +369 -0
  212. package/dist/browser/types.d.ts.map +1 -0
  213. package/dist/browser/types.js +2 -0
  214. package/dist/browser/types.js.map +1 -0
  215. package/dist/build/__tests__/generate-cli.test.d.ts +2 -0
  216. package/dist/build/__tests__/generate-cli.test.d.ts.map +1 -0
  217. package/dist/build/__tests__/generate-cli.test.js +237 -0
  218. package/dist/build/__tests__/generate-cli.test.js.map +1 -0
  219. package/dist/build/__tests__/generate-manifest.test.d.ts +2 -0
  220. package/dist/build/__tests__/generate-manifest.test.d.ts.map +1 -0
  221. package/dist/build/__tests__/generate-manifest.test.js +119 -0
  222. package/dist/build/__tests__/generate-manifest.test.js.map +1 -0
  223. package/dist/build/__tests__/generate-route-types.test.d.ts +2 -0
  224. package/dist/build/__tests__/generate-route-types.test.d.ts.map +1 -0
  225. package/dist/build/__tests__/generate-route-types.test.js +620 -0
  226. package/dist/build/__tests__/generate-route-types.test.js.map +1 -0
  227. package/dist/build/__tests__/per-router-manifest.test.d.ts +2 -0
  228. package/dist/build/__tests__/per-router-manifest.test.d.ts.map +1 -0
  229. package/dist/build/__tests__/per-router-manifest.test.js +308 -0
  230. package/dist/build/__tests__/per-router-manifest.test.js.map +1 -0
  231. package/dist/build/generate-manifest.d.ts +81 -0
  232. package/dist/build/generate-manifest.d.ts.map +1 -0
  233. package/dist/build/generate-manifest.js +276 -0
  234. package/dist/build/generate-manifest.js.map +1 -0
  235. package/dist/build/generate-route-types.d.ts +115 -0
  236. package/dist/build/generate-route-types.d.ts.map +1 -0
  237. package/dist/build/generate-route-types.js +740 -0
  238. package/dist/build/generate-route-types.js.map +1 -0
  239. package/dist/build/index.d.ts +21 -0
  240. package/dist/build/index.d.ts.map +1 -0
  241. package/dist/build/index.js +21 -0
  242. package/dist/build/index.js.map +1 -0
  243. package/dist/build/route-trie.d.ts +71 -0
  244. package/dist/build/route-trie.d.ts.map +1 -0
  245. package/dist/build/route-trie.js +175 -0
  246. package/dist/build/route-trie.js.map +1 -0
  247. package/dist/cache/__tests__/cache-scope.test.d.ts +2 -0
  248. package/dist/cache/__tests__/cache-scope.test.d.ts.map +1 -0
  249. package/dist/cache/__tests__/cache-scope.test.js +208 -0
  250. package/dist/cache/__tests__/cache-scope.test.js.map +1 -0
  251. package/dist/cache/__tests__/document-cache.test.d.ts +2 -0
  252. package/dist/cache/__tests__/document-cache.test.d.ts.map +1 -0
  253. package/dist/cache/__tests__/document-cache.test.js +345 -0
  254. package/dist/cache/__tests__/document-cache.test.js.map +1 -0
  255. package/dist/cache/__tests__/memory-segment-store.test.d.ts +2 -0
  256. package/dist/cache/__tests__/memory-segment-store.test.d.ts.map +1 -0
  257. package/dist/cache/__tests__/memory-segment-store.test.js +425 -0
  258. package/dist/cache/__tests__/memory-segment-store.test.js.map +1 -0
  259. package/dist/cache/__tests__/memory-store.test.d.ts +2 -0
  260. package/dist/cache/__tests__/memory-store.test.d.ts.map +1 -0
  261. package/dist/cache/__tests__/memory-store.test.js +367 -0
  262. package/dist/cache/__tests__/memory-store.test.js.map +1 -0
  263. package/dist/cache/cache-scope.d.ts +102 -0
  264. package/dist/cache/cache-scope.d.ts.map +1 -0
  265. package/dist/cache/cache-scope.js +440 -0
  266. package/dist/cache/cache-scope.js.map +1 -0
  267. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts +2 -0
  268. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts.map +1 -0
  269. package/dist/cache/cf/__tests__/cf-cache-store.test.js +330 -0
  270. package/dist/cache/cf/__tests__/cf-cache-store.test.js.map +1 -0
  271. package/dist/cache/cf/cf-cache-store.d.ts +165 -0
  272. package/dist/cache/cf/cf-cache-store.d.ts.map +1 -0
  273. package/dist/cache/cf/cf-cache-store.js +242 -0
  274. package/dist/cache/cf/cf-cache-store.js.map +1 -0
  275. package/dist/cache/cf/index.d.ts +14 -0
  276. package/dist/cache/cf/index.d.ts.map +1 -0
  277. package/dist/cache/cf/index.js +17 -0
  278. package/dist/cache/cf/index.js.map +1 -0
  279. package/dist/cache/document-cache.d.ts +64 -0
  280. package/dist/cache/document-cache.d.ts.map +1 -0
  281. package/dist/cache/document-cache.js +228 -0
  282. package/dist/cache/document-cache.js.map +1 -0
  283. package/dist/cache/index.d.ts +19 -0
  284. package/dist/cache/index.d.ts.map +1 -0
  285. package/dist/cache/index.js +21 -0
  286. package/dist/cache/index.js.map +1 -0
  287. package/dist/cache/memory-segment-store.d.ts +110 -0
  288. package/dist/cache/memory-segment-store.d.ts.map +1 -0
  289. package/dist/cache/memory-segment-store.js +117 -0
  290. package/dist/cache/memory-segment-store.js.map +1 -0
  291. package/dist/cache/memory-store.d.ts +41 -0
  292. package/dist/cache/memory-store.d.ts.map +1 -0
  293. package/dist/cache/memory-store.js +191 -0
  294. package/dist/cache/memory-store.js.map +1 -0
  295. package/dist/cache/types.d.ts +317 -0
  296. package/dist/cache/types.d.ts.map +1 -0
  297. package/dist/cache/types.js +12 -0
  298. package/dist/cache/types.js.map +1 -0
  299. package/dist/client.d.ts +248 -0
  300. package/dist/client.d.ts.map +1 -0
  301. package/dist/client.js +367 -0
  302. package/dist/client.js.map +1 -0
  303. package/dist/client.rsc.d.ts +26 -0
  304. package/dist/client.rsc.d.ts.map +1 -0
  305. package/dist/client.rsc.js +46 -0
  306. package/dist/client.rsc.js.map +1 -0
  307. package/dist/component-utils.d.ts +36 -0
  308. package/dist/component-utils.d.ts.map +1 -0
  309. package/dist/component-utils.js +61 -0
  310. package/dist/component-utils.js.map +1 -0
  311. package/dist/components/DefaultDocument.d.ts +13 -0
  312. package/dist/components/DefaultDocument.d.ts.map +1 -0
  313. package/dist/components/DefaultDocument.js +15 -0
  314. package/dist/components/DefaultDocument.js.map +1 -0
  315. package/dist/debug.d.ts +58 -0
  316. package/dist/debug.d.ts.map +1 -0
  317. package/dist/debug.js +157 -0
  318. package/dist/debug.js.map +1 -0
  319. package/dist/default-error-boundary.d.ts +11 -0
  320. package/dist/default-error-boundary.d.ts.map +1 -0
  321. package/dist/default-error-boundary.js +45 -0
  322. package/dist/default-error-boundary.js.map +1 -0
  323. package/dist/deps/browser.d.ts +2 -0
  324. package/dist/deps/browser.d.ts.map +1 -0
  325. package/dist/deps/browser.js +3 -0
  326. package/dist/deps/browser.js.map +1 -0
  327. package/dist/deps/html-stream-client.d.ts +2 -0
  328. package/dist/deps/html-stream-client.d.ts.map +1 -0
  329. package/dist/deps/html-stream-client.js +3 -0
  330. package/dist/deps/html-stream-client.js.map +1 -0
  331. package/dist/deps/html-stream-server.d.ts +2 -0
  332. package/dist/deps/html-stream-server.d.ts.map +1 -0
  333. package/dist/deps/html-stream-server.js +3 -0
  334. package/dist/deps/html-stream-server.js.map +1 -0
  335. package/dist/deps/rsc.d.ts +2 -0
  336. package/dist/deps/rsc.d.ts.map +1 -0
  337. package/dist/deps/rsc.js +4 -0
  338. package/dist/deps/rsc.js.map +1 -0
  339. package/dist/deps/ssr.d.ts +2 -0
  340. package/dist/deps/ssr.d.ts.map +1 -0
  341. package/dist/deps/ssr.js +3 -0
  342. package/dist/deps/ssr.js.map +1 -0
  343. package/dist/errors.d.ts +174 -0
  344. package/dist/errors.d.ts.map +1 -0
  345. package/dist/errors.js +241 -0
  346. package/dist/errors.js.map +1 -0
  347. package/dist/handle.d.ts +78 -0
  348. package/dist/handle.d.ts.map +1 -0
  349. package/dist/handle.js +82 -0
  350. package/dist/handle.js.map +1 -0
  351. package/dist/handles/MetaTags.d.ts +14 -0
  352. package/dist/handles/MetaTags.d.ts.map +1 -0
  353. package/dist/handles/MetaTags.js +136 -0
  354. package/dist/handles/MetaTags.js.map +1 -0
  355. package/{src/handles/index.ts → dist/handles/index.d.ts} +1 -2
  356. package/dist/handles/index.d.ts.map +1 -0
  357. package/dist/handles/index.js +6 -0
  358. package/dist/handles/index.js.map +1 -0
  359. package/dist/handles/meta.d.ts +39 -0
  360. package/dist/handles/meta.d.ts.map +1 -0
  361. package/dist/handles/meta.js +202 -0
  362. package/dist/handles/meta.js.map +1 -0
  363. package/dist/host/__tests__/errors.test.d.ts +2 -0
  364. package/dist/host/__tests__/errors.test.d.ts.map +1 -0
  365. package/dist/host/__tests__/errors.test.js +76 -0
  366. package/dist/host/__tests__/errors.test.js.map +1 -0
  367. package/dist/host/__tests__/pattern-comprehensive.test.d.ts +2 -0
  368. package/dist/host/__tests__/pattern-comprehensive.test.d.ts.map +1 -0
  369. package/dist/host/__tests__/pattern-comprehensive.test.js +732 -0
  370. package/dist/host/__tests__/pattern-comprehensive.test.js.map +1 -0
  371. package/dist/host/__tests__/pattern-matcher.test.d.ts +2 -0
  372. package/dist/host/__tests__/pattern-matcher.test.d.ts.map +1 -0
  373. package/dist/host/__tests__/pattern-matcher.test.js +251 -0
  374. package/dist/host/__tests__/pattern-matcher.test.js.map +1 -0
  375. package/dist/host/__tests__/router.test.d.ts +2 -0
  376. package/dist/host/__tests__/router.test.d.ts.map +1 -0
  377. package/dist/host/__tests__/router.test.js +241 -0
  378. package/dist/host/__tests__/router.test.js.map +1 -0
  379. package/dist/host/__tests__/testing.test.d.ts +2 -0
  380. package/dist/host/__tests__/testing.test.d.ts.map +1 -0
  381. package/dist/host/__tests__/testing.test.js +64 -0
  382. package/dist/host/__tests__/testing.test.js.map +1 -0
  383. package/dist/host/__tests__/utils.test.d.ts +2 -0
  384. package/dist/host/__tests__/utils.test.d.ts.map +1 -0
  385. package/dist/host/__tests__/utils.test.js +29 -0
  386. package/dist/host/__tests__/utils.test.js.map +1 -0
  387. package/dist/host/cookie-handler.d.ts +34 -0
  388. package/dist/host/cookie-handler.d.ts.map +1 -0
  389. package/dist/host/cookie-handler.js +124 -0
  390. package/dist/host/cookie-handler.js.map +1 -0
  391. package/dist/host/errors.d.ts +56 -0
  392. package/dist/host/errors.d.ts.map +1 -0
  393. package/dist/host/errors.js +79 -0
  394. package/dist/host/errors.js.map +1 -0
  395. package/dist/host/index.d.ts +29 -0
  396. package/dist/host/index.d.ts.map +1 -0
  397. package/dist/host/index.js +32 -0
  398. package/dist/host/index.js.map +1 -0
  399. package/dist/host/pattern-matcher.d.ts +36 -0
  400. package/dist/host/pattern-matcher.d.ts.map +1 -0
  401. package/dist/host/pattern-matcher.js +172 -0
  402. package/dist/host/pattern-matcher.js.map +1 -0
  403. package/dist/host/router.d.ts +26 -0
  404. package/dist/host/router.d.ts.map +1 -0
  405. package/dist/host/router.js +218 -0
  406. package/dist/host/router.js.map +1 -0
  407. package/dist/host/testing.d.ts +36 -0
  408. package/dist/host/testing.d.ts.map +1 -0
  409. package/dist/host/testing.js +55 -0
  410. package/dist/host/testing.js.map +1 -0
  411. package/dist/host/types.d.ts +115 -0
  412. package/dist/host/types.d.ts.map +1 -0
  413. package/dist/host/types.js +7 -0
  414. package/dist/host/types.js.map +1 -0
  415. package/dist/host/utils.d.ts +21 -0
  416. package/dist/host/utils.d.ts.map +1 -0
  417. package/dist/host/utils.js +23 -0
  418. package/dist/host/utils.js.map +1 -0
  419. package/dist/href-client.d.ts +131 -0
  420. package/dist/href-client.d.ts.map +1 -0
  421. package/dist/href-client.js +64 -0
  422. package/dist/href-client.js.map +1 -0
  423. package/dist/href-context.d.ts +29 -0
  424. package/dist/href-context.d.ts.map +1 -0
  425. package/dist/href-context.js +21 -0
  426. package/dist/href-context.js.map +1 -0
  427. package/dist/index.d.ts +73 -0
  428. package/dist/index.d.ts.map +1 -0
  429. package/dist/index.js +91 -0
  430. package/dist/index.js.map +1 -0
  431. package/dist/index.rsc.d.ts +32 -0
  432. package/dist/index.rsc.d.ts.map +1 -0
  433. package/dist/index.rsc.js +40 -0
  434. package/dist/index.rsc.js.map +1 -0
  435. package/dist/internal-debug.d.ts +2 -0
  436. package/dist/internal-debug.d.ts.map +1 -0
  437. package/dist/internal-debug.js +5 -0
  438. package/dist/internal-debug.js.map +1 -0
  439. package/dist/loader.d.ts +14 -0
  440. package/dist/loader.d.ts.map +1 -0
  441. package/dist/loader.js +20 -0
  442. package/dist/loader.js.map +1 -0
  443. package/dist/loader.rsc.d.ts +19 -0
  444. package/dist/loader.rsc.d.ts.map +1 -0
  445. package/dist/loader.rsc.js +99 -0
  446. package/dist/loader.rsc.js.map +1 -0
  447. package/{src/network-error-thrower.tsx → dist/network-error-thrower.d.ts} +4 -10
  448. package/dist/network-error-thrower.d.ts.map +1 -0
  449. package/dist/network-error-thrower.js +14 -0
  450. package/dist/network-error-thrower.js.map +1 -0
  451. package/dist/outlet-context.d.ts +13 -0
  452. package/dist/outlet-context.d.ts.map +1 -0
  453. package/dist/outlet-context.js +3 -0
  454. package/dist/outlet-context.js.map +1 -0
  455. package/dist/prerender/__tests__/param-hash.test.d.ts +2 -0
  456. package/dist/prerender/__tests__/param-hash.test.d.ts.map +1 -0
  457. package/dist/prerender/__tests__/param-hash.test.js +148 -0
  458. package/dist/prerender/__tests__/param-hash.test.js.map +1 -0
  459. package/dist/prerender/param-hash.d.ts +16 -0
  460. package/dist/prerender/param-hash.d.ts.map +1 -0
  461. package/dist/prerender/param-hash.js +36 -0
  462. package/dist/prerender/param-hash.js.map +1 -0
  463. package/dist/prerender/store.d.ts +38 -0
  464. package/dist/prerender/store.d.ts.map +1 -0
  465. package/dist/prerender/store.js +61 -0
  466. package/dist/prerender/store.js.map +1 -0
  467. package/dist/prerender.d.ts +66 -0
  468. package/dist/prerender.d.ts.map +1 -0
  469. package/dist/prerender.js +57 -0
  470. package/dist/prerender.js.map +1 -0
  471. package/dist/reverse.d.ts +196 -0
  472. package/dist/reverse.d.ts.map +1 -0
  473. package/dist/reverse.js +78 -0
  474. package/dist/reverse.js.map +1 -0
  475. package/dist/root-error-boundary.d.ts +33 -0
  476. package/dist/root-error-boundary.d.ts.map +1 -0
  477. package/dist/root-error-boundary.js +165 -0
  478. package/dist/root-error-boundary.js.map +1 -0
  479. package/dist/route-content-wrapper.d.ts +46 -0
  480. package/dist/route-content-wrapper.d.ts.map +1 -0
  481. package/dist/route-content-wrapper.js +77 -0
  482. package/dist/route-content-wrapper.js.map +1 -0
  483. package/dist/route-definition.d.ts +421 -0
  484. package/dist/route-definition.d.ts.map +1 -0
  485. package/dist/route-definition.js +868 -0
  486. package/dist/route-definition.js.map +1 -0
  487. package/dist/route-map-builder.d.ts +155 -0
  488. package/dist/route-map-builder.d.ts.map +1 -0
  489. package/dist/route-map-builder.js +237 -0
  490. package/dist/route-map-builder.js.map +1 -0
  491. package/dist/route-types.d.ts +165 -0
  492. package/dist/route-types.d.ts.map +1 -0
  493. package/dist/route-types.js +7 -0
  494. package/dist/route-types.js.map +1 -0
  495. package/dist/router/__tests__/handler-context.test.d.ts +2 -0
  496. package/dist/router/__tests__/handler-context.test.d.ts.map +1 -0
  497. package/dist/router/__tests__/handler-context.test.js +65 -0
  498. package/dist/router/__tests__/handler-context.test.js.map +1 -0
  499. package/dist/router/__tests__/loader-cycle-detection.test.d.ts +2 -0
  500. package/dist/router/__tests__/loader-cycle-detection.test.d.ts.map +1 -0
  501. package/dist/router/__tests__/loader-cycle-detection.test.js +221 -0
  502. package/dist/router/__tests__/loader-cycle-detection.test.js.map +1 -0
  503. package/dist/router/__tests__/match-context.test.d.ts +2 -0
  504. package/dist/router/__tests__/match-context.test.d.ts.map +1 -0
  505. package/dist/router/__tests__/match-context.test.js +92 -0
  506. package/dist/router/__tests__/match-context.test.js.map +1 -0
  507. package/dist/router/__tests__/match-pipelines.test.d.ts +2 -0
  508. package/dist/router/__tests__/match-pipelines.test.d.ts.map +1 -0
  509. package/dist/router/__tests__/match-pipelines.test.js +417 -0
  510. package/dist/router/__tests__/match-pipelines.test.js.map +1 -0
  511. package/dist/router/__tests__/match-result.test.d.ts +2 -0
  512. package/dist/router/__tests__/match-result.test.d.ts.map +1 -0
  513. package/dist/router/__tests__/match-result.test.js +457 -0
  514. package/dist/router/__tests__/match-result.test.js.map +1 -0
  515. package/dist/router/__tests__/on-error.test.d.ts +2 -0
  516. package/dist/router/__tests__/on-error.test.d.ts.map +1 -0
  517. package/dist/router/__tests__/on-error.test.js +678 -0
  518. package/dist/router/__tests__/on-error.test.js.map +1 -0
  519. package/dist/router/__tests__/pattern-matching.test.d.ts +2 -0
  520. package/dist/router/__tests__/pattern-matching.test.d.ts.map +1 -0
  521. package/dist/router/__tests__/pattern-matching.test.js +629 -0
  522. package/dist/router/__tests__/pattern-matching.test.js.map +1 -0
  523. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts +2 -0
  524. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts.map +1 -0
  525. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js +155 -0
  526. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js.map +1 -0
  527. package/dist/router/error-handling.d.ts +77 -0
  528. package/dist/router/error-handling.d.ts.map +1 -0
  529. package/dist/router/error-handling.js +202 -0
  530. package/dist/router/error-handling.js.map +1 -0
  531. package/dist/router/handler-context.d.ts +20 -0
  532. package/dist/router/handler-context.d.ts.map +1 -0
  533. package/dist/router/handler-context.js +198 -0
  534. package/dist/router/handler-context.js.map +1 -0
  535. package/dist/router/intercept-resolution.d.ts +66 -0
  536. package/dist/router/intercept-resolution.d.ts.map +1 -0
  537. package/dist/router/intercept-resolution.js +246 -0
  538. package/dist/router/intercept-resolution.js.map +1 -0
  539. package/dist/router/loader-resolution.d.ts +64 -0
  540. package/dist/router/loader-resolution.d.ts.map +1 -0
  541. package/dist/router/loader-resolution.js +284 -0
  542. package/dist/router/loader-resolution.js.map +1 -0
  543. package/dist/router/logging.d.ts +15 -0
  544. package/dist/router/logging.d.ts.map +1 -0
  545. package/dist/router/logging.js +99 -0
  546. package/dist/router/logging.js.map +1 -0
  547. package/dist/router/manifest.d.ts +22 -0
  548. package/dist/router/manifest.d.ts.map +1 -0
  549. package/dist/router/manifest.js +181 -0
  550. package/dist/router/manifest.js.map +1 -0
  551. package/dist/router/match-api.d.ts +35 -0
  552. package/dist/router/match-api.d.ts.map +1 -0
  553. package/dist/router/match-api.js +406 -0
  554. package/dist/router/match-api.js.map +1 -0
  555. package/dist/router/match-context.d.ts +206 -0
  556. package/dist/router/match-context.d.ts.map +1 -0
  557. package/dist/router/match-context.js +17 -0
  558. package/dist/router/match-context.js.map +1 -0
  559. package/dist/router/match-middleware/background-revalidation.d.ts +127 -0
  560. package/dist/router/match-middleware/background-revalidation.d.ts.map +1 -0
  561. package/dist/router/match-middleware/background-revalidation.js +75 -0
  562. package/dist/router/match-middleware/background-revalidation.js.map +1 -0
  563. package/dist/router/match-middleware/cache-lookup.d.ts +112 -0
  564. package/dist/router/match-middleware/cache-lookup.d.ts.map +1 -0
  565. package/dist/router/match-middleware/cache-lookup.js +257 -0
  566. package/dist/router/match-middleware/cache-lookup.js.map +1 -0
  567. package/dist/router/match-middleware/cache-store.d.ts +113 -0
  568. package/dist/router/match-middleware/cache-store.d.ts.map +1 -0
  569. package/dist/router/match-middleware/cache-store.js +108 -0
  570. package/dist/router/match-middleware/cache-store.js.map +1 -0
  571. package/dist/router/match-middleware/index.d.ts +81 -0
  572. package/dist/router/match-middleware/index.d.ts.map +1 -0
  573. package/dist/router/match-middleware/index.js +80 -0
  574. package/dist/router/match-middleware/index.js.map +1 -0
  575. package/dist/router/match-middleware/intercept-resolution.d.ts +117 -0
  576. package/dist/router/match-middleware/intercept-resolution.d.ts.map +1 -0
  577. package/dist/router/match-middleware/intercept-resolution.js +134 -0
  578. package/dist/router/match-middleware/intercept-resolution.js.map +1 -0
  579. package/dist/router/match-middleware/segment-resolution.d.ts +99 -0
  580. package/dist/router/match-middleware/segment-resolution.d.ts.map +1 -0
  581. package/dist/router/match-middleware/segment-resolution.js +53 -0
  582. package/dist/router/match-middleware/segment-resolution.js.map +1 -0
  583. package/dist/router/match-pipelines.d.ts +147 -0
  584. package/dist/router/match-pipelines.d.ts.map +1 -0
  585. package/dist/router/match-pipelines.js +82 -0
  586. package/dist/router/match-pipelines.js.map +1 -0
  587. package/dist/router/match-result.d.ts +126 -0
  588. package/dist/router/match-result.d.ts.map +1 -0
  589. package/dist/router/match-result.js +93 -0
  590. package/dist/router/match-result.js.map +1 -0
  591. package/dist/router/metrics.d.ts +20 -0
  592. package/dist/router/metrics.d.ts.map +1 -0
  593. package/dist/router/metrics.js +47 -0
  594. package/dist/router/metrics.js.map +1 -0
  595. package/dist/router/middleware.d.ts +249 -0
  596. package/dist/router/middleware.d.ts.map +1 -0
  597. package/dist/router/middleware.js +434 -0
  598. package/dist/router/middleware.js.map +1 -0
  599. package/dist/router/middleware.test.d.ts +2 -0
  600. package/dist/router/middleware.test.d.ts.map +1 -0
  601. package/dist/router/middleware.test.js +816 -0
  602. package/dist/router/middleware.test.js.map +1 -0
  603. package/dist/router/pattern-matching.d.ts +149 -0
  604. package/dist/router/pattern-matching.d.ts.map +1 -0
  605. package/dist/router/pattern-matching.js +349 -0
  606. package/dist/router/pattern-matching.js.map +1 -0
  607. package/dist/router/revalidation.d.ts +44 -0
  608. package/dist/router/revalidation.d.ts.map +1 -0
  609. package/dist/router/revalidation.js +147 -0
  610. package/dist/router/revalidation.js.map +1 -0
  611. package/dist/router/router-context.d.ts +135 -0
  612. package/dist/router/router-context.d.ts.map +1 -0
  613. package/dist/router/router-context.js +36 -0
  614. package/dist/router/router-context.js.map +1 -0
  615. package/dist/router/segment-resolution.d.ts +127 -0
  616. package/dist/router/segment-resolution.d.ts.map +1 -0
  617. package/dist/router/segment-resolution.js +919 -0
  618. package/dist/router/segment-resolution.js.map +1 -0
  619. package/dist/router/trie-matching.d.ts +40 -0
  620. package/dist/router/trie-matching.d.ts.map +1 -0
  621. package/dist/router/trie-matching.js +127 -0
  622. package/dist/router/trie-matching.js.map +1 -0
  623. package/dist/router/types.d.ts +136 -0
  624. package/dist/router/types.d.ts.map +1 -0
  625. package/dist/router/types.js +7 -0
  626. package/dist/router/types.js.map +1 -0
  627. package/dist/router.d.ts +753 -0
  628. package/dist/router.d.ts.map +1 -0
  629. package/dist/router.gen.d.ts +6 -0
  630. package/dist/router.gen.d.ts.map +1 -0
  631. package/dist/router.gen.js +6 -0
  632. package/dist/router.gen.js.map +1 -0
  633. package/dist/router.js +1304 -0
  634. package/dist/router.js.map +1 -0
  635. package/dist/rsc/__tests__/helpers.test.d.ts +2 -0
  636. package/dist/rsc/__tests__/helpers.test.d.ts.map +1 -0
  637. package/dist/rsc/__tests__/helpers.test.js +140 -0
  638. package/dist/rsc/__tests__/helpers.test.js.map +1 -0
  639. package/dist/rsc/handler.d.ts +45 -0
  640. package/dist/rsc/handler.d.ts.map +1 -0
  641. package/dist/rsc/handler.js +1172 -0
  642. package/dist/rsc/handler.js.map +1 -0
  643. package/dist/rsc/helpers.d.ts +16 -0
  644. package/dist/rsc/helpers.d.ts.map +1 -0
  645. package/dist/rsc/helpers.js +55 -0
  646. package/dist/rsc/helpers.js.map +1 -0
  647. package/dist/rsc/index.d.ts +22 -0
  648. package/dist/rsc/index.d.ts.map +1 -0
  649. package/dist/rsc/index.js +23 -0
  650. package/dist/rsc/index.js.map +1 -0
  651. package/dist/rsc/nonce.d.ts +9 -0
  652. package/dist/rsc/nonce.d.ts.map +1 -0
  653. package/dist/rsc/nonce.js +18 -0
  654. package/dist/rsc/nonce.js.map +1 -0
  655. package/dist/rsc/types.d.ts +206 -0
  656. package/dist/rsc/types.d.ts.map +1 -0
  657. package/dist/rsc/types.js +8 -0
  658. package/dist/rsc/types.js.map +1 -0
  659. package/dist/search-params.d.ts +103 -0
  660. package/dist/search-params.d.ts.map +1 -0
  661. package/dist/search-params.js +74 -0
  662. package/dist/search-params.js.map +1 -0
  663. package/dist/segment-system.d.ts +75 -0
  664. package/dist/segment-system.d.ts.map +1 -0
  665. package/dist/segment-system.js +336 -0
  666. package/dist/segment-system.js.map +1 -0
  667. package/dist/server/context.d.ts +245 -0
  668. package/dist/server/context.d.ts.map +1 -0
  669. package/dist/server/context.js +197 -0
  670. package/dist/server/context.js.map +1 -0
  671. package/dist/server/fetchable-loader-store.d.ts +18 -0
  672. package/dist/server/fetchable-loader-store.d.ts.map +1 -0
  673. package/dist/server/fetchable-loader-store.js +18 -0
  674. package/dist/server/fetchable-loader-store.js.map +1 -0
  675. package/dist/server/handle-store.d.ts +85 -0
  676. package/dist/server/handle-store.d.ts.map +1 -0
  677. package/dist/server/handle-store.js +142 -0
  678. package/dist/server/handle-store.js.map +1 -0
  679. package/dist/server/loader-registry.d.ts +55 -0
  680. package/dist/server/loader-registry.d.ts.map +1 -0
  681. package/dist/server/loader-registry.js +132 -0
  682. package/dist/server/loader-registry.js.map +1 -0
  683. package/dist/server/request-context.d.ts +226 -0
  684. package/dist/server/request-context.d.ts.map +1 -0
  685. package/dist/server/request-context.js +290 -0
  686. package/dist/server/request-context.js.map +1 -0
  687. package/dist/server/root-layout.d.ts +4 -0
  688. package/dist/server/root-layout.d.ts.map +1 -0
  689. package/dist/server/root-layout.js +5 -0
  690. package/dist/server/root-layout.js.map +1 -0
  691. package/dist/server.d.ts +15 -0
  692. package/dist/server.d.ts.map +1 -0
  693. package/dist/server.js +20 -0
  694. package/dist/server.js.map +1 -0
  695. package/dist/ssr/__tests__/ssr-handler.test.d.ts +2 -0
  696. package/dist/ssr/__tests__/ssr-handler.test.d.ts.map +1 -0
  697. package/dist/ssr/__tests__/ssr-handler.test.js +132 -0
  698. package/dist/ssr/__tests__/ssr-handler.test.js.map +1 -0
  699. package/dist/ssr/index.d.ts +98 -0
  700. package/dist/ssr/index.d.ts.map +1 -0
  701. package/dist/ssr/index.js +158 -0
  702. package/dist/ssr/index.js.map +1 -0
  703. package/dist/static-handler.d.ts +50 -0
  704. package/dist/static-handler.d.ts.map +1 -0
  705. package/dist/static-handler.gen.d.ts +5 -0
  706. package/dist/static-handler.gen.d.ts.map +1 -0
  707. package/dist/static-handler.gen.js +5 -0
  708. package/dist/static-handler.gen.js.map +1 -0
  709. package/dist/static-handler.js +29 -0
  710. package/dist/static-handler.js.map +1 -0
  711. package/dist/testing/vitest.js +82 -0
  712. package/dist/theme/ThemeProvider.d.ts +20 -0
  713. package/dist/theme/ThemeProvider.d.ts.map +1 -0
  714. package/dist/theme/ThemeProvider.js +240 -0
  715. package/dist/theme/ThemeProvider.js.map +1 -0
  716. package/dist/theme/ThemeScript.d.ts +48 -0
  717. package/dist/theme/ThemeScript.d.ts.map +1 -0
  718. package/dist/theme/ThemeScript.js +13 -0
  719. package/dist/theme/ThemeScript.js.map +1 -0
  720. package/dist/theme/__tests__/theme.test.d.ts +2 -0
  721. package/dist/theme/__tests__/theme.test.d.ts.map +1 -0
  722. package/dist/theme/__tests__/theme.test.js +103 -0
  723. package/dist/theme/__tests__/theme.test.js.map +1 -0
  724. package/dist/theme/constants.d.ts +29 -0
  725. package/dist/theme/constants.d.ts.map +1 -0
  726. package/dist/theme/constants.js +48 -0
  727. package/dist/theme/constants.js.map +1 -0
  728. package/dist/theme/index.d.ts +31 -0
  729. package/dist/theme/index.d.ts.map +1 -0
  730. package/dist/theme/index.js +36 -0
  731. package/dist/theme/index.js.map +1 -0
  732. package/dist/theme/theme-context.d.ts +40 -0
  733. package/dist/theme/theme-context.d.ts.map +1 -0
  734. package/dist/theme/theme-context.js +60 -0
  735. package/dist/theme/theme-context.js.map +1 -0
  736. package/dist/theme/theme-script.d.ts +27 -0
  737. package/dist/theme/theme-script.d.ts.map +1 -0
  738. package/dist/theme/theme-script.js +147 -0
  739. package/dist/theme/theme-script.js.map +1 -0
  740. package/dist/theme/types.d.ts +163 -0
  741. package/dist/theme/types.d.ts.map +1 -0
  742. package/dist/theme/types.js +11 -0
  743. package/dist/theme/types.js.map +1 -0
  744. package/dist/theme/use-theme.d.ts +12 -0
  745. package/dist/theme/use-theme.d.ts.map +1 -0
  746. package/dist/theme/use-theme.js +40 -0
  747. package/dist/theme/use-theme.js.map +1 -0
  748. package/dist/types.d.ts +1479 -0
  749. package/dist/types.d.ts.map +1 -0
  750. package/dist/types.js +10 -0
  751. package/dist/types.js.map +1 -0
  752. package/dist/urls.d.ts +441 -0
  753. package/dist/urls.d.ts.map +1 -0
  754. package/dist/urls.gen.d.ts +8 -0
  755. package/dist/urls.gen.d.ts.map +1 -0
  756. package/dist/urls.gen.js +8 -0
  757. package/dist/urls.gen.js.map +1 -0
  758. package/dist/urls.js +443 -0
  759. package/dist/urls.js.map +1 -0
  760. package/dist/use-loader.d.ts +127 -0
  761. package/dist/use-loader.d.ts.map +1 -0
  762. package/dist/use-loader.js +237 -0
  763. package/dist/use-loader.js.map +1 -0
  764. package/dist/vite/__tests__/ast-handler-extract.test.d.ts +2 -0
  765. package/dist/vite/__tests__/ast-handler-extract.test.d.ts.map +1 -0
  766. package/dist/vite/__tests__/ast-handler-extract.test.js +294 -0
  767. package/dist/vite/__tests__/ast-handler-extract.test.js.map +1 -0
  768. package/dist/vite/__tests__/expose-id-utils.test.d.ts +2 -0
  769. package/dist/vite/__tests__/expose-id-utils.test.d.ts.map +1 -0
  770. package/dist/vite/__tests__/expose-id-utils.test.js +224 -0
  771. package/dist/vite/__tests__/expose-id-utils.test.js.map +1 -0
  772. package/dist/vite/__tests__/expose-internal-ids.test.d.ts +2 -0
  773. package/dist/vite/__tests__/expose-internal-ids.test.d.ts.map +1 -0
  774. package/dist/vite/__tests__/expose-internal-ids.test.js +647 -0
  775. package/dist/vite/__tests__/expose-internal-ids.test.js.map +1 -0
  776. package/dist/vite/__tests__/expose-router-id.test.d.ts +2 -0
  777. package/dist/vite/__tests__/expose-router-id.test.d.ts.map +1 -0
  778. package/dist/vite/__tests__/expose-router-id.test.js +39 -0
  779. package/dist/vite/__tests__/expose-router-id.test.js.map +1 -0
  780. package/dist/vite/ast-handler-extract.d.ts +49 -0
  781. package/dist/vite/ast-handler-extract.d.ts.map +1 -0
  782. package/dist/vite/ast-handler-extract.js +249 -0
  783. package/dist/vite/ast-handler-extract.js.map +1 -0
  784. package/dist/vite/expose-action-id.d.ts +19 -0
  785. package/dist/vite/expose-action-id.d.ts.map +1 -0
  786. package/dist/vite/expose-action-id.js +250 -0
  787. package/dist/vite/expose-action-id.js.map +1 -0
  788. package/dist/vite/expose-id-utils.d.ts +69 -0
  789. package/dist/vite/expose-id-utils.d.ts.map +1 -0
  790. package/dist/vite/expose-id-utils.js +289 -0
  791. package/dist/vite/expose-id-utils.js.map +1 -0
  792. package/dist/vite/expose-internal-ids.d.ts +22 -0
  793. package/dist/vite/expose-internal-ids.d.ts.map +1 -0
  794. package/dist/vite/expose-internal-ids.js +886 -0
  795. package/dist/vite/expose-internal-ids.js.map +1 -0
  796. package/dist/vite/index.d.ts +149 -0
  797. package/dist/vite/index.d.ts.map +1 -0
  798. package/dist/vite/index.js +4267 -1213
  799. package/dist/vite/index.js.bak +5448 -0
  800. package/dist/vite/index.js.map +1 -0
  801. package/dist/vite/index.named-routes.gen.ts +103 -0
  802. package/dist/vite/package-resolution.d.ts +43 -0
  803. package/dist/vite/package-resolution.d.ts.map +1 -0
  804. package/dist/vite/package-resolution.js +112 -0
  805. package/dist/vite/package-resolution.js.map +1 -0
  806. package/dist/vite/plugins/cloudflare-protocol-loader-hook.mjs +76 -0
  807. package/dist/vite/virtual-entries.d.ts +25 -0
  808. package/dist/vite/virtual-entries.d.ts.map +1 -0
  809. package/dist/vite/virtual-entries.js +110 -0
  810. package/dist/vite/virtual-entries.js.map +1 -0
  811. package/package.json +86 -15
  812. package/skills/api-client/SKILL.md +211 -0
  813. package/skills/breadcrumbs/SKILL.md +85 -6
  814. package/skills/bundle-analysis/SKILL.md +159 -0
  815. package/skills/cache-guide/SKILL.md +228 -33
  816. package/skills/caching/SKILL.md +336 -19
  817. package/skills/catalog.json +271 -0
  818. package/skills/comparison/SKILL.md +50 -0
  819. package/skills/comparison/agents/openai.yaml +4 -0
  820. package/skills/comparison/references/framework-comparison.md +837 -0
  821. package/skills/composability/SKILL.md +110 -4
  822. package/skills/css/SKILL.md +76 -0
  823. package/skills/debug-manifest/SKILL.md +5 -3
  824. package/skills/defer-hydration/SKILL.md +235 -0
  825. package/skills/document-cache/SKILL.md +87 -56
  826. package/skills/fonts/SKILL.md +1 -1
  827. package/skills/handler-use/SKILL.md +364 -0
  828. package/skills/hooks/SKILL.md +73 -691
  829. package/skills/hooks/data.md +273 -0
  830. package/skills/hooks/handle-and-actions.md +103 -0
  831. package/skills/hooks/navigation.md +110 -0
  832. package/skills/hooks/outlets.md +41 -0
  833. package/skills/hooks/state.md +228 -0
  834. package/skills/hooks/urls.md +135 -0
  835. package/skills/host-router/SKILL.md +129 -27
  836. package/skills/i18n/SKILL.md +276 -0
  837. package/skills/intercept/SKILL.md +94 -18
  838. package/skills/layout/SKILL.md +62 -19
  839. package/skills/links/SKILL.md +249 -17
  840. package/skills/loader/SKILL.md +302 -54
  841. package/skills/middleware/SKILL.md +59 -16
  842. package/skills/migrate-nextjs/SKILL.md +745 -0
  843. package/skills/migrate-react-router/SKILL.md +153 -0
  844. package/skills/migrate-react-router/cloudflare-workers.md +129 -0
  845. package/skills/migrate-react-router/component-migration.md +196 -0
  846. package/skills/migrate-react-router/data-and-actions.md +225 -0
  847. package/skills/migrate-react-router/route-mapping.md +271 -0
  848. package/skills/mime-routes/SKILL.md +29 -2
  849. package/skills/observability/SKILL.md +202 -0
  850. package/skills/parallel/SKILL.md +99 -10
  851. package/skills/ppr/SKILL.md +616 -0
  852. package/skills/prerender/SKILL.md +178 -124
  853. package/skills/rango/SKILL.md +318 -24
  854. package/skills/react-compiler/SKILL.md +168 -0
  855. package/skills/response-routes/SKILL.md +138 -49
  856. package/skills/route/SKILL.md +141 -9
  857. package/skills/router-setup/SKILL.md +131 -11
  858. package/skills/scripts/SKILL.md +179 -0
  859. package/skills/server-actions/SKILL.md +776 -0
  860. package/skills/shell-manifest/SKILL.md +185 -0
  861. package/skills/streams-and-websockets/SKILL.md +283 -0
  862. package/skills/tailwind/SKILL.md +28 -4
  863. package/skills/testing/SKILL.md +130 -0
  864. package/skills/testing/bindings.md +103 -0
  865. package/skills/testing/cache-prerender.md +127 -0
  866. package/skills/testing/client-components.md +124 -0
  867. package/skills/testing/e2e-parity.md +125 -0
  868. package/skills/testing/flight.md +91 -0
  869. package/skills/testing/handles.md +131 -0
  870. package/skills/testing/loader.md +128 -0
  871. package/skills/testing/middleware.md +99 -0
  872. package/skills/testing/render-handler.md +122 -0
  873. package/skills/testing/response-routes.md +95 -0
  874. package/skills/testing/reverse-and-types.md +85 -0
  875. package/skills/testing/server-actions.md +107 -0
  876. package/skills/testing/server-tree.md +128 -0
  877. package/skills/testing/setup.md +123 -0
  878. package/skills/theme/SKILL.md +1 -1
  879. package/skills/typesafety/SKILL.md +45 -626
  880. package/skills/typesafety/env-and-bindings.md +254 -0
  881. package/skills/typesafety/generated-files-and-cli.md +335 -0
  882. package/skills/typesafety/params-and-search.md +153 -0
  883. package/skills/typesafety/route-types.md +209 -0
  884. package/skills/use-cache/SKILL.md +74 -15
  885. package/skills/vercel/SKILL.md +128 -0
  886. package/skills/view-transitions/SKILL.md +337 -0
  887. package/src/__augment-tests__/augment.ts +81 -0
  888. package/src/__augment-tests__/augmented.check.ts +116 -0
  889. package/src/__internal.ts +1 -66
  890. package/src/browser/action-coordinator.ts +53 -36
  891. package/src/browser/action-fence.ts +47 -0
  892. package/src/browser/app-shell.ts +39 -0
  893. package/src/browser/app-version.ts +14 -0
  894. package/src/browser/connection-warmup.ts +134 -0
  895. package/src/browser/cookie-name.ts +140 -0
  896. package/src/browser/event-controller.ts +252 -158
  897. package/src/browser/history-state.ts +21 -0
  898. package/src/browser/index.ts +3 -3
  899. package/src/browser/invalidate-client-cache.ts +52 -0
  900. package/src/browser/logging.ts +28 -0
  901. package/src/browser/merge-segment-loaders.ts +6 -4
  902. package/src/browser/navigation-bridge.ts +131 -30
  903. package/src/browser/navigation-client.ts +204 -87
  904. package/src/browser/navigation-store-handle.ts +38 -0
  905. package/src/browser/navigation-store.ts +203 -80
  906. package/src/browser/navigation-transaction.ts +9 -59
  907. package/src/browser/network-error-handler.ts +34 -7
  908. package/src/browser/partial-update.ts +198 -125
  909. package/src/browser/prefetch/cache.ts +246 -71
  910. package/src/browser/prefetch/fetch.ts +358 -40
  911. package/src/browser/prefetch/queue.ts +113 -32
  912. package/src/browser/prefetch/resource-ready.ts +77 -0
  913. package/src/browser/rango-state.ts +158 -76
  914. package/src/browser/react/Link.tsx +112 -15
  915. package/src/browser/react/NavigationProvider.tsx +213 -122
  916. package/src/browser/react/ScrollRestoration.tsx +10 -6
  917. package/src/browser/react/context.ts +7 -2
  918. package/src/browser/react/filter-segment-order.ts +66 -7
  919. package/src/browser/react/index.ts +0 -48
  920. package/src/browser/react/location-state-shared.ts +178 -8
  921. package/src/browser/react/location-state.ts +39 -14
  922. package/src/browser/react/use-action.ts +6 -15
  923. package/src/browser/react/use-handle.ts +23 -69
  924. package/src/browser/react/use-href.tsx +8 -1
  925. package/src/browser/react/use-link-status.ts +33 -8
  926. package/src/browser/react/use-navigation.ts +32 -7
  927. package/src/browser/react/use-params.ts +20 -10
  928. package/src/browser/react/use-reverse.ts +106 -0
  929. package/src/browser/react/use-router.ts +46 -11
  930. package/src/browser/react/use-search-params.ts +0 -5
  931. package/src/browser/react/use-segments.ts +11 -21
  932. package/src/browser/response-adapter.ts +99 -8
  933. package/src/browser/rsc-router.tsx +168 -28
  934. package/src/browser/scroll-restoration.ts +44 -27
  935. package/src/browser/segment-reconciler.ts +44 -12
  936. package/src/browser/segment-structure-assert.ts +2 -2
  937. package/src/browser/server-action-bridge.ts +244 -71
  938. package/src/browser/types.ts +127 -12
  939. package/src/browser/validate-redirect-origin.ts +43 -16
  940. package/src/build/collect-fallback-refs.ts +107 -0
  941. package/src/build/generate-manifest.ts +207 -158
  942. package/src/build/generate-route-types.ts +6 -1
  943. package/src/build/index.ts +11 -3
  944. package/src/build/prefix-tree-utils.ts +123 -0
  945. package/src/build/route-trie.ts +198 -41
  946. package/src/build/route-types/ast-route-extraction.ts +15 -8
  947. package/src/build/route-types/codegen.ts +16 -5
  948. package/src/build/route-types/include-resolution.ts +464 -63
  949. package/src/build/route-types/param-extraction.ts +6 -3
  950. package/src/build/route-types/per-module-writer.ts +22 -6
  951. package/src/build/route-types/router-processing.ts +333 -117
  952. package/src/build/route-types/scan-filter.ts +9 -2
  953. package/src/build/route-types/source-scan.ts +216 -0
  954. package/src/build/runtime-discovery.ts +13 -21
  955. package/src/cache/cache-error.ts +104 -0
  956. package/src/cache/cache-key-utils.ts +58 -13
  957. package/src/cache/cache-policy.ts +108 -34
  958. package/src/cache/cache-runtime.ts +421 -58
  959. package/src/cache/cache-scope.ts +187 -96
  960. package/src/cache/cache-tag.ts +149 -0
  961. package/src/cache/cf/cf-base64.ts +33 -0
  962. package/src/cache/cf/cf-cache-constants.ts +127 -0
  963. package/src/cache/cf/cf-cache-store.ts +2202 -372
  964. package/src/cache/cf/cf-cache-types.ts +349 -0
  965. package/src/cache/cf/cf-kv-utils.ts +46 -0
  966. package/src/cache/cf/cf-tag-marker-memo.ts +105 -0
  967. package/src/cache/cf/index.ts +6 -16
  968. package/src/cache/document-cache.ts +126 -41
  969. package/src/cache/handle-snapshot.ts +70 -0
  970. package/src/cache/index.ts +23 -20
  971. package/src/cache/memory-segment-store.ts +243 -37
  972. package/src/cache/profile-registry.ts +46 -31
  973. package/src/cache/read-through-swr.ts +56 -12
  974. package/src/cache/segment-codec.ts +13 -21
  975. package/src/cache/shell-snapshot.ts +417 -0
  976. package/src/cache/tag-invalidation.ts +230 -0
  977. package/src/cache/types.ts +180 -99
  978. package/src/cache/vercel/index.ts +11 -0
  979. package/src/cache/vercel/vercel-cache-store.ts +1127 -0
  980. package/src/client.rsc.tsx +41 -21
  981. package/src/client.tsx +116 -290
  982. package/src/cloudflare/index.ts +11 -0
  983. package/src/cloudflare/tracing.ts +108 -0
  984. package/src/component-utils.ts +19 -0
  985. package/src/components/DefaultDocument.tsx +8 -2
  986. package/src/context-var.ts +18 -6
  987. package/src/decode-loader-results.ts +52 -0
  988. package/src/defer.ts +185 -0
  989. package/src/deps/ssr.ts +0 -1
  990. package/src/encode-kv.ts +49 -0
  991. package/src/errors.ts +30 -4
  992. package/src/escape-script.ts +52 -0
  993. package/src/handle.ts +104 -34
  994. package/src/handles/MetaTags.tsx +24 -53
  995. package/src/handles/Scripts.tsx +183 -0
  996. package/src/handles/breadcrumbs.ts +35 -8
  997. package/src/handles/deferred-resolution.ts +127 -0
  998. package/src/handles/is-thenable.ts +18 -0
  999. package/src/handles/meta.ts +14 -40
  1000. package/src/handles/script.ts +244 -0
  1001. package/src/host/cookie-handler.ts +9 -60
  1002. package/src/host/errors.ts +13 -22
  1003. package/src/host/index.ts +9 -2
  1004. package/src/host/pattern-matcher.ts +23 -52
  1005. package/src/host/router.ts +107 -99
  1006. package/src/host/testing.ts +40 -27
  1007. package/src/host/types.ts +37 -4
  1008. package/src/host/utils.ts +1 -1
  1009. package/src/href-client.ts +137 -22
  1010. package/src/index.rsc.ts +100 -13
  1011. package/src/index.ts +143 -19
  1012. package/src/internal-debug.ts +11 -10
  1013. package/src/loader-store.ts +500 -0
  1014. package/src/loader.rsc.ts +20 -13
  1015. package/src/loader.ts +12 -11
  1016. package/src/missing-id-error.ts +68 -0
  1017. package/src/outlet-context.ts +1 -1
  1018. package/src/outlet-provider.tsx +1 -5
  1019. package/src/prerender/param-hash.ts +16 -16
  1020. package/src/prerender/store.ts +37 -41
  1021. package/src/prerender.ts +215 -86
  1022. package/src/redirect-origin.ts +114 -0
  1023. package/src/regex-escape.ts +8 -0
  1024. package/src/render-error-thrower.tsx +20 -0
  1025. package/src/response-utils.ts +62 -0
  1026. package/src/reverse.ts +65 -15
  1027. package/src/root-error-boundary.tsx +1 -19
  1028. package/src/route-content-wrapper.tsx +19 -77
  1029. package/src/route-definition/dsl-helpers.ts +461 -304
  1030. package/src/route-definition/helper-factories.ts +28 -140
  1031. package/src/route-definition/helpers-types.ts +153 -77
  1032. package/src/route-definition/index.ts +4 -2
  1033. package/src/route-definition/redirect.ts +51 -10
  1034. package/src/route-definition/resolve-handler-use.ts +160 -0
  1035. package/src/route-definition/use-item-types.ts +29 -0
  1036. package/src/route-map-builder.ts +41 -20
  1037. package/src/route-types.ts +37 -46
  1038. package/src/router/basename.ts +14 -0
  1039. package/src/router/content-negotiation.ts +164 -17
  1040. package/src/router/error-handling.ts +45 -18
  1041. package/src/router/find-match.ts +129 -30
  1042. package/src/router/handler-context.ts +52 -31
  1043. package/src/router/instrument.ts +355 -0
  1044. package/src/router/intercept-resolution.ts +48 -24
  1045. package/src/router/lazy-includes.ts +85 -62
  1046. package/src/router/loader-resolution.ts +286 -56
  1047. package/src/router/logging.ts +0 -6
  1048. package/src/router/manifest.ts +96 -53
  1049. package/src/router/match-api.ts +178 -218
  1050. package/src/router/match-context.ts +0 -22
  1051. package/src/router/match-handlers.ts +211 -165
  1052. package/src/router/match-middleware/background-revalidation.ts +40 -24
  1053. package/src/router/match-middleware/cache-lookup.ts +170 -276
  1054. package/src/router/match-middleware/cache-store.ts +64 -52
  1055. package/src/router/match-middleware/intercept-resolution.ts +0 -22
  1056. package/src/router/match-middleware/segment-resolution.ts +45 -14
  1057. package/src/router/match-pipelines.ts +1 -42
  1058. package/src/router/match-result.ts +113 -45
  1059. package/src/router/metrics.ts +0 -34
  1060. package/src/router/middleware-types.ts +7 -140
  1061. package/src/router/middleware.ts +298 -175
  1062. package/src/router/navigation-snapshot.ts +133 -0
  1063. package/src/router/params-util.ts +23 -0
  1064. package/src/router/parse-pattern.ts +115 -0
  1065. package/src/router/pattern-matching.ts +181 -150
  1066. package/src/router/prefetch-cache-ttl.ts +51 -0
  1067. package/src/router/prefetch-limits.ts +37 -0
  1068. package/src/router/prerender-match.ts +203 -58
  1069. package/src/router/preview-match.ts +35 -103
  1070. package/src/router/request-classification.ts +291 -0
  1071. package/src/router/revalidation.ts +123 -73
  1072. package/src/router/route-snapshot.ts +256 -0
  1073. package/src/router/router-context.ts +6 -29
  1074. package/src/router/router-interfaces.ts +146 -35
  1075. package/src/router/router-options.ts +202 -15
  1076. package/src/router/router-registry.ts +2 -5
  1077. package/src/router/segment-resolution/fresh.ts +196 -97
  1078. package/src/router/segment-resolution/helpers.ts +115 -30
  1079. package/src/router/segment-resolution/loader-cache.ts +139 -39
  1080. package/src/router/segment-resolution/loader-mask.ts +67 -0
  1081. package/src/router/segment-resolution/loader-snapshot.ts +251 -0
  1082. package/src/router/segment-resolution/revalidation.ts +351 -330
  1083. package/src/router/segment-resolution/static-store.ts +19 -5
  1084. package/src/router/segment-resolution/streamed-handler-telemetry.ts +52 -0
  1085. package/src/router/segment-resolution/view-transition-default.ts +56 -0
  1086. package/src/router/segment-resolution.ts +5 -1
  1087. package/src/router/segment-wrappers.ts +6 -5
  1088. package/src/router/state-cookie-name.ts +33 -0
  1089. package/src/router/substitute-pattern-params.ts +75 -0
  1090. package/src/router/telemetry-otel.ts +160 -200
  1091. package/src/router/telemetry.ts +105 -20
  1092. package/src/router/timeout.ts +0 -20
  1093. package/src/router/tracing.ts +215 -0
  1094. package/src/router/trie-matching.ts +171 -59
  1095. package/src/router/types.ts +10 -63
  1096. package/src/router/url-params.ts +57 -0
  1097. package/src/router.ts +205 -70
  1098. package/src/rsc/full-payload.ts +70 -0
  1099. package/src/rsc/handler-context.ts +3 -2
  1100. package/src/rsc/handler.ts +682 -508
  1101. package/src/rsc/helpers.ts +168 -46
  1102. package/src/rsc/index.ts +2 -5
  1103. package/src/rsc/json-route-result.ts +38 -0
  1104. package/src/rsc/loader-fetch.ts +127 -31
  1105. package/src/rsc/manifest-init.ts +33 -42
  1106. package/src/rsc/nonce.ts +10 -1
  1107. package/src/rsc/origin-guard.ts +39 -25
  1108. package/src/rsc/progressive-enhancement.ts +138 -15
  1109. package/src/rsc/redirect-guard.ts +100 -0
  1110. package/src/rsc/response-cache-serve.ts +238 -0
  1111. package/src/rsc/response-error.ts +79 -12
  1112. package/src/rsc/response-route-handler.ts +99 -189
  1113. package/src/rsc/rsc-rendering.ts +461 -73
  1114. package/src/rsc/runtime-warnings.ts +23 -10
  1115. package/src/rsc/server-action.ts +287 -113
  1116. package/src/rsc/shell-capture.ts +1158 -0
  1117. package/src/rsc/shell-serve.ts +150 -0
  1118. package/src/rsc/ssr-setup.ts +18 -2
  1119. package/src/rsc/transition-gate.ts +89 -0
  1120. package/src/rsc/types.ts +62 -6
  1121. package/src/runtime-env.ts +18 -0
  1122. package/src/search-params.ts +35 -30
  1123. package/src/segment-content-promise.ts +67 -0
  1124. package/src/segment-loader-promise.ts +167 -0
  1125. package/src/segment-system.tsx +355 -204
  1126. package/src/serialize.ts +243 -0
  1127. package/src/server/context.ts +269 -52
  1128. package/src/server/cookie-parse.ts +32 -0
  1129. package/src/server/cookie-store.ts +152 -5
  1130. package/src/server/handle-store.ts +40 -38
  1131. package/src/server/loader-registry.ts +38 -46
  1132. package/src/server/request-context.ts +510 -166
  1133. package/src/ssr/index.tsx +467 -175
  1134. package/src/ssr/inject-rsc-eager.ts +167 -0
  1135. package/src/ssr/ssr-root.tsx +228 -0
  1136. package/src/static-handler.ts +27 -18
  1137. package/src/testing/cache-status.ts +162 -0
  1138. package/src/testing/collect-handle.ts +46 -0
  1139. package/src/testing/dispatch.ts +813 -0
  1140. package/src/testing/dom.entry.ts +22 -0
  1141. package/src/testing/e2e/fixture.ts +188 -0
  1142. package/src/testing/e2e/index.ts +128 -0
  1143. package/src/testing/e2e/matchers.ts +35 -0
  1144. package/src/testing/e2e/page-helpers.ts +272 -0
  1145. package/src/testing/e2e/parity.ts +387 -0
  1146. package/src/testing/e2e/server.ts +195 -0
  1147. package/src/testing/flight-matchers.ts +97 -0
  1148. package/src/testing/flight-normalize.ts +11 -0
  1149. package/src/testing/flight-runtime.d.ts +57 -0
  1150. package/src/testing/flight-tree.ts +682 -0
  1151. package/src/testing/flight.entry.ts +52 -0
  1152. package/src/testing/flight.ts +257 -0
  1153. package/src/testing/generated-routes.ts +199 -0
  1154. package/src/testing/index.ts +105 -0
  1155. package/src/testing/internal/context.ts +371 -0
  1156. package/src/testing/internal/flight-client-globals.ts +30 -0
  1157. package/src/testing/internal/seed-vars.ts +54 -0
  1158. package/src/testing/render-handler.ts +357 -0
  1159. package/src/testing/render-route.tsx +584 -0
  1160. package/src/testing/run-loader.ts +385 -0
  1161. package/src/testing/run-middleware.ts +205 -0
  1162. package/src/testing/run-transition-when.ts +164 -0
  1163. package/src/testing/vitest-stubs/cloudflare-email.ts +9 -0
  1164. package/src/testing/vitest-stubs/cloudflare-workers.ts +21 -0
  1165. package/src/testing/vitest-stubs/plugin-rsc.ts +16 -0
  1166. package/src/testing/vitest-stubs/version.ts +5 -0
  1167. package/src/testing/vitest.ts +305 -0
  1168. package/src/theme/ThemeProvider.tsx +56 -84
  1169. package/src/theme/ThemeScript.tsx +7 -9
  1170. package/src/theme/constants.ts +52 -13
  1171. package/src/theme/index.ts +0 -7
  1172. package/src/theme/theme-context.ts +1 -5
  1173. package/src/theme/theme-script.ts +22 -21
  1174. package/src/theme/use-theme.ts +0 -3
  1175. package/src/types/boundaries.ts +0 -35
  1176. package/src/types/cache-types.ts +17 -8
  1177. package/src/types/error-types.ts +30 -90
  1178. package/src/types/global-namespace.ts +54 -41
  1179. package/src/types/handler-context.ts +138 -80
  1180. package/src/types/index.ts +3 -10
  1181. package/src/types/loader-types.ts +44 -15
  1182. package/src/types/request-scope.ts +112 -0
  1183. package/src/types/route-config.ts +20 -52
  1184. package/src/types/route-entry.ts +12 -7
  1185. package/src/types/segments.ts +136 -15
  1186. package/src/urls/include-helper.ts +40 -75
  1187. package/src/urls/include-provider.ts +71 -0
  1188. package/src/urls/index.ts +2 -11
  1189. package/src/urls/path-helper-types.ts +102 -23
  1190. package/src/urls/path-helper.ts +62 -111
  1191. package/src/urls/pattern-types.ts +84 -19
  1192. package/src/urls/response-types.ts +25 -22
  1193. package/src/urls/type-extraction.ts +98 -154
  1194. package/src/urls/urls-function.ts +1 -19
  1195. package/src/use-loader.tsx +346 -89
  1196. package/src/vercel/index.ts +11 -0
  1197. package/src/vercel/tracing.ts +88 -0
  1198. package/src/vite/debug.ts +185 -0
  1199. package/src/vite/discovery/bundle-postprocess.ts +36 -38
  1200. package/src/vite/discovery/dev-prerender-cache.ts +117 -0
  1201. package/src/vite/discovery/discover-routers.ts +130 -85
  1202. package/src/vite/discovery/discovery-errors.ts +255 -0
  1203. package/src/vite/discovery/gate-state.ts +171 -0
  1204. package/src/vite/discovery/prerender-collection.ts +214 -132
  1205. package/src/vite/discovery/route-types-writer.ts +40 -84
  1206. package/src/vite/discovery/self-gen-tracking.ts +27 -1
  1207. package/src/vite/discovery/state.ts +57 -4
  1208. package/src/vite/discovery/virtual-module-codegen.ts +14 -34
  1209. package/src/vite/index.ts +8 -0
  1210. package/src/vite/inject-client-debug.ts +88 -0
  1211. package/src/vite/plugin-types.ts +261 -6
  1212. package/src/vite/plugins/cjs-to-esm.ts +16 -19
  1213. package/src/vite/plugins/client-ref-dedup.ts +16 -11
  1214. package/src/vite/plugins/client-ref-hashing.ts +28 -15
  1215. package/src/vite/plugins/cloudflare-protocol-loader-hook.d.mts +23 -0
  1216. package/src/vite/plugins/cloudflare-protocol-loader-hook.mjs +76 -0
  1217. package/src/vite/plugins/cloudflare-protocol-stub.ts +194 -0
  1218. package/src/vite/plugins/expose-action-id.ts +48 -95
  1219. package/src/vite/plugins/expose-id-utils.ts +96 -51
  1220. package/src/vite/plugins/expose-ids/export-analysis.ts +101 -34
  1221. package/src/vite/plugins/expose-ids/handler-transform.ts +15 -64
  1222. package/src/vite/plugins/expose-ids/loader-transform.ts +14 -24
  1223. package/src/vite/plugins/expose-ids/router-transform.ts +118 -29
  1224. package/src/vite/plugins/expose-internal-ids.ts +553 -317
  1225. package/src/vite/plugins/performance-tracks.ts +89 -0
  1226. package/src/vite/plugins/refresh-cmd.ts +89 -27
  1227. package/src/vite/plugins/use-cache-transform.ts +73 -83
  1228. package/src/vite/plugins/vercel-output.ts +384 -0
  1229. package/src/vite/plugins/version-injector.ts +40 -29
  1230. package/src/vite/plugins/version-plugin.ts +37 -40
  1231. package/src/vite/plugins/virtual-entries.ts +138 -27
  1232. package/src/vite/rango.ts +247 -132
  1233. package/src/vite/router-discovery.ts +1091 -159
  1234. package/src/vite/utils/ast-handler-extract.ts +26 -35
  1235. package/src/vite/utils/banner.ts +1 -1
  1236. package/src/vite/utils/bundle-analysis.ts +10 -15
  1237. package/src/vite/utils/client-chunks.ts +184 -0
  1238. package/src/vite/utils/directive-prologue.ts +40 -0
  1239. package/src/vite/utils/forward-user-plugins.ts +171 -0
  1240. package/src/vite/utils/manifest-utils.ts +4 -59
  1241. package/src/vite/utils/package-resolution.ts +20 -52
  1242. package/src/vite/utils/prerender-utils.ts +98 -38
  1243. package/src/vite/utils/shared-utils.ts +144 -44
  1244. package/src/browser/action-response-classifier.ts +0 -99
  1245. package/src/browser/shallow.ts +0 -40
  1246. package/src/router/middleware-cookies.ts +0 -55
@@ -14,6 +14,7 @@ import {
14
14
  getParallelEntries,
15
15
  getParallelSlotEntries,
16
16
  type EntryData,
17
+ type ParallelEntryData,
17
18
  } from "../../server/context";
18
19
  import type {
19
20
  HandlerContext,
@@ -34,55 +35,41 @@ import {
34
35
  import { resolveLoaderData } from "./loader-cache.js";
35
36
  import {
36
37
  handleHandlerResult,
38
+ warnOnStreamedResponse,
37
39
  tryStaticHandler,
38
40
  tryStaticSlot,
39
41
  resolveLayoutComponent,
40
42
  resolveWithErrorBoundary,
43
+ buildLoaderErrorContext,
41
44
  } from "./helpers.js";
45
+ import { applyViewTransitionDefault } from "./view-transition-default.js";
42
46
  import { getRouterContext } from "../router-context.js";
43
- import { resolveSink, safeEmit } from "../telemetry.js";
44
- import { track } from "../../server/context.js";
45
- import { RSCRouterContext } from "../../server/context.js";
46
-
47
- // ---------------------------------------------------------------------------
48
- // Telemetry helpers
49
- // ---------------------------------------------------------------------------
47
+ import { observeEvent, observeHandler } from "../instrument.js";
48
+ import { observeStreamedHandler } from "./streamed-handler-telemetry.js";
49
+ import {
50
+ track,
51
+ RangoContext,
52
+ runInsideLoaderScope,
53
+ } from "../../server/context.js";
50
54
 
51
55
  /**
52
- * Attach a fire-and-forget rejection observer to a streamed handler promise.
53
- * Silently no-ops when called outside RouterContext (e.g. in unit tests).
56
+ * Trace a parallel slot that's being force-rendered on a full refetch (client
57
+ * has no cached state). User revalidate fns are bypassed in this case — see
58
+ * the call sites for the load-bearing rationale.
54
59
  */
55
- function observeStreamedHandler(
56
- promise: Promise<ReactNode>,
57
- segmentId: string,
58
- segmentType: string,
59
- pathname?: string,
60
- routeKey?: string,
61
- params?: Record<string, string>,
60
+ function traceFullRefetchedParallelSlot(
61
+ parallelId: string,
62
+ belongsToRoute: boolean,
62
63
  ): void {
63
- let routerCtx;
64
- try {
65
- routerCtx = getRouterContext();
66
- } catch {
67
- return;
68
- }
69
- if (!routerCtx?.telemetry) return;
70
- const sink = resolveSink(routerCtx.telemetry);
71
- const reqId = routerCtx.requestId;
72
- promise.catch((err: unknown) => {
73
- const errorObj = err instanceof Error ? err : new Error(String(err));
74
- safeEmit(sink, {
75
- type: "handler.error",
76
- timestamp: performance.now(),
77
- requestId: reqId,
78
- segmentId,
79
- segmentType,
80
- error: errorObj,
81
- handledByBoundary: true,
82
- pathname,
83
- routeKey,
84
- params,
85
- });
64
+ if (!isTraceActive()) return;
65
+ pushRevalidationTraceEntry({
66
+ segmentId: parallelId,
67
+ segmentType: "parallel",
68
+ belongsToRoute,
69
+ source: "parallel",
70
+ defaultShouldRevalidate: true,
71
+ finalShouldRevalidate: true,
72
+ reason: "full-refetch",
86
73
  });
87
74
  }
88
75
 
@@ -101,23 +88,14 @@ function emitRevalidationDecision(
101
88
  routeKey: string,
102
89
  shouldRevalidate: boolean,
103
90
  ): void {
104
- let routerCtx;
105
- try {
106
- routerCtx = getRouterContext();
107
- } catch {
108
- return;
109
- }
110
- if (routerCtx?.telemetry) {
111
- safeEmit(resolveSink(routerCtx.telemetry), {
112
- type: "revalidation.decision",
113
- timestamp: performance.now(),
114
- requestId: routerCtx.requestId,
115
- segmentId,
116
- pathname,
117
- routeKey,
118
- shouldRevalidate,
119
- });
120
- }
91
+ observeEvent({
92
+ type: "revalidation.decision",
93
+ timestamp: performance.now(),
94
+ segmentId,
95
+ pathname,
96
+ routeKey,
97
+ shouldRevalidate,
98
+ });
121
99
  }
122
100
 
123
101
  // ---------------------------------------------------------------------------
@@ -146,12 +124,6 @@ export async function resolveLoadersWithRevalidation<TEnv>(
146
124
  const loaderEntries = entry.loader ?? [];
147
125
  if (loaderEntries.length === 0) return { segments: [], matchedIds: [] };
148
126
 
149
- // DSL loaders are always fresh — temporarily clear cache scope
150
- // so non-cacheable var reads are allowed inside loader functions.
151
- const store = RSCRouterContext.getStore();
152
- const savedCacheScope = store?.insideCacheScope;
153
- if (store) store.insideCacheScope = false;
154
-
155
127
  const shortCode = shortCodeOverride ?? entry.shortCode;
156
128
 
157
129
  const loaderMeta = loaderEntries.map((loaderEntry, i) => ({
@@ -228,6 +200,10 @@ export async function resolveLoadersWithRevalidation<TEnv>(
228
200
  ),
229
201
  );
230
202
 
203
+ // Partial (revalidation) render path: a throwing DSL loader must still fire
204
+ // onError/loader.error. isPartial flags the reporting phase accordingly.
205
+ const errorContext = { ...buildLoaderErrorContext(ctx), isPartial: true };
206
+
231
207
  const loadersToRun = revalidationChecks.filter((c) => c.shouldRun);
232
208
  const segments: ResolvedSegment[] = loadersToRun.map(
233
209
  ({ loaderEntry, loader, segmentId, index }) => ({
@@ -239,18 +215,18 @@ export async function resolveLoadersWithRevalidation<TEnv>(
239
215
  params: ctx.params,
240
216
  loaderId: loader.$$id,
241
217
  loaderData: deps.wrapLoaderPromise(
242
- resolveLoaderData(loaderEntry, ctx, ctx.pathname),
218
+ runInsideLoaderScope(() =>
219
+ resolveLoaderData(loaderEntry, ctx, ctx.pathname),
220
+ ),
243
221
  entry,
244
222
  segmentId,
245
223
  ctx.pathname,
224
+ errorContext,
246
225
  ),
247
226
  belongsToRoute,
248
227
  }),
249
228
  );
250
229
 
251
- // Restore cache scope after all loader promises are kicked off
252
- if (store) store.insideCacheScope = savedCacheScope;
253
-
254
230
  return { segments, matchedIds };
255
231
  }
256
232
 
@@ -323,6 +299,39 @@ export async function resolveLoadersOnlyWithRevalidation<TEnv>(
323
299
  const childBelongsToRoute = belongsToRoute || entry.type === "route";
324
300
  for (const layoutEntry of entry.layout) {
325
301
  await collectEntryLoaders(layoutEntry, childBelongsToRoute);
302
+ // Inherit route loaders for orphan layouts with parallels.
303
+ // Resolve directly — do NOT re-enter collectEntryLoaders with the
304
+ // route entry, as that would re-iterate route.layout and loop.
305
+ if (
306
+ entry.type === "route" &&
307
+ entry.loader &&
308
+ entry.loader.length > 0 &&
309
+ Object.keys(layoutEntry.parallel).length > 0
310
+ ) {
311
+ const inherited = await resolveLoadersWithRevalidation(
312
+ entry,
313
+ context,
314
+ childBelongsToRoute,
315
+ clientSegmentIds,
316
+ prevParams,
317
+ request,
318
+ prevUrl,
319
+ nextUrl,
320
+ routeKey,
321
+ deps,
322
+ actionContext,
323
+ layoutEntry.shortCode,
324
+ stale,
325
+ );
326
+ for (const seg of inherited.segments) {
327
+ if (!seenIds.has(seg.id)) {
328
+ seenIds.add(seg.id);
329
+ seg._inherited = true;
330
+ allLoaderSegments.push(seg);
331
+ }
332
+ }
333
+ allMatchedIds.push(...inherited.matchedIds);
334
+ }
326
335
  }
327
336
  }
328
337
 
@@ -375,6 +384,97 @@ export function buildEntryRevalidateMap(
375
384
  return map;
376
385
  }
377
386
 
387
+ /**
388
+ * Resolve the component for a single parallel slot on the revalidation path.
389
+ * Pure component resolution shared verbatim by
390
+ * resolveParallelSegmentsWithRevalidation and the orphan-inlined loop in
391
+ * resolveOrphanLayoutWithRevalidation: try the static slot cache, else run the
392
+ * slot handler (pinning _currentSegmentId to the slot id so handle pushes land
393
+ * in the slot's own bucket, and wrapping a streamed handler). Returns the
394
+ * resolved component and whether the handler actually ran. Does NOT touch the
395
+ * revalidate-default policy (the caller decides shouldResolve, including the
396
+ * orphan-vs-main defaultOverride divergence) or loader-resolution ordering.
397
+ */
398
+ async function resolveParallelSlotComponent<TEnv>(args: {
399
+ shouldResolve: boolean;
400
+ parallelEntry: ParallelEntryData;
401
+ slot: string;
402
+ parallelId: string;
403
+ handler:
404
+ | ((ctx: HandlerContext<any, TEnv>) => ReactNode | Promise<ReactNode>)
405
+ | ReactNode
406
+ | undefined;
407
+ context: HandlerContext<any, TEnv>;
408
+ deps: SegmentResolutionDeps<TEnv>;
409
+ routeKey: string;
410
+ params: Record<string, string>;
411
+ }): Promise<{ component: ReactNode | undefined; handlerRan: boolean }> {
412
+ const {
413
+ shouldResolve,
414
+ parallelEntry,
415
+ slot,
416
+ parallelId,
417
+ handler,
418
+ context,
419
+ deps,
420
+ routeKey,
421
+ params,
422
+ } = args;
423
+
424
+ let component: ReactNode | undefined;
425
+ let handlerRan = false;
426
+ if (shouldResolve) {
427
+ component = await tryStaticSlot(parallelEntry, slot, parallelId);
428
+ // tryStaticSlot returning a value means the static cache supplied the
429
+ // component — handler did NOT run. handlerRan stays false.
430
+ }
431
+ if (component === undefined) {
432
+ const hasLoadingFallback =
433
+ parallelEntry.loading !== undefined && parallelEntry.loading !== false;
434
+ if (!shouldResolve) {
435
+ component = null;
436
+ } else if (handler === undefined) {
437
+ // Handler evicted (production static slot) but static lookup missed.
438
+ // Nothing to render — use null so the client keeps its cached version.
439
+ component = null;
440
+ } else {
441
+ // Slot-keyed pushes — slot owns its own bucket, parent layout owns its
442
+ // own. On slot-only revalidations the partial merge updates only the
443
+ // slot's bucket; the parent's bucket stays intact.
444
+ (context as InternalHandlerContext<any, TEnv>)._currentSegmentId =
445
+ parallelId;
446
+ handlerRan = true;
447
+ if (hasLoadingFallback) {
448
+ const result =
449
+ typeof handler === "function" ? handler(context) : handler;
450
+ if (result instanceof Promise) {
451
+ warnOnStreamedResponse(result, parallelId);
452
+ const tracked = deps.trackHandler(result, {
453
+ segmentId: parallelId,
454
+ segmentType: "parallel",
455
+ });
456
+ observeStreamedHandler(
457
+ tracked,
458
+ parallelId,
459
+ "parallel",
460
+ context.pathname,
461
+ routeKey,
462
+ params,
463
+ );
464
+ component = tracked as ReactNode;
465
+ } else {
466
+ component = result as ReactNode;
467
+ }
468
+ } else {
469
+ component =
470
+ typeof handler === "function" ? await handler(context) : handler;
471
+ }
472
+ }
473
+ }
474
+
475
+ return { component, handlerRan };
476
+ }
477
+
378
478
  /**
379
479
  * Resolve parallel segments with revalidation.
380
480
  */
@@ -392,9 +492,30 @@ export async function resolveParallelSegmentsWithRevalidation<TEnv>(
392
492
  deps: SegmentResolutionDeps<TEnv>,
393
493
  actionContext?: ActionContext,
394
494
  stale?: boolean,
495
+ options?: {
496
+ /**
497
+ * Seed for an unknown parent-chain slot (slot not in clientSegmentIds) when
498
+ * there are no deciding revalidate fns. "type-derived" (default, main path):
499
+ * `belongsToRoute || isNewParent`. "force-render" (orphan path): always
500
+ * `true` — orphan parallels always belong to the route and must render
501
+ * unless the user opts out via revalidate(); the #482 blank-parent-chain-
502
+ * slot guard.
503
+ */
504
+ parentChainDefault?: "type-derived" | "force-render";
505
+ /**
506
+ * When a slot's loaders are resolved relative to the slot segment push.
507
+ * "after" (default, main path) pushes the slot segment first; "before"
508
+ * (orphan path) resolves loaders first. This only changes the
509
+ * segments/matchedIds emission ORDER (the client reconciler is insensitive
510
+ * to it: loader sub-ids are filtered out and slots are re-grouped by parent).
511
+ */
512
+ loaderOrder?: "after" | "before";
513
+ },
395
514
  ): Promise<SegmentRevalidationResult> {
396
515
  const segments: ResolvedSegment[] = [];
397
516
  const matchedIds: string[] = [];
517
+ const parentChainDefault = options?.parentChainDefault ?? "type-derived";
518
+ const loaderOrder = options?.loaderOrder ?? "after";
398
519
 
399
520
  const resolvedParallelEntries = new Set<string>();
400
521
  for (const { slot, entry: parallelEntry } of getParallelSlotEntries(
@@ -419,44 +540,61 @@ export async function resolveParallelSegmentsWithRevalidation<TEnv>(
419
540
 
420
541
  const isFullRefetch = clientSegmentIds.size === 0;
421
542
  const isNewParent = !clientSegmentIds.has(entry.shortCode);
422
- if (
423
- isFullRefetch ||
424
- clientSegmentIds.has(parallelId) ||
425
- belongsToRoute ||
426
- isNewParent
427
- ) {
428
- matchedIds.push(parallelId);
543
+
544
+ // A slot's loaders (never cached) are deduped per parallel entry and
545
+ // emitted either before or after the slot segment per loaderOrder.
546
+ const resolveSlotLoaders = async () => {
547
+ if (resolvedParallelEntries.has(parallelEntry.id)) return;
548
+ const loaderResult = await resolveLoadersWithRevalidation(
549
+ parallelEntry,
550
+ context,
551
+ belongsToRoute,
552
+ clientSegmentIds,
553
+ prevParams,
554
+ request,
555
+ prevUrl,
556
+ nextUrl,
557
+ routeKey,
558
+ deps,
559
+ actionContext,
560
+ entry.shortCode,
561
+ stale,
562
+ );
563
+ segments.push(...loaderResult.segments);
564
+ matchedIds.push(...loaderResult.matchedIds);
565
+ resolvedParallelEntries.add(parallelEntry.id);
566
+ };
567
+
568
+ if (loaderOrder === "before") {
569
+ await resolveSlotLoaders();
429
570
  }
571
+ // Always announce the slot in matchedIds — it's unconditionally appended
572
+ // to `segments` below, and a segment present in segments but missing from
573
+ // matched lets the client prune it (then it's missing from clientSegmentIds
574
+ // on the next request, perpetuating the staleness).
575
+ matchedIds.push(parallelId);
430
576
 
431
- const shouldResolve = await (async () => {
432
- if (isFullRefetch) {
433
- if (isTraceActive()) {
434
- pushRevalidationTraceEntry({
435
- segmentId: parallelId,
436
- segmentType: "parallel",
437
- belongsToRoute,
438
- source: "parallel",
439
- defaultShouldRevalidate: true,
440
- finalShouldRevalidate: true,
441
- reason: "full-refetch",
442
- });
443
- }
444
- return true;
445
- }
577
+ let shouldResolve: boolean;
578
+ if (isFullRefetch) {
579
+ // Client has nothing cached — slot MUST render. User revalidate fns are
580
+ // bypassed here because returning false would leave the segment blank
581
+ // with no client-side fallback.
582
+ traceFullRefetchedParallelSlot(parallelId, belongsToRoute);
583
+ shouldResolve = true;
584
+ } else {
585
+ // For non-empty client sets, consult user revalidate fns. When the slot
586
+ // is unknown to the client, override the type-derived default so the
587
+ // soft chain seeds with the right "new segment" / "parent-chain" value.
588
+ let defaultOverride: { value: boolean; reason: string } | undefined;
446
589
  if (!clientSegmentIds.has(parallelId)) {
447
- const result = belongsToRoute || isNewParent;
448
- if (isTraceActive()) {
449
- pushRevalidationTraceEntry({
450
- segmentId: parallelId,
451
- segmentType: "parallel",
452
- belongsToRoute,
453
- source: "parallel",
454
- defaultShouldRevalidate: result,
455
- finalShouldRevalidate: result,
456
- reason: result ? "new-segment" : "skip-parent-chain",
457
- });
458
- }
459
- return result;
590
+ const value =
591
+ parentChainDefault === "force-render"
592
+ ? true
593
+ : belongsToRoute || isNewParent;
594
+ defaultOverride = {
595
+ value,
596
+ reason: value ? "new-segment" : "skip-parent-chain",
597
+ };
460
598
  }
461
599
 
462
600
  const dummySegment: ResolvedSegment = {
@@ -474,7 +612,7 @@ export async function resolveParallelSegmentsWithRevalidation<TEnv>(
474
612
  : {}),
475
613
  };
476
614
 
477
- return await evaluateRevalidation({
615
+ shouldResolve = await evaluateRevalidation({
478
616
  segment: dummySegment,
479
617
  prevParams,
480
618
  getPrevSegment: null,
@@ -490,8 +628,9 @@ export async function resolveParallelSegmentsWithRevalidation<TEnv>(
490
628
  actionContext,
491
629
  stale,
492
630
  traceSource: "parallel",
631
+ defaultOverride,
493
632
  });
494
- })();
633
+ }
495
634
  emitRevalidationDecision(
496
635
  parallelId,
497
636
  context.pathname,
@@ -499,44 +638,17 @@ export async function resolveParallelSegmentsWithRevalidation<TEnv>(
499
638
  shouldResolve,
500
639
  );
501
640
 
502
- let component: ReactNode | undefined;
503
- if (shouldResolve) {
504
- component = await tryStaticSlot(parallelEntry, slot, parallelId);
505
- }
506
- if (component === undefined) {
507
- const hasLoadingFallback =
508
- parallelEntry.loading !== undefined && parallelEntry.loading !== false;
509
- if (!shouldResolve) {
510
- component = null;
511
- } else if (handler === undefined) {
512
- // Handler evicted (production static slot) but static lookup missed.
513
- // Nothing to render — use null so the client keeps its cached version.
514
- component = null;
515
- } else if (hasLoadingFallback) {
516
- const result =
517
- typeof handler === "function" ? handler(context) : handler;
518
- if (result instanceof Promise) {
519
- const tracked = deps.trackHandler(result, {
520
- segmentId: parallelId,
521
- segmentType: "parallel",
522
- });
523
- observeStreamedHandler(
524
- tracked,
525
- parallelId,
526
- "parallel",
527
- context.pathname,
528
- routeKey,
529
- params,
530
- );
531
- component = tracked as ReactNode;
532
- } else {
533
- component = result as ReactNode;
534
- }
535
- } else {
536
- component =
537
- typeof handler === "function" ? await handler(context) : handler;
538
- }
539
- }
641
+ const { component, handlerRan } = await resolveParallelSlotComponent({
642
+ shouldResolve,
643
+ parallelEntry,
644
+ slot,
645
+ parallelId,
646
+ handler,
647
+ context,
648
+ deps,
649
+ routeKey,
650
+ params,
651
+ });
540
652
 
541
653
  segments.push({
542
654
  id: parallelId,
@@ -545,9 +657,14 @@ export async function resolveParallelSegmentsWithRevalidation<TEnv>(
545
657
  index: 0,
546
658
  component,
547
659
  loading: parallelEntry.loading === false ? null : parallelEntry.loading,
548
- transition: parallelEntry.transition,
660
+ transition: applyViewTransitionDefault(
661
+ parallelEntry.transition,
662
+ deps.viewTransitionDefault,
663
+ parallelId,
664
+ ),
549
665
  params,
550
666
  slot,
667
+ _handlerRan: handlerRan,
551
668
  belongsToRoute,
552
669
  parallelName: `${parallelEntry.id}.${slot}`,
553
670
  ...(parallelEntry.mountPath
@@ -555,28 +672,9 @@ export async function resolveParallelSegmentsWithRevalidation<TEnv>(
555
672
  : {}),
556
673
  });
557
674
 
558
- if (resolvedParallelEntries.has(parallelEntry.id)) {
559
- continue;
675
+ if (loaderOrder === "after") {
676
+ await resolveSlotLoaders();
560
677
  }
561
-
562
- const loaderResult = await resolveLoadersWithRevalidation(
563
- parallelEntry,
564
- context,
565
- belongsToRoute,
566
- clientSegmentIds,
567
- prevParams,
568
- request,
569
- prevUrl,
570
- nextUrl,
571
- routeKey,
572
- deps,
573
- actionContext,
574
- entry.shortCode,
575
- stale,
576
- );
577
- segments.push(...loaderResult.segments);
578
- matchedIds.push(...loaderResult.matchedIds);
579
- resolvedParallelEntries.add(parallelEntry.id);
580
678
  }
581
679
 
582
680
  return { segments, matchedIds };
@@ -602,6 +700,7 @@ export async function resolveEntryHandlerWithRevalidation<TEnv>(
602
700
  ): Promise<{ segment: ResolvedSegment; matchedId: string }> {
603
701
  const matchedId = entry.shortCode;
604
702
 
703
+ let handlerRan = false;
605
704
  const component = await revalidate(
606
705
  async () => {
607
706
  const hasSegment = clientSegmentIds.has(entry.shortCode);
@@ -678,6 +777,7 @@ export async function resolveEntryHandlerWithRevalidation<TEnv>(
678
777
  return shouldRevalidate;
679
778
  },
680
779
  async () => {
780
+ handlerRan = true;
681
781
  const doneHandler = track(`handler:${entry.id}`, 2);
682
782
  (context as InternalHandlerContext<any, TEnv>)._currentSegmentId =
683
783
  entry.shortCode;
@@ -692,14 +792,26 @@ export async function resolveEntryHandlerWithRevalidation<TEnv>(
692
792
  return staticComponent;
693
793
  }
694
794
  const routeEntry = entry as Extract<EntryData, { type: "route" }>;
795
+ // For Passthrough routes at runtime, use the live handler instead of
796
+ // the build handler. At build time (context.build === true), always
797
+ // use the build handler from routeEntry.handler.
798
+ const handler =
799
+ !context.build && routeEntry.liveHandler
800
+ ? routeEntry.liveHandler
801
+ : routeEntry.handler;
695
802
  if (!routeEntry.loading) {
696
- const result = handleHandlerResult(await routeEntry.handler(context));
803
+ const result = handleHandlerResult(
804
+ await observeHandler(entry.id, handler, context),
805
+ );
697
806
  doneHandler();
698
807
  return result;
699
808
  }
700
809
  if (!actionContext) {
701
- const result = handleHandlerResult(routeEntry.handler(context));
810
+ const result = handleHandlerResult(
811
+ observeHandler(entry.id, handler, context),
812
+ );
702
813
  if (result instanceof Promise) {
814
+ warnOnStreamedResponse(result, routeEntry.id);
703
815
  result.finally(doneHandler).catch(() => {});
704
816
  const tracked = deps.trackHandler(result, {
705
817
  segmentId: entry.shortCode,
@@ -722,7 +834,7 @@ export async function resolveEntryHandlerWithRevalidation<TEnv>(
722
834
  entryId: entry.id,
723
835
  });
724
836
  const actionResult = handleHandlerResult(
725
- await routeEntry.handler(context),
837
+ await observeHandler(entry.id, handler, context),
726
838
  );
727
839
  doneHandler();
728
840
  return {
@@ -747,13 +859,18 @@ export async function resolveEntryHandlerWithRevalidation<TEnv>(
747
859
  index: 0,
748
860
  component: resolvedComponent,
749
861
  loading: entry.loading === false ? null : entry.loading,
750
- transition: entry.transition,
862
+ transition: applyViewTransitionDefault(
863
+ entry.transition,
864
+ deps.viewTransitionDefault,
865
+ entry.shortCode,
866
+ ),
751
867
  params,
752
868
  belongsToRoute,
753
869
  ...(entry.type === "layout" || entry.type === "cache"
754
870
  ? { layoutName: entry.id }
755
871
  : {}),
756
872
  ...(entry.mountPath ? { mountPath: entry.mountPath } : {}),
873
+ _handlerRan: handlerRan,
757
874
  };
758
875
 
759
876
  return { segment, matchedId };
@@ -772,7 +889,6 @@ export async function resolveSegmentWithRevalidation<TEnv>(
772
889
  request: Request,
773
890
  prevUrl: URL,
774
891
  nextUrl: URL,
775
- loaderPromises: Map<string, Promise<any>>,
776
892
  deps: SegmentResolutionDeps<TEnv>,
777
893
  actionContext?: ActionContext,
778
894
  stale?: boolean,
@@ -834,11 +950,11 @@ export async function resolveSegmentWithRevalidation<TEnv>(
834
950
  prevUrl,
835
951
  nextUrl,
836
952
  routeKey,
837
- loaderPromises,
838
953
  true,
839
954
  deps,
840
955
  actionContext,
841
956
  stale,
957
+ entry,
842
958
  );
843
959
  segments.push(...orphanResult.segments);
844
960
  matchedIds.push(...orphanResult.matchedIds);
@@ -918,7 +1034,6 @@ export async function resolveSegmentWithRevalidation<TEnv>(
918
1034
  prevUrl,
919
1035
  nextUrl,
920
1036
  routeKey,
921
- loaderPromises,
922
1037
  false,
923
1038
  deps,
924
1039
  actionContext,
@@ -945,11 +1060,12 @@ export async function resolveOrphanLayoutWithRevalidation<TEnv>(
945
1060
  prevUrl: URL,
946
1061
  nextUrl: URL,
947
1062
  routeKey: string,
948
- loaderPromises: Map<string, Promise<any>>,
949
1063
  belongsToRoute: boolean,
950
1064
  deps: SegmentResolutionDeps<TEnv>,
951
1065
  actionContext?: ActionContext,
952
1066
  stale?: boolean,
1067
+ /** Parent route entry — its loaders are inherited so parallel slots can access them. */
1068
+ parentRouteEntry?: EntryData,
953
1069
  ): Promise<SegmentRevalidationResult> {
954
1070
  invariant(
955
1071
  orphan.type === "layout" || orphan.type === "cache",
@@ -977,6 +1093,37 @@ export async function resolveOrphanLayoutWithRevalidation<TEnv>(
977
1093
  segments.push(...loaderResult.segments);
978
1094
  matchedIds.push(...loaderResult.matchedIds);
979
1095
 
1096
+ // Inherit parent route's loaders so parallel slots inside this layout
1097
+ // can access them via useLoader(). See resolveOrphanLayout in fresh.ts.
1098
+ if (
1099
+ parentRouteEntry &&
1100
+ parentRouteEntry.loader &&
1101
+ parentRouteEntry.loader.length > 0 &&
1102
+ Object.keys(orphan.parallel).length > 0
1103
+ ) {
1104
+ const inheritedResult = await resolveLoadersWithRevalidation(
1105
+ parentRouteEntry,
1106
+ context,
1107
+ belongsToRoute,
1108
+ clientSegmentIds,
1109
+ prevParams,
1110
+ request,
1111
+ prevUrl,
1112
+ nextUrl,
1113
+ routeKey,
1114
+ deps,
1115
+ actionContext,
1116
+ orphan.shortCode,
1117
+ stale,
1118
+ );
1119
+ // Tag as inherited so buildMatchResult can deduplicate when safe
1120
+ for (const s of inheritedResult.segments) {
1121
+ s._inherited = true;
1122
+ }
1123
+ segments.push(...inheritedResult.segments);
1124
+ matchedIds.push(...inheritedResult.matchedIds);
1125
+ }
1126
+
980
1127
  // Handler-first: resolve orphan layout handler before its parallels
981
1128
  // so ctx.set() values are visible to parallel children.
982
1129
  matchedIds.push(orphan.shortCode);
@@ -1049,165 +1196,41 @@ export async function resolveOrphanLayoutWithRevalidation<TEnv>(
1049
1196
  belongsToRoute,
1050
1197
  layoutName: orphan.id,
1051
1198
  loading: orphan.loading === false ? null : orphan.loading,
1052
- transition: orphan.transition,
1199
+ transition: applyViewTransitionDefault(
1200
+ orphan.transition,
1201
+ deps.viewTransitionDefault,
1202
+ orphan.shortCode,
1203
+ ),
1053
1204
  ...(orphan.mountPath ? { mountPath: orphan.mountPath } : {}),
1054
1205
  });
1055
1206
 
1056
- const resolvedParallelEntries = new Set<string>();
1057
- for (const { slot, entry: parallelEntry } of getParallelSlotEntries(
1058
- orphan.parallel,
1059
- )) {
1060
- invariant(
1061
- parallelEntry.type === "parallel",
1062
- `Expected parallel entry, got: ${parallelEntry.type}`,
1063
- );
1064
-
1065
- if (!resolvedParallelEntries.has(parallelEntry.id)) {
1066
- const loaderResult = await resolveLoadersWithRevalidation(
1067
- parallelEntry,
1068
- context,
1069
- belongsToRoute,
1070
- clientSegmentIds,
1071
- prevParams,
1072
- request,
1073
- prevUrl,
1074
- nextUrl,
1075
- routeKey,
1076
- deps,
1077
- actionContext,
1078
- undefined,
1079
- stale,
1080
- );
1081
- segments.push(...loaderResult.segments);
1082
- matchedIds.push(...loaderResult.matchedIds);
1083
- resolvedParallelEntries.add(parallelEntry.id);
1084
- }
1085
-
1086
- const slots = parallelEntry.handler as Record<
1087
- `@${string}`,
1088
- | ((ctx: HandlerContext<any, TEnv>) => ReactNode | Promise<ReactNode>)
1089
- | ReactNode
1090
- >;
1091
- // Handler may be undefined in production after static handler eviction.
1092
- const handler = slots[slot];
1093
-
1094
- // Use orphan.shortCode (the parent layout) to match the SSR path
1095
- // (resolveParallelEntry receives parentShortCode = orphan.shortCode).
1096
- // Using parallelEntry.shortCode would generate IDs the client doesn't know about.
1097
- const parallelId = `${orphan.shortCode}.${slot}`;
1098
- matchedIds.push(parallelId);
1099
-
1100
- const shouldResolve = await (async () => {
1101
- if (!clientSegmentIds.has(parallelId)) {
1102
- if (isTraceActive()) {
1103
- pushRevalidationTraceEntry({
1104
- segmentId: parallelId,
1105
- segmentType: "parallel",
1106
- belongsToRoute,
1107
- source: "parallel",
1108
- defaultShouldRevalidate: true,
1109
- finalShouldRevalidate: true,
1110
- reason: "new-segment",
1111
- });
1112
- }
1113
- return true;
1114
- }
1115
-
1116
- const dummySegment: ResolvedSegment = {
1117
- id: parallelId,
1118
- namespace: parallelEntry.id,
1119
- type: "parallel",
1120
- index: 0,
1121
- component: null as any,
1122
- params,
1123
- slot,
1124
- belongsToRoute,
1125
- parallelName: `${parallelEntry.id}.${slot}`,
1126
- ...(parallelEntry.mountPath
1127
- ? { mountPath: parallelEntry.mountPath }
1128
- : {}),
1129
- };
1130
-
1131
- return await evaluateRevalidation({
1132
- segment: dummySegment,
1133
- prevParams,
1134
- getPrevSegment: null,
1135
- request,
1136
- prevUrl,
1137
- nextUrl,
1138
- revalidations: parallelEntry.revalidate.map((fn, i) => ({
1139
- name: `revalidate${i}`,
1140
- fn,
1141
- })),
1142
- routeKey,
1143
- context,
1144
- actionContext,
1145
- stale,
1146
- traceSource: "parallel",
1147
- });
1148
- })();
1149
- emitRevalidationDecision(
1150
- parallelId,
1151
- context.pathname,
1152
- routeKey,
1153
- shouldResolve,
1154
- );
1155
-
1156
- let component: ReactNode | undefined;
1157
- if (shouldResolve) {
1158
- component = await tryStaticSlot(parallelEntry, slot, parallelId);
1159
- }
1160
- if (component === undefined) {
1161
- const hasLoadingFallback =
1162
- parallelEntry.loading !== undefined && parallelEntry.loading !== false;
1163
- if (!shouldResolve) {
1164
- component = null;
1165
- } else if (handler === undefined) {
1166
- // Handler evicted (production static slot) but static lookup missed.
1167
- component = null;
1168
- } else if (hasLoadingFallback) {
1169
- const result =
1170
- typeof handler === "function" ? handler(context) : handler;
1171
- if (result instanceof Promise) {
1172
- const tracked = deps.trackHandler(result, {
1173
- segmentId: parallelId,
1174
- segmentType: "parallel",
1175
- });
1176
- observeStreamedHandler(
1177
- tracked,
1178
- parallelId,
1179
- "parallel",
1180
- context.pathname,
1181
- routeKey,
1182
- params,
1183
- );
1184
- component = tracked as ReactNode;
1185
- } else {
1186
- component = result as ReactNode;
1187
- }
1188
- } else {
1189
- component =
1190
- typeof handler === "function" ? await handler(context) : handler;
1191
- }
1192
- }
1193
-
1194
- segments.push({
1195
- id: parallelId,
1196
- namespace: parallelEntry.id,
1197
- type: "parallel",
1198
- index: 0,
1199
- component,
1200
- loading: parallelEntry.loading === false ? null : parallelEntry.loading,
1201
- transition: parallelEntry.transition,
1202
- params,
1203
- slot,
1204
- belongsToRoute,
1205
- parallelName: `${parallelEntry.id}.${slot}`,
1206
- ...(parallelEntry.mountPath
1207
- ? { mountPath: parallelEntry.mountPath }
1208
- : {}),
1209
- });
1210
- }
1207
+ // Resolve the orphan layout's parallel slots through the shared main-path
1208
+ // helper. The orphan policy is carried by explicit args, byte-for-byte:
1209
+ // - parentChainDefault "force-render": an unknown parent-chain slot seeds
1210
+ // `true` (orphan parallels always belong to the route — the #482 guard),
1211
+ // where the main path would seed `belongsToRoute || isNewParent`.
1212
+ // - loaderOrder "before": a slot's loaders are emitted before the slot
1213
+ // segment, matching the prior inlined order.
1214
+ // `entry.shortCode` inside the helper is `orphan.shortCode` (orphan is passed
1215
+ // as `entry`), so the parallel ids + loader shortCodeOverride are unchanged.
1216
+ const parallelResult = await resolveParallelSegmentsWithRevalidation(
1217
+ orphan,
1218
+ params,
1219
+ context,
1220
+ belongsToRoute,
1221
+ clientSegmentIds,
1222
+ prevParams,
1223
+ request,
1224
+ prevUrl,
1225
+ nextUrl,
1226
+ routeKey,
1227
+ deps,
1228
+ actionContext,
1229
+ stale,
1230
+ { parentChainDefault: "force-render", loaderOrder: "before" },
1231
+ );
1232
+ segments.push(...parallelResult.segments);
1233
+ matchedIds.push(...parallelResult.matchedIds);
1211
1234
 
1212
1235
  return { segments, matchedIds };
1213
1236
  }
@@ -1225,7 +1248,6 @@ export async function resolveAllSegmentsWithRevalidation<TEnv>(
1225
1248
  request: Request,
1226
1249
  prevUrl: URL,
1227
1250
  nextUrl: URL,
1228
- loaderPromises: Map<string, Promise<any>>,
1229
1251
  actionContext: ActionContext | undefined,
1230
1252
  interceptResult: { intercept: any; entry: EntryData } | null,
1231
1253
  localRouteName: string,
@@ -1259,7 +1281,7 @@ export async function resolveAllSegmentsWithRevalidation<TEnv>(
1259
1281
 
1260
1282
  const nonParallelEntry = entry as Exclude<EntryData, { type: "parallel" }>;
1261
1283
  if (entry.type === "cache") {
1262
- const store = RSCRouterContext.getStore();
1284
+ const store = RangoContext.getStore();
1263
1285
  if (store) store.insideCacheScope = true;
1264
1286
  }
1265
1287
  const doneEntry = track(`segment:${entry.id}`, 1);
@@ -1277,7 +1299,6 @@ export async function resolveAllSegmentsWithRevalidation<TEnv>(
1277
1299
  request,
1278
1300
  prevUrl,
1279
1301
  nextUrl,
1280
- loaderPromises,
1281
1302
  deps,
1282
1303
  actionContext,
1283
1304
  stale,