@rangojs/router 0.0.0-experimental.ea6d5eec → 0.0.0-experimental.ea9f40f2

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 (1249) hide show
  1. package/AGENTS.md +8 -4
  2. package/README.md +303 -741
  3. package/dist/__internal.d.ts +83 -0
  4. package/dist/__internal.d.ts.map +1 -0
  5. package/dist/__internal.js +19 -0
  6. package/dist/__internal.js.map +1 -0
  7. package/dist/__mocks__/version.d.ts +7 -0
  8. package/dist/__mocks__/version.d.ts.map +1 -0
  9. package/dist/__mocks__/version.js +7 -0
  10. package/dist/__mocks__/version.js.map +1 -0
  11. package/dist/__tests__/client-href.test.d.ts +2 -0
  12. package/dist/__tests__/client-href.test.d.ts.map +1 -0
  13. package/dist/__tests__/client-href.test.js +74 -0
  14. package/dist/__tests__/client-href.test.js.map +1 -0
  15. package/dist/__tests__/component-utils.test.d.ts +2 -0
  16. package/dist/__tests__/component-utils.test.d.ts.map +1 -0
  17. package/dist/__tests__/component-utils.test.js +51 -0
  18. package/dist/__tests__/component-utils.test.js.map +1 -0
  19. package/dist/__tests__/event-controller.test.d.ts +2 -0
  20. package/dist/__tests__/event-controller.test.d.ts.map +1 -0
  21. package/dist/__tests__/event-controller.test.js +538 -0
  22. package/dist/__tests__/event-controller.test.js.map +1 -0
  23. package/dist/__tests__/helpers/route-tree.d.ts +118 -0
  24. package/dist/__tests__/helpers/route-tree.d.ts.map +1 -0
  25. package/dist/__tests__/helpers/route-tree.js +374 -0
  26. package/dist/__tests__/helpers/route-tree.js.map +1 -0
  27. package/dist/__tests__/match-result.test.d.ts +2 -0
  28. package/dist/__tests__/match-result.test.d.ts.map +1 -0
  29. package/dist/__tests__/match-result.test.js +154 -0
  30. package/dist/__tests__/match-result.test.js.map +1 -0
  31. package/dist/__tests__/navigation-store.test.d.ts +2 -0
  32. package/dist/__tests__/navigation-store.test.d.ts.map +1 -0
  33. package/dist/__tests__/navigation-store.test.js +440 -0
  34. package/dist/__tests__/navigation-store.test.js.map +1 -0
  35. package/dist/__tests__/partial-update.test.d.ts +2 -0
  36. package/dist/__tests__/partial-update.test.d.ts.map +1 -0
  37. package/dist/__tests__/partial-update.test.js +1009 -0
  38. package/dist/__tests__/partial-update.test.js.map +1 -0
  39. package/dist/__tests__/reverse-types.test.d.ts +8 -0
  40. package/dist/__tests__/reverse-types.test.d.ts.map +1 -0
  41. package/dist/__tests__/reverse-types.test.js +656 -0
  42. package/dist/__tests__/reverse-types.test.js.map +1 -0
  43. package/dist/__tests__/route-definition.test.d.ts +2 -0
  44. package/dist/__tests__/route-definition.test.d.ts.map +1 -0
  45. package/dist/__tests__/route-definition.test.js +55 -0
  46. package/dist/__tests__/route-definition.test.js.map +1 -0
  47. package/dist/__tests__/router-helpers.test.d.ts +2 -0
  48. package/dist/__tests__/router-helpers.test.d.ts.map +1 -0
  49. package/dist/__tests__/router-helpers.test.js +377 -0
  50. package/dist/__tests__/router-helpers.test.js.map +1 -0
  51. package/dist/__tests__/router-integration-2.test.d.ts +2 -0
  52. package/dist/__tests__/router-integration-2.test.d.ts.map +1 -0
  53. package/dist/__tests__/router-integration-2.test.js +426 -0
  54. package/dist/__tests__/router-integration-2.test.js.map +1 -0
  55. package/dist/__tests__/router-integration.test.d.ts +2 -0
  56. package/dist/__tests__/router-integration.test.d.ts.map +1 -0
  57. package/dist/__tests__/router-integration.test.js +1051 -0
  58. package/dist/__tests__/router-integration.test.js.map +1 -0
  59. package/dist/__tests__/search-params.test.d.ts +5 -0
  60. package/dist/__tests__/search-params.test.d.ts.map +1 -0
  61. package/dist/__tests__/search-params.test.js +306 -0
  62. package/dist/__tests__/search-params.test.js.map +1 -0
  63. package/dist/__tests__/segment-system.test.d.ts +2 -0
  64. package/dist/__tests__/segment-system.test.d.ts.map +1 -0
  65. package/dist/__tests__/segment-system.test.js +627 -0
  66. package/dist/__tests__/segment-system.test.js.map +1 -0
  67. package/dist/__tests__/static-handler-types.test.d.ts +8 -0
  68. package/dist/__tests__/static-handler-types.test.d.ts.map +1 -0
  69. package/dist/__tests__/static-handler-types.test.js +63 -0
  70. package/dist/__tests__/static-handler-types.test.js.map +1 -0
  71. package/dist/__tests__/urls.test.d.ts +2 -0
  72. package/dist/__tests__/urls.test.d.ts.map +1 -0
  73. package/dist/__tests__/urls.test.js +421 -0
  74. package/dist/__tests__/urls.test.js.map +1 -0
  75. package/dist/__tests__/use-mount.test.d.ts +2 -0
  76. package/dist/__tests__/use-mount.test.d.ts.map +1 -0
  77. package/dist/__tests__/use-mount.test.js +35 -0
  78. package/dist/__tests__/use-mount.test.js.map +1 -0
  79. package/dist/bin/rango.d.ts +2 -0
  80. package/dist/bin/rango.d.ts.map +1 -0
  81. package/dist/bin/rango.js +724 -183
  82. package/dist/bin/rango.js.map +1 -0
  83. package/dist/browser/event-controller.d.ts +191 -0
  84. package/dist/browser/event-controller.d.ts.map +1 -0
  85. package/dist/browser/event-controller.js +559 -0
  86. package/dist/browser/event-controller.js.map +1 -0
  87. package/dist/browser/index.d.ts +2 -0
  88. package/dist/browser/index.d.ts.map +1 -0
  89. package/dist/browser/index.js +14 -0
  90. package/dist/browser/index.js.map +1 -0
  91. package/dist/browser/link-interceptor.d.ts +38 -0
  92. package/dist/browser/link-interceptor.d.ts.map +1 -0
  93. package/dist/browser/link-interceptor.js +99 -0
  94. package/dist/browser/link-interceptor.js.map +1 -0
  95. package/dist/browser/logging.d.ts +10 -0
  96. package/dist/browser/logging.d.ts.map +1 -0
  97. package/dist/browser/logging.js +29 -0
  98. package/dist/browser/logging.js.map +1 -0
  99. package/dist/browser/lru-cache.d.ts +17 -0
  100. package/dist/browser/lru-cache.d.ts.map +1 -0
  101. package/dist/browser/lru-cache.js +50 -0
  102. package/dist/browser/lru-cache.js.map +1 -0
  103. package/dist/browser/merge-segment-loaders.d.ts +39 -0
  104. package/dist/browser/merge-segment-loaders.d.ts.map +1 -0
  105. package/dist/browser/merge-segment-loaders.js +102 -0
  106. package/dist/browser/merge-segment-loaders.js.map +1 -0
  107. package/dist/browser/navigation-bridge.d.ts +102 -0
  108. package/dist/browser/navigation-bridge.d.ts.map +1 -0
  109. package/dist/browser/navigation-bridge.js +708 -0
  110. package/dist/browser/navigation-bridge.js.map +1 -0
  111. package/dist/browser/navigation-client.d.ts +25 -0
  112. package/dist/browser/navigation-client.d.ts.map +1 -0
  113. package/dist/browser/navigation-client.js +157 -0
  114. package/dist/browser/navigation-client.js.map +1 -0
  115. package/dist/browser/navigation-store.d.ts +101 -0
  116. package/dist/browser/navigation-store.d.ts.map +1 -0
  117. package/dist/browser/navigation-store.js +625 -0
  118. package/dist/browser/navigation-store.js.map +1 -0
  119. package/dist/browser/partial-update.d.ts +75 -0
  120. package/dist/browser/partial-update.d.ts.map +1 -0
  121. package/dist/browser/partial-update.js +426 -0
  122. package/dist/browser/partial-update.js.map +1 -0
  123. package/dist/browser/react/Link.d.ts +86 -0
  124. package/dist/browser/react/Link.d.ts.map +1 -0
  125. package/dist/browser/react/Link.js +128 -0
  126. package/dist/browser/react/Link.js.map +1 -0
  127. package/dist/browser/react/NavigationProvider.d.ts +63 -0
  128. package/dist/browser/react/NavigationProvider.d.ts.map +1 -0
  129. package/dist/browser/react/NavigationProvider.js +216 -0
  130. package/dist/browser/react/NavigationProvider.js.map +1 -0
  131. package/dist/browser/react/ScrollRestoration.d.ts +75 -0
  132. package/dist/browser/react/ScrollRestoration.d.ts.map +1 -0
  133. package/dist/browser/react/ScrollRestoration.js +57 -0
  134. package/dist/browser/react/ScrollRestoration.js.map +1 -0
  135. package/dist/browser/react/context.d.ts +46 -0
  136. package/dist/browser/react/context.d.ts.map +1 -0
  137. package/dist/browser/react/context.js +10 -0
  138. package/dist/browser/react/context.js.map +1 -0
  139. package/dist/browser/react/index.d.ts +11 -0
  140. package/dist/browser/react/index.d.ts.map +1 -0
  141. package/dist/browser/react/index.js +22 -0
  142. package/dist/browser/react/index.js.map +1 -0
  143. package/dist/browser/react/location-state-shared.d.ts +63 -0
  144. package/dist/browser/react/location-state-shared.d.ts.map +1 -0
  145. package/dist/browser/react/location-state-shared.js +81 -0
  146. package/dist/browser/react/location-state-shared.js.map +1 -0
  147. package/dist/browser/react/location-state.d.ts +23 -0
  148. package/dist/browser/react/location-state.d.ts.map +1 -0
  149. package/dist/browser/react/location-state.js +29 -0
  150. package/dist/browser/react/location-state.js.map +1 -0
  151. package/dist/browser/react/mount-context.d.ts +24 -0
  152. package/dist/browser/react/mount-context.d.ts.map +1 -0
  153. package/dist/browser/react/mount-context.js +24 -0
  154. package/dist/browser/react/mount-context.js.map +1 -0
  155. package/dist/browser/react/use-action.d.ts +64 -0
  156. package/dist/browser/react/use-action.d.ts.map +1 -0
  157. package/dist/browser/react/use-action.js +134 -0
  158. package/dist/browser/react/use-action.js.map +1 -0
  159. package/dist/browser/react/use-client-cache.d.ts +41 -0
  160. package/dist/browser/react/use-client-cache.d.ts.map +1 -0
  161. package/{src/browser/react/use-client-cache.ts → dist/browser/react/use-client-cache.js} +9 -28
  162. package/dist/browser/react/use-client-cache.js.map +1 -0
  163. package/dist/browser/react/use-handle.d.ts +31 -0
  164. package/dist/browser/react/use-handle.d.ts.map +1 -0
  165. package/dist/browser/react/use-handle.js +144 -0
  166. package/dist/browser/react/use-handle.js.map +1 -0
  167. package/dist/browser/react/use-href.d.ts +33 -0
  168. package/dist/browser/react/use-href.d.ts.map +1 -0
  169. package/dist/browser/react/use-href.js +39 -0
  170. package/dist/browser/react/use-href.js.map +1 -0
  171. package/dist/browser/react/use-link-status.d.ts +37 -0
  172. package/dist/browser/react/use-link-status.d.ts.map +1 -0
  173. package/dist/browser/react/use-link-status.js +99 -0
  174. package/dist/browser/react/use-link-status.js.map +1 -0
  175. package/dist/browser/react/use-mount.d.ts +25 -0
  176. package/dist/browser/react/use-mount.d.ts.map +1 -0
  177. package/dist/browser/react/use-mount.js +30 -0
  178. package/dist/browser/react/use-mount.js.map +1 -0
  179. package/dist/browser/react/use-navigation.d.ts +27 -0
  180. package/dist/browser/react/use-navigation.d.ts.map +1 -0
  181. package/dist/browser/react/use-navigation.js +87 -0
  182. package/dist/browser/react/use-navigation.js.map +1 -0
  183. package/dist/browser/react/use-segments.d.ts +38 -0
  184. package/dist/browser/react/use-segments.d.ts.map +1 -0
  185. package/dist/browser/react/use-segments.js +130 -0
  186. package/dist/browser/react/use-segments.js.map +1 -0
  187. package/dist/browser/request-controller.d.ts +26 -0
  188. package/dist/browser/request-controller.d.ts.map +1 -0
  189. package/dist/browser/request-controller.js +147 -0
  190. package/dist/browser/request-controller.js.map +1 -0
  191. package/dist/browser/rsc-router.d.ts +129 -0
  192. package/dist/browser/rsc-router.d.ts.map +1 -0
  193. package/dist/browser/rsc-router.js +195 -0
  194. package/dist/browser/rsc-router.js.map +1 -0
  195. package/dist/browser/scroll-restoration.d.ts +93 -0
  196. package/dist/browser/scroll-restoration.d.ts.map +1 -0
  197. package/dist/browser/scroll-restoration.js +321 -0
  198. package/dist/browser/scroll-restoration.js.map +1 -0
  199. package/dist/browser/segment-structure-assert.d.ts +17 -0
  200. package/dist/browser/segment-structure-assert.d.ts.map +1 -0
  201. package/dist/browser/segment-structure-assert.js +59 -0
  202. package/dist/browser/segment-structure-assert.js.map +1 -0
  203. package/dist/browser/server-action-bridge.d.ts +26 -0
  204. package/dist/browser/server-action-bridge.d.ts.map +1 -0
  205. package/dist/browser/server-action-bridge.js +668 -0
  206. package/dist/browser/server-action-bridge.js.map +1 -0
  207. package/dist/browser/shallow.d.ts +12 -0
  208. package/dist/browser/shallow.d.ts.map +1 -0
  209. package/dist/browser/shallow.js +34 -0
  210. package/dist/browser/shallow.js.map +1 -0
  211. package/dist/browser/types.d.ts +369 -0
  212. package/dist/browser/types.d.ts.map +1 -0
  213. package/dist/browser/types.js +2 -0
  214. package/dist/browser/types.js.map +1 -0
  215. package/dist/build/__tests__/generate-cli.test.d.ts +2 -0
  216. package/dist/build/__tests__/generate-cli.test.d.ts.map +1 -0
  217. package/dist/build/__tests__/generate-cli.test.js +237 -0
  218. package/dist/build/__tests__/generate-cli.test.js.map +1 -0
  219. package/dist/build/__tests__/generate-manifest.test.d.ts +2 -0
  220. package/dist/build/__tests__/generate-manifest.test.d.ts.map +1 -0
  221. package/dist/build/__tests__/generate-manifest.test.js +119 -0
  222. package/dist/build/__tests__/generate-manifest.test.js.map +1 -0
  223. package/dist/build/__tests__/generate-route-types.test.d.ts +2 -0
  224. package/dist/build/__tests__/generate-route-types.test.d.ts.map +1 -0
  225. package/dist/build/__tests__/generate-route-types.test.js +620 -0
  226. package/dist/build/__tests__/generate-route-types.test.js.map +1 -0
  227. package/dist/build/__tests__/per-router-manifest.test.d.ts +2 -0
  228. package/dist/build/__tests__/per-router-manifest.test.d.ts.map +1 -0
  229. package/dist/build/__tests__/per-router-manifest.test.js +308 -0
  230. package/dist/build/__tests__/per-router-manifest.test.js.map +1 -0
  231. package/dist/build/generate-manifest.d.ts +81 -0
  232. package/dist/build/generate-manifest.d.ts.map +1 -0
  233. package/dist/build/generate-manifest.js +276 -0
  234. package/dist/build/generate-manifest.js.map +1 -0
  235. package/dist/build/generate-route-types.d.ts +115 -0
  236. package/dist/build/generate-route-types.d.ts.map +1 -0
  237. package/dist/build/generate-route-types.js +740 -0
  238. package/dist/build/generate-route-types.js.map +1 -0
  239. package/dist/build/index.d.ts +21 -0
  240. package/dist/build/index.d.ts.map +1 -0
  241. package/dist/build/index.js +21 -0
  242. package/dist/build/index.js.map +1 -0
  243. package/dist/build/route-trie.d.ts +71 -0
  244. package/dist/build/route-trie.d.ts.map +1 -0
  245. package/dist/build/route-trie.js +175 -0
  246. package/dist/build/route-trie.js.map +1 -0
  247. package/dist/cache/__tests__/cache-scope.test.d.ts +2 -0
  248. package/dist/cache/__tests__/cache-scope.test.d.ts.map +1 -0
  249. package/dist/cache/__tests__/cache-scope.test.js +208 -0
  250. package/dist/cache/__tests__/cache-scope.test.js.map +1 -0
  251. package/dist/cache/__tests__/document-cache.test.d.ts +2 -0
  252. package/dist/cache/__tests__/document-cache.test.d.ts.map +1 -0
  253. package/dist/cache/__tests__/document-cache.test.js +345 -0
  254. package/dist/cache/__tests__/document-cache.test.js.map +1 -0
  255. package/dist/cache/__tests__/memory-segment-store.test.d.ts +2 -0
  256. package/dist/cache/__tests__/memory-segment-store.test.d.ts.map +1 -0
  257. package/dist/cache/__tests__/memory-segment-store.test.js +425 -0
  258. package/dist/cache/__tests__/memory-segment-store.test.js.map +1 -0
  259. package/dist/cache/__tests__/memory-store.test.d.ts +2 -0
  260. package/dist/cache/__tests__/memory-store.test.d.ts.map +1 -0
  261. package/dist/cache/__tests__/memory-store.test.js +367 -0
  262. package/dist/cache/__tests__/memory-store.test.js.map +1 -0
  263. package/dist/cache/cache-scope.d.ts +102 -0
  264. package/dist/cache/cache-scope.d.ts.map +1 -0
  265. package/dist/cache/cache-scope.js +440 -0
  266. package/dist/cache/cache-scope.js.map +1 -0
  267. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts +2 -0
  268. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts.map +1 -0
  269. package/dist/cache/cf/__tests__/cf-cache-store.test.js +330 -0
  270. package/dist/cache/cf/__tests__/cf-cache-store.test.js.map +1 -0
  271. package/dist/cache/cf/cf-cache-store.d.ts +165 -0
  272. package/dist/cache/cf/cf-cache-store.d.ts.map +1 -0
  273. package/dist/cache/cf/cf-cache-store.js +242 -0
  274. package/dist/cache/cf/cf-cache-store.js.map +1 -0
  275. package/dist/cache/cf/index.d.ts +14 -0
  276. package/dist/cache/cf/index.d.ts.map +1 -0
  277. package/dist/cache/cf/index.js +17 -0
  278. package/dist/cache/cf/index.js.map +1 -0
  279. package/dist/cache/document-cache.d.ts +64 -0
  280. package/dist/cache/document-cache.d.ts.map +1 -0
  281. package/dist/cache/document-cache.js +228 -0
  282. package/dist/cache/document-cache.js.map +1 -0
  283. package/dist/cache/index.d.ts +19 -0
  284. package/dist/cache/index.d.ts.map +1 -0
  285. package/dist/cache/index.js +21 -0
  286. package/dist/cache/index.js.map +1 -0
  287. package/dist/cache/memory-segment-store.d.ts +110 -0
  288. package/dist/cache/memory-segment-store.d.ts.map +1 -0
  289. package/dist/cache/memory-segment-store.js +117 -0
  290. package/dist/cache/memory-segment-store.js.map +1 -0
  291. package/dist/cache/memory-store.d.ts +41 -0
  292. package/dist/cache/memory-store.d.ts.map +1 -0
  293. package/dist/cache/memory-store.js +191 -0
  294. package/dist/cache/memory-store.js.map +1 -0
  295. package/dist/cache/types.d.ts +317 -0
  296. package/dist/cache/types.d.ts.map +1 -0
  297. package/dist/cache/types.js +12 -0
  298. package/dist/cache/types.js.map +1 -0
  299. package/dist/client.d.ts +248 -0
  300. package/dist/client.d.ts.map +1 -0
  301. package/dist/client.js +367 -0
  302. package/dist/client.js.map +1 -0
  303. package/dist/client.rsc.d.ts +26 -0
  304. package/dist/client.rsc.d.ts.map +1 -0
  305. package/dist/client.rsc.js +46 -0
  306. package/dist/client.rsc.js.map +1 -0
  307. package/dist/component-utils.d.ts +36 -0
  308. package/dist/component-utils.d.ts.map +1 -0
  309. package/dist/component-utils.js +61 -0
  310. package/dist/component-utils.js.map +1 -0
  311. package/dist/components/DefaultDocument.d.ts +13 -0
  312. package/dist/components/DefaultDocument.d.ts.map +1 -0
  313. package/dist/components/DefaultDocument.js +15 -0
  314. package/dist/components/DefaultDocument.js.map +1 -0
  315. package/dist/debug.d.ts +58 -0
  316. package/dist/debug.d.ts.map +1 -0
  317. package/dist/debug.js +157 -0
  318. package/dist/debug.js.map +1 -0
  319. package/dist/default-error-boundary.d.ts +11 -0
  320. package/dist/default-error-boundary.d.ts.map +1 -0
  321. package/dist/default-error-boundary.js +45 -0
  322. package/dist/default-error-boundary.js.map +1 -0
  323. package/dist/deps/browser.d.ts +2 -0
  324. package/dist/deps/browser.d.ts.map +1 -0
  325. package/dist/deps/browser.js +3 -0
  326. package/dist/deps/browser.js.map +1 -0
  327. package/dist/deps/html-stream-client.d.ts +2 -0
  328. package/dist/deps/html-stream-client.d.ts.map +1 -0
  329. package/dist/deps/html-stream-client.js +3 -0
  330. package/dist/deps/html-stream-client.js.map +1 -0
  331. package/dist/deps/html-stream-server.d.ts +2 -0
  332. package/dist/deps/html-stream-server.d.ts.map +1 -0
  333. package/dist/deps/html-stream-server.js +3 -0
  334. package/dist/deps/html-stream-server.js.map +1 -0
  335. package/dist/deps/rsc.d.ts +2 -0
  336. package/dist/deps/rsc.d.ts.map +1 -0
  337. package/dist/deps/rsc.js +4 -0
  338. package/dist/deps/rsc.js.map +1 -0
  339. package/dist/deps/ssr.d.ts +2 -0
  340. package/dist/deps/ssr.d.ts.map +1 -0
  341. package/dist/deps/ssr.js +3 -0
  342. package/dist/deps/ssr.js.map +1 -0
  343. package/dist/errors.d.ts +174 -0
  344. package/dist/errors.d.ts.map +1 -0
  345. package/dist/errors.js +241 -0
  346. package/dist/errors.js.map +1 -0
  347. package/dist/handle.d.ts +78 -0
  348. package/dist/handle.d.ts.map +1 -0
  349. package/dist/handle.js +82 -0
  350. package/dist/handle.js.map +1 -0
  351. package/dist/handles/MetaTags.d.ts +14 -0
  352. package/dist/handles/MetaTags.d.ts.map +1 -0
  353. package/dist/handles/MetaTags.js +136 -0
  354. package/dist/handles/MetaTags.js.map +1 -0
  355. package/{src/handles/index.ts → dist/handles/index.d.ts} +1 -2
  356. package/dist/handles/index.d.ts.map +1 -0
  357. package/dist/handles/index.js +6 -0
  358. package/dist/handles/index.js.map +1 -0
  359. package/dist/handles/meta.d.ts +39 -0
  360. package/dist/handles/meta.d.ts.map +1 -0
  361. package/dist/handles/meta.js +202 -0
  362. package/dist/handles/meta.js.map +1 -0
  363. package/dist/host/__tests__/errors.test.d.ts +2 -0
  364. package/dist/host/__tests__/errors.test.d.ts.map +1 -0
  365. package/dist/host/__tests__/errors.test.js +76 -0
  366. package/dist/host/__tests__/errors.test.js.map +1 -0
  367. package/dist/host/__tests__/pattern-comprehensive.test.d.ts +2 -0
  368. package/dist/host/__tests__/pattern-comprehensive.test.d.ts.map +1 -0
  369. package/dist/host/__tests__/pattern-comprehensive.test.js +732 -0
  370. package/dist/host/__tests__/pattern-comprehensive.test.js.map +1 -0
  371. package/dist/host/__tests__/pattern-matcher.test.d.ts +2 -0
  372. package/dist/host/__tests__/pattern-matcher.test.d.ts.map +1 -0
  373. package/dist/host/__tests__/pattern-matcher.test.js +251 -0
  374. package/dist/host/__tests__/pattern-matcher.test.js.map +1 -0
  375. package/dist/host/__tests__/router.test.d.ts +2 -0
  376. package/dist/host/__tests__/router.test.d.ts.map +1 -0
  377. package/dist/host/__tests__/router.test.js +241 -0
  378. package/dist/host/__tests__/router.test.js.map +1 -0
  379. package/dist/host/__tests__/testing.test.d.ts +2 -0
  380. package/dist/host/__tests__/testing.test.d.ts.map +1 -0
  381. package/dist/host/__tests__/testing.test.js +64 -0
  382. package/dist/host/__tests__/testing.test.js.map +1 -0
  383. package/dist/host/__tests__/utils.test.d.ts +2 -0
  384. package/dist/host/__tests__/utils.test.d.ts.map +1 -0
  385. package/dist/host/__tests__/utils.test.js +29 -0
  386. package/dist/host/__tests__/utils.test.js.map +1 -0
  387. package/dist/host/cookie-handler.d.ts +34 -0
  388. package/dist/host/cookie-handler.d.ts.map +1 -0
  389. package/dist/host/cookie-handler.js +124 -0
  390. package/dist/host/cookie-handler.js.map +1 -0
  391. package/dist/host/errors.d.ts +56 -0
  392. package/dist/host/errors.d.ts.map +1 -0
  393. package/dist/host/errors.js +79 -0
  394. package/dist/host/errors.js.map +1 -0
  395. package/dist/host/index.d.ts +29 -0
  396. package/dist/host/index.d.ts.map +1 -0
  397. package/dist/host/index.js +32 -0
  398. package/dist/host/index.js.map +1 -0
  399. package/dist/host/pattern-matcher.d.ts +36 -0
  400. package/dist/host/pattern-matcher.d.ts.map +1 -0
  401. package/dist/host/pattern-matcher.js +172 -0
  402. package/dist/host/pattern-matcher.js.map +1 -0
  403. package/dist/host/router.d.ts +26 -0
  404. package/dist/host/router.d.ts.map +1 -0
  405. package/dist/host/router.js +218 -0
  406. package/dist/host/router.js.map +1 -0
  407. package/dist/host/testing.d.ts +36 -0
  408. package/dist/host/testing.d.ts.map +1 -0
  409. package/dist/host/testing.js +55 -0
  410. package/dist/host/testing.js.map +1 -0
  411. package/dist/host/types.d.ts +115 -0
  412. package/dist/host/types.d.ts.map +1 -0
  413. package/dist/host/types.js +7 -0
  414. package/dist/host/types.js.map +1 -0
  415. package/dist/host/utils.d.ts +21 -0
  416. package/dist/host/utils.d.ts.map +1 -0
  417. package/dist/host/utils.js +23 -0
  418. package/dist/host/utils.js.map +1 -0
  419. package/dist/href-client.d.ts +131 -0
  420. package/dist/href-client.d.ts.map +1 -0
  421. package/dist/href-client.js +64 -0
  422. package/dist/href-client.js.map +1 -0
  423. package/dist/href-context.d.ts +29 -0
  424. package/dist/href-context.d.ts.map +1 -0
  425. package/dist/href-context.js +21 -0
  426. package/dist/href-context.js.map +1 -0
  427. package/dist/index.d.ts +73 -0
  428. package/dist/index.d.ts.map +1 -0
  429. package/dist/index.js +91 -0
  430. package/dist/index.js.map +1 -0
  431. package/dist/index.rsc.d.ts +32 -0
  432. package/dist/index.rsc.d.ts.map +1 -0
  433. package/dist/index.rsc.js +40 -0
  434. package/dist/index.rsc.js.map +1 -0
  435. package/dist/internal-debug.d.ts +2 -0
  436. package/dist/internal-debug.d.ts.map +1 -0
  437. package/dist/internal-debug.js +5 -0
  438. package/dist/internal-debug.js.map +1 -0
  439. package/dist/loader.d.ts +14 -0
  440. package/dist/loader.d.ts.map +1 -0
  441. package/dist/loader.js +20 -0
  442. package/dist/loader.js.map +1 -0
  443. package/dist/loader.rsc.d.ts +19 -0
  444. package/dist/loader.rsc.d.ts.map +1 -0
  445. package/dist/loader.rsc.js +99 -0
  446. package/dist/loader.rsc.js.map +1 -0
  447. package/{src/network-error-thrower.tsx → dist/network-error-thrower.d.ts} +4 -10
  448. package/dist/network-error-thrower.d.ts.map +1 -0
  449. package/dist/network-error-thrower.js +14 -0
  450. package/dist/network-error-thrower.js.map +1 -0
  451. package/dist/outlet-context.d.ts +13 -0
  452. package/dist/outlet-context.d.ts.map +1 -0
  453. package/dist/outlet-context.js +3 -0
  454. package/dist/outlet-context.js.map +1 -0
  455. package/dist/prerender/__tests__/param-hash.test.d.ts +2 -0
  456. package/dist/prerender/__tests__/param-hash.test.d.ts.map +1 -0
  457. package/dist/prerender/__tests__/param-hash.test.js +148 -0
  458. package/dist/prerender/__tests__/param-hash.test.js.map +1 -0
  459. package/dist/prerender/param-hash.d.ts +16 -0
  460. package/dist/prerender/param-hash.d.ts.map +1 -0
  461. package/dist/prerender/param-hash.js +36 -0
  462. package/dist/prerender/param-hash.js.map +1 -0
  463. package/dist/prerender/store.d.ts +38 -0
  464. package/dist/prerender/store.d.ts.map +1 -0
  465. package/dist/prerender/store.js +61 -0
  466. package/dist/prerender/store.js.map +1 -0
  467. package/dist/prerender.d.ts +66 -0
  468. package/dist/prerender.d.ts.map +1 -0
  469. package/dist/prerender.js +57 -0
  470. package/dist/prerender.js.map +1 -0
  471. package/dist/reverse.d.ts +196 -0
  472. package/dist/reverse.d.ts.map +1 -0
  473. package/dist/reverse.js +78 -0
  474. package/dist/reverse.js.map +1 -0
  475. package/dist/root-error-boundary.d.ts +33 -0
  476. package/dist/root-error-boundary.d.ts.map +1 -0
  477. package/dist/root-error-boundary.js +165 -0
  478. package/dist/root-error-boundary.js.map +1 -0
  479. package/dist/route-content-wrapper.d.ts +46 -0
  480. package/dist/route-content-wrapper.d.ts.map +1 -0
  481. package/dist/route-content-wrapper.js +77 -0
  482. package/dist/route-content-wrapper.js.map +1 -0
  483. package/dist/route-definition.d.ts +421 -0
  484. package/dist/route-definition.d.ts.map +1 -0
  485. package/dist/route-definition.js +868 -0
  486. package/dist/route-definition.js.map +1 -0
  487. package/dist/route-map-builder.d.ts +155 -0
  488. package/dist/route-map-builder.d.ts.map +1 -0
  489. package/dist/route-map-builder.js +237 -0
  490. package/dist/route-map-builder.js.map +1 -0
  491. package/dist/route-types.d.ts +165 -0
  492. package/dist/route-types.d.ts.map +1 -0
  493. package/dist/route-types.js +7 -0
  494. package/dist/route-types.js.map +1 -0
  495. package/dist/router/__tests__/handler-context.test.d.ts +2 -0
  496. package/dist/router/__tests__/handler-context.test.d.ts.map +1 -0
  497. package/dist/router/__tests__/handler-context.test.js +65 -0
  498. package/dist/router/__tests__/handler-context.test.js.map +1 -0
  499. package/dist/router/__tests__/loader-cycle-detection.test.d.ts +2 -0
  500. package/dist/router/__tests__/loader-cycle-detection.test.d.ts.map +1 -0
  501. package/dist/router/__tests__/loader-cycle-detection.test.js +221 -0
  502. package/dist/router/__tests__/loader-cycle-detection.test.js.map +1 -0
  503. package/dist/router/__tests__/match-context.test.d.ts +2 -0
  504. package/dist/router/__tests__/match-context.test.d.ts.map +1 -0
  505. package/dist/router/__tests__/match-context.test.js +92 -0
  506. package/dist/router/__tests__/match-context.test.js.map +1 -0
  507. package/dist/router/__tests__/match-pipelines.test.d.ts +2 -0
  508. package/dist/router/__tests__/match-pipelines.test.d.ts.map +1 -0
  509. package/dist/router/__tests__/match-pipelines.test.js +417 -0
  510. package/dist/router/__tests__/match-pipelines.test.js.map +1 -0
  511. package/dist/router/__tests__/match-result.test.d.ts +2 -0
  512. package/dist/router/__tests__/match-result.test.d.ts.map +1 -0
  513. package/dist/router/__tests__/match-result.test.js +457 -0
  514. package/dist/router/__tests__/match-result.test.js.map +1 -0
  515. package/dist/router/__tests__/on-error.test.d.ts +2 -0
  516. package/dist/router/__tests__/on-error.test.d.ts.map +1 -0
  517. package/dist/router/__tests__/on-error.test.js +678 -0
  518. package/dist/router/__tests__/on-error.test.js.map +1 -0
  519. package/dist/router/__tests__/pattern-matching.test.d.ts +2 -0
  520. package/dist/router/__tests__/pattern-matching.test.d.ts.map +1 -0
  521. package/dist/router/__tests__/pattern-matching.test.js +629 -0
  522. package/dist/router/__tests__/pattern-matching.test.js.map +1 -0
  523. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts +2 -0
  524. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts.map +1 -0
  525. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js +155 -0
  526. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js.map +1 -0
  527. package/dist/router/error-handling.d.ts +77 -0
  528. package/dist/router/error-handling.d.ts.map +1 -0
  529. package/dist/router/error-handling.js +202 -0
  530. package/dist/router/error-handling.js.map +1 -0
  531. package/dist/router/handler-context.d.ts +20 -0
  532. package/dist/router/handler-context.d.ts.map +1 -0
  533. package/dist/router/handler-context.js +198 -0
  534. package/dist/router/handler-context.js.map +1 -0
  535. package/dist/router/intercept-resolution.d.ts +66 -0
  536. package/dist/router/intercept-resolution.d.ts.map +1 -0
  537. package/dist/router/intercept-resolution.js +246 -0
  538. package/dist/router/intercept-resolution.js.map +1 -0
  539. package/dist/router/loader-resolution.d.ts +64 -0
  540. package/dist/router/loader-resolution.d.ts.map +1 -0
  541. package/dist/router/loader-resolution.js +284 -0
  542. package/dist/router/loader-resolution.js.map +1 -0
  543. package/dist/router/logging.d.ts +15 -0
  544. package/dist/router/logging.d.ts.map +1 -0
  545. package/dist/router/logging.js +99 -0
  546. package/dist/router/logging.js.map +1 -0
  547. package/dist/router/manifest.d.ts +22 -0
  548. package/dist/router/manifest.d.ts.map +1 -0
  549. package/dist/router/manifest.js +181 -0
  550. package/dist/router/manifest.js.map +1 -0
  551. package/dist/router/match-api.d.ts +35 -0
  552. package/dist/router/match-api.d.ts.map +1 -0
  553. package/dist/router/match-api.js +406 -0
  554. package/dist/router/match-api.js.map +1 -0
  555. package/dist/router/match-context.d.ts +206 -0
  556. package/dist/router/match-context.d.ts.map +1 -0
  557. package/dist/router/match-context.js +17 -0
  558. package/dist/router/match-context.js.map +1 -0
  559. package/dist/router/match-middleware/background-revalidation.d.ts +127 -0
  560. package/dist/router/match-middleware/background-revalidation.d.ts.map +1 -0
  561. package/dist/router/match-middleware/background-revalidation.js +75 -0
  562. package/dist/router/match-middleware/background-revalidation.js.map +1 -0
  563. package/dist/router/match-middleware/cache-lookup.d.ts +112 -0
  564. package/dist/router/match-middleware/cache-lookup.d.ts.map +1 -0
  565. package/dist/router/match-middleware/cache-lookup.js +257 -0
  566. package/dist/router/match-middleware/cache-lookup.js.map +1 -0
  567. package/dist/router/match-middleware/cache-store.d.ts +113 -0
  568. package/dist/router/match-middleware/cache-store.d.ts.map +1 -0
  569. package/dist/router/match-middleware/cache-store.js +108 -0
  570. package/dist/router/match-middleware/cache-store.js.map +1 -0
  571. package/dist/router/match-middleware/index.d.ts +81 -0
  572. package/dist/router/match-middleware/index.d.ts.map +1 -0
  573. package/dist/router/match-middleware/index.js +80 -0
  574. package/dist/router/match-middleware/index.js.map +1 -0
  575. package/dist/router/match-middleware/intercept-resolution.d.ts +117 -0
  576. package/dist/router/match-middleware/intercept-resolution.d.ts.map +1 -0
  577. package/dist/router/match-middleware/intercept-resolution.js +134 -0
  578. package/dist/router/match-middleware/intercept-resolution.js.map +1 -0
  579. package/dist/router/match-middleware/segment-resolution.d.ts +99 -0
  580. package/dist/router/match-middleware/segment-resolution.d.ts.map +1 -0
  581. package/dist/router/match-middleware/segment-resolution.js +53 -0
  582. package/dist/router/match-middleware/segment-resolution.js.map +1 -0
  583. package/dist/router/match-pipelines.d.ts +147 -0
  584. package/dist/router/match-pipelines.d.ts.map +1 -0
  585. package/dist/router/match-pipelines.js +82 -0
  586. package/dist/router/match-pipelines.js.map +1 -0
  587. package/dist/router/match-result.d.ts +126 -0
  588. package/dist/router/match-result.d.ts.map +1 -0
  589. package/dist/router/match-result.js +93 -0
  590. package/dist/router/match-result.js.map +1 -0
  591. package/dist/router/metrics.d.ts +20 -0
  592. package/dist/router/metrics.d.ts.map +1 -0
  593. package/dist/router/metrics.js +47 -0
  594. package/dist/router/metrics.js.map +1 -0
  595. package/dist/router/middleware.d.ts +249 -0
  596. package/dist/router/middleware.d.ts.map +1 -0
  597. package/dist/router/middleware.js +434 -0
  598. package/dist/router/middleware.js.map +1 -0
  599. package/dist/router/middleware.test.d.ts +2 -0
  600. package/dist/router/middleware.test.d.ts.map +1 -0
  601. package/dist/router/middleware.test.js +816 -0
  602. package/dist/router/middleware.test.js.map +1 -0
  603. package/dist/router/pattern-matching.d.ts +149 -0
  604. package/dist/router/pattern-matching.d.ts.map +1 -0
  605. package/dist/router/pattern-matching.js +349 -0
  606. package/dist/router/pattern-matching.js.map +1 -0
  607. package/dist/router/revalidation.d.ts +44 -0
  608. package/dist/router/revalidation.d.ts.map +1 -0
  609. package/dist/router/revalidation.js +147 -0
  610. package/dist/router/revalidation.js.map +1 -0
  611. package/dist/router/router-context.d.ts +135 -0
  612. package/dist/router/router-context.d.ts.map +1 -0
  613. package/dist/router/router-context.js +36 -0
  614. package/dist/router/router-context.js.map +1 -0
  615. package/dist/router/segment-resolution.d.ts +127 -0
  616. package/dist/router/segment-resolution.d.ts.map +1 -0
  617. package/dist/router/segment-resolution.js +919 -0
  618. package/dist/router/segment-resolution.js.map +1 -0
  619. package/dist/router/trie-matching.d.ts +40 -0
  620. package/dist/router/trie-matching.d.ts.map +1 -0
  621. package/dist/router/trie-matching.js +127 -0
  622. package/dist/router/trie-matching.js.map +1 -0
  623. package/dist/router/types.d.ts +136 -0
  624. package/dist/router/types.d.ts.map +1 -0
  625. package/dist/router/types.js +7 -0
  626. package/dist/router/types.js.map +1 -0
  627. package/dist/router.d.ts +753 -0
  628. package/dist/router.d.ts.map +1 -0
  629. package/dist/router.gen.d.ts +6 -0
  630. package/dist/router.gen.d.ts.map +1 -0
  631. package/dist/router.gen.js +6 -0
  632. package/dist/router.gen.js.map +1 -0
  633. package/dist/router.js +1304 -0
  634. package/dist/router.js.map +1 -0
  635. package/dist/rsc/__tests__/helpers.test.d.ts +2 -0
  636. package/dist/rsc/__tests__/helpers.test.d.ts.map +1 -0
  637. package/dist/rsc/__tests__/helpers.test.js +140 -0
  638. package/dist/rsc/__tests__/helpers.test.js.map +1 -0
  639. package/dist/rsc/handler.d.ts +45 -0
  640. package/dist/rsc/handler.d.ts.map +1 -0
  641. package/dist/rsc/handler.js +1172 -0
  642. package/dist/rsc/handler.js.map +1 -0
  643. package/dist/rsc/helpers.d.ts +16 -0
  644. package/dist/rsc/helpers.d.ts.map +1 -0
  645. package/dist/rsc/helpers.js +55 -0
  646. package/dist/rsc/helpers.js.map +1 -0
  647. package/dist/rsc/index.d.ts +22 -0
  648. package/dist/rsc/index.d.ts.map +1 -0
  649. package/dist/rsc/index.js +23 -0
  650. package/dist/rsc/index.js.map +1 -0
  651. package/dist/rsc/nonce.d.ts +9 -0
  652. package/dist/rsc/nonce.d.ts.map +1 -0
  653. package/dist/rsc/nonce.js +18 -0
  654. package/dist/rsc/nonce.js.map +1 -0
  655. package/dist/rsc/types.d.ts +206 -0
  656. package/dist/rsc/types.d.ts.map +1 -0
  657. package/dist/rsc/types.js +8 -0
  658. package/dist/rsc/types.js.map +1 -0
  659. package/dist/search-params.d.ts +103 -0
  660. package/dist/search-params.d.ts.map +1 -0
  661. package/dist/search-params.js +74 -0
  662. package/dist/search-params.js.map +1 -0
  663. package/dist/segment-system.d.ts +75 -0
  664. package/dist/segment-system.d.ts.map +1 -0
  665. package/dist/segment-system.js +336 -0
  666. package/dist/segment-system.js.map +1 -0
  667. package/dist/server/context.d.ts +245 -0
  668. package/dist/server/context.d.ts.map +1 -0
  669. package/dist/server/context.js +197 -0
  670. package/dist/server/context.js.map +1 -0
  671. package/dist/server/fetchable-loader-store.d.ts +18 -0
  672. package/dist/server/fetchable-loader-store.d.ts.map +1 -0
  673. package/dist/server/fetchable-loader-store.js +18 -0
  674. package/dist/server/fetchable-loader-store.js.map +1 -0
  675. package/dist/server/handle-store.d.ts +85 -0
  676. package/dist/server/handle-store.d.ts.map +1 -0
  677. package/dist/server/handle-store.js +142 -0
  678. package/dist/server/handle-store.js.map +1 -0
  679. package/dist/server/loader-registry.d.ts +55 -0
  680. package/dist/server/loader-registry.d.ts.map +1 -0
  681. package/dist/server/loader-registry.js +132 -0
  682. package/dist/server/loader-registry.js.map +1 -0
  683. package/dist/server/request-context.d.ts +226 -0
  684. package/dist/server/request-context.d.ts.map +1 -0
  685. package/dist/server/request-context.js +290 -0
  686. package/dist/server/request-context.js.map +1 -0
  687. package/dist/server/root-layout.d.ts +4 -0
  688. package/dist/server/root-layout.d.ts.map +1 -0
  689. package/dist/server/root-layout.js +5 -0
  690. package/dist/server/root-layout.js.map +1 -0
  691. package/dist/server.d.ts +15 -0
  692. package/dist/server.d.ts.map +1 -0
  693. package/dist/server.js +20 -0
  694. package/dist/server.js.map +1 -0
  695. package/dist/ssr/__tests__/ssr-handler.test.d.ts +2 -0
  696. package/dist/ssr/__tests__/ssr-handler.test.d.ts.map +1 -0
  697. package/dist/ssr/__tests__/ssr-handler.test.js +132 -0
  698. package/dist/ssr/__tests__/ssr-handler.test.js.map +1 -0
  699. package/dist/ssr/index.d.ts +98 -0
  700. package/dist/ssr/index.d.ts.map +1 -0
  701. package/dist/ssr/index.js +158 -0
  702. package/dist/ssr/index.js.map +1 -0
  703. package/dist/static-handler.d.ts +50 -0
  704. package/dist/static-handler.d.ts.map +1 -0
  705. package/dist/static-handler.gen.d.ts +5 -0
  706. package/dist/static-handler.gen.d.ts.map +1 -0
  707. package/dist/static-handler.gen.js +5 -0
  708. package/dist/static-handler.gen.js.map +1 -0
  709. package/dist/static-handler.js +29 -0
  710. package/dist/static-handler.js.map +1 -0
  711. package/dist/testing/vitest.js +82 -0
  712. package/dist/theme/ThemeProvider.d.ts +20 -0
  713. package/dist/theme/ThemeProvider.d.ts.map +1 -0
  714. package/dist/theme/ThemeProvider.js +240 -0
  715. package/dist/theme/ThemeProvider.js.map +1 -0
  716. package/dist/theme/ThemeScript.d.ts +48 -0
  717. package/dist/theme/ThemeScript.d.ts.map +1 -0
  718. package/dist/theme/ThemeScript.js +13 -0
  719. package/dist/theme/ThemeScript.js.map +1 -0
  720. package/dist/theme/__tests__/theme.test.d.ts +2 -0
  721. package/dist/theme/__tests__/theme.test.d.ts.map +1 -0
  722. package/dist/theme/__tests__/theme.test.js +103 -0
  723. package/dist/theme/__tests__/theme.test.js.map +1 -0
  724. package/dist/theme/constants.d.ts +29 -0
  725. package/dist/theme/constants.d.ts.map +1 -0
  726. package/dist/theme/constants.js +48 -0
  727. package/dist/theme/constants.js.map +1 -0
  728. package/dist/theme/index.d.ts +31 -0
  729. package/dist/theme/index.d.ts.map +1 -0
  730. package/dist/theme/index.js +36 -0
  731. package/dist/theme/index.js.map +1 -0
  732. package/dist/theme/theme-context.d.ts +40 -0
  733. package/dist/theme/theme-context.d.ts.map +1 -0
  734. package/dist/theme/theme-context.js +60 -0
  735. package/dist/theme/theme-context.js.map +1 -0
  736. package/dist/theme/theme-script.d.ts +27 -0
  737. package/dist/theme/theme-script.d.ts.map +1 -0
  738. package/dist/theme/theme-script.js +147 -0
  739. package/dist/theme/theme-script.js.map +1 -0
  740. package/dist/theme/types.d.ts +163 -0
  741. package/dist/theme/types.d.ts.map +1 -0
  742. package/dist/theme/types.js +11 -0
  743. package/dist/theme/types.js.map +1 -0
  744. package/dist/theme/use-theme.d.ts +12 -0
  745. package/dist/theme/use-theme.d.ts.map +1 -0
  746. package/dist/theme/use-theme.js +40 -0
  747. package/dist/theme/use-theme.js.map +1 -0
  748. package/dist/types.d.ts +1479 -0
  749. package/dist/types.d.ts.map +1 -0
  750. package/dist/types.js +10 -0
  751. package/dist/types.js.map +1 -0
  752. package/dist/urls.d.ts +441 -0
  753. package/dist/urls.d.ts.map +1 -0
  754. package/dist/urls.gen.d.ts +8 -0
  755. package/dist/urls.gen.d.ts.map +1 -0
  756. package/dist/urls.gen.js +8 -0
  757. package/dist/urls.gen.js.map +1 -0
  758. package/dist/urls.js +443 -0
  759. package/dist/urls.js.map +1 -0
  760. package/dist/use-loader.d.ts +127 -0
  761. package/dist/use-loader.d.ts.map +1 -0
  762. package/dist/use-loader.js +237 -0
  763. package/dist/use-loader.js.map +1 -0
  764. package/dist/vite/__tests__/ast-handler-extract.test.d.ts +2 -0
  765. package/dist/vite/__tests__/ast-handler-extract.test.d.ts.map +1 -0
  766. package/dist/vite/__tests__/ast-handler-extract.test.js +294 -0
  767. package/dist/vite/__tests__/ast-handler-extract.test.js.map +1 -0
  768. package/dist/vite/__tests__/expose-id-utils.test.d.ts +2 -0
  769. package/dist/vite/__tests__/expose-id-utils.test.d.ts.map +1 -0
  770. package/dist/vite/__tests__/expose-id-utils.test.js +224 -0
  771. package/dist/vite/__tests__/expose-id-utils.test.js.map +1 -0
  772. package/dist/vite/__tests__/expose-internal-ids.test.d.ts +2 -0
  773. package/dist/vite/__tests__/expose-internal-ids.test.d.ts.map +1 -0
  774. package/dist/vite/__tests__/expose-internal-ids.test.js +647 -0
  775. package/dist/vite/__tests__/expose-internal-ids.test.js.map +1 -0
  776. package/dist/vite/__tests__/expose-router-id.test.d.ts +2 -0
  777. package/dist/vite/__tests__/expose-router-id.test.d.ts.map +1 -0
  778. package/dist/vite/__tests__/expose-router-id.test.js +39 -0
  779. package/dist/vite/__tests__/expose-router-id.test.js.map +1 -0
  780. package/dist/vite/ast-handler-extract.d.ts +49 -0
  781. package/dist/vite/ast-handler-extract.d.ts.map +1 -0
  782. package/dist/vite/ast-handler-extract.js +249 -0
  783. package/dist/vite/ast-handler-extract.js.map +1 -0
  784. package/dist/vite/expose-action-id.d.ts +19 -0
  785. package/dist/vite/expose-action-id.d.ts.map +1 -0
  786. package/dist/vite/expose-action-id.js +250 -0
  787. package/dist/vite/expose-action-id.js.map +1 -0
  788. package/dist/vite/expose-id-utils.d.ts +69 -0
  789. package/dist/vite/expose-id-utils.d.ts.map +1 -0
  790. package/dist/vite/expose-id-utils.js +289 -0
  791. package/dist/vite/expose-id-utils.js.map +1 -0
  792. package/dist/vite/expose-internal-ids.d.ts +22 -0
  793. package/dist/vite/expose-internal-ids.d.ts.map +1 -0
  794. package/dist/vite/expose-internal-ids.js +886 -0
  795. package/dist/vite/expose-internal-ids.js.map +1 -0
  796. package/dist/vite/index.d.ts +149 -0
  797. package/dist/vite/index.d.ts.map +1 -0
  798. package/dist/vite/index.js +4279 -1209
  799. package/dist/vite/index.js.bak +5448 -0
  800. package/dist/vite/index.js.map +1 -0
  801. package/dist/vite/index.named-routes.gen.ts +103 -0
  802. package/dist/vite/package-resolution.d.ts +43 -0
  803. package/dist/vite/package-resolution.d.ts.map +1 -0
  804. package/dist/vite/package-resolution.js +112 -0
  805. package/dist/vite/package-resolution.js.map +1 -0
  806. package/dist/vite/plugins/cloudflare-protocol-loader-hook.mjs +76 -0
  807. package/dist/vite/virtual-entries.d.ts +25 -0
  808. package/dist/vite/virtual-entries.d.ts.map +1 -0
  809. package/dist/vite/virtual-entries.js +110 -0
  810. package/dist/vite/virtual-entries.js.map +1 -0
  811. package/package.json +86 -15
  812. package/skills/api-client/SKILL.md +211 -0
  813. package/skills/breadcrumbs/SKILL.md +85 -6
  814. package/skills/bundle-analysis/SKILL.md +159 -0
  815. package/skills/cache-guide/SKILL.md +251 -24
  816. package/skills/caching/SKILL.md +338 -13
  817. package/skills/catalog.json +271 -0
  818. package/skills/comparison/SKILL.md +50 -0
  819. package/skills/comparison/agents/openai.yaml +4 -0
  820. package/skills/comparison/references/framework-comparison.md +837 -0
  821. package/skills/composability/SKILL.md +110 -4
  822. package/skills/css/SKILL.md +76 -0
  823. package/skills/debug-manifest/SKILL.md +5 -3
  824. package/skills/defer-hydration/SKILL.md +235 -0
  825. package/skills/document-cache/SKILL.md +87 -56
  826. package/skills/fonts/SKILL.md +1 -1
  827. package/skills/handler-use/SKILL.md +364 -0
  828. package/skills/hooks/SKILL.md +73 -691
  829. package/skills/hooks/data.md +273 -0
  830. package/skills/hooks/handle-and-actions.md +103 -0
  831. package/skills/hooks/navigation.md +110 -0
  832. package/skills/hooks/outlets.md +41 -0
  833. package/skills/hooks/state.md +228 -0
  834. package/skills/hooks/urls.md +135 -0
  835. package/skills/host-router/SKILL.md +129 -27
  836. package/skills/i18n/SKILL.md +276 -0
  837. package/skills/intercept/SKILL.md +94 -18
  838. package/skills/layout/SKILL.md +62 -19
  839. package/skills/links/SKILL.md +249 -17
  840. package/skills/loader/SKILL.md +302 -54
  841. package/skills/middleware/SKILL.md +59 -16
  842. package/skills/migrate-nextjs/SKILL.md +745 -0
  843. package/skills/migrate-react-router/SKILL.md +153 -0
  844. package/skills/migrate-react-router/cloudflare-workers.md +129 -0
  845. package/skills/migrate-react-router/component-migration.md +196 -0
  846. package/skills/migrate-react-router/data-and-actions.md +225 -0
  847. package/skills/migrate-react-router/route-mapping.md +271 -0
  848. package/skills/mime-routes/SKILL.md +29 -2
  849. package/skills/observability/SKILL.md +202 -0
  850. package/skills/parallel/SKILL.md +225 -10
  851. package/skills/ppr/SKILL.md +622 -0
  852. package/skills/prerender/SKILL.md +178 -124
  853. package/skills/rango/SKILL.md +318 -24
  854. package/skills/react-compiler/SKILL.md +168 -0
  855. package/skills/response-routes/SKILL.md +138 -49
  856. package/skills/route/SKILL.md +172 -9
  857. package/skills/router-setup/SKILL.md +131 -11
  858. package/skills/scripts/SKILL.md +179 -0
  859. package/skills/server-actions/SKILL.md +776 -0
  860. package/skills/shell-manifest/SKILL.md +185 -0
  861. package/skills/streams-and-websockets/SKILL.md +283 -0
  862. package/skills/tailwind/SKILL.md +28 -4
  863. package/skills/testing/SKILL.md +130 -0
  864. package/skills/testing/bindings.md +103 -0
  865. package/skills/testing/cache-prerender.md +127 -0
  866. package/skills/testing/client-components.md +124 -0
  867. package/skills/testing/e2e-parity.md +125 -0
  868. package/skills/testing/flight.md +91 -0
  869. package/skills/testing/handles.md +131 -0
  870. package/skills/testing/loader.md +128 -0
  871. package/skills/testing/middleware.md +99 -0
  872. package/skills/testing/render-handler.md +122 -0
  873. package/skills/testing/response-routes.md +95 -0
  874. package/skills/testing/reverse-and-types.md +85 -0
  875. package/skills/testing/server-actions.md +107 -0
  876. package/skills/testing/server-tree.md +128 -0
  877. package/skills/testing/setup.md +123 -0
  878. package/skills/theme/SKILL.md +1 -1
  879. package/skills/typesafety/SKILL.md +45 -616
  880. package/skills/typesafety/env-and-bindings.md +254 -0
  881. package/skills/typesafety/generated-files-and-cli.md +335 -0
  882. package/skills/typesafety/params-and-search.md +153 -0
  883. package/skills/typesafety/route-types.md +209 -0
  884. package/skills/use-cache/SKILL.md +74 -15
  885. package/skills/vercel/SKILL.md +128 -0
  886. package/skills/view-transitions/SKILL.md +337 -0
  887. package/src/__augment-tests__/augment.ts +81 -0
  888. package/src/__augment-tests__/augmented.check.ts +116 -0
  889. package/src/__internal.ts +1 -66
  890. package/src/browser/action-coordinator.ts +53 -36
  891. package/src/browser/action-fence.ts +47 -0
  892. package/src/browser/app-shell.ts +39 -0
  893. package/src/browser/app-version.ts +14 -0
  894. package/src/browser/connection-warmup.ts +134 -0
  895. package/src/browser/cookie-name.ts +140 -0
  896. package/src/browser/event-controller.ts +257 -158
  897. package/src/browser/history-state.ts +21 -0
  898. package/src/browser/index.ts +3 -3
  899. package/src/browser/invalidate-client-cache.ts +52 -0
  900. package/src/browser/logging.ts +28 -0
  901. package/src/browser/merge-segment-loaders.ts +6 -4
  902. package/src/browser/navigation-bridge.ts +131 -30
  903. package/src/browser/navigation-client.ts +202 -105
  904. package/src/browser/navigation-store-handle.ts +38 -0
  905. package/src/browser/navigation-store.ts +203 -80
  906. package/src/browser/navigation-transaction.ts +9 -59
  907. package/src/browser/network-error-handler.ts +34 -7
  908. package/src/browser/partial-update.ts +205 -121
  909. package/src/browser/prefetch/cache.ts +247 -72
  910. package/src/browser/prefetch/fetch.ts +359 -42
  911. package/src/browser/prefetch/queue.ts +113 -32
  912. package/src/browser/prefetch/resource-ready.ts +77 -0
  913. package/src/browser/rango-state.ts +158 -76
  914. package/src/browser/react/Link.tsx +112 -15
  915. package/src/browser/react/NavigationProvider.tsx +213 -122
  916. package/src/browser/react/ScrollRestoration.tsx +10 -6
  917. package/src/browser/react/context.ts +7 -2
  918. package/src/browser/react/filter-segment-order.ts +66 -7
  919. package/src/browser/react/index.ts +0 -48
  920. package/src/browser/react/location-state-shared.ts +178 -8
  921. package/src/browser/react/location-state.ts +39 -14
  922. package/src/browser/react/use-action.ts +6 -15
  923. package/src/browser/react/use-handle.ts +23 -69
  924. package/src/browser/react/use-href.tsx +8 -1
  925. package/src/browser/react/use-link-status.ts +33 -8
  926. package/src/browser/react/use-navigation.ts +32 -7
  927. package/src/browser/react/use-params.ts +20 -10
  928. package/src/browser/react/use-reverse.ts +106 -0
  929. package/src/browser/react/use-router.ts +46 -11
  930. package/src/browser/react/use-search-params.ts +0 -5
  931. package/src/browser/react/use-segments.ts +11 -21
  932. package/src/browser/response-adapter.ts +99 -8
  933. package/src/browser/rsc-router.tsx +186 -27
  934. package/src/browser/scroll-restoration.ts +44 -27
  935. package/src/browser/segment-reconciler.ts +44 -7
  936. package/src/browser/segment-structure-assert.ts +2 -2
  937. package/src/browser/server-action-bridge.ts +244 -71
  938. package/src/browser/types.ts +127 -12
  939. package/src/browser/validate-redirect-origin.ts +43 -16
  940. package/src/build/collect-fallback-refs.ts +107 -0
  941. package/src/build/generate-manifest.ts +207 -158
  942. package/src/build/generate-route-types.ts +6 -1
  943. package/src/build/index.ts +11 -3
  944. package/src/build/prefix-tree-utils.ts +123 -0
  945. package/src/build/route-trie.ts +198 -41
  946. package/src/build/route-types/ast-route-extraction.ts +15 -8
  947. package/src/build/route-types/codegen.ts +16 -5
  948. package/src/build/route-types/include-resolution.ts +464 -63
  949. package/src/build/route-types/param-extraction.ts +6 -3
  950. package/src/build/route-types/per-module-writer.ts +22 -6
  951. package/src/build/route-types/router-processing.ts +333 -117
  952. package/src/build/route-types/scan-filter.ts +9 -2
  953. package/src/build/route-types/source-scan.ts +216 -0
  954. package/src/build/runtime-discovery.ts +13 -21
  955. package/src/cache/cache-error.ts +104 -0
  956. package/src/cache/cache-key-utils.ts +58 -13
  957. package/src/cache/cache-policy.ts +108 -34
  958. package/src/cache/cache-runtime.ts +454 -97
  959. package/src/cache/cache-scope.ts +233 -101
  960. package/src/cache/cache-tag.ts +149 -0
  961. package/src/cache/cf/cf-base64.ts +33 -0
  962. package/src/cache/cf/cf-cache-constants.ts +127 -0
  963. package/src/cache/cf/cf-cache-store.ts +2206 -372
  964. package/src/cache/cf/cf-cache-types.ts +349 -0
  965. package/src/cache/cf/cf-kv-utils.ts +46 -0
  966. package/src/cache/cf/cf-tag-marker-memo.ts +105 -0
  967. package/src/cache/cf/index.ts +6 -16
  968. package/src/cache/document-cache.ts +144 -49
  969. package/src/cache/handle-snapshot.ts +70 -0
  970. package/src/cache/index.ts +23 -20
  971. package/src/cache/memory-segment-store.ts +243 -37
  972. package/src/cache/profile-registry.ts +46 -31
  973. package/src/cache/read-through-swr.ts +56 -12
  974. package/src/cache/segment-codec.ts +13 -21
  975. package/src/cache/shell-snapshot.ts +417 -0
  976. package/src/cache/tag-invalidation.ts +230 -0
  977. package/src/cache/taint.ts +55 -0
  978. package/src/cache/types.ts +194 -99
  979. package/src/cache/vercel/index.ts +11 -0
  980. package/src/cache/vercel/vercel-cache-store.ts +1132 -0
  981. package/src/client.rsc.tsx +41 -21
  982. package/src/client.tsx +116 -290
  983. package/src/cloudflare/index.ts +11 -0
  984. package/src/cloudflare/tracing.ts +108 -0
  985. package/src/component-utils.ts +19 -0
  986. package/src/components/DefaultDocument.tsx +8 -2
  987. package/src/context-var.ts +84 -2
  988. package/src/debug.ts +2 -2
  989. package/src/decode-loader-results.ts +52 -0
  990. package/src/defer.ts +185 -0
  991. package/src/deps/ssr.ts +0 -1
  992. package/src/encode-kv.ts +49 -0
  993. package/src/errors.ts +30 -4
  994. package/src/escape-script.ts +52 -0
  995. package/src/handle.ts +104 -34
  996. package/src/handles/MetaTags.tsx +24 -53
  997. package/src/handles/Scripts.tsx +183 -0
  998. package/src/handles/breadcrumbs.ts +35 -8
  999. package/src/handles/deferred-resolution.ts +127 -0
  1000. package/src/handles/is-thenable.ts +18 -0
  1001. package/src/handles/meta.ts +14 -40
  1002. package/src/handles/script.ts +244 -0
  1003. package/src/host/cookie-handler.ts +9 -60
  1004. package/src/host/errors.ts +13 -22
  1005. package/src/host/index.ts +9 -2
  1006. package/src/host/pattern-matcher.ts +23 -52
  1007. package/src/host/router.ts +107 -99
  1008. package/src/host/testing.ts +40 -27
  1009. package/src/host/types.ts +37 -4
  1010. package/src/host/utils.ts +1 -1
  1011. package/src/href-client.ts +137 -22
  1012. package/src/index.rsc.ts +100 -13
  1013. package/src/index.ts +143 -19
  1014. package/src/internal-debug.ts +11 -10
  1015. package/src/loader-store.ts +500 -0
  1016. package/src/loader.rsc.ts +20 -13
  1017. package/src/loader.ts +12 -11
  1018. package/src/missing-id-error.ts +68 -0
  1019. package/src/outlet-context.ts +1 -1
  1020. package/src/outlet-provider.tsx +1 -5
  1021. package/src/prerender/param-hash.ts +16 -16
  1022. package/src/prerender/store.ts +37 -41
  1023. package/src/prerender.ts +215 -86
  1024. package/src/redirect-origin.ts +114 -0
  1025. package/src/regex-escape.ts +8 -0
  1026. package/src/render-error-thrower.tsx +20 -0
  1027. package/src/response-utils.ts +62 -0
  1028. package/src/reverse.ts +65 -15
  1029. package/src/root-error-boundary.tsx +1 -19
  1030. package/src/route-content-wrapper.tsx +19 -77
  1031. package/src/route-definition/dsl-helpers.ts +485 -303
  1032. package/src/route-definition/helper-factories.ts +28 -140
  1033. package/src/route-definition/helpers-types.ts +153 -77
  1034. package/src/route-definition/index.ts +4 -2
  1035. package/src/route-definition/redirect.ts +51 -10
  1036. package/src/route-definition/resolve-handler-use.ts +160 -0
  1037. package/src/route-definition/use-item-types.ts +29 -0
  1038. package/src/route-map-builder.ts +41 -20
  1039. package/src/route-types.ts +37 -46
  1040. package/src/router/basename.ts +14 -0
  1041. package/src/router/content-negotiation.ts +164 -17
  1042. package/src/router/error-handling.ts +45 -18
  1043. package/src/router/find-match.ts +129 -30
  1044. package/src/router/handler-context.ts +83 -39
  1045. package/src/router/instrument.ts +355 -0
  1046. package/src/router/intercept-resolution.ts +48 -24
  1047. package/src/router/lazy-includes.ts +87 -63
  1048. package/src/router/loader-resolution.ts +286 -56
  1049. package/src/router/logging.ts +1 -7
  1050. package/src/router/manifest.ts +102 -55
  1051. package/src/router/match-api.ts +178 -218
  1052. package/src/router/match-context.ts +0 -22
  1053. package/src/router/match-handlers.ts +211 -165
  1054. package/src/router/match-middleware/background-revalidation.ts +66 -22
  1055. package/src/router/match-middleware/cache-lookup.ts +214 -263
  1056. package/src/router/match-middleware/cache-store.ts +105 -50
  1057. package/src/router/match-middleware/intercept-resolution.ts +8 -28
  1058. package/src/router/match-middleware/segment-resolution.ts +51 -18
  1059. package/src/router/match-pipelines.ts +1 -42
  1060. package/src/router/match-result.ts +128 -44
  1061. package/src/router/metrics.ts +5 -34
  1062. package/src/router/middleware-types.ts +13 -142
  1063. package/src/router/middleware.ts +300 -177
  1064. package/src/router/navigation-snapshot.ts +133 -0
  1065. package/src/router/params-util.ts +23 -0
  1066. package/src/router/parse-pattern.ts +115 -0
  1067. package/src/router/pattern-matching.ts +181 -150
  1068. package/src/router/prefetch-cache-ttl.ts +51 -0
  1069. package/src/router/prefetch-limits.ts +37 -0
  1070. package/src/router/prerender-match.ts +203 -58
  1071. package/src/router/preview-match.ts +35 -103
  1072. package/src/router/request-classification.ts +291 -0
  1073. package/src/router/revalidation.ts +123 -73
  1074. package/src/router/route-snapshot.ts +256 -0
  1075. package/src/router/router-context.ts +6 -28
  1076. package/src/router/router-interfaces.ts +146 -35
  1077. package/src/router/router-options.ts +202 -15
  1078. package/src/router/router-registry.ts +2 -5
  1079. package/src/router/segment-resolution/fresh.ts +301 -78
  1080. package/src/router/segment-resolution/helpers.ts +115 -30
  1081. package/src/router/segment-resolution/loader-cache.ts +156 -39
  1082. package/src/router/segment-resolution/loader-mask.ts +60 -0
  1083. package/src/router/segment-resolution/loader-snapshot.ts +259 -0
  1084. package/src/router/segment-resolution/mask-nested.ts +83 -0
  1085. package/src/router/segment-resolution/revalidation.ts +473 -384
  1086. package/src/router/segment-resolution/static-store.ts +19 -5
  1087. package/src/router/segment-resolution/streamed-handler-telemetry.ts +52 -0
  1088. package/src/router/segment-resolution/view-transition-default.ts +56 -0
  1089. package/src/router/segment-resolution.ts +5 -1
  1090. package/src/router/segment-wrappers.ts +6 -5
  1091. package/src/router/state-cookie-name.ts +33 -0
  1092. package/src/router/substitute-pattern-params.ts +75 -0
  1093. package/src/router/telemetry-otel.ts +160 -200
  1094. package/src/router/telemetry.ts +105 -20
  1095. package/src/router/timeout.ts +0 -20
  1096. package/src/router/tracing.ts +215 -0
  1097. package/src/router/trie-matching.ts +171 -59
  1098. package/src/router/types.ts +10 -63
  1099. package/src/router/url-params.ts +57 -0
  1100. package/src/router.ts +206 -71
  1101. package/src/rsc/full-payload.ts +70 -0
  1102. package/src/rsc/handler-context.ts +3 -2
  1103. package/src/rsc/handler.ts +682 -508
  1104. package/src/rsc/helpers.ts +168 -46
  1105. package/src/rsc/index.ts +2 -5
  1106. package/src/rsc/json-route-result.ts +38 -0
  1107. package/src/rsc/loader-fetch.ts +127 -31
  1108. package/src/rsc/manifest-init.ts +33 -42
  1109. package/src/rsc/nonce.ts +10 -1
  1110. package/src/rsc/origin-guard.ts +39 -25
  1111. package/src/rsc/progressive-enhancement.ts +138 -15
  1112. package/src/rsc/redirect-guard.ts +100 -0
  1113. package/src/rsc/response-cache-serve.ts +238 -0
  1114. package/src/rsc/response-error.ts +79 -12
  1115. package/src/rsc/response-route-handler.ts +99 -189
  1116. package/src/rsc/rsc-rendering.ts +498 -73
  1117. package/src/rsc/runtime-warnings.ts +23 -10
  1118. package/src/rsc/server-action.ts +287 -113
  1119. package/src/rsc/shell-capture.ts +1190 -0
  1120. package/src/rsc/shell-serve.ts +181 -0
  1121. package/src/rsc/ssr-setup.ts +18 -2
  1122. package/src/rsc/transition-gate.ts +89 -0
  1123. package/src/rsc/types.ts +62 -6
  1124. package/src/runtime-env.ts +18 -0
  1125. package/src/search-params.ts +35 -30
  1126. package/src/segment-content-promise.ts +67 -0
  1127. package/src/segment-loader-promise.ts +167 -0
  1128. package/src/segment-system.tsx +418 -131
  1129. package/src/serialize.ts +243 -0
  1130. package/src/server/context.ts +367 -61
  1131. package/src/server/cookie-parse.ts +32 -0
  1132. package/src/server/cookie-store.ts +152 -5
  1133. package/src/server/handle-store.ts +40 -38
  1134. package/src/server/loader-registry.ts +38 -46
  1135. package/src/server/request-context.ts +550 -171
  1136. package/src/ssr/index.tsx +467 -174
  1137. package/src/ssr/inject-rsc-eager.ts +167 -0
  1138. package/src/ssr/ssr-root.tsx +228 -0
  1139. package/src/static-handler.ts +27 -18
  1140. package/src/testing/cache-status.ts +162 -0
  1141. package/src/testing/collect-handle.ts +46 -0
  1142. package/src/testing/dispatch.ts +813 -0
  1143. package/src/testing/dom.entry.ts +22 -0
  1144. package/src/testing/e2e/fixture.ts +188 -0
  1145. package/src/testing/e2e/index.ts +128 -0
  1146. package/src/testing/e2e/matchers.ts +35 -0
  1147. package/src/testing/e2e/page-helpers.ts +272 -0
  1148. package/src/testing/e2e/parity.ts +387 -0
  1149. package/src/testing/e2e/server.ts +195 -0
  1150. package/src/testing/flight-matchers.ts +97 -0
  1151. package/src/testing/flight-normalize.ts +11 -0
  1152. package/src/testing/flight-runtime.d.ts +57 -0
  1153. package/src/testing/flight-tree.ts +682 -0
  1154. package/src/testing/flight.entry.ts +52 -0
  1155. package/src/testing/flight.ts +257 -0
  1156. package/src/testing/generated-routes.ts +199 -0
  1157. package/src/testing/index.ts +105 -0
  1158. package/src/testing/internal/context.ts +371 -0
  1159. package/src/testing/internal/flight-client-globals.ts +30 -0
  1160. package/src/testing/internal/seed-vars.ts +54 -0
  1161. package/src/testing/render-handler.ts +357 -0
  1162. package/src/testing/render-route.tsx +584 -0
  1163. package/src/testing/run-loader.ts +385 -0
  1164. package/src/testing/run-middleware.ts +205 -0
  1165. package/src/testing/run-transition-when.ts +164 -0
  1166. package/src/testing/vitest-stubs/cloudflare-email.ts +9 -0
  1167. package/src/testing/vitest-stubs/cloudflare-workers.ts +21 -0
  1168. package/src/testing/vitest-stubs/plugin-rsc.ts +16 -0
  1169. package/src/testing/vitest-stubs/version.ts +5 -0
  1170. package/src/testing/vitest.ts +305 -0
  1171. package/src/theme/ThemeProvider.tsx +56 -84
  1172. package/src/theme/ThemeScript.tsx +7 -9
  1173. package/src/theme/constants.ts +52 -13
  1174. package/src/theme/index.ts +0 -7
  1175. package/src/theme/theme-context.ts +1 -5
  1176. package/src/theme/theme-script.ts +22 -21
  1177. package/src/theme/use-theme.ts +0 -3
  1178. package/src/types/boundaries.ts +0 -35
  1179. package/src/types/cache-types.ts +17 -8
  1180. package/src/types/error-types.ts +30 -90
  1181. package/src/types/global-namespace.ts +54 -41
  1182. package/src/types/handler-context.ts +234 -82
  1183. package/src/types/index.ts +3 -10
  1184. package/src/types/loader-types.ts +44 -15
  1185. package/src/types/request-scope.ts +112 -0
  1186. package/src/types/route-config.ts +20 -52
  1187. package/src/types/route-entry.ts +12 -7
  1188. package/src/types/segments.ts +137 -14
  1189. package/src/urls/include-helper.ts +40 -75
  1190. package/src/urls/include-provider.ts +71 -0
  1191. package/src/urls/index.ts +2 -11
  1192. package/src/urls/path-helper-types.ts +102 -23
  1193. package/src/urls/path-helper.ts +62 -111
  1194. package/src/urls/pattern-types.ts +84 -19
  1195. package/src/urls/response-types.ts +25 -22
  1196. package/src/urls/type-extraction.ts +98 -154
  1197. package/src/urls/urls-function.ts +1 -19
  1198. package/src/use-loader.tsx +346 -89
  1199. package/src/vercel/index.ts +11 -0
  1200. package/src/vercel/tracing.ts +88 -0
  1201. package/src/vite/debug.ts +185 -0
  1202. package/src/vite/discovery/bundle-postprocess.ts +36 -38
  1203. package/src/vite/discovery/dev-prerender-cache.ts +117 -0
  1204. package/src/vite/discovery/discover-routers.ts +130 -85
  1205. package/src/vite/discovery/discovery-errors.ts +255 -0
  1206. package/src/vite/discovery/gate-state.ts +171 -0
  1207. package/src/vite/discovery/prerender-collection.ts +214 -132
  1208. package/src/vite/discovery/route-types-writer.ts +40 -84
  1209. package/src/vite/discovery/self-gen-tracking.ts +27 -1
  1210. package/src/vite/discovery/state.ts +57 -4
  1211. package/src/vite/discovery/virtual-module-codegen.ts +14 -34
  1212. package/src/vite/index.ts +15 -0
  1213. package/src/vite/inject-client-debug.ts +88 -0
  1214. package/src/vite/plugin-types.ts +261 -6
  1215. package/src/vite/plugins/cjs-to-esm.ts +16 -19
  1216. package/src/vite/plugins/client-ref-dedup.ts +16 -11
  1217. package/src/vite/plugins/client-ref-hashing.ts +28 -15
  1218. package/src/vite/plugins/cloudflare-protocol-loader-hook.d.mts +23 -0
  1219. package/src/vite/plugins/cloudflare-protocol-loader-hook.mjs +76 -0
  1220. package/src/vite/plugins/cloudflare-protocol-stub.ts +194 -0
  1221. package/src/vite/plugins/expose-action-id.ts +48 -95
  1222. package/src/vite/plugins/expose-id-utils.ts +96 -51
  1223. package/src/vite/plugins/expose-ids/export-analysis.ts +101 -34
  1224. package/src/vite/plugins/expose-ids/handler-transform.ts +15 -64
  1225. package/src/vite/plugins/expose-ids/loader-transform.ts +14 -24
  1226. package/src/vite/plugins/expose-ids/router-transform.ts +118 -29
  1227. package/src/vite/plugins/expose-internal-ids.ts +553 -317
  1228. package/src/vite/plugins/performance-tracks.ts +89 -0
  1229. package/src/vite/plugins/refresh-cmd.ts +89 -27
  1230. package/src/vite/plugins/use-cache-transform.ts +73 -83
  1231. package/src/vite/plugins/vercel-output.ts +384 -0
  1232. package/src/vite/plugins/version-injector.ts +40 -29
  1233. package/src/vite/plugins/version-plugin.ts +37 -40
  1234. package/src/vite/plugins/virtual-entries.ts +138 -27
  1235. package/src/vite/rango.ts +247 -132
  1236. package/src/vite/router-discovery.ts +1091 -159
  1237. package/src/vite/utils/ast-handler-extract.ts +26 -35
  1238. package/src/vite/utils/banner.ts +4 -4
  1239. package/src/vite/utils/bundle-analysis.ts +10 -15
  1240. package/src/vite/utils/client-chunks.ts +184 -0
  1241. package/src/vite/utils/directive-prologue.ts +40 -0
  1242. package/src/vite/utils/forward-user-plugins.ts +171 -0
  1243. package/src/vite/utils/manifest-utils.ts +4 -59
  1244. package/src/vite/utils/package-resolution.ts +20 -52
  1245. package/src/vite/utils/prerender-utils.ts +98 -38
  1246. package/src/vite/utils/shared-utils.ts +144 -44
  1247. package/src/browser/action-response-classifier.ts +0 -99
  1248. package/src/browser/shallow.ts +0 -40
  1249. package/src/router/middleware-cookies.ts +0 -55
@@ -1,62 +1,7 @@
1
- /**
2
- * Flatten prefix tree leaf nodes into precomputed route entries.
3
- * Leaf nodes have no children (no nested includes), so their routes can be
4
- * used directly by evaluateLazyEntry() without running the handler.
5
- * Non-leaf nodes are skipped because they have nested lazy includes that
6
- * require the handler to run for discovery.
7
- */
8
- export function flattenLeafEntries(
9
- prefixTree: Record<string, any>,
10
- routeManifest: Record<string, string>,
11
- result: Array<{ staticPrefix: string; routes: Record<string, string> }>,
12
- ): void {
13
- function visit(node: any): void {
14
- const children = node.children || {};
15
- if (
16
- Object.keys(children).length === 0 &&
17
- node.routes &&
18
- node.routes.length > 0
19
- ) {
20
- // Leaf node: collect its routes from the manifest
21
- const routes: Record<string, string> = {};
22
- for (const name of node.routes) {
23
- if (name in routeManifest) {
24
- routes[name] = routeManifest[name];
25
- }
26
- }
27
- result.push({ staticPrefix: node.staticPrefix, routes });
28
- } else {
29
- // Non-leaf: recurse into children
30
- for (const child of Object.values(children)) {
31
- visit(child);
32
- }
33
- }
34
- }
35
- for (const node of Object.values(prefixTree)) {
36
- visit(node);
37
- }
38
- }
39
-
40
- /**
41
- * Walk prefix tree to map each route name to its scope's staticPrefix.
42
- */
43
- export function buildRouteToStaticPrefix(
44
- prefixTree: Record<string, any>,
45
- result: Record<string, string>,
46
- ): void {
47
- function visit(node: any): void {
48
- const sp = node.staticPrefix || "";
49
- for (const name of node.routes || []) {
50
- result[name] = sp;
51
- }
52
- for (const child of Object.values(node.children || {})) {
53
- visit(child);
54
- }
55
- }
56
- for (const node of Object.values(prefixTree)) {
57
- visit(node);
58
- }
59
- }
1
+ export {
2
+ flattenLeafEntries,
3
+ buildRouteToStaticPrefix,
4
+ } from "../../build/prefix-tree-utils.js";
60
5
 
61
6
  /**
62
7
  * Wrap a value as `JSON.parse('...')` instead of a JS object literal.
@@ -1,57 +1,29 @@
1
- /**
2
- * Package Resolution Utilities
3
- *
4
- * Handles detection of workspace vs npm install context and generates
5
- * appropriate aliases and exclude lists for Vite configuration.
6
- */
7
-
8
1
  import { existsSync } from "node:fs";
2
+ import { createRequire } from "node:module";
9
3
  import { resolve } from "node:path";
10
- import packageJson from "../../../package.json" with { type: "json" };
4
+ import packageJson from "../../../package.json";
5
+
6
+ const require = createRequire(import.meta.url);
11
7
 
12
8
  /**
13
9
  * The canonical name used in virtual entries (without scope)
14
10
  */
15
11
  const VIRTUAL_PACKAGE_NAME = "@rangojs/router";
16
12
 
17
- /**
18
- * Get the published package name (e.g., "@rangojs/router")
19
- */
20
13
  export function getPublishedPackageName(): string {
21
14
  return packageJson.name;
22
15
  }
23
16
 
24
- /**
25
- * Check if the package is installed from npm (scoped) vs workspace (unscoped)
26
- *
27
- * In workspace development:
28
- * - Package is installed as "@rangojs/router" via pnpm workspace alias
29
- * - The scoped name (@rangojs/router) doesn't exist in node_modules
30
- *
31
- * When installed from npm:
32
- * - Package is installed as "@rangojs/router"
33
- * - We need aliases to map "@rangojs/router/*" to "@rangojs/router/*"
34
- */
35
17
  export function isInstalledFromNpm(): boolean {
36
18
  const packageName = getPublishedPackageName();
37
19
  // Check if the scoped package exists in node_modules
38
20
  return existsSync(resolve(process.cwd(), "node_modules", packageName));
39
21
  }
40
22
 
41
- /**
42
- * Check if we're in a monorepo/workspace development context
43
- */
44
23
  export function isWorkspaceDevelopment(): boolean {
45
24
  return !isInstalledFromNpm();
46
25
  }
47
26
 
48
- /**
49
- * Subpaths derived from package.json exports that use TypeScript source.
50
- * These must be excluded from Vite's dependency optimization (they ship
51
- * as .ts/.tsx, not compiled JS) and aliased when installed from npm.
52
- *
53
- * Derived automatically from the exports field to prevent drift.
54
- */
55
27
  const SOURCE_EXPORT_SUBPATHS = Object.keys(packageJson.exports)
56
28
  .filter((key) => {
57
29
  const entry = (
@@ -67,12 +39,6 @@ const SOURCE_EXPORT_SUBPATHS = Object.keys(packageJson.exports)
67
39
  })
68
40
  .map((key) => key.replace(/^\./, ""));
69
41
 
70
- /**
71
- * Generate the list of modules to exclude from Vite's dependency optimization.
72
- *
73
- * We include both the published name and the virtual name because
74
- * Vite's optimizer runs before alias resolution.
75
- */
76
42
  export function getExcludeDeps(): string[] {
77
43
  const packageName = getPublishedPackageName();
78
44
  const excludes: string[] = [];
@@ -89,24 +55,10 @@ export function getExcludeDeps(): string[] {
89
55
  return excludes;
90
56
  }
91
57
 
92
- /**
93
- * Subpaths that need aliasing — same as SOURCE_EXPORT_SUBPATHS.
94
- * When installed from npm, virtual entries may use a different package name
95
- * than the published one; aliases bridge them.
96
- */
97
58
  const ALIAS_SUBPATHS = SOURCE_EXPORT_SUBPATHS;
98
59
 
99
- /**
100
- * Generate aliases to map virtual package paths to the actual published package.
101
- *
102
- * Only needed when installed from npm, where the package is under @rangojs/router
103
- * but virtual entries import from rsc-router/*.
104
- *
105
- * Returns empty object in workspace development where rsc-router resolves directly.
106
- */
107
60
  export function getPackageAliases(): Record<string, string> {
108
61
  if (isWorkspaceDevelopment()) {
109
- // No aliases needed - rsc-router resolves directly
110
62
  return {};
111
63
  }
112
64
 
@@ -119,3 +71,19 @@ export function getPackageAliases(): Record<string, string> {
119
71
 
120
72
  return aliases;
121
73
  }
74
+
75
+ export function getVendorAliases(): Record<string, string> {
76
+ const specs = [
77
+ "@vitejs/plugin-rsc/vendor/react-server-dom/client.edge",
78
+ "@vitejs/plugin-rsc/vendor/react-server-dom/server.edge",
79
+ ];
80
+ const aliases: Record<string, string> = {};
81
+ for (const spec of specs) {
82
+ try {
83
+ aliases[spec] = require.resolve(spec);
84
+ } catch {
85
+ // Non-fatal; Vite will warn if it cannot resolve the spec
86
+ }
87
+ }
88
+ return aliases;
89
+ }
@@ -9,50 +9,67 @@ import {
9
9
  } from "node:fs";
10
10
  import { resolve } from "node:path";
11
11
 
12
- /**
13
- * Escape special RegExp characters in a string for safe interpolation
14
- * into new RegExp() patterns.
15
- */
16
- export function escapeRegExp(str: string): string {
17
- return str.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
18
- }
12
+ import { escapeRegExp } from "../../regex-escape.js";
13
+ import { encodePathRemainder } from "../../router/url-params.js";
19
14
 
20
- /**
21
- * Encode route param values for path interpolation while preserving path
22
- * separators for wildcard params (splat-style values can include `/`).
23
- */
24
15
  export function encodePathParam(value: unknown): string {
25
- return String(value)
26
- .split("/")
27
- .map((segment) => encodeURIComponent(segment))
28
- .join("/");
16
+ return encodePathRemainder(String(value), encodeURIComponent);
29
17
  }
30
18
 
31
- /**
32
- * Substitute route params into a pattern, stripping constraint and optional
33
- * syntax (:param(a|b)? -> value). Also handles wildcard params (*key).
34
- */
35
19
  export function substituteRouteParams(
36
20
  pattern: string,
37
21
  params: Record<string, string>,
38
22
  encode: (value: string) => string = encodeURIComponent,
39
23
  ): string {
40
24
  let result = pattern;
25
+ let hadOmittedOptional = false;
26
+
41
27
  for (const [key, value] of Object.entries(params)) {
42
28
  const escaped = escapeRegExp(key);
43
- result = result.replace(
44
- new RegExp(`:${escaped}(\\([^)]*\\))?\\??`),
45
- encode(value),
46
- );
47
- result = result.replace(`*${key}`, encode(value));
29
+ // Named catch-all `:key+` / `:key*` (issue #634). Like the runtime reverse,
30
+ // the value is multi-segment: encode each segment and keep the `/` separators
31
+ // (a whole-value encode would turn `a/b` into `a%2Fb`), and consume the
32
+ // trailing modifier so it does not leak into the URL. `*` (zero-or-more)
33
+ // absent collapses via the trailing cleanup below.
34
+ const catchAllRe = new RegExp(`:${escaped}[+*]`);
35
+ if (catchAllRe.test(result)) {
36
+ if (value === "") {
37
+ result = result.replace(catchAllRe, "");
38
+ hadOmittedOptional = true;
39
+ } else {
40
+ result = result.replace(catchAllRe, encodePathRemainder(value, encode));
41
+ }
42
+ continue;
43
+ }
44
+ if (value === "") {
45
+ result = result.replace(
46
+ new RegExp(`:${escaped}(\\([^)]*\\))?(?!\\?)`),
47
+ "",
48
+ );
49
+ result = result.replace(`*${key}`, "");
50
+ } else {
51
+ result = result.replace(
52
+ new RegExp(`:${escaped}(\\([^)]*\\))?\\??`),
53
+ encode(value),
54
+ );
55
+ result = result.replace(`*${key}`, encode(value));
56
+ }
57
+ }
58
+
59
+ result = result.replace(/:([a-zA-Z_][a-zA-Z0-9_]*)(\([^)]*\))?\?/g, () => {
60
+ hadOmittedOptional = true;
61
+ return "";
62
+ });
63
+
64
+ if (hadOmittedOptional) {
65
+ const hadTrailingSlash = pattern.length > 1 && pattern.endsWith("/");
66
+ result = result.replace(/\/\/+/g, "/").replace(/\/+$/, "") || "/";
67
+ if (hadTrailingSlash && !result.endsWith("/")) result += "/";
48
68
  }
69
+
49
70
  return result;
50
71
  }
51
72
 
52
- /**
53
- * Run an async function over items with bounded concurrency.
54
- * Errors propagate immediately and abort remaining work.
55
- */
56
73
  export async function runWithConcurrency<T>(
57
74
  items: T[],
58
75
  concurrency: number,
@@ -64,19 +81,30 @@ export async function runWithConcurrency<T>(
64
81
  return;
65
82
  }
66
83
  let nextIndex = 0;
84
+ // On first failure (the default prerender.onError: "fail" re-throws), stop
85
+ // scheduling new work so the remaining workers don't keep running full RSC
86
+ // renders before the build aborts. The first error is surfaced after all
87
+ // in-flight workers settle, preserving the throw-to-fail-build behavior.
88
+ let firstError: unknown;
89
+ let failed = false;
67
90
  async function worker() {
68
- while (nextIndex < items.length) {
91
+ while (nextIndex < items.length && !failed) {
69
92
  const idx = nextIndex++;
70
- await fn(items[idx]);
93
+ try {
94
+ await fn(items[idx]);
95
+ } catch (err) {
96
+ if (!failed) {
97
+ failed = true;
98
+ firstError = err;
99
+ }
100
+ return;
101
+ }
71
102
  }
72
103
  }
73
104
  await Promise.all(Array.from({ length: limit }, () => worker()));
105
+ if (failed) throw firstError;
74
106
  }
75
107
 
76
- /**
77
- * Group prerender entries by their concurrency setting so each group
78
- * can be rendered with the appropriate parallelism.
79
- */
80
108
  export function groupByConcurrency<T extends { concurrency: number }>(
81
109
  entries: T[],
82
110
  ): { concurrency: number; entries: T[] }[] {
@@ -96,10 +124,6 @@ export function groupByConcurrency<T extends { concurrency: number }>(
96
124
  }));
97
125
  }
98
126
 
99
- /**
100
- * Notify all routers' onError callbacks about a build-time error.
101
- * Uses a synthetic request since there is no real request during build.
102
- */
103
127
  export function notifyOnError(
104
128
  registry: Map<string, any>,
105
129
  error: unknown,
@@ -139,6 +163,42 @@ export function notifyOnError(
139
163
  }
140
164
  }
141
165
 
166
+ /**
167
+ * Resolve a thrown build-time render error into the prerender build's policy and
168
+ * log a per-entry line. A `Skip` (or any render error under `prerender.onError:
169
+ * "warn"`) logs and returns so the caller skips the entry; a render error under
170
+ * the default "fail" logs FAIL, notifies `onError`, and re-throws to fail the
171
+ * build. Shared by `expandPrerenderRoutes` (prerender) and `renderStaticHandlers`
172
+ * (static) so the Skip/warn/fail policy lives in one place. `label` is the padded
173
+ * URL / handler name for the log line; `elapsed` is the per-entry duration string.
174
+ */
175
+ export function resolvePrerenderError(
176
+ registry: Map<string, any>,
177
+ error: any,
178
+ onError: "fail" | "warn",
179
+ label: string,
180
+ elapsed: string,
181
+ phase: "prerender" | "static",
182
+ routeKey?: string,
183
+ pathname?: string,
184
+ ): void {
185
+ const isSkip = error?.name === "Skip";
186
+ if (isSkip || onError === "warn") {
187
+ if (isSkip) {
188
+ console.log(`[rango] SKIP ${label} (${elapsed}ms) - ${error.message}`);
189
+ } else {
190
+ console.warn(
191
+ `[rango] WARN ${label} (${elapsed}ms) - render error, not pre-rendered (prerender.onError: "warn"): ${error.message}`,
192
+ );
193
+ }
194
+ notifyOnError(registry, error, phase, routeKey, pathname, true);
195
+ return;
196
+ }
197
+ console.error(`[rango] FAIL ${label} (${elapsed}ms) - ${error.message}`);
198
+ notifyOnError(registry, error, phase, routeKey, pathname);
199
+ throw error;
200
+ }
201
+
142
202
  function getStagedAssetDir(projectRoot: string): string {
143
203
  return resolve(projectRoot, "node_modules/.rangojs-router-build/rsc-assets");
144
204
  }
@@ -1,52 +1,114 @@
1
- import type { Plugin } from "vite";
1
+ import type { Plugin, ResolvedConfig } from "vite";
2
2
  import * as Vite from "vite";
3
+ import { isAbsolute, resolve } from "node:path";
3
4
  import { getPublishedPackageName } from "./package-resolution.js";
5
+ import { performanceTracksOptimizeDepsPlugin } from "../plugins/performance-tracks.js";
4
6
  import {
5
7
  VIRTUAL_ENTRY_BROWSER,
6
8
  VIRTUAL_ENTRY_SSR,
7
9
  getVirtualEntryRSC,
10
+ getVirtualEntryRSCHost,
11
+ getVirtualVersionContent,
8
12
  VIRTUAL_IDS,
9
13
  } from "../plugins/virtual-entries.js";
10
14
 
15
+ // Cloudflare preset: @cloudflare/vite-plugin sets optimizeDeps.entries (string
16
+ // or array) on the rsc environment. Single source for both the discovery plugin
17
+ // and the version injector so they target the same entry.
18
+ export function resolveRscEntryFromConfig(
19
+ config: ResolvedConfig,
20
+ ): string | undefined {
21
+ const entries = (config.environments as any)?.["rsc"]?.optimizeDeps?.entries;
22
+ if (typeof entries === "string") return entries;
23
+ if (Array.isArray(entries) && entries.length > 0) return entries[0];
24
+ return undefined;
25
+ }
26
+
11
27
  /**
12
- * esbuild plugin to provide rsc-router:version virtual module during optimization.
13
- * This is needed because esbuild runs during Vite's dependency optimization phase,
14
- * before Vite's plugin system can handle virtual modules.
28
+ * Rolldown plugin to provide the version virtual module during dependency
29
+ * optimization. Vite 8 optimizes deps with Rolldown (a Rollup-style plugin
30
+ * pipeline that is separate from the main plugin set), so this is a
31
+ * resolveId/load plugin under optimizeDeps.rolldownOptions. Any dep pulled into
32
+ * optimization that imports the version virtual module gets a "dev" stub here;
33
+ * the real VERSION is injected into runtime modules by the version plugin.
15
34
  */
16
- const versionEsbuildPlugin = {
35
+ const versionRolldownPlugin = {
17
36
  name: "@rangojs/router-version",
18
- setup(build: any): void {
19
- build.onResolve({ filter: /^rsc-router:version$/ }, (args: any) => ({
20
- path: args.path,
21
- namespace: "@rangojs/router-virtual",
22
- }));
23
- build.onLoad(
24
- { filter: /.*/, namespace: "@rangojs/router-virtual" },
25
- () => ({
26
- contents: `export const VERSION = "dev";`,
27
- loader: "js",
28
- }),
29
- );
37
+ resolveId(id: string): string | undefined {
38
+ if (id === VIRTUAL_IDS.version) return "\0" + VIRTUAL_IDS.version;
39
+ return undefined;
40
+ },
41
+ load(id: string): string | undefined {
42
+ if (id === "\0" + VIRTUAL_IDS.version) {
43
+ return getVirtualVersionContent("dev");
44
+ }
45
+ return undefined;
30
46
  },
31
47
  };
32
48
 
33
49
  /**
34
- * Shared esbuild options for dependency optimization.
35
- * Includes the version stub plugin for all environments.
50
+ * Shared Rolldown options for dependency optimization (Vite 8).
51
+ * Includes the version stub plugin and the performance-tracks RSDW patch.
36
52
  */
37
- export const sharedEsbuildOptions: {
38
- plugins: (typeof versionEsbuildPlugin)[];
53
+ export const sharedRolldownOptions: {
54
+ plugins: any[];
39
55
  } = {
40
- plugins: [versionEsbuildPlugin],
56
+ plugins: [versionRolldownPlugin, performanceTracksOptimizeDepsPlugin()],
41
57
  };
42
58
 
59
+ /**
60
+ * Normalize an explicit `hostRouter` option into the specifier emitted as the
61
+ * host entry's `import ... from "<path>"`, and — for the forms that resolve
62
+ * unambiguously against the project root — verify the file exists (failing with
63
+ * a rango message instead of a downstream bundler "failed to resolve").
64
+ *
65
+ * Only a BARE specifier ("src/worker.rsc.tsx") that exists under the root is
66
+ * rewritten (to "./src/...") so it is not read as a package. A bare specifier
67
+ * that does NOT exist under the root is passed through VERBATIM: it may be a
68
+ * Vite alias ("@/worker.rsc.tsx"), an imports-map entry ("#app/worker"), or a
69
+ * workspace package the bundler resolves — rewriting or rejecting those was a
70
+ * regression (aliases worked before normalization existed). "./"/"../", a
71
+ * leading-slash (Vite root-relative), and a filesystem-absolute path are
72
+ * emitted unchanged — Vite resolves each. A leading-slash path and a
73
+ * filesystem-absolute path are indistinguishable on POSIX, so both are treated
74
+ * as "rooted": passed through WITHOUT an existence check (guessing between the
75
+ * two would wrongly reject a valid file — this was a regression the first time
76
+ * the check was added). Only the explicitly-relative forms, which resolve
77
+ * unambiguously against the root, fail fast with a rango message.
78
+ *
79
+ * `exists` is injected so the logic is unit-testable without a real filesystem.
80
+ */
81
+ export function normalizeHostRouterEntry(
82
+ rawInput: string,
83
+ root: string,
84
+ exists: (absPath: string) => boolean,
85
+ ): string {
86
+ const raw = rawInput.replaceAll("\\", "/");
87
+ const isRelative = raw.startsWith("./") || raw.startsWith("../");
88
+ const isRooted = raw.startsWith("/") || isAbsolute(rawInput);
89
+ if (isRooted) return raw;
90
+ if (isRelative) {
91
+ if (!exists(resolve(root, raw))) {
92
+ throw new Error(
93
+ `[rango] hostRouter entry not found: "${rawInput}" (resolved under ` +
94
+ `${root}). Point it at your createHostRouter() module, e.g. ` +
95
+ `rango({ hostRouter: "./src/worker.rsc.tsx" }).`,
96
+ );
97
+ }
98
+ return raw;
99
+ }
100
+ // Bare specifier: an existing root-relative file gets the explicit "./";
101
+ // anything else (alias, imports-map, package) is the bundler's to resolve.
102
+ return exists(resolve(root, raw)) ? "./" + raw : raw;
103
+ }
104
+
43
105
  /**
44
106
  * Create a virtual modules plugin for default entry files.
45
107
  * Provides virtual module content when entries use VIRTUAL_IDS (no custom entry configured).
46
108
  */
47
109
  export function createVirtualEntriesPlugin(
48
110
  entries: { client: string; ssr: string; rsc?: string },
49
- routerPathRef?: { path?: string },
111
+ routerPathRef?: { path?: string; kind?: "router" | "host" },
50
112
  ): Plugin {
51
113
  // Build virtual modules map based on which entries use virtual IDs
52
114
  const virtualModules: Record<string, string> = {};
@@ -94,7 +156,9 @@ export function createVirtualEntriesPlugin(
94
156
  : routerPathRef.path;
95
157
  // Normalize backslashes for Windows (path.join/slice preserve native separators)
96
158
  const absoluteRouterPath = raw.replaceAll("\\", "/");
97
- return getVirtualEntryRSC(absoluteRouterPath);
159
+ return routerPathRef.kind === "host"
160
+ ? getVirtualEntryRSCHost(absoluteRouterPath)
161
+ : getVirtualEntryRSC(absoluteRouterPath);
98
162
  }
99
163
  }
100
164
  return null;
@@ -102,14 +166,54 @@ export function createVirtualEntriesPlugin(
102
166
  };
103
167
  }
104
168
 
169
+ // Matches rollup's FILE_NAME_CONFLICT message and reports whether the colliding
170
+ // file is a content-hashed asset, e.g.
171
+ // The emitted file "assets/index-DlGNrvnU.css" overwrites a previously ...
172
+ // The emitted file "assets/inter-latin-Dx4kXJAl.woff2" overwrites a ...
173
+ // The match is UNANCHORED on purpose: by the time the warning reaches this user
174
+ // onwarn handler, Vite's logger has wrapped rollup's raw message with an ANSI
175
+ // color sequence and a "[CODE] " label, e.g.
176
+ // "[FILE_NAME_CONFLICT] The emitted file \"...\" overwrites ..."
177
+ // A "^The emitted file" anchor sits behind that prefix and never matches; and
178
+ // Vite also strips the JSON.stringify quotes rollup puts around the filename, so
179
+ // the match is UNANCHORED and quote-OPTIONAL ("?...?"?). The non-whitespace
180
+ // capture stops at the space before "overwrites" (Vite's unquoted display form)
181
+ // or the closing quote (raw rollup form); either way it carries no ANSI.
182
+ // A content-hashed name ends with a "-" separator + a Vite content hash. The
183
+ // hash is a FIXED-LENGTH base64url run ([A-Za-z0-9_-], default 8), so it can
184
+ // itself contain "-"/"_": it CANNOT be located by splitting on the last "-"
185
+ // (that lands inside the hash whenever it carries a dash, e.g. "...-Cabi7G8-" ->
186
+ // "" or "...-CkhJZR-_" -> "_", which let those conflicts leak). Instead take the
187
+ // trailing HASH_LEN chars and require the "-" separator right before them. The
188
+ // hash must hold an uppercase letter or digit (a real hash is never an
189
+ // all-lowercase word), so stable names like "assets/manifest.json" or
190
+ // "assets/loading-skeleton.css" still surface as potential genuine overwrites.
191
+ function isContentHashedAssetConflict(message: string | undefined): boolean {
192
+ if (!message) return false;
193
+ const match =
194
+ /The emitted file "?([^"\s]+)"? overwrites a previously emitted file/.exec(
195
+ message,
196
+ );
197
+ if (!match) return false;
198
+ const fileName = match[1];
199
+ const base = fileName.slice(fileName.lastIndexOf("/") + 1);
200
+ const dot = base.lastIndexOf(".");
201
+ if (dot <= 0) return false;
202
+ const stem = base.slice(0, dot);
203
+ // HASH_LEN tracks Vite's default [hash] width; bump it if an app sets a custom
204
+ // assetFileNames hash length.
205
+ const HASH_LEN = 8;
206
+ if (stem.length < HASH_LEN + 1 || stem[stem.length - HASH_LEN - 1] !== "-") {
207
+ return false;
208
+ }
209
+ const hash = stem.slice(-HASH_LEN);
210
+ return /^[A-Za-z0-9_-]+$/.test(hash) && /[A-Z0-9]/.test(hash);
211
+ }
212
+
105
213
  /**
106
- * Rollup onwarn handler that suppresses known harmless warnings:
107
- * - "use client" directives: handled by the RSC plugin, not relevant to Rollup
108
- * - sourcemap errors: caused by "use client" directive at line 1:0 confusing sourcemap resolution
109
- * - sourcemap incomplete: plugins that transform without generating sourcemaps (router + RSC plugin)
110
- * - dynamic/static mixed imports: expected for router internals (e.g. request-context, cache-scope)
111
- * - empty bundle: @vitejs/plugin-rsc scan build (step 1/5) produces an empty "index" chunk
112
- * because the RSC entry is fully externalized during client-reference analysis
214
+ * Suppress known harmless warnings: "use client" directives, sourcemap errors,
215
+ * mixed imports (expected for router internals), empty bundles, and content-hashed
216
+ * asset collisions from @vitejs/plugin-rsc copying RSC-env assets to the client bundle.
113
217
  */
114
218
  export function onwarn(
115
219
  warning: Vite.Rollup.RollupLog,
@@ -118,14 +222,17 @@ export function onwarn(
118
222
  if (
119
223
  warning.code === "MODULE_LEVEL_DIRECTIVE" ||
120
224
  warning.code === "SOURCEMAP_ERROR" ||
121
- warning.code === "EMPTY_BUNDLE"
225
+ warning.code === "EMPTY_BUNDLE" ||
226
+ warning.code === "INEFFECTIVE_DYNAMIC_IMPORT"
227
+ ) {
228
+ return;
229
+ }
230
+ if (
231
+ warning.code === "FILE_NAME_CONFLICT" &&
232
+ isContentHashedAssetConflict(warning.message)
122
233
  ) {
123
234
  return;
124
235
  }
125
- // @vitejs/plugin-rsc@0.5.14: rsc:virtual:vite-rsc/assets-manifest renderChunk
126
- // returns { code } without map, causing Rollup to warn about incorrect sourcemaps.
127
- // This is harmless (simple string replacement). Remove this suppression if a
128
- // future version of @vitejs/plugin-rsc fixes the missing sourcemap.
129
236
  if (warning.message?.includes("Sourcemap is likely to be incorrect")) {
130
237
  return;
131
238
  }
@@ -140,10 +247,6 @@ export function onwarn(
140
247
  defaultHandler(warning);
141
248
  }
142
249
 
143
- /**
144
- * Manual chunks configuration for client build.
145
- * Splits React and router packages into separate chunks for better caching.
146
- */
147
250
  export function getManualChunks(id: string): string | undefined {
148
251
  const normalized = Vite.normalizePath(id);
149
252
 
@@ -155,13 +258,10 @@ export function getManualChunks(id: string): string | undefined {
155
258
  ) {
156
259
  return "react";
157
260
  }
158
- // Use dynamic package name from package.json
159
- // Check both npm install path and workspace symlink resolved path
160
261
  const packageName = getPublishedPackageName();
161
262
  if (
162
263
  normalized.includes(`node_modules/${packageName}/`) ||
163
- normalized.includes("packages/rsc-router/") ||
164
- normalized.includes("packages/rangojs-router/")
264
+ /\/packages\/(rsc-router|rangojs-router)\/(src|dist)\//.test(normalized)
165
265
  ) {
166
266
  return "router";
167
267
  }