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

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 (1199) hide show
  1. package/AGENTS.md +8 -0
  2. package/README.md +184 -31
  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 +339 -106
  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/dist/network-error-thrower.d.ts +17 -0
  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 +3247 -1128
  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 +81 -12
  812. package/skills/api-client/SKILL.md +211 -0
  813. package/skills/breadcrumbs/SKILL.md +64 -2
  814. package/skills/bundle-analysis/SKILL.md +159 -0
  815. package/skills/cache-guide/SKILL.md +224 -32
  816. package/skills/caching/SKILL.md +279 -17
  817. package/skills/composability/SKILL.md +27 -2
  818. package/skills/css/SKILL.md +76 -0
  819. package/skills/debug-manifest/SKILL.md +4 -2
  820. package/skills/document-cache/SKILL.md +78 -55
  821. package/skills/handler-use/SKILL.md +364 -0
  822. package/skills/hooks/SKILL.md +250 -30
  823. package/skills/host-router/SKILL.md +125 -23
  824. package/skills/i18n/SKILL.md +276 -0
  825. package/skills/intercept/SKILL.md +50 -6
  826. package/skills/layout/SKILL.md +35 -9
  827. package/skills/links/SKILL.md +247 -17
  828. package/skills/loader/SKILL.md +225 -9
  829. package/skills/middleware/SKILL.md +50 -13
  830. package/skills/migrate-nextjs/SKILL.md +584 -0
  831. package/skills/migrate-react-router/SKILL.md +771 -0
  832. package/skills/mime-routes/SKILL.md +28 -1
  833. package/skills/observability/SKILL.md +194 -0
  834. package/skills/parallel/SKILL.md +77 -7
  835. package/skills/prerender/SKILL.md +45 -43
  836. package/skills/rango/SKILL.md +257 -22
  837. package/skills/react-compiler/SKILL.md +168 -0
  838. package/skills/response-routes/SKILL.md +123 -48
  839. package/skills/route/SKILL.md +70 -5
  840. package/skills/router-setup/SKILL.md +30 -6
  841. package/skills/scripts/SKILL.md +179 -0
  842. package/skills/server-actions/SKILL.md +775 -0
  843. package/skills/streams-and-websockets/SKILL.md +283 -0
  844. package/skills/tailwind/SKILL.md +27 -3
  845. package/skills/testing/SKILL.md +129 -0
  846. package/skills/testing/bindings.md +103 -0
  847. package/skills/testing/cache-prerender.md +127 -0
  848. package/skills/testing/client-components.md +124 -0
  849. package/skills/testing/e2e-parity.md +125 -0
  850. package/skills/testing/flight.md +91 -0
  851. package/skills/testing/handles.md +129 -0
  852. package/skills/testing/loader.md +128 -0
  853. package/skills/testing/middleware.md +99 -0
  854. package/skills/testing/render-handler.md +121 -0
  855. package/skills/testing/response-routes.md +95 -0
  856. package/skills/testing/reverse-and-types.md +84 -0
  857. package/skills/testing/server-actions.md +107 -0
  858. package/skills/testing/server-tree.md +128 -0
  859. package/skills/testing/setup.md +123 -0
  860. package/skills/typesafety/SKILL.md +322 -29
  861. package/skills/use-cache/SKILL.md +46 -14
  862. package/skills/vercel/SKILL.md +128 -0
  863. package/skills/view-transitions/SKILL.md +294 -0
  864. package/src/__augment-tests__/augment.ts +81 -0
  865. package/src/__augment-tests__/augmented.check.ts +116 -0
  866. package/src/__internal.ts +0 -65
  867. package/src/browser/action-coordinator.ts +53 -36
  868. package/src/browser/action-fence.ts +47 -0
  869. package/src/browser/app-shell.ts +39 -0
  870. package/src/browser/connection-warmup.ts +134 -0
  871. package/src/browser/cookie-name.ts +140 -0
  872. package/src/browser/event-controller.ts +192 -150
  873. package/src/browser/history-state.ts +21 -0
  874. package/src/browser/index.ts +3 -3
  875. package/src/browser/invalidate-client-cache.ts +52 -0
  876. package/src/browser/navigation-bridge.ts +50 -11
  877. package/src/browser/navigation-client.ts +113 -78
  878. package/src/browser/navigation-store-handle.ts +38 -0
  879. package/src/browser/navigation-store.ts +33 -59
  880. package/src/browser/navigation-transaction.ts +9 -59
  881. package/src/browser/partial-update.ts +109 -122
  882. package/src/browser/prefetch/cache.ts +193 -68
  883. package/src/browser/prefetch/fetch.ts +293 -59
  884. package/src/browser/prefetch/queue.ts +42 -8
  885. package/src/browser/rango-state.ts +158 -76
  886. package/src/browser/react/Link.tsx +48 -20
  887. package/src/browser/react/NavigationProvider.tsx +95 -117
  888. package/src/browser/react/ScrollRestoration.tsx +10 -6
  889. package/src/browser/react/filter-segment-order.ts +66 -7
  890. package/src/browser/react/index.ts +0 -48
  891. package/src/browser/react/location-state-shared.ts +178 -8
  892. package/src/browser/react/location-state.ts +39 -14
  893. package/src/browser/react/use-action.ts +6 -15
  894. package/src/browser/react/use-handle.ts +17 -14
  895. package/src/browser/react/use-href.tsx +8 -1
  896. package/src/browser/react/use-link-status.ts +33 -8
  897. package/src/browser/react/use-navigation.ts +32 -7
  898. package/src/browser/react/use-params.ts +20 -10
  899. package/src/browser/react/use-reverse.ts +106 -0
  900. package/src/browser/react/use-router.ts +25 -3
  901. package/src/browser/react/use-search-params.ts +0 -5
  902. package/src/browser/react/use-segments.ts +11 -21
  903. package/src/browser/response-adapter.ts +66 -4
  904. package/src/browser/rsc-router.tsx +91 -24
  905. package/src/browser/scroll-restoration.ts +30 -17
  906. package/src/browser/segment-reconciler.ts +10 -14
  907. package/src/browser/segment-structure-assert.ts +2 -2
  908. package/src/browser/server-action-bridge.ts +214 -55
  909. package/src/browser/types.ts +48 -8
  910. package/src/browser/validate-redirect-origin.ts +43 -16
  911. package/src/build/collect-fallback-refs.ts +107 -0
  912. package/src/build/generate-manifest.ts +60 -35
  913. package/src/build/generate-route-types.ts +3 -1
  914. package/src/build/index.ts +8 -2
  915. package/src/build/prefix-tree-utils.ts +123 -0
  916. package/src/build/route-trie.ts +165 -36
  917. package/src/build/route-types/ast-route-extraction.ts +15 -8
  918. package/src/build/route-types/codegen.ts +16 -5
  919. package/src/build/route-types/include-resolution.ts +117 -23
  920. package/src/build/route-types/param-extraction.ts +6 -3
  921. package/src/build/route-types/per-module-writer.ts +22 -6
  922. package/src/build/route-types/router-processing.ts +128 -51
  923. package/src/build/route-types/scan-filter.ts +1 -1
  924. package/src/build/route-types/source-scan.ts +216 -0
  925. package/src/build/runtime-discovery.ts +9 -20
  926. package/src/cache/cache-error.ts +104 -0
  927. package/src/cache/cache-key-utils.ts +29 -13
  928. package/src/cache/cache-policy.ts +108 -34
  929. package/src/cache/cache-runtime.ts +199 -37
  930. package/src/cache/cache-scope.ts +188 -82
  931. package/src/cache/cache-tag.ts +103 -0
  932. package/src/cache/cf/cf-base64.ts +33 -0
  933. package/src/cache/cf/cf-cache-constants.ts +127 -0
  934. package/src/cache/cf/cf-cache-store.ts +1989 -378
  935. package/src/cache/cf/cf-cache-types.ts +349 -0
  936. package/src/cache/cf/cf-kv-utils.ts +46 -0
  937. package/src/cache/cf/cf-tag-marker-memo.ts +105 -0
  938. package/src/cache/cf/index.ts +6 -16
  939. package/src/cache/document-cache.ts +72 -20
  940. package/src/cache/handle-snapshot.ts +70 -0
  941. package/src/cache/index.ts +22 -20
  942. package/src/cache/memory-segment-store.ts +136 -37
  943. package/src/cache/profile-registry.ts +31 -31
  944. package/src/cache/read-through-swr.ts +41 -11
  945. package/src/cache/segment-codec.ts +9 -17
  946. package/src/cache/tag-invalidation.ts +230 -0
  947. package/src/cache/types.ts +37 -100
  948. package/src/cache/vercel/index.ts +11 -0
  949. package/src/cache/vercel/vercel-cache-store.ts +855 -0
  950. package/src/client.rsc.tsx +44 -21
  951. package/src/client.tsx +118 -235
  952. package/src/cloudflare/index.ts +11 -0
  953. package/src/cloudflare/tracing.ts +109 -0
  954. package/src/component-utils.ts +19 -0
  955. package/src/components/DefaultDocument.tsx +8 -2
  956. package/src/context-var.ts +18 -6
  957. package/src/decode-loader-results.ts +52 -0
  958. package/src/defer.ts +196 -0
  959. package/src/deps/ssr.ts +0 -1
  960. package/src/encode-kv.ts +49 -0
  961. package/src/errors.ts +30 -4
  962. package/src/escape-script.ts +52 -0
  963. package/src/handle.ts +31 -23
  964. package/src/handles/MetaTags.tsx +56 -19
  965. package/src/handles/Scripts.tsx +183 -0
  966. package/src/handles/breadcrumbs.ts +37 -8
  967. package/src/handles/is-thenable.ts +19 -0
  968. package/src/handles/meta.ts +51 -40
  969. package/src/handles/script.ts +244 -0
  970. package/src/host/cookie-handler.ts +9 -60
  971. package/src/host/errors.ts +0 -24
  972. package/src/host/index.ts +8 -2
  973. package/src/host/pattern-matcher.ts +23 -52
  974. package/src/host/router.ts +107 -99
  975. package/src/host/testing.ts +40 -27
  976. package/src/host/types.ts +37 -4
  977. package/src/host/utils.ts +1 -1
  978. package/src/href-client.ts +137 -22
  979. package/src/index.rsc.ts +90 -11
  980. package/src/index.ts +125 -19
  981. package/src/internal-debug.ts +2 -4
  982. package/src/loader-store.ts +500 -0
  983. package/src/loader.rsc.ts +20 -13
  984. package/src/loader.ts +12 -11
  985. package/src/missing-id-error.ts +68 -0
  986. package/src/network-error-thrower.tsx +1 -6
  987. package/src/outlet-context.ts +1 -1
  988. package/src/outlet-provider.tsx +1 -5
  989. package/src/prerender/param-hash.ts +16 -16
  990. package/src/prerender/store.ts +32 -37
  991. package/src/prerender.ts +61 -6
  992. package/src/redirect-origin.ts +100 -0
  993. package/src/regex-escape.ts +8 -0
  994. package/src/response-utils.ts +62 -0
  995. package/src/reverse.ts +65 -36
  996. package/src/root-error-boundary.tsx +1 -19
  997. package/src/route-content-wrapper.tsx +7 -72
  998. package/src/route-definition/dsl-helpers.ts +418 -273
  999. package/src/route-definition/helper-factories.ts +29 -139
  1000. package/src/route-definition/helpers-types.ts +103 -31
  1001. package/src/route-definition/redirect.ts +44 -11
  1002. package/src/route-definition/resolve-handler-use.ts +12 -0
  1003. package/src/route-definition/use-item-types.ts +32 -0
  1004. package/src/route-map-builder.ts +0 -16
  1005. package/src/route-types.ts +26 -41
  1006. package/src/router/basename.ts +14 -0
  1007. package/src/router/content-negotiation.ts +73 -25
  1008. package/src/router/error-handling.ts +45 -18
  1009. package/src/router/find-match.ts +44 -23
  1010. package/src/router/handler-context.ts +27 -39
  1011. package/src/router/instrument.ts +350 -0
  1012. package/src/router/intercept-resolution.ts +39 -20
  1013. package/src/router/lazy-includes.ts +15 -52
  1014. package/src/router/loader-resolution.ts +155 -72
  1015. package/src/router/logging.ts +0 -6
  1016. package/src/router/manifest.ts +40 -42
  1017. package/src/router/match-api.ts +4 -23
  1018. package/src/router/match-context.ts +0 -22
  1019. package/src/router/match-handlers.ts +58 -58
  1020. package/src/router/match-middleware/background-revalidation.ts +6 -7
  1021. package/src/router/match-middleware/cache-lookup.ts +161 -286
  1022. package/src/router/match-middleware/cache-store.ts +31 -34
  1023. package/src/router/match-middleware/intercept-resolution.ts +0 -22
  1024. package/src/router/match-middleware/segment-resolution.ts +0 -22
  1025. package/src/router/match-pipelines.ts +1 -42
  1026. package/src/router/match-result.ts +44 -74
  1027. package/src/router/metrics.ts +0 -34
  1028. package/src/router/middleware-types.ts +7 -134
  1029. package/src/router/middleware.ts +266 -166
  1030. package/src/router/navigation-snapshot.ts +0 -51
  1031. package/src/router/params-util.ts +23 -0
  1032. package/src/router/pattern-matching.ts +132 -90
  1033. package/src/router/prefetch-cache-ttl.ts +51 -0
  1034. package/src/router/prerender-match.ts +104 -65
  1035. package/src/router/preview-match.ts +3 -1
  1036. package/src/router/request-classification.ts +28 -62
  1037. package/src/router/revalidation.ts +123 -73
  1038. package/src/router/route-snapshot.ts +0 -1
  1039. package/src/router/router-context.ts +3 -28
  1040. package/src/router/router-interfaces.ts +83 -35
  1041. package/src/router/router-options.ts +136 -5
  1042. package/src/router/router-registry.ts +2 -5
  1043. package/src/router/segment-resolution/fresh.ts +93 -84
  1044. package/src/router/segment-resolution/helpers.ts +86 -6
  1045. package/src/router/segment-resolution/loader-cache.ts +62 -37
  1046. package/src/router/segment-resolution/revalidation.ts +269 -320
  1047. package/src/router/segment-resolution/static-store.ts +19 -5
  1048. package/src/router/segment-resolution/streamed-handler-telemetry.ts +52 -0
  1049. package/src/router/segment-resolution/view-transition-default.ts +36 -0
  1050. package/src/router/segment-resolution.ts +5 -1
  1051. package/src/router/segment-wrappers.ts +6 -5
  1052. package/src/router/state-cookie-name.ts +33 -0
  1053. package/src/router/substitute-pattern-params.ts +56 -0
  1054. package/src/router/telemetry-otel.ts +161 -199
  1055. package/src/router/telemetry.ts +96 -19
  1056. package/src/router/timeout.ts +0 -20
  1057. package/src/router/tracing.ts +206 -0
  1058. package/src/router/trie-matching.ts +163 -59
  1059. package/src/router/types.ts +9 -63
  1060. package/src/router/url-params.ts +44 -0
  1061. package/src/router.ts +110 -55
  1062. package/src/rsc/handler-context.ts +3 -2
  1063. package/src/rsc/handler.ts +266 -219
  1064. package/src/rsc/helpers.ts +168 -46
  1065. package/src/rsc/index.ts +2 -5
  1066. package/src/rsc/json-route-result.ts +38 -0
  1067. package/src/rsc/loader-fetch.ts +114 -38
  1068. package/src/rsc/manifest-init.ts +28 -41
  1069. package/src/rsc/origin-guard.ts +39 -25
  1070. package/src/rsc/progressive-enhancement.ts +63 -9
  1071. package/src/rsc/redirect-guard.ts +99 -0
  1072. package/src/rsc/response-cache-serve.ts +238 -0
  1073. package/src/rsc/response-error.ts +79 -12
  1074. package/src/rsc/response-route-handler.ts +99 -189
  1075. package/src/rsc/rsc-rendering.ts +99 -75
  1076. package/src/rsc/runtime-warnings.ts +23 -10
  1077. package/src/rsc/server-action.ts +258 -115
  1078. package/src/rsc/ssr-setup.ts +16 -0
  1079. package/src/rsc/types.ts +23 -5
  1080. package/src/runtime-env.ts +18 -0
  1081. package/src/search-params.ts +35 -30
  1082. package/src/segment-content-promise.ts +67 -0
  1083. package/src/segment-loader-promise.ts +149 -0
  1084. package/src/segment-system.tsx +218 -202
  1085. package/src/serialize.ts +243 -0
  1086. package/src/server/context.ts +175 -53
  1087. package/src/server/cookie-parse.ts +32 -0
  1088. package/src/server/cookie-store.ts +80 -5
  1089. package/src/server/handle-store.ts +21 -38
  1090. package/src/server/loader-registry.ts +21 -42
  1091. package/src/server/request-context.ts +235 -175
  1092. package/src/ssr/index.tsx +21 -16
  1093. package/src/static-handler.ts +10 -13
  1094. package/src/testing/cache-status.ts +162 -0
  1095. package/src/testing/collect-handle.ts +40 -0
  1096. package/src/testing/dispatch.ts +701 -0
  1097. package/src/testing/dom.entry.ts +22 -0
  1098. package/src/testing/e2e/fixture.ts +188 -0
  1099. package/src/testing/e2e/index.ts +128 -0
  1100. package/src/testing/e2e/matchers.ts +35 -0
  1101. package/src/testing/e2e/page-helpers.ts +272 -0
  1102. package/src/testing/e2e/parity.ts +387 -0
  1103. package/src/testing/e2e/server.ts +195 -0
  1104. package/src/testing/flight-matchers.ts +97 -0
  1105. package/src/testing/flight-normalize.ts +11 -0
  1106. package/src/testing/flight-runtime.d.ts +57 -0
  1107. package/src/testing/flight-tree.ts +682 -0
  1108. package/src/testing/flight.entry.ts +52 -0
  1109. package/src/testing/flight.ts +257 -0
  1110. package/src/testing/generated-routes.ts +183 -0
  1111. package/src/testing/index.ts +99 -0
  1112. package/src/testing/internal/context.ts +371 -0
  1113. package/src/testing/internal/flight-client-globals.ts +30 -0
  1114. package/src/testing/internal/seed-vars.ts +54 -0
  1115. package/src/testing/render-handler.ts +343 -0
  1116. package/src/testing/render-route.tsx +581 -0
  1117. package/src/testing/run-loader.ts +385 -0
  1118. package/src/testing/run-middleware.ts +205 -0
  1119. package/src/testing/vitest-stubs/cloudflare-email.ts +9 -0
  1120. package/src/testing/vitest-stubs/cloudflare-workers.ts +21 -0
  1121. package/src/testing/vitest-stubs/plugin-rsc.ts +16 -0
  1122. package/src/testing/vitest-stubs/version.ts +5 -0
  1123. package/src/testing/vitest.ts +305 -0
  1124. package/src/theme/ThemeProvider.tsx +20 -58
  1125. package/src/theme/ThemeScript.tsx +7 -9
  1126. package/src/theme/constants.ts +52 -13
  1127. package/src/theme/index.ts +0 -7
  1128. package/src/theme/theme-context.ts +1 -5
  1129. package/src/theme/theme-script.ts +22 -21
  1130. package/src/theme/use-theme.ts +0 -3
  1131. package/src/types/boundaries.ts +0 -35
  1132. package/src/types/cache-types.ts +13 -4
  1133. package/src/types/error-types.ts +30 -90
  1134. package/src/types/global-namespace.ts +54 -41
  1135. package/src/types/handler-context.ts +109 -61
  1136. package/src/types/index.ts +1 -10
  1137. package/src/types/loader-types.ts +11 -9
  1138. package/src/types/request-scope.ts +112 -0
  1139. package/src/types/route-config.ts +6 -50
  1140. package/src/types/route-entry.ts +11 -6
  1141. package/src/types/segments.ts +35 -15
  1142. package/src/urls/include-helper.ts +33 -70
  1143. package/src/urls/index.ts +1 -11
  1144. package/src/urls/path-helper-types.ts +49 -9
  1145. package/src/urls/path-helper.ts +17 -106
  1146. package/src/urls/pattern-types.ts +36 -19
  1147. package/src/urls/response-types.ts +22 -29
  1148. package/src/urls/type-extraction.ts +58 -139
  1149. package/src/urls/urls-function.ts +1 -18
  1150. package/src/use-loader.tsx +292 -107
  1151. package/src/vercel/index.ts +11 -0
  1152. package/src/vercel/tracing.ts +88 -0
  1153. package/src/vite/debug.ts +185 -0
  1154. package/src/vite/discovery/bundle-postprocess.ts +8 -7
  1155. package/src/vite/discovery/discover-routers.ts +126 -85
  1156. package/src/vite/discovery/discovery-errors.ts +194 -0
  1157. package/src/vite/discovery/gate-state.ts +171 -0
  1158. package/src/vite/discovery/prerender-collection.ts +96 -68
  1159. package/src/vite/discovery/route-types-writer.ts +40 -84
  1160. package/src/vite/discovery/self-gen-tracking.ts +27 -1
  1161. package/src/vite/discovery/state.ts +45 -1
  1162. package/src/vite/discovery/virtual-module-codegen.ts +14 -34
  1163. package/src/vite/index.ts +4 -0
  1164. package/src/vite/plugin-types.ts +210 -10
  1165. package/src/vite/plugins/cjs-to-esm.ts +16 -19
  1166. package/src/vite/plugins/client-ref-dedup.ts +16 -11
  1167. package/src/vite/plugins/client-ref-hashing.ts +28 -15
  1168. package/src/vite/plugins/cloudflare-protocol-loader-hook.d.mts +23 -0
  1169. package/src/vite/plugins/cloudflare-protocol-loader-hook.mjs +76 -0
  1170. package/src/vite/plugins/cloudflare-protocol-stub.ts +194 -0
  1171. package/src/vite/plugins/expose-action-id.ts +48 -95
  1172. package/src/vite/plugins/expose-id-utils.ts +88 -55
  1173. package/src/vite/plugins/expose-ids/export-analysis.ts +101 -34
  1174. package/src/vite/plugins/expose-ids/handler-transform.ts +11 -90
  1175. package/src/vite/plugins/expose-ids/loader-transform.ts +14 -24
  1176. package/src/vite/plugins/expose-ids/router-transform.ts +118 -29
  1177. package/src/vite/plugins/expose-internal-ids.ts +505 -486
  1178. package/src/vite/plugins/performance-tracks.ts +26 -25
  1179. package/src/vite/plugins/refresh-cmd.ts +1 -1
  1180. package/src/vite/plugins/use-cache-transform.ts +73 -83
  1181. package/src/vite/plugins/vercel-output.ts +295 -0
  1182. package/src/vite/plugins/version-injector.ts +21 -25
  1183. package/src/vite/plugins/version-plugin.ts +37 -40
  1184. package/src/vite/plugins/virtual-entries.ts +71 -18
  1185. package/src/vite/rango.ts +225 -137
  1186. package/src/vite/router-discovery.ts +769 -106
  1187. package/src/vite/utils/ast-handler-extract.ts +26 -35
  1188. package/src/vite/utils/banner.ts +1 -1
  1189. package/src/vite/utils/bundle-analysis.ts +10 -15
  1190. package/src/vite/utils/client-chunks.ts +184 -0
  1191. package/src/vite/utils/directive-prologue.ts +40 -0
  1192. package/src/vite/utils/forward-user-plugins.ts +171 -0
  1193. package/src/vite/utils/manifest-utils.ts +4 -59
  1194. package/src/vite/utils/package-resolution.ts +20 -52
  1195. package/src/vite/utils/prerender-utils.ts +67 -38
  1196. package/src/vite/utils/shared-utils.ts +95 -43
  1197. package/src/browser/action-response-classifier.ts +0 -99
  1198. package/src/browser/shallow.ts +0 -40
  1199. 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,58 +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";
47
+ import { observeEvent, observeHandler } from "../instrument.js";
48
+ import { observeStreamedHandler } from "./streamed-handler-telemetry.js";
44
49
  import {
45
50
  track,
46
- RSCRouterContext,
51
+ RangoContext,
47
52
  runInsideLoaderScope,
48
53
  } from "../../server/context.js";
49
54
 
50
- // ---------------------------------------------------------------------------
51
- // Telemetry helpers
52
- // ---------------------------------------------------------------------------
53
-
54
55
  /**
55
- * Attach a fire-and-forget rejection observer to a streamed handler promise.
56
- * 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.
57
59
  */
58
- function observeStreamedHandler(
59
- promise: Promise<ReactNode>,
60
- segmentId: string,
61
- segmentType: string,
62
- pathname?: string,
63
- routeKey?: string,
64
- params?: Record<string, string>,
60
+ function traceFullRefetchedParallelSlot(
61
+ parallelId: string,
62
+ belongsToRoute: boolean,
65
63
  ): void {
66
- let routerCtx;
67
- try {
68
- routerCtx = getRouterContext();
69
- } catch {
70
- return;
71
- }
72
- if (!routerCtx?.telemetry) return;
73
- const sink = resolveSink(routerCtx.telemetry);
74
- const reqId = routerCtx.requestId;
75
- promise.catch((err: unknown) => {
76
- const errorObj = err instanceof Error ? err : new Error(String(err));
77
- safeEmit(sink, {
78
- type: "handler.error",
79
- timestamp: performance.now(),
80
- requestId: reqId,
81
- segmentId,
82
- segmentType,
83
- error: errorObj,
84
- handledByBoundary: true,
85
- pathname,
86
- routeKey,
87
- params,
88
- });
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",
89
73
  });
90
74
  }
91
75
 
@@ -104,23 +88,14 @@ function emitRevalidationDecision(
104
88
  routeKey: string,
105
89
  shouldRevalidate: boolean,
106
90
  ): void {
107
- let routerCtx;
108
- try {
109
- routerCtx = getRouterContext();
110
- } catch {
111
- return;
112
- }
113
- if (routerCtx?.telemetry) {
114
- safeEmit(resolveSink(routerCtx.telemetry), {
115
- type: "revalidation.decision",
116
- timestamp: performance.now(),
117
- requestId: routerCtx.requestId,
118
- segmentId,
119
- pathname,
120
- routeKey,
121
- shouldRevalidate,
122
- });
123
- }
91
+ observeEvent({
92
+ type: "revalidation.decision",
93
+ timestamp: performance.now(),
94
+ segmentId,
95
+ pathname,
96
+ routeKey,
97
+ shouldRevalidate,
98
+ });
124
99
  }
125
100
 
126
101
  // ---------------------------------------------------------------------------
@@ -225,6 +200,10 @@ export async function resolveLoadersWithRevalidation<TEnv>(
225
200
  ),
226
201
  );
227
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
+
228
207
  const loadersToRun = revalidationChecks.filter((c) => c.shouldRun);
229
208
  const segments: ResolvedSegment[] = loadersToRun.map(
230
209
  ({ loaderEntry, loader, segmentId, index }) => ({
@@ -242,6 +221,7 @@ export async function resolveLoadersWithRevalidation<TEnv>(
242
221
  entry,
243
222
  segmentId,
244
223
  ctx.pathname,
224
+ errorContext,
245
225
  ),
246
226
  belongsToRoute,
247
227
  }),
@@ -404,6 +384,97 @@ export function buildEntryRevalidateMap(
404
384
  return map;
405
385
  }
406
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
+
407
478
  /**
408
479
  * Resolve parallel segments with revalidation.
409
480
  */
@@ -421,9 +492,30 @@ export async function resolveParallelSegmentsWithRevalidation<TEnv>(
421
492
  deps: SegmentResolutionDeps<TEnv>,
422
493
  actionContext?: ActionContext,
423
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
+ },
424
514
  ): Promise<SegmentRevalidationResult> {
425
515
  const segments: ResolvedSegment[] = [];
426
516
  const matchedIds: string[] = [];
517
+ const parentChainDefault = options?.parentChainDefault ?? "type-derived";
518
+ const loaderOrder = options?.loaderOrder ?? "after";
427
519
 
428
520
  const resolvedParallelEntries = new Set<string>();
429
521
  for (const { slot, entry: parallelEntry } of getParallelSlotEntries(
@@ -448,44 +540,61 @@ export async function resolveParallelSegmentsWithRevalidation<TEnv>(
448
540
 
449
541
  const isFullRefetch = clientSegmentIds.size === 0;
450
542
  const isNewParent = !clientSegmentIds.has(entry.shortCode);
451
- if (
452
- isFullRefetch ||
453
- clientSegmentIds.has(parallelId) ||
454
- belongsToRoute ||
455
- isNewParent
456
- ) {
457
- 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();
458
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);
459
576
 
460
- const shouldResolve = await (async () => {
461
- if (isFullRefetch) {
462
- if (isTraceActive()) {
463
- pushRevalidationTraceEntry({
464
- segmentId: parallelId,
465
- segmentType: "parallel",
466
- belongsToRoute,
467
- source: "parallel",
468
- defaultShouldRevalidate: true,
469
- finalShouldRevalidate: true,
470
- reason: "full-refetch",
471
- });
472
- }
473
- return true;
474
- }
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;
475
589
  if (!clientSegmentIds.has(parallelId)) {
476
- const result = belongsToRoute || isNewParent;
477
- if (isTraceActive()) {
478
- pushRevalidationTraceEntry({
479
- segmentId: parallelId,
480
- segmentType: "parallel",
481
- belongsToRoute,
482
- source: "parallel",
483
- defaultShouldRevalidate: result,
484
- finalShouldRevalidate: result,
485
- reason: result ? "new-segment" : "skip-parent-chain",
486
- });
487
- }
488
- 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
+ };
489
598
  }
490
599
 
491
600
  const dummySegment: ResolvedSegment = {
@@ -503,7 +612,7 @@ export async function resolveParallelSegmentsWithRevalidation<TEnv>(
503
612
  : {}),
504
613
  };
505
614
 
506
- return await evaluateRevalidation({
615
+ shouldResolve = await evaluateRevalidation({
507
616
  segment: dummySegment,
508
617
  prevParams,
509
618
  getPrevSegment: null,
@@ -519,8 +628,9 @@ export async function resolveParallelSegmentsWithRevalidation<TEnv>(
519
628
  actionContext,
520
629
  stale,
521
630
  traceSource: "parallel",
631
+ defaultOverride,
522
632
  });
523
- })();
633
+ }
524
634
  emitRevalidationDecision(
525
635
  parallelId,
526
636
  context.pathname,
@@ -528,44 +638,17 @@ export async function resolveParallelSegmentsWithRevalidation<TEnv>(
528
638
  shouldResolve,
529
639
  );
530
640
 
531
- let component: ReactNode | undefined;
532
- if (shouldResolve) {
533
- component = await tryStaticSlot(parallelEntry, slot, parallelId);
534
- }
535
- if (component === undefined) {
536
- const hasLoadingFallback =
537
- parallelEntry.loading !== undefined && parallelEntry.loading !== false;
538
- if (!shouldResolve) {
539
- component = null;
540
- } else if (handler === undefined) {
541
- // Handler evicted (production static slot) but static lookup missed.
542
- // Nothing to render — use null so the client keeps its cached version.
543
- component = null;
544
- } else if (hasLoadingFallback) {
545
- const result =
546
- typeof handler === "function" ? handler(context) : handler;
547
- if (result instanceof Promise) {
548
- const tracked = deps.trackHandler(result, {
549
- segmentId: parallelId,
550
- segmentType: "parallel",
551
- });
552
- observeStreamedHandler(
553
- tracked,
554
- parallelId,
555
- "parallel",
556
- context.pathname,
557
- routeKey,
558
- params,
559
- );
560
- component = tracked as ReactNode;
561
- } else {
562
- component = result as ReactNode;
563
- }
564
- } else {
565
- component =
566
- typeof handler === "function" ? await handler(context) : handler;
567
- }
568
- }
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
+ });
569
652
 
570
653
  segments.push({
571
654
  id: parallelId,
@@ -574,9 +657,13 @@ export async function resolveParallelSegmentsWithRevalidation<TEnv>(
574
657
  index: 0,
575
658
  component,
576
659
  loading: parallelEntry.loading === false ? null : parallelEntry.loading,
577
- transition: parallelEntry.transition,
660
+ transition: applyViewTransitionDefault(
661
+ parallelEntry.transition,
662
+ deps.viewTransitionDefault,
663
+ ),
578
664
  params,
579
665
  slot,
666
+ _handlerRan: handlerRan,
580
667
  belongsToRoute,
581
668
  parallelName: `${parallelEntry.id}.${slot}`,
582
669
  ...(parallelEntry.mountPath
@@ -584,28 +671,9 @@ export async function resolveParallelSegmentsWithRevalidation<TEnv>(
584
671
  : {}),
585
672
  });
586
673
 
587
- if (resolvedParallelEntries.has(parallelEntry.id)) {
588
- continue;
674
+ if (loaderOrder === "after") {
675
+ await resolveSlotLoaders();
589
676
  }
590
-
591
- const loaderResult = await resolveLoadersWithRevalidation(
592
- parallelEntry,
593
- context,
594
- belongsToRoute,
595
- clientSegmentIds,
596
- prevParams,
597
- request,
598
- prevUrl,
599
- nextUrl,
600
- routeKey,
601
- deps,
602
- actionContext,
603
- entry.shortCode,
604
- stale,
605
- );
606
- segments.push(...loaderResult.segments);
607
- matchedIds.push(...loaderResult.matchedIds);
608
- resolvedParallelEntries.add(parallelEntry.id);
609
677
  }
610
678
 
611
679
  return { segments, matchedIds };
@@ -631,6 +699,7 @@ export async function resolveEntryHandlerWithRevalidation<TEnv>(
631
699
  ): Promise<{ segment: ResolvedSegment; matchedId: string }> {
632
700
  const matchedId = entry.shortCode;
633
701
 
702
+ let handlerRan = false;
634
703
  const component = await revalidate(
635
704
  async () => {
636
705
  const hasSegment = clientSegmentIds.has(entry.shortCode);
@@ -707,6 +776,7 @@ export async function resolveEntryHandlerWithRevalidation<TEnv>(
707
776
  return shouldRevalidate;
708
777
  },
709
778
  async () => {
779
+ handlerRan = true;
710
780
  const doneHandler = track(`handler:${entry.id}`, 2);
711
781
  (context as InternalHandlerContext<any, TEnv>)._currentSegmentId =
712
782
  entry.shortCode;
@@ -729,13 +799,18 @@ export async function resolveEntryHandlerWithRevalidation<TEnv>(
729
799
  ? routeEntry.liveHandler
730
800
  : routeEntry.handler;
731
801
  if (!routeEntry.loading) {
732
- const result = handleHandlerResult(await handler(context));
802
+ const result = handleHandlerResult(
803
+ await observeHandler(entry.id, handler, context),
804
+ );
733
805
  doneHandler();
734
806
  return result;
735
807
  }
736
808
  if (!actionContext) {
737
- const result = handleHandlerResult(handler(context));
809
+ const result = handleHandlerResult(
810
+ observeHandler(entry.id, handler, context),
811
+ );
738
812
  if (result instanceof Promise) {
813
+ warnOnStreamedResponse(result, routeEntry.id);
739
814
  result.finally(doneHandler).catch(() => {});
740
815
  const tracked = deps.trackHandler(result, {
741
816
  segmentId: entry.shortCode,
@@ -757,7 +832,9 @@ export async function resolveEntryHandlerWithRevalidation<TEnv>(
757
832
  debugLog("segment.action", "resolving action route with awaited value", {
758
833
  entryId: entry.id,
759
834
  });
760
- const actionResult = handleHandlerResult(await handler(context));
835
+ const actionResult = handleHandlerResult(
836
+ await observeHandler(entry.id, handler, context),
837
+ );
761
838
  doneHandler();
762
839
  return {
763
840
  content: Promise.resolve(actionResult),
@@ -781,13 +858,17 @@ export async function resolveEntryHandlerWithRevalidation<TEnv>(
781
858
  index: 0,
782
859
  component: resolvedComponent,
783
860
  loading: entry.loading === false ? null : entry.loading,
784
- transition: entry.transition,
861
+ transition: applyViewTransitionDefault(
862
+ entry.transition,
863
+ deps.viewTransitionDefault,
864
+ ),
785
865
  params,
786
866
  belongsToRoute,
787
867
  ...(entry.type === "layout" || entry.type === "cache"
788
868
  ? { layoutName: entry.id }
789
869
  : {}),
790
870
  ...(entry.mountPath ? { mountPath: entry.mountPath } : {}),
871
+ _handlerRan: handlerRan,
791
872
  };
792
873
 
793
874
  return { segment, matchedId };
@@ -806,7 +887,6 @@ export async function resolveSegmentWithRevalidation<TEnv>(
806
887
  request: Request,
807
888
  prevUrl: URL,
808
889
  nextUrl: URL,
809
- loaderPromises: Map<string, Promise<any>>,
810
890
  deps: SegmentResolutionDeps<TEnv>,
811
891
  actionContext?: ActionContext,
812
892
  stale?: boolean,
@@ -868,7 +948,6 @@ export async function resolveSegmentWithRevalidation<TEnv>(
868
948
  prevUrl,
869
949
  nextUrl,
870
950
  routeKey,
871
- loaderPromises,
872
951
  true,
873
952
  deps,
874
953
  actionContext,
@@ -953,7 +1032,6 @@ export async function resolveSegmentWithRevalidation<TEnv>(
953
1032
  prevUrl,
954
1033
  nextUrl,
955
1034
  routeKey,
956
- loaderPromises,
957
1035
  false,
958
1036
  deps,
959
1037
  actionContext,
@@ -980,7 +1058,6 @@ export async function resolveOrphanLayoutWithRevalidation<TEnv>(
980
1058
  prevUrl: URL,
981
1059
  nextUrl: URL,
982
1060
  routeKey: string,
983
- loaderPromises: Map<string, Promise<any>>,
984
1061
  belongsToRoute: boolean,
985
1062
  deps: SegmentResolutionDeps<TEnv>,
986
1063
  actionContext?: ActionContext,
@@ -1117,166 +1194,40 @@ export async function resolveOrphanLayoutWithRevalidation<TEnv>(
1117
1194
  belongsToRoute,
1118
1195
  layoutName: orphan.id,
1119
1196
  loading: orphan.loading === false ? null : orphan.loading,
1120
- transition: orphan.transition,
1197
+ transition: applyViewTransitionDefault(
1198
+ orphan.transition,
1199
+ deps.viewTransitionDefault,
1200
+ ),
1121
1201
  ...(orphan.mountPath ? { mountPath: orphan.mountPath } : {}),
1122
1202
  });
1123
1203
 
1124
- const resolvedParallelEntries = new Set<string>();
1125
- for (const { slot, entry: parallelEntry } of getParallelSlotEntries(
1126
- orphan.parallel,
1127
- )) {
1128
- invariant(
1129
- parallelEntry.type === "parallel",
1130
- `Expected parallel entry, got: ${parallelEntry.type}`,
1131
- );
1132
-
1133
- if (!resolvedParallelEntries.has(parallelEntry.id)) {
1134
- // shortCodeOverride must match the parent layout, not the parallel entry.
1135
- const loaderResult = await resolveLoadersWithRevalidation(
1136
- parallelEntry,
1137
- context,
1138
- belongsToRoute,
1139
- clientSegmentIds,
1140
- prevParams,
1141
- request,
1142
- prevUrl,
1143
- nextUrl,
1144
- routeKey,
1145
- deps,
1146
- actionContext,
1147
- orphan.shortCode,
1148
- stale,
1149
- );
1150
- segments.push(...loaderResult.segments);
1151
- matchedIds.push(...loaderResult.matchedIds);
1152
- resolvedParallelEntries.add(parallelEntry.id);
1153
- }
1154
-
1155
- const slots = parallelEntry.handler as Record<
1156
- `@${string}`,
1157
- | ((ctx: HandlerContext<any, TEnv>) => ReactNode | Promise<ReactNode>)
1158
- | ReactNode
1159
- >;
1160
- // Handler may be undefined in production after static handler eviction.
1161
- const handler = slots[slot];
1162
-
1163
- // Use orphan.shortCode (the parent layout) to match the SSR path
1164
- // (resolveParallelEntry receives parentShortCode = orphan.shortCode).
1165
- // Using parallelEntry.shortCode would generate IDs the client doesn't know about.
1166
- const parallelId = `${orphan.shortCode}.${slot}`;
1167
- matchedIds.push(parallelId);
1168
-
1169
- const shouldResolve = await (async () => {
1170
- if (!clientSegmentIds.has(parallelId)) {
1171
- if (isTraceActive()) {
1172
- pushRevalidationTraceEntry({
1173
- segmentId: parallelId,
1174
- segmentType: "parallel",
1175
- belongsToRoute,
1176
- source: "parallel",
1177
- defaultShouldRevalidate: true,
1178
- finalShouldRevalidate: true,
1179
- reason: "new-segment",
1180
- });
1181
- }
1182
- return true;
1183
- }
1184
-
1185
- const dummySegment: ResolvedSegment = {
1186
- id: parallelId,
1187
- namespace: parallelEntry.id,
1188
- type: "parallel",
1189
- index: 0,
1190
- component: null as any,
1191
- params,
1192
- slot,
1193
- belongsToRoute,
1194
- parallelName: `${parallelEntry.id}.${slot}`,
1195
- ...(parallelEntry.mountPath
1196
- ? { mountPath: parallelEntry.mountPath }
1197
- : {}),
1198
- };
1199
-
1200
- return await evaluateRevalidation({
1201
- segment: dummySegment,
1202
- prevParams,
1203
- getPrevSegment: null,
1204
- request,
1205
- prevUrl,
1206
- nextUrl,
1207
- revalidations: parallelEntry.revalidate.map((fn, i) => ({
1208
- name: `revalidate${i}`,
1209
- fn,
1210
- })),
1211
- routeKey,
1212
- context,
1213
- actionContext,
1214
- stale,
1215
- traceSource: "parallel",
1216
- });
1217
- })();
1218
- emitRevalidationDecision(
1219
- parallelId,
1220
- context.pathname,
1221
- routeKey,
1222
- shouldResolve,
1223
- );
1224
-
1225
- let component: ReactNode | undefined;
1226
- if (shouldResolve) {
1227
- component = await tryStaticSlot(parallelEntry, slot, parallelId);
1228
- }
1229
- if (component === undefined) {
1230
- const hasLoadingFallback =
1231
- parallelEntry.loading !== undefined && parallelEntry.loading !== false;
1232
- if (!shouldResolve) {
1233
- component = null;
1234
- } else if (handler === undefined) {
1235
- // Handler evicted (production static slot) but static lookup missed.
1236
- component = null;
1237
- } else if (hasLoadingFallback) {
1238
- const result =
1239
- typeof handler === "function" ? handler(context) : handler;
1240
- if (result instanceof Promise) {
1241
- const tracked = deps.trackHandler(result, {
1242
- segmentId: parallelId,
1243
- segmentType: "parallel",
1244
- });
1245
- observeStreamedHandler(
1246
- tracked,
1247
- parallelId,
1248
- "parallel",
1249
- context.pathname,
1250
- routeKey,
1251
- params,
1252
- );
1253
- component = tracked as ReactNode;
1254
- } else {
1255
- component = result as ReactNode;
1256
- }
1257
- } else {
1258
- component =
1259
- typeof handler === "function" ? await handler(context) : handler;
1260
- }
1261
- }
1262
-
1263
- segments.push({
1264
- id: parallelId,
1265
- namespace: parallelEntry.id,
1266
- type: "parallel",
1267
- index: 0,
1268
- component,
1269
- loading: parallelEntry.loading === false ? null : parallelEntry.loading,
1270
- transition: parallelEntry.transition,
1271
- params,
1272
- slot,
1273
- belongsToRoute,
1274
- parallelName: `${parallelEntry.id}.${slot}`,
1275
- ...(parallelEntry.mountPath
1276
- ? { mountPath: parallelEntry.mountPath }
1277
- : {}),
1278
- });
1279
- }
1204
+ // Resolve the orphan layout's parallel slots through the shared main-path
1205
+ // helper. The orphan policy is carried by explicit args, byte-for-byte:
1206
+ // - parentChainDefault "force-render": an unknown parent-chain slot seeds
1207
+ // `true` (orphan parallels always belong to the route — the #482 guard),
1208
+ // where the main path would seed `belongsToRoute || isNewParent`.
1209
+ // - loaderOrder "before": a slot's loaders are emitted before the slot
1210
+ // segment, matching the prior inlined order.
1211
+ // `entry.shortCode` inside the helper is `orphan.shortCode` (orphan is passed
1212
+ // as `entry`), so the parallel ids + loader shortCodeOverride are unchanged.
1213
+ const parallelResult = await resolveParallelSegmentsWithRevalidation(
1214
+ orphan,
1215
+ params,
1216
+ context,
1217
+ belongsToRoute,
1218
+ clientSegmentIds,
1219
+ prevParams,
1220
+ request,
1221
+ prevUrl,
1222
+ nextUrl,
1223
+ routeKey,
1224
+ deps,
1225
+ actionContext,
1226
+ stale,
1227
+ { parentChainDefault: "force-render", loaderOrder: "before" },
1228
+ );
1229
+ segments.push(...parallelResult.segments);
1230
+ matchedIds.push(...parallelResult.matchedIds);
1280
1231
 
1281
1232
  return { segments, matchedIds };
1282
1233
  }
@@ -1294,7 +1245,6 @@ export async function resolveAllSegmentsWithRevalidation<TEnv>(
1294
1245
  request: Request,
1295
1246
  prevUrl: URL,
1296
1247
  nextUrl: URL,
1297
- loaderPromises: Map<string, Promise<any>>,
1298
1248
  actionContext: ActionContext | undefined,
1299
1249
  interceptResult: { intercept: any; entry: EntryData } | null,
1300
1250
  localRouteName: string,
@@ -1328,7 +1278,7 @@ export async function resolveAllSegmentsWithRevalidation<TEnv>(
1328
1278
 
1329
1279
  const nonParallelEntry = entry as Exclude<EntryData, { type: "parallel" }>;
1330
1280
  if (entry.type === "cache") {
1331
- const store = RSCRouterContext.getStore();
1281
+ const store = RangoContext.getStore();
1332
1282
  if (store) store.insideCacheScope = true;
1333
1283
  }
1334
1284
  const doneEntry = track(`segment:${entry.id}`, 1);
@@ -1346,7 +1296,6 @@ export async function resolveAllSegmentsWithRevalidation<TEnv>(
1346
1296
  request,
1347
1297
  prevUrl,
1348
1298
  nextUrl,
1349
- loaderPromises,
1350
1299
  deps,
1351
1300
  actionContext,
1352
1301
  stale,