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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1199) hide show
  1. package/AGENTS.md +8 -0
  2. package/README.md +184 -31
  3. package/dist/__internal.d.ts +83 -0
  4. package/dist/__internal.d.ts.map +1 -0
  5. package/dist/__internal.js +19 -0
  6. package/dist/__internal.js.map +1 -0
  7. package/dist/__mocks__/version.d.ts +7 -0
  8. package/dist/__mocks__/version.d.ts.map +1 -0
  9. package/dist/__mocks__/version.js +7 -0
  10. package/dist/__mocks__/version.js.map +1 -0
  11. package/dist/__tests__/client-href.test.d.ts +2 -0
  12. package/dist/__tests__/client-href.test.d.ts.map +1 -0
  13. package/dist/__tests__/client-href.test.js +74 -0
  14. package/dist/__tests__/client-href.test.js.map +1 -0
  15. package/dist/__tests__/component-utils.test.d.ts +2 -0
  16. package/dist/__tests__/component-utils.test.d.ts.map +1 -0
  17. package/dist/__tests__/component-utils.test.js +51 -0
  18. package/dist/__tests__/component-utils.test.js.map +1 -0
  19. package/dist/__tests__/event-controller.test.d.ts +2 -0
  20. package/dist/__tests__/event-controller.test.d.ts.map +1 -0
  21. package/dist/__tests__/event-controller.test.js +538 -0
  22. package/dist/__tests__/event-controller.test.js.map +1 -0
  23. package/dist/__tests__/helpers/route-tree.d.ts +118 -0
  24. package/dist/__tests__/helpers/route-tree.d.ts.map +1 -0
  25. package/dist/__tests__/helpers/route-tree.js +374 -0
  26. package/dist/__tests__/helpers/route-tree.js.map +1 -0
  27. package/dist/__tests__/match-result.test.d.ts +2 -0
  28. package/dist/__tests__/match-result.test.d.ts.map +1 -0
  29. package/dist/__tests__/match-result.test.js +154 -0
  30. package/dist/__tests__/match-result.test.js.map +1 -0
  31. package/dist/__tests__/navigation-store.test.d.ts +2 -0
  32. package/dist/__tests__/navigation-store.test.d.ts.map +1 -0
  33. package/dist/__tests__/navigation-store.test.js +440 -0
  34. package/dist/__tests__/navigation-store.test.js.map +1 -0
  35. package/dist/__tests__/partial-update.test.d.ts +2 -0
  36. package/dist/__tests__/partial-update.test.d.ts.map +1 -0
  37. package/dist/__tests__/partial-update.test.js +1009 -0
  38. package/dist/__tests__/partial-update.test.js.map +1 -0
  39. package/dist/__tests__/reverse-types.test.d.ts +8 -0
  40. package/dist/__tests__/reverse-types.test.d.ts.map +1 -0
  41. package/dist/__tests__/reverse-types.test.js +656 -0
  42. package/dist/__tests__/reverse-types.test.js.map +1 -0
  43. package/dist/__tests__/route-definition.test.d.ts +2 -0
  44. package/dist/__tests__/route-definition.test.d.ts.map +1 -0
  45. package/dist/__tests__/route-definition.test.js +55 -0
  46. package/dist/__tests__/route-definition.test.js.map +1 -0
  47. package/dist/__tests__/router-helpers.test.d.ts +2 -0
  48. package/dist/__tests__/router-helpers.test.d.ts.map +1 -0
  49. package/dist/__tests__/router-helpers.test.js +377 -0
  50. package/dist/__tests__/router-helpers.test.js.map +1 -0
  51. package/dist/__tests__/router-integration-2.test.d.ts +2 -0
  52. package/dist/__tests__/router-integration-2.test.d.ts.map +1 -0
  53. package/dist/__tests__/router-integration-2.test.js +426 -0
  54. package/dist/__tests__/router-integration-2.test.js.map +1 -0
  55. package/dist/__tests__/router-integration.test.d.ts +2 -0
  56. package/dist/__tests__/router-integration.test.d.ts.map +1 -0
  57. package/dist/__tests__/router-integration.test.js +1051 -0
  58. package/dist/__tests__/router-integration.test.js.map +1 -0
  59. package/dist/__tests__/search-params.test.d.ts +5 -0
  60. package/dist/__tests__/search-params.test.d.ts.map +1 -0
  61. package/dist/__tests__/search-params.test.js +306 -0
  62. package/dist/__tests__/search-params.test.js.map +1 -0
  63. package/dist/__tests__/segment-system.test.d.ts +2 -0
  64. package/dist/__tests__/segment-system.test.d.ts.map +1 -0
  65. package/dist/__tests__/segment-system.test.js +627 -0
  66. package/dist/__tests__/segment-system.test.js.map +1 -0
  67. package/dist/__tests__/static-handler-types.test.d.ts +8 -0
  68. package/dist/__tests__/static-handler-types.test.d.ts.map +1 -0
  69. package/dist/__tests__/static-handler-types.test.js +63 -0
  70. package/dist/__tests__/static-handler-types.test.js.map +1 -0
  71. package/dist/__tests__/urls.test.d.ts +2 -0
  72. package/dist/__tests__/urls.test.d.ts.map +1 -0
  73. package/dist/__tests__/urls.test.js +421 -0
  74. package/dist/__tests__/urls.test.js.map +1 -0
  75. package/dist/__tests__/use-mount.test.d.ts +2 -0
  76. package/dist/__tests__/use-mount.test.d.ts.map +1 -0
  77. package/dist/__tests__/use-mount.test.js +35 -0
  78. package/dist/__tests__/use-mount.test.js.map +1 -0
  79. package/dist/bin/rango.d.ts +2 -0
  80. package/dist/bin/rango.d.ts.map +1 -0
  81. package/dist/bin/rango.js +339 -106
  82. package/dist/bin/rango.js.map +1 -0
  83. package/dist/browser/event-controller.d.ts +191 -0
  84. package/dist/browser/event-controller.d.ts.map +1 -0
  85. package/dist/browser/event-controller.js +559 -0
  86. package/dist/browser/event-controller.js.map +1 -0
  87. package/dist/browser/index.d.ts +2 -0
  88. package/dist/browser/index.d.ts.map +1 -0
  89. package/dist/browser/index.js +14 -0
  90. package/dist/browser/index.js.map +1 -0
  91. package/dist/browser/link-interceptor.d.ts +38 -0
  92. package/dist/browser/link-interceptor.d.ts.map +1 -0
  93. package/dist/browser/link-interceptor.js +99 -0
  94. package/dist/browser/link-interceptor.js.map +1 -0
  95. package/dist/browser/logging.d.ts +10 -0
  96. package/dist/browser/logging.d.ts.map +1 -0
  97. package/dist/browser/logging.js +29 -0
  98. package/dist/browser/logging.js.map +1 -0
  99. package/dist/browser/lru-cache.d.ts +17 -0
  100. package/dist/browser/lru-cache.d.ts.map +1 -0
  101. package/dist/browser/lru-cache.js +50 -0
  102. package/dist/browser/lru-cache.js.map +1 -0
  103. package/dist/browser/merge-segment-loaders.d.ts +39 -0
  104. package/dist/browser/merge-segment-loaders.d.ts.map +1 -0
  105. package/dist/browser/merge-segment-loaders.js +102 -0
  106. package/dist/browser/merge-segment-loaders.js.map +1 -0
  107. package/dist/browser/navigation-bridge.d.ts +102 -0
  108. package/dist/browser/navigation-bridge.d.ts.map +1 -0
  109. package/dist/browser/navigation-bridge.js +708 -0
  110. package/dist/browser/navigation-bridge.js.map +1 -0
  111. package/dist/browser/navigation-client.d.ts +25 -0
  112. package/dist/browser/navigation-client.d.ts.map +1 -0
  113. package/dist/browser/navigation-client.js +157 -0
  114. package/dist/browser/navigation-client.js.map +1 -0
  115. package/dist/browser/navigation-store.d.ts +101 -0
  116. package/dist/browser/navigation-store.d.ts.map +1 -0
  117. package/dist/browser/navigation-store.js +625 -0
  118. package/dist/browser/navigation-store.js.map +1 -0
  119. package/dist/browser/partial-update.d.ts +75 -0
  120. package/dist/browser/partial-update.d.ts.map +1 -0
  121. package/dist/browser/partial-update.js +426 -0
  122. package/dist/browser/partial-update.js.map +1 -0
  123. package/dist/browser/react/Link.d.ts +86 -0
  124. package/dist/browser/react/Link.d.ts.map +1 -0
  125. package/dist/browser/react/Link.js +128 -0
  126. package/dist/browser/react/Link.js.map +1 -0
  127. package/dist/browser/react/NavigationProvider.d.ts +63 -0
  128. package/dist/browser/react/NavigationProvider.d.ts.map +1 -0
  129. package/dist/browser/react/NavigationProvider.js +216 -0
  130. package/dist/browser/react/NavigationProvider.js.map +1 -0
  131. package/dist/browser/react/ScrollRestoration.d.ts +75 -0
  132. package/dist/browser/react/ScrollRestoration.d.ts.map +1 -0
  133. package/dist/browser/react/ScrollRestoration.js +57 -0
  134. package/dist/browser/react/ScrollRestoration.js.map +1 -0
  135. package/dist/browser/react/context.d.ts +46 -0
  136. package/dist/browser/react/context.d.ts.map +1 -0
  137. package/dist/browser/react/context.js +10 -0
  138. package/dist/browser/react/context.js.map +1 -0
  139. package/dist/browser/react/index.d.ts +11 -0
  140. package/dist/browser/react/index.d.ts.map +1 -0
  141. package/dist/browser/react/index.js +22 -0
  142. package/dist/browser/react/index.js.map +1 -0
  143. package/dist/browser/react/location-state-shared.d.ts +63 -0
  144. package/dist/browser/react/location-state-shared.d.ts.map +1 -0
  145. package/dist/browser/react/location-state-shared.js +81 -0
  146. package/dist/browser/react/location-state-shared.js.map +1 -0
  147. package/dist/browser/react/location-state.d.ts +23 -0
  148. package/dist/browser/react/location-state.d.ts.map +1 -0
  149. package/dist/browser/react/location-state.js +29 -0
  150. package/dist/browser/react/location-state.js.map +1 -0
  151. package/dist/browser/react/mount-context.d.ts +24 -0
  152. package/dist/browser/react/mount-context.d.ts.map +1 -0
  153. package/dist/browser/react/mount-context.js +24 -0
  154. package/dist/browser/react/mount-context.js.map +1 -0
  155. package/dist/browser/react/use-action.d.ts +64 -0
  156. package/dist/browser/react/use-action.d.ts.map +1 -0
  157. package/dist/browser/react/use-action.js +134 -0
  158. package/dist/browser/react/use-action.js.map +1 -0
  159. package/dist/browser/react/use-client-cache.d.ts +41 -0
  160. package/dist/browser/react/use-client-cache.d.ts.map +1 -0
  161. package/{src/browser/react/use-client-cache.ts → dist/browser/react/use-client-cache.js} +9 -28
  162. package/dist/browser/react/use-client-cache.js.map +1 -0
  163. package/dist/browser/react/use-handle.d.ts +31 -0
  164. package/dist/browser/react/use-handle.d.ts.map +1 -0
  165. package/dist/browser/react/use-handle.js +144 -0
  166. package/dist/browser/react/use-handle.js.map +1 -0
  167. package/dist/browser/react/use-href.d.ts +33 -0
  168. package/dist/browser/react/use-href.d.ts.map +1 -0
  169. package/dist/browser/react/use-href.js +39 -0
  170. package/dist/browser/react/use-href.js.map +1 -0
  171. package/dist/browser/react/use-link-status.d.ts +37 -0
  172. package/dist/browser/react/use-link-status.d.ts.map +1 -0
  173. package/dist/browser/react/use-link-status.js +99 -0
  174. package/dist/browser/react/use-link-status.js.map +1 -0
  175. package/dist/browser/react/use-mount.d.ts +25 -0
  176. package/dist/browser/react/use-mount.d.ts.map +1 -0
  177. package/dist/browser/react/use-mount.js +30 -0
  178. package/dist/browser/react/use-mount.js.map +1 -0
  179. package/dist/browser/react/use-navigation.d.ts +27 -0
  180. package/dist/browser/react/use-navigation.d.ts.map +1 -0
  181. package/dist/browser/react/use-navigation.js +87 -0
  182. package/dist/browser/react/use-navigation.js.map +1 -0
  183. package/dist/browser/react/use-segments.d.ts +38 -0
  184. package/dist/browser/react/use-segments.d.ts.map +1 -0
  185. package/dist/browser/react/use-segments.js +130 -0
  186. package/dist/browser/react/use-segments.js.map +1 -0
  187. package/dist/browser/request-controller.d.ts +26 -0
  188. package/dist/browser/request-controller.d.ts.map +1 -0
  189. package/dist/browser/request-controller.js +147 -0
  190. package/dist/browser/request-controller.js.map +1 -0
  191. package/dist/browser/rsc-router.d.ts +129 -0
  192. package/dist/browser/rsc-router.d.ts.map +1 -0
  193. package/dist/browser/rsc-router.js +195 -0
  194. package/dist/browser/rsc-router.js.map +1 -0
  195. package/dist/browser/scroll-restoration.d.ts +93 -0
  196. package/dist/browser/scroll-restoration.d.ts.map +1 -0
  197. package/dist/browser/scroll-restoration.js +321 -0
  198. package/dist/browser/scroll-restoration.js.map +1 -0
  199. package/dist/browser/segment-structure-assert.d.ts +17 -0
  200. package/dist/browser/segment-structure-assert.d.ts.map +1 -0
  201. package/dist/browser/segment-structure-assert.js +59 -0
  202. package/dist/browser/segment-structure-assert.js.map +1 -0
  203. package/dist/browser/server-action-bridge.d.ts +26 -0
  204. package/dist/browser/server-action-bridge.d.ts.map +1 -0
  205. package/dist/browser/server-action-bridge.js +668 -0
  206. package/dist/browser/server-action-bridge.js.map +1 -0
  207. package/dist/browser/shallow.d.ts +12 -0
  208. package/dist/browser/shallow.d.ts.map +1 -0
  209. package/dist/browser/shallow.js +34 -0
  210. package/dist/browser/shallow.js.map +1 -0
  211. package/dist/browser/types.d.ts +369 -0
  212. package/dist/browser/types.d.ts.map +1 -0
  213. package/dist/browser/types.js +2 -0
  214. package/dist/browser/types.js.map +1 -0
  215. package/dist/build/__tests__/generate-cli.test.d.ts +2 -0
  216. package/dist/build/__tests__/generate-cli.test.d.ts.map +1 -0
  217. package/dist/build/__tests__/generate-cli.test.js +237 -0
  218. package/dist/build/__tests__/generate-cli.test.js.map +1 -0
  219. package/dist/build/__tests__/generate-manifest.test.d.ts +2 -0
  220. package/dist/build/__tests__/generate-manifest.test.d.ts.map +1 -0
  221. package/dist/build/__tests__/generate-manifest.test.js +119 -0
  222. package/dist/build/__tests__/generate-manifest.test.js.map +1 -0
  223. package/dist/build/__tests__/generate-route-types.test.d.ts +2 -0
  224. package/dist/build/__tests__/generate-route-types.test.d.ts.map +1 -0
  225. package/dist/build/__tests__/generate-route-types.test.js +620 -0
  226. package/dist/build/__tests__/generate-route-types.test.js.map +1 -0
  227. package/dist/build/__tests__/per-router-manifest.test.d.ts +2 -0
  228. package/dist/build/__tests__/per-router-manifest.test.d.ts.map +1 -0
  229. package/dist/build/__tests__/per-router-manifest.test.js +308 -0
  230. package/dist/build/__tests__/per-router-manifest.test.js.map +1 -0
  231. package/dist/build/generate-manifest.d.ts +81 -0
  232. package/dist/build/generate-manifest.d.ts.map +1 -0
  233. package/dist/build/generate-manifest.js +276 -0
  234. package/dist/build/generate-manifest.js.map +1 -0
  235. package/dist/build/generate-route-types.d.ts +115 -0
  236. package/dist/build/generate-route-types.d.ts.map +1 -0
  237. package/dist/build/generate-route-types.js +740 -0
  238. package/dist/build/generate-route-types.js.map +1 -0
  239. package/dist/build/index.d.ts +21 -0
  240. package/dist/build/index.d.ts.map +1 -0
  241. package/dist/build/index.js +21 -0
  242. package/dist/build/index.js.map +1 -0
  243. package/dist/build/route-trie.d.ts +71 -0
  244. package/dist/build/route-trie.d.ts.map +1 -0
  245. package/dist/build/route-trie.js +175 -0
  246. package/dist/build/route-trie.js.map +1 -0
  247. package/dist/cache/__tests__/cache-scope.test.d.ts +2 -0
  248. package/dist/cache/__tests__/cache-scope.test.d.ts.map +1 -0
  249. package/dist/cache/__tests__/cache-scope.test.js +208 -0
  250. package/dist/cache/__tests__/cache-scope.test.js.map +1 -0
  251. package/dist/cache/__tests__/document-cache.test.d.ts +2 -0
  252. package/dist/cache/__tests__/document-cache.test.d.ts.map +1 -0
  253. package/dist/cache/__tests__/document-cache.test.js +345 -0
  254. package/dist/cache/__tests__/document-cache.test.js.map +1 -0
  255. package/dist/cache/__tests__/memory-segment-store.test.d.ts +2 -0
  256. package/dist/cache/__tests__/memory-segment-store.test.d.ts.map +1 -0
  257. package/dist/cache/__tests__/memory-segment-store.test.js +425 -0
  258. package/dist/cache/__tests__/memory-segment-store.test.js.map +1 -0
  259. package/dist/cache/__tests__/memory-store.test.d.ts +2 -0
  260. package/dist/cache/__tests__/memory-store.test.d.ts.map +1 -0
  261. package/dist/cache/__tests__/memory-store.test.js +367 -0
  262. package/dist/cache/__tests__/memory-store.test.js.map +1 -0
  263. package/dist/cache/cache-scope.d.ts +102 -0
  264. package/dist/cache/cache-scope.d.ts.map +1 -0
  265. package/dist/cache/cache-scope.js +440 -0
  266. package/dist/cache/cache-scope.js.map +1 -0
  267. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts +2 -0
  268. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts.map +1 -0
  269. package/dist/cache/cf/__tests__/cf-cache-store.test.js +330 -0
  270. package/dist/cache/cf/__tests__/cf-cache-store.test.js.map +1 -0
  271. package/dist/cache/cf/cf-cache-store.d.ts +165 -0
  272. package/dist/cache/cf/cf-cache-store.d.ts.map +1 -0
  273. package/dist/cache/cf/cf-cache-store.js +242 -0
  274. package/dist/cache/cf/cf-cache-store.js.map +1 -0
  275. package/dist/cache/cf/index.d.ts +14 -0
  276. package/dist/cache/cf/index.d.ts.map +1 -0
  277. package/dist/cache/cf/index.js +17 -0
  278. package/dist/cache/cf/index.js.map +1 -0
  279. package/dist/cache/document-cache.d.ts +64 -0
  280. package/dist/cache/document-cache.d.ts.map +1 -0
  281. package/dist/cache/document-cache.js +228 -0
  282. package/dist/cache/document-cache.js.map +1 -0
  283. package/dist/cache/index.d.ts +19 -0
  284. package/dist/cache/index.d.ts.map +1 -0
  285. package/dist/cache/index.js +21 -0
  286. package/dist/cache/index.js.map +1 -0
  287. package/dist/cache/memory-segment-store.d.ts +110 -0
  288. package/dist/cache/memory-segment-store.d.ts.map +1 -0
  289. package/dist/cache/memory-segment-store.js +117 -0
  290. package/dist/cache/memory-segment-store.js.map +1 -0
  291. package/dist/cache/memory-store.d.ts +41 -0
  292. package/dist/cache/memory-store.d.ts.map +1 -0
  293. package/dist/cache/memory-store.js +191 -0
  294. package/dist/cache/memory-store.js.map +1 -0
  295. package/dist/cache/types.d.ts +317 -0
  296. package/dist/cache/types.d.ts.map +1 -0
  297. package/dist/cache/types.js +12 -0
  298. package/dist/cache/types.js.map +1 -0
  299. package/dist/client.d.ts +248 -0
  300. package/dist/client.d.ts.map +1 -0
  301. package/dist/client.js +367 -0
  302. package/dist/client.js.map +1 -0
  303. package/dist/client.rsc.d.ts +26 -0
  304. package/dist/client.rsc.d.ts.map +1 -0
  305. package/dist/client.rsc.js +46 -0
  306. package/dist/client.rsc.js.map +1 -0
  307. package/dist/component-utils.d.ts +36 -0
  308. package/dist/component-utils.d.ts.map +1 -0
  309. package/dist/component-utils.js +61 -0
  310. package/dist/component-utils.js.map +1 -0
  311. package/dist/components/DefaultDocument.d.ts +13 -0
  312. package/dist/components/DefaultDocument.d.ts.map +1 -0
  313. package/dist/components/DefaultDocument.js +15 -0
  314. package/dist/components/DefaultDocument.js.map +1 -0
  315. package/dist/debug.d.ts +58 -0
  316. package/dist/debug.d.ts.map +1 -0
  317. package/dist/debug.js +157 -0
  318. package/dist/debug.js.map +1 -0
  319. package/dist/default-error-boundary.d.ts +11 -0
  320. package/dist/default-error-boundary.d.ts.map +1 -0
  321. package/dist/default-error-boundary.js +45 -0
  322. package/dist/default-error-boundary.js.map +1 -0
  323. package/dist/deps/browser.d.ts +2 -0
  324. package/dist/deps/browser.d.ts.map +1 -0
  325. package/dist/deps/browser.js +3 -0
  326. package/dist/deps/browser.js.map +1 -0
  327. package/dist/deps/html-stream-client.d.ts +2 -0
  328. package/dist/deps/html-stream-client.d.ts.map +1 -0
  329. package/dist/deps/html-stream-client.js +3 -0
  330. package/dist/deps/html-stream-client.js.map +1 -0
  331. package/dist/deps/html-stream-server.d.ts +2 -0
  332. package/dist/deps/html-stream-server.d.ts.map +1 -0
  333. package/dist/deps/html-stream-server.js +3 -0
  334. package/dist/deps/html-stream-server.js.map +1 -0
  335. package/dist/deps/rsc.d.ts +2 -0
  336. package/dist/deps/rsc.d.ts.map +1 -0
  337. package/dist/deps/rsc.js +4 -0
  338. package/dist/deps/rsc.js.map +1 -0
  339. package/dist/deps/ssr.d.ts +2 -0
  340. package/dist/deps/ssr.d.ts.map +1 -0
  341. package/dist/deps/ssr.js +3 -0
  342. package/dist/deps/ssr.js.map +1 -0
  343. package/dist/errors.d.ts +174 -0
  344. package/dist/errors.d.ts.map +1 -0
  345. package/dist/errors.js +241 -0
  346. package/dist/errors.js.map +1 -0
  347. package/dist/handle.d.ts +78 -0
  348. package/dist/handle.d.ts.map +1 -0
  349. package/dist/handle.js +82 -0
  350. package/dist/handle.js.map +1 -0
  351. package/dist/handles/MetaTags.d.ts +14 -0
  352. package/dist/handles/MetaTags.d.ts.map +1 -0
  353. package/dist/handles/MetaTags.js +136 -0
  354. package/dist/handles/MetaTags.js.map +1 -0
  355. package/{src/handles/index.ts → dist/handles/index.d.ts} +1 -2
  356. package/dist/handles/index.d.ts.map +1 -0
  357. package/dist/handles/index.js +6 -0
  358. package/dist/handles/index.js.map +1 -0
  359. package/dist/handles/meta.d.ts +39 -0
  360. package/dist/handles/meta.d.ts.map +1 -0
  361. package/dist/handles/meta.js +202 -0
  362. package/dist/handles/meta.js.map +1 -0
  363. package/dist/host/__tests__/errors.test.d.ts +2 -0
  364. package/dist/host/__tests__/errors.test.d.ts.map +1 -0
  365. package/dist/host/__tests__/errors.test.js +76 -0
  366. package/dist/host/__tests__/errors.test.js.map +1 -0
  367. package/dist/host/__tests__/pattern-comprehensive.test.d.ts +2 -0
  368. package/dist/host/__tests__/pattern-comprehensive.test.d.ts.map +1 -0
  369. package/dist/host/__tests__/pattern-comprehensive.test.js +732 -0
  370. package/dist/host/__tests__/pattern-comprehensive.test.js.map +1 -0
  371. package/dist/host/__tests__/pattern-matcher.test.d.ts +2 -0
  372. package/dist/host/__tests__/pattern-matcher.test.d.ts.map +1 -0
  373. package/dist/host/__tests__/pattern-matcher.test.js +251 -0
  374. package/dist/host/__tests__/pattern-matcher.test.js.map +1 -0
  375. package/dist/host/__tests__/router.test.d.ts +2 -0
  376. package/dist/host/__tests__/router.test.d.ts.map +1 -0
  377. package/dist/host/__tests__/router.test.js +241 -0
  378. package/dist/host/__tests__/router.test.js.map +1 -0
  379. package/dist/host/__tests__/testing.test.d.ts +2 -0
  380. package/dist/host/__tests__/testing.test.d.ts.map +1 -0
  381. package/dist/host/__tests__/testing.test.js +64 -0
  382. package/dist/host/__tests__/testing.test.js.map +1 -0
  383. package/dist/host/__tests__/utils.test.d.ts +2 -0
  384. package/dist/host/__tests__/utils.test.d.ts.map +1 -0
  385. package/dist/host/__tests__/utils.test.js +29 -0
  386. package/dist/host/__tests__/utils.test.js.map +1 -0
  387. package/dist/host/cookie-handler.d.ts +34 -0
  388. package/dist/host/cookie-handler.d.ts.map +1 -0
  389. package/dist/host/cookie-handler.js +124 -0
  390. package/dist/host/cookie-handler.js.map +1 -0
  391. package/dist/host/errors.d.ts +56 -0
  392. package/dist/host/errors.d.ts.map +1 -0
  393. package/dist/host/errors.js +79 -0
  394. package/dist/host/errors.js.map +1 -0
  395. package/dist/host/index.d.ts +29 -0
  396. package/dist/host/index.d.ts.map +1 -0
  397. package/dist/host/index.js +32 -0
  398. package/dist/host/index.js.map +1 -0
  399. package/dist/host/pattern-matcher.d.ts +36 -0
  400. package/dist/host/pattern-matcher.d.ts.map +1 -0
  401. package/dist/host/pattern-matcher.js +172 -0
  402. package/dist/host/pattern-matcher.js.map +1 -0
  403. package/dist/host/router.d.ts +26 -0
  404. package/dist/host/router.d.ts.map +1 -0
  405. package/dist/host/router.js +218 -0
  406. package/dist/host/router.js.map +1 -0
  407. package/dist/host/testing.d.ts +36 -0
  408. package/dist/host/testing.d.ts.map +1 -0
  409. package/dist/host/testing.js +55 -0
  410. package/dist/host/testing.js.map +1 -0
  411. package/dist/host/types.d.ts +115 -0
  412. package/dist/host/types.d.ts.map +1 -0
  413. package/dist/host/types.js +7 -0
  414. package/dist/host/types.js.map +1 -0
  415. package/dist/host/utils.d.ts +21 -0
  416. package/dist/host/utils.d.ts.map +1 -0
  417. package/dist/host/utils.js +23 -0
  418. package/dist/host/utils.js.map +1 -0
  419. package/dist/href-client.d.ts +131 -0
  420. package/dist/href-client.d.ts.map +1 -0
  421. package/dist/href-client.js +64 -0
  422. package/dist/href-client.js.map +1 -0
  423. package/dist/href-context.d.ts +29 -0
  424. package/dist/href-context.d.ts.map +1 -0
  425. package/dist/href-context.js +21 -0
  426. package/dist/href-context.js.map +1 -0
  427. package/dist/index.d.ts +73 -0
  428. package/dist/index.d.ts.map +1 -0
  429. package/dist/index.js +91 -0
  430. package/dist/index.js.map +1 -0
  431. package/dist/index.rsc.d.ts +32 -0
  432. package/dist/index.rsc.d.ts.map +1 -0
  433. package/dist/index.rsc.js +40 -0
  434. package/dist/index.rsc.js.map +1 -0
  435. package/dist/internal-debug.d.ts +2 -0
  436. package/dist/internal-debug.d.ts.map +1 -0
  437. package/dist/internal-debug.js +5 -0
  438. package/dist/internal-debug.js.map +1 -0
  439. package/dist/loader.d.ts +14 -0
  440. package/dist/loader.d.ts.map +1 -0
  441. package/dist/loader.js +20 -0
  442. package/dist/loader.js.map +1 -0
  443. package/dist/loader.rsc.d.ts +19 -0
  444. package/dist/loader.rsc.d.ts.map +1 -0
  445. package/dist/loader.rsc.js +99 -0
  446. package/dist/loader.rsc.js.map +1 -0
  447. package/dist/network-error-thrower.d.ts +17 -0
  448. package/dist/network-error-thrower.d.ts.map +1 -0
  449. package/dist/network-error-thrower.js +14 -0
  450. package/dist/network-error-thrower.js.map +1 -0
  451. package/dist/outlet-context.d.ts +13 -0
  452. package/dist/outlet-context.d.ts.map +1 -0
  453. package/dist/outlet-context.js +3 -0
  454. package/dist/outlet-context.js.map +1 -0
  455. package/dist/prerender/__tests__/param-hash.test.d.ts +2 -0
  456. package/dist/prerender/__tests__/param-hash.test.d.ts.map +1 -0
  457. package/dist/prerender/__tests__/param-hash.test.js +148 -0
  458. package/dist/prerender/__tests__/param-hash.test.js.map +1 -0
  459. package/dist/prerender/param-hash.d.ts +16 -0
  460. package/dist/prerender/param-hash.d.ts.map +1 -0
  461. package/dist/prerender/param-hash.js +36 -0
  462. package/dist/prerender/param-hash.js.map +1 -0
  463. package/dist/prerender/store.d.ts +38 -0
  464. package/dist/prerender/store.d.ts.map +1 -0
  465. package/dist/prerender/store.js +61 -0
  466. package/dist/prerender/store.js.map +1 -0
  467. package/dist/prerender.d.ts +66 -0
  468. package/dist/prerender.d.ts.map +1 -0
  469. package/dist/prerender.js +57 -0
  470. package/dist/prerender.js.map +1 -0
  471. package/dist/reverse.d.ts +196 -0
  472. package/dist/reverse.d.ts.map +1 -0
  473. package/dist/reverse.js +78 -0
  474. package/dist/reverse.js.map +1 -0
  475. package/dist/root-error-boundary.d.ts +33 -0
  476. package/dist/root-error-boundary.d.ts.map +1 -0
  477. package/dist/root-error-boundary.js +165 -0
  478. package/dist/root-error-boundary.js.map +1 -0
  479. package/dist/route-content-wrapper.d.ts +46 -0
  480. package/dist/route-content-wrapper.d.ts.map +1 -0
  481. package/dist/route-content-wrapper.js +77 -0
  482. package/dist/route-content-wrapper.js.map +1 -0
  483. package/dist/route-definition.d.ts +421 -0
  484. package/dist/route-definition.d.ts.map +1 -0
  485. package/dist/route-definition.js +868 -0
  486. package/dist/route-definition.js.map +1 -0
  487. package/dist/route-map-builder.d.ts +155 -0
  488. package/dist/route-map-builder.d.ts.map +1 -0
  489. package/dist/route-map-builder.js +237 -0
  490. package/dist/route-map-builder.js.map +1 -0
  491. package/dist/route-types.d.ts +165 -0
  492. package/dist/route-types.d.ts.map +1 -0
  493. package/dist/route-types.js +7 -0
  494. package/dist/route-types.js.map +1 -0
  495. package/dist/router/__tests__/handler-context.test.d.ts +2 -0
  496. package/dist/router/__tests__/handler-context.test.d.ts.map +1 -0
  497. package/dist/router/__tests__/handler-context.test.js +65 -0
  498. package/dist/router/__tests__/handler-context.test.js.map +1 -0
  499. package/dist/router/__tests__/loader-cycle-detection.test.d.ts +2 -0
  500. package/dist/router/__tests__/loader-cycle-detection.test.d.ts.map +1 -0
  501. package/dist/router/__tests__/loader-cycle-detection.test.js +221 -0
  502. package/dist/router/__tests__/loader-cycle-detection.test.js.map +1 -0
  503. package/dist/router/__tests__/match-context.test.d.ts +2 -0
  504. package/dist/router/__tests__/match-context.test.d.ts.map +1 -0
  505. package/dist/router/__tests__/match-context.test.js +92 -0
  506. package/dist/router/__tests__/match-context.test.js.map +1 -0
  507. package/dist/router/__tests__/match-pipelines.test.d.ts +2 -0
  508. package/dist/router/__tests__/match-pipelines.test.d.ts.map +1 -0
  509. package/dist/router/__tests__/match-pipelines.test.js +417 -0
  510. package/dist/router/__tests__/match-pipelines.test.js.map +1 -0
  511. package/dist/router/__tests__/match-result.test.d.ts +2 -0
  512. package/dist/router/__tests__/match-result.test.d.ts.map +1 -0
  513. package/dist/router/__tests__/match-result.test.js +457 -0
  514. package/dist/router/__tests__/match-result.test.js.map +1 -0
  515. package/dist/router/__tests__/on-error.test.d.ts +2 -0
  516. package/dist/router/__tests__/on-error.test.d.ts.map +1 -0
  517. package/dist/router/__tests__/on-error.test.js +678 -0
  518. package/dist/router/__tests__/on-error.test.js.map +1 -0
  519. package/dist/router/__tests__/pattern-matching.test.d.ts +2 -0
  520. package/dist/router/__tests__/pattern-matching.test.d.ts.map +1 -0
  521. package/dist/router/__tests__/pattern-matching.test.js +629 -0
  522. package/dist/router/__tests__/pattern-matching.test.js.map +1 -0
  523. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts +2 -0
  524. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts.map +1 -0
  525. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js +155 -0
  526. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js.map +1 -0
  527. package/dist/router/error-handling.d.ts +77 -0
  528. package/dist/router/error-handling.d.ts.map +1 -0
  529. package/dist/router/error-handling.js +202 -0
  530. package/dist/router/error-handling.js.map +1 -0
  531. package/dist/router/handler-context.d.ts +20 -0
  532. package/dist/router/handler-context.d.ts.map +1 -0
  533. package/dist/router/handler-context.js +198 -0
  534. package/dist/router/handler-context.js.map +1 -0
  535. package/dist/router/intercept-resolution.d.ts +66 -0
  536. package/dist/router/intercept-resolution.d.ts.map +1 -0
  537. package/dist/router/intercept-resolution.js +246 -0
  538. package/dist/router/intercept-resolution.js.map +1 -0
  539. package/dist/router/loader-resolution.d.ts +64 -0
  540. package/dist/router/loader-resolution.d.ts.map +1 -0
  541. package/dist/router/loader-resolution.js +284 -0
  542. package/dist/router/loader-resolution.js.map +1 -0
  543. package/dist/router/logging.d.ts +15 -0
  544. package/dist/router/logging.d.ts.map +1 -0
  545. package/dist/router/logging.js +99 -0
  546. package/dist/router/logging.js.map +1 -0
  547. package/dist/router/manifest.d.ts +22 -0
  548. package/dist/router/manifest.d.ts.map +1 -0
  549. package/dist/router/manifest.js +181 -0
  550. package/dist/router/manifest.js.map +1 -0
  551. package/dist/router/match-api.d.ts +35 -0
  552. package/dist/router/match-api.d.ts.map +1 -0
  553. package/dist/router/match-api.js +406 -0
  554. package/dist/router/match-api.js.map +1 -0
  555. package/dist/router/match-context.d.ts +206 -0
  556. package/dist/router/match-context.d.ts.map +1 -0
  557. package/dist/router/match-context.js +17 -0
  558. package/dist/router/match-context.js.map +1 -0
  559. package/dist/router/match-middleware/background-revalidation.d.ts +127 -0
  560. package/dist/router/match-middleware/background-revalidation.d.ts.map +1 -0
  561. package/dist/router/match-middleware/background-revalidation.js +75 -0
  562. package/dist/router/match-middleware/background-revalidation.js.map +1 -0
  563. package/dist/router/match-middleware/cache-lookup.d.ts +112 -0
  564. package/dist/router/match-middleware/cache-lookup.d.ts.map +1 -0
  565. package/dist/router/match-middleware/cache-lookup.js +257 -0
  566. package/dist/router/match-middleware/cache-lookup.js.map +1 -0
  567. package/dist/router/match-middleware/cache-store.d.ts +113 -0
  568. package/dist/router/match-middleware/cache-store.d.ts.map +1 -0
  569. package/dist/router/match-middleware/cache-store.js +108 -0
  570. package/dist/router/match-middleware/cache-store.js.map +1 -0
  571. package/dist/router/match-middleware/index.d.ts +81 -0
  572. package/dist/router/match-middleware/index.d.ts.map +1 -0
  573. package/dist/router/match-middleware/index.js +80 -0
  574. package/dist/router/match-middleware/index.js.map +1 -0
  575. package/dist/router/match-middleware/intercept-resolution.d.ts +117 -0
  576. package/dist/router/match-middleware/intercept-resolution.d.ts.map +1 -0
  577. package/dist/router/match-middleware/intercept-resolution.js +134 -0
  578. package/dist/router/match-middleware/intercept-resolution.js.map +1 -0
  579. package/dist/router/match-middleware/segment-resolution.d.ts +99 -0
  580. package/dist/router/match-middleware/segment-resolution.d.ts.map +1 -0
  581. package/dist/router/match-middleware/segment-resolution.js +53 -0
  582. package/dist/router/match-middleware/segment-resolution.js.map +1 -0
  583. package/dist/router/match-pipelines.d.ts +147 -0
  584. package/dist/router/match-pipelines.d.ts.map +1 -0
  585. package/dist/router/match-pipelines.js +82 -0
  586. package/dist/router/match-pipelines.js.map +1 -0
  587. package/dist/router/match-result.d.ts +126 -0
  588. package/dist/router/match-result.d.ts.map +1 -0
  589. package/dist/router/match-result.js +93 -0
  590. package/dist/router/match-result.js.map +1 -0
  591. package/dist/router/metrics.d.ts +20 -0
  592. package/dist/router/metrics.d.ts.map +1 -0
  593. package/dist/router/metrics.js +47 -0
  594. package/dist/router/metrics.js.map +1 -0
  595. package/dist/router/middleware.d.ts +249 -0
  596. package/dist/router/middleware.d.ts.map +1 -0
  597. package/dist/router/middleware.js +434 -0
  598. package/dist/router/middleware.js.map +1 -0
  599. package/dist/router/middleware.test.d.ts +2 -0
  600. package/dist/router/middleware.test.d.ts.map +1 -0
  601. package/dist/router/middleware.test.js +816 -0
  602. package/dist/router/middleware.test.js.map +1 -0
  603. package/dist/router/pattern-matching.d.ts +149 -0
  604. package/dist/router/pattern-matching.d.ts.map +1 -0
  605. package/dist/router/pattern-matching.js +349 -0
  606. package/dist/router/pattern-matching.js.map +1 -0
  607. package/dist/router/revalidation.d.ts +44 -0
  608. package/dist/router/revalidation.d.ts.map +1 -0
  609. package/dist/router/revalidation.js +147 -0
  610. package/dist/router/revalidation.js.map +1 -0
  611. package/dist/router/router-context.d.ts +135 -0
  612. package/dist/router/router-context.d.ts.map +1 -0
  613. package/dist/router/router-context.js +36 -0
  614. package/dist/router/router-context.js.map +1 -0
  615. package/dist/router/segment-resolution.d.ts +127 -0
  616. package/dist/router/segment-resolution.d.ts.map +1 -0
  617. package/dist/router/segment-resolution.js +919 -0
  618. package/dist/router/segment-resolution.js.map +1 -0
  619. package/dist/router/trie-matching.d.ts +40 -0
  620. package/dist/router/trie-matching.d.ts.map +1 -0
  621. package/dist/router/trie-matching.js +127 -0
  622. package/dist/router/trie-matching.js.map +1 -0
  623. package/dist/router/types.d.ts +136 -0
  624. package/dist/router/types.d.ts.map +1 -0
  625. package/dist/router/types.js +7 -0
  626. package/dist/router/types.js.map +1 -0
  627. package/dist/router.d.ts +753 -0
  628. package/dist/router.d.ts.map +1 -0
  629. package/dist/router.gen.d.ts +6 -0
  630. package/dist/router.gen.d.ts.map +1 -0
  631. package/dist/router.gen.js +6 -0
  632. package/dist/router.gen.js.map +1 -0
  633. package/dist/router.js +1304 -0
  634. package/dist/router.js.map +1 -0
  635. package/dist/rsc/__tests__/helpers.test.d.ts +2 -0
  636. package/dist/rsc/__tests__/helpers.test.d.ts.map +1 -0
  637. package/dist/rsc/__tests__/helpers.test.js +140 -0
  638. package/dist/rsc/__tests__/helpers.test.js.map +1 -0
  639. package/dist/rsc/handler.d.ts +45 -0
  640. package/dist/rsc/handler.d.ts.map +1 -0
  641. package/dist/rsc/handler.js +1172 -0
  642. package/dist/rsc/handler.js.map +1 -0
  643. package/dist/rsc/helpers.d.ts +16 -0
  644. package/dist/rsc/helpers.d.ts.map +1 -0
  645. package/dist/rsc/helpers.js +55 -0
  646. package/dist/rsc/helpers.js.map +1 -0
  647. package/dist/rsc/index.d.ts +22 -0
  648. package/dist/rsc/index.d.ts.map +1 -0
  649. package/dist/rsc/index.js +23 -0
  650. package/dist/rsc/index.js.map +1 -0
  651. package/dist/rsc/nonce.d.ts +9 -0
  652. package/dist/rsc/nonce.d.ts.map +1 -0
  653. package/dist/rsc/nonce.js +18 -0
  654. package/dist/rsc/nonce.js.map +1 -0
  655. package/dist/rsc/types.d.ts +206 -0
  656. package/dist/rsc/types.d.ts.map +1 -0
  657. package/dist/rsc/types.js +8 -0
  658. package/dist/rsc/types.js.map +1 -0
  659. package/dist/search-params.d.ts +103 -0
  660. package/dist/search-params.d.ts.map +1 -0
  661. package/dist/search-params.js +74 -0
  662. package/dist/search-params.js.map +1 -0
  663. package/dist/segment-system.d.ts +75 -0
  664. package/dist/segment-system.d.ts.map +1 -0
  665. package/dist/segment-system.js +336 -0
  666. package/dist/segment-system.js.map +1 -0
  667. package/dist/server/context.d.ts +245 -0
  668. package/dist/server/context.d.ts.map +1 -0
  669. package/dist/server/context.js +197 -0
  670. package/dist/server/context.js.map +1 -0
  671. package/dist/server/fetchable-loader-store.d.ts +18 -0
  672. package/dist/server/fetchable-loader-store.d.ts.map +1 -0
  673. package/dist/server/fetchable-loader-store.js +18 -0
  674. package/dist/server/fetchable-loader-store.js.map +1 -0
  675. package/dist/server/handle-store.d.ts +85 -0
  676. package/dist/server/handle-store.d.ts.map +1 -0
  677. package/dist/server/handle-store.js +142 -0
  678. package/dist/server/handle-store.js.map +1 -0
  679. package/dist/server/loader-registry.d.ts +55 -0
  680. package/dist/server/loader-registry.d.ts.map +1 -0
  681. package/dist/server/loader-registry.js +132 -0
  682. package/dist/server/loader-registry.js.map +1 -0
  683. package/dist/server/request-context.d.ts +226 -0
  684. package/dist/server/request-context.d.ts.map +1 -0
  685. package/dist/server/request-context.js +290 -0
  686. package/dist/server/request-context.js.map +1 -0
  687. package/dist/server/root-layout.d.ts +4 -0
  688. package/dist/server/root-layout.d.ts.map +1 -0
  689. package/dist/server/root-layout.js +5 -0
  690. package/dist/server/root-layout.js.map +1 -0
  691. package/dist/server.d.ts +15 -0
  692. package/dist/server.d.ts.map +1 -0
  693. package/dist/server.js +20 -0
  694. package/dist/server.js.map +1 -0
  695. package/dist/ssr/__tests__/ssr-handler.test.d.ts +2 -0
  696. package/dist/ssr/__tests__/ssr-handler.test.d.ts.map +1 -0
  697. package/dist/ssr/__tests__/ssr-handler.test.js +132 -0
  698. package/dist/ssr/__tests__/ssr-handler.test.js.map +1 -0
  699. package/dist/ssr/index.d.ts +98 -0
  700. package/dist/ssr/index.d.ts.map +1 -0
  701. package/dist/ssr/index.js +158 -0
  702. package/dist/ssr/index.js.map +1 -0
  703. package/dist/static-handler.d.ts +50 -0
  704. package/dist/static-handler.d.ts.map +1 -0
  705. package/dist/static-handler.gen.d.ts +5 -0
  706. package/dist/static-handler.gen.d.ts.map +1 -0
  707. package/dist/static-handler.gen.js +5 -0
  708. package/dist/static-handler.gen.js.map +1 -0
  709. package/dist/static-handler.js +29 -0
  710. package/dist/static-handler.js.map +1 -0
  711. package/dist/testing/vitest.js +82 -0
  712. package/dist/theme/ThemeProvider.d.ts +20 -0
  713. package/dist/theme/ThemeProvider.d.ts.map +1 -0
  714. package/dist/theme/ThemeProvider.js +240 -0
  715. package/dist/theme/ThemeProvider.js.map +1 -0
  716. package/dist/theme/ThemeScript.d.ts +48 -0
  717. package/dist/theme/ThemeScript.d.ts.map +1 -0
  718. package/dist/theme/ThemeScript.js +13 -0
  719. package/dist/theme/ThemeScript.js.map +1 -0
  720. package/dist/theme/__tests__/theme.test.d.ts +2 -0
  721. package/dist/theme/__tests__/theme.test.d.ts.map +1 -0
  722. package/dist/theme/__tests__/theme.test.js +103 -0
  723. package/dist/theme/__tests__/theme.test.js.map +1 -0
  724. package/dist/theme/constants.d.ts +29 -0
  725. package/dist/theme/constants.d.ts.map +1 -0
  726. package/dist/theme/constants.js +48 -0
  727. package/dist/theme/constants.js.map +1 -0
  728. package/dist/theme/index.d.ts +31 -0
  729. package/dist/theme/index.d.ts.map +1 -0
  730. package/dist/theme/index.js +36 -0
  731. package/dist/theme/index.js.map +1 -0
  732. package/dist/theme/theme-context.d.ts +40 -0
  733. package/dist/theme/theme-context.d.ts.map +1 -0
  734. package/dist/theme/theme-context.js +60 -0
  735. package/dist/theme/theme-context.js.map +1 -0
  736. package/dist/theme/theme-script.d.ts +27 -0
  737. package/dist/theme/theme-script.d.ts.map +1 -0
  738. package/dist/theme/theme-script.js +147 -0
  739. package/dist/theme/theme-script.js.map +1 -0
  740. package/dist/theme/types.d.ts +163 -0
  741. package/dist/theme/types.d.ts.map +1 -0
  742. package/dist/theme/types.js +11 -0
  743. package/dist/theme/types.js.map +1 -0
  744. package/dist/theme/use-theme.d.ts +12 -0
  745. package/dist/theme/use-theme.d.ts.map +1 -0
  746. package/dist/theme/use-theme.js +40 -0
  747. package/dist/theme/use-theme.js.map +1 -0
  748. package/dist/types.d.ts +1479 -0
  749. package/dist/types.d.ts.map +1 -0
  750. package/dist/types.js +10 -0
  751. package/dist/types.js.map +1 -0
  752. package/dist/urls.d.ts +441 -0
  753. package/dist/urls.d.ts.map +1 -0
  754. package/dist/urls.gen.d.ts +8 -0
  755. package/dist/urls.gen.d.ts.map +1 -0
  756. package/dist/urls.gen.js +8 -0
  757. package/dist/urls.gen.js.map +1 -0
  758. package/dist/urls.js +443 -0
  759. package/dist/urls.js.map +1 -0
  760. package/dist/use-loader.d.ts +127 -0
  761. package/dist/use-loader.d.ts.map +1 -0
  762. package/dist/use-loader.js +237 -0
  763. package/dist/use-loader.js.map +1 -0
  764. package/dist/vite/__tests__/ast-handler-extract.test.d.ts +2 -0
  765. package/dist/vite/__tests__/ast-handler-extract.test.d.ts.map +1 -0
  766. package/dist/vite/__tests__/ast-handler-extract.test.js +294 -0
  767. package/dist/vite/__tests__/ast-handler-extract.test.js.map +1 -0
  768. package/dist/vite/__tests__/expose-id-utils.test.d.ts +2 -0
  769. package/dist/vite/__tests__/expose-id-utils.test.d.ts.map +1 -0
  770. package/dist/vite/__tests__/expose-id-utils.test.js +224 -0
  771. package/dist/vite/__tests__/expose-id-utils.test.js.map +1 -0
  772. package/dist/vite/__tests__/expose-internal-ids.test.d.ts +2 -0
  773. package/dist/vite/__tests__/expose-internal-ids.test.d.ts.map +1 -0
  774. package/dist/vite/__tests__/expose-internal-ids.test.js +647 -0
  775. package/dist/vite/__tests__/expose-internal-ids.test.js.map +1 -0
  776. package/dist/vite/__tests__/expose-router-id.test.d.ts +2 -0
  777. package/dist/vite/__tests__/expose-router-id.test.d.ts.map +1 -0
  778. package/dist/vite/__tests__/expose-router-id.test.js +39 -0
  779. package/dist/vite/__tests__/expose-router-id.test.js.map +1 -0
  780. package/dist/vite/ast-handler-extract.d.ts +49 -0
  781. package/dist/vite/ast-handler-extract.d.ts.map +1 -0
  782. package/dist/vite/ast-handler-extract.js +249 -0
  783. package/dist/vite/ast-handler-extract.js.map +1 -0
  784. package/dist/vite/expose-action-id.d.ts +19 -0
  785. package/dist/vite/expose-action-id.d.ts.map +1 -0
  786. package/dist/vite/expose-action-id.js +250 -0
  787. package/dist/vite/expose-action-id.js.map +1 -0
  788. package/dist/vite/expose-id-utils.d.ts +69 -0
  789. package/dist/vite/expose-id-utils.d.ts.map +1 -0
  790. package/dist/vite/expose-id-utils.js +289 -0
  791. package/dist/vite/expose-id-utils.js.map +1 -0
  792. package/dist/vite/expose-internal-ids.d.ts +22 -0
  793. package/dist/vite/expose-internal-ids.d.ts.map +1 -0
  794. package/dist/vite/expose-internal-ids.js +886 -0
  795. package/dist/vite/expose-internal-ids.js.map +1 -0
  796. package/dist/vite/index.d.ts +149 -0
  797. package/dist/vite/index.d.ts.map +1 -0
  798. package/dist/vite/index.js +3247 -1128
  799. package/dist/vite/index.js.bak +5448 -0
  800. package/dist/vite/index.js.map +1 -0
  801. package/dist/vite/index.named-routes.gen.ts +103 -0
  802. package/dist/vite/package-resolution.d.ts +43 -0
  803. package/dist/vite/package-resolution.d.ts.map +1 -0
  804. package/dist/vite/package-resolution.js +112 -0
  805. package/dist/vite/package-resolution.js.map +1 -0
  806. package/dist/vite/plugins/cloudflare-protocol-loader-hook.mjs +76 -0
  807. package/dist/vite/virtual-entries.d.ts +25 -0
  808. package/dist/vite/virtual-entries.d.ts.map +1 -0
  809. package/dist/vite/virtual-entries.js +110 -0
  810. package/dist/vite/virtual-entries.js.map +1 -0
  811. package/package.json +81 -12
  812. package/skills/api-client/SKILL.md +211 -0
  813. package/skills/breadcrumbs/SKILL.md +64 -2
  814. package/skills/bundle-analysis/SKILL.md +159 -0
  815. package/skills/cache-guide/SKILL.md +224 -32
  816. package/skills/caching/SKILL.md +279 -17
  817. package/skills/composability/SKILL.md +27 -2
  818. package/skills/css/SKILL.md +76 -0
  819. package/skills/debug-manifest/SKILL.md +4 -2
  820. package/skills/document-cache/SKILL.md +78 -55
  821. package/skills/handler-use/SKILL.md +364 -0
  822. package/skills/hooks/SKILL.md +250 -30
  823. package/skills/host-router/SKILL.md +125 -23
  824. package/skills/i18n/SKILL.md +276 -0
  825. package/skills/intercept/SKILL.md +50 -6
  826. package/skills/layout/SKILL.md +35 -9
  827. package/skills/links/SKILL.md +247 -17
  828. package/skills/loader/SKILL.md +225 -9
  829. package/skills/middleware/SKILL.md +50 -13
  830. package/skills/migrate-nextjs/SKILL.md +584 -0
  831. package/skills/migrate-react-router/SKILL.md +771 -0
  832. package/skills/mime-routes/SKILL.md +28 -1
  833. package/skills/observability/SKILL.md +194 -0
  834. package/skills/parallel/SKILL.md +77 -7
  835. package/skills/prerender/SKILL.md +45 -43
  836. package/skills/rango/SKILL.md +257 -22
  837. package/skills/react-compiler/SKILL.md +168 -0
  838. package/skills/response-routes/SKILL.md +123 -48
  839. package/skills/route/SKILL.md +70 -5
  840. package/skills/router-setup/SKILL.md +30 -6
  841. package/skills/scripts/SKILL.md +179 -0
  842. package/skills/server-actions/SKILL.md +775 -0
  843. package/skills/streams-and-websockets/SKILL.md +283 -0
  844. package/skills/tailwind/SKILL.md +27 -3
  845. package/skills/testing/SKILL.md +129 -0
  846. package/skills/testing/bindings.md +103 -0
  847. package/skills/testing/cache-prerender.md +127 -0
  848. package/skills/testing/client-components.md +124 -0
  849. package/skills/testing/e2e-parity.md +125 -0
  850. package/skills/testing/flight.md +91 -0
  851. package/skills/testing/handles.md +129 -0
  852. package/skills/testing/loader.md +128 -0
  853. package/skills/testing/middleware.md +99 -0
  854. package/skills/testing/render-handler.md +121 -0
  855. package/skills/testing/response-routes.md +95 -0
  856. package/skills/testing/reverse-and-types.md +84 -0
  857. package/skills/testing/server-actions.md +107 -0
  858. package/skills/testing/server-tree.md +128 -0
  859. package/skills/testing/setup.md +123 -0
  860. package/skills/typesafety/SKILL.md +322 -29
  861. package/skills/use-cache/SKILL.md +46 -14
  862. package/skills/vercel/SKILL.md +128 -0
  863. package/skills/view-transitions/SKILL.md +294 -0
  864. package/src/__augment-tests__/augment.ts +81 -0
  865. package/src/__augment-tests__/augmented.check.ts +116 -0
  866. package/src/__internal.ts +0 -65
  867. package/src/browser/action-coordinator.ts +53 -36
  868. package/src/browser/action-fence.ts +47 -0
  869. package/src/browser/app-shell.ts +39 -0
  870. package/src/browser/connection-warmup.ts +134 -0
  871. package/src/browser/cookie-name.ts +140 -0
  872. package/src/browser/event-controller.ts +192 -150
  873. package/src/browser/history-state.ts +21 -0
  874. package/src/browser/index.ts +3 -3
  875. package/src/browser/invalidate-client-cache.ts +52 -0
  876. package/src/browser/navigation-bridge.ts +50 -11
  877. package/src/browser/navigation-client.ts +113 -78
  878. package/src/browser/navigation-store-handle.ts +38 -0
  879. package/src/browser/navigation-store.ts +33 -59
  880. package/src/browser/navigation-transaction.ts +9 -59
  881. package/src/browser/partial-update.ts +109 -122
  882. package/src/browser/prefetch/cache.ts +193 -68
  883. package/src/browser/prefetch/fetch.ts +293 -59
  884. package/src/browser/prefetch/queue.ts +42 -8
  885. package/src/browser/rango-state.ts +158 -76
  886. package/src/browser/react/Link.tsx +48 -20
  887. package/src/browser/react/NavigationProvider.tsx +95 -117
  888. package/src/browser/react/ScrollRestoration.tsx +10 -6
  889. package/src/browser/react/filter-segment-order.ts +66 -7
  890. package/src/browser/react/index.ts +0 -48
  891. package/src/browser/react/location-state-shared.ts +178 -8
  892. package/src/browser/react/location-state.ts +39 -14
  893. package/src/browser/react/use-action.ts +6 -15
  894. package/src/browser/react/use-handle.ts +17 -14
  895. package/src/browser/react/use-href.tsx +8 -1
  896. package/src/browser/react/use-link-status.ts +33 -8
  897. package/src/browser/react/use-navigation.ts +32 -7
  898. package/src/browser/react/use-params.ts +20 -10
  899. package/src/browser/react/use-reverse.ts +106 -0
  900. package/src/browser/react/use-router.ts +25 -3
  901. package/src/browser/react/use-search-params.ts +0 -5
  902. package/src/browser/react/use-segments.ts +11 -21
  903. package/src/browser/response-adapter.ts +66 -4
  904. package/src/browser/rsc-router.tsx +91 -24
  905. package/src/browser/scroll-restoration.ts +30 -17
  906. package/src/browser/segment-reconciler.ts +10 -14
  907. package/src/browser/segment-structure-assert.ts +2 -2
  908. package/src/browser/server-action-bridge.ts +214 -55
  909. package/src/browser/types.ts +48 -8
  910. package/src/browser/validate-redirect-origin.ts +43 -16
  911. package/src/build/collect-fallback-refs.ts +107 -0
  912. package/src/build/generate-manifest.ts +60 -35
  913. package/src/build/generate-route-types.ts +3 -1
  914. package/src/build/index.ts +8 -2
  915. package/src/build/prefix-tree-utils.ts +123 -0
  916. package/src/build/route-trie.ts +165 -36
  917. package/src/build/route-types/ast-route-extraction.ts +15 -8
  918. package/src/build/route-types/codegen.ts +16 -5
  919. package/src/build/route-types/include-resolution.ts +117 -23
  920. package/src/build/route-types/param-extraction.ts +6 -3
  921. package/src/build/route-types/per-module-writer.ts +22 -6
  922. package/src/build/route-types/router-processing.ts +128 -51
  923. package/src/build/route-types/scan-filter.ts +1 -1
  924. package/src/build/route-types/source-scan.ts +216 -0
  925. package/src/build/runtime-discovery.ts +9 -20
  926. package/src/cache/cache-error.ts +104 -0
  927. package/src/cache/cache-key-utils.ts +29 -13
  928. package/src/cache/cache-policy.ts +108 -34
  929. package/src/cache/cache-runtime.ts +199 -37
  930. package/src/cache/cache-scope.ts +188 -82
  931. package/src/cache/cache-tag.ts +103 -0
  932. package/src/cache/cf/cf-base64.ts +33 -0
  933. package/src/cache/cf/cf-cache-constants.ts +127 -0
  934. package/src/cache/cf/cf-cache-store.ts +1989 -378
  935. package/src/cache/cf/cf-cache-types.ts +349 -0
  936. package/src/cache/cf/cf-kv-utils.ts +46 -0
  937. package/src/cache/cf/cf-tag-marker-memo.ts +105 -0
  938. package/src/cache/cf/index.ts +6 -16
  939. package/src/cache/document-cache.ts +72 -20
  940. package/src/cache/handle-snapshot.ts +70 -0
  941. package/src/cache/index.ts +22 -20
  942. package/src/cache/memory-segment-store.ts +136 -37
  943. package/src/cache/profile-registry.ts +31 -31
  944. package/src/cache/read-through-swr.ts +41 -11
  945. package/src/cache/segment-codec.ts +9 -17
  946. package/src/cache/tag-invalidation.ts +230 -0
  947. package/src/cache/types.ts +37 -100
  948. package/src/cache/vercel/index.ts +11 -0
  949. package/src/cache/vercel/vercel-cache-store.ts +855 -0
  950. package/src/client.rsc.tsx +44 -21
  951. package/src/client.tsx +118 -235
  952. package/src/cloudflare/index.ts +11 -0
  953. package/src/cloudflare/tracing.ts +109 -0
  954. package/src/component-utils.ts +19 -0
  955. package/src/components/DefaultDocument.tsx +8 -2
  956. package/src/context-var.ts +18 -6
  957. package/src/decode-loader-results.ts +52 -0
  958. package/src/defer.ts +196 -0
  959. package/src/deps/ssr.ts +0 -1
  960. package/src/encode-kv.ts +49 -0
  961. package/src/errors.ts +30 -4
  962. package/src/escape-script.ts +52 -0
  963. package/src/handle.ts +31 -23
  964. package/src/handles/MetaTags.tsx +56 -19
  965. package/src/handles/Scripts.tsx +183 -0
  966. package/src/handles/breadcrumbs.ts +37 -8
  967. package/src/handles/is-thenable.ts +19 -0
  968. package/src/handles/meta.ts +51 -40
  969. package/src/handles/script.ts +244 -0
  970. package/src/host/cookie-handler.ts +9 -60
  971. package/src/host/errors.ts +0 -24
  972. package/src/host/index.ts +8 -2
  973. package/src/host/pattern-matcher.ts +23 -52
  974. package/src/host/router.ts +107 -99
  975. package/src/host/testing.ts +40 -27
  976. package/src/host/types.ts +37 -4
  977. package/src/host/utils.ts +1 -1
  978. package/src/href-client.ts +137 -22
  979. package/src/index.rsc.ts +90 -11
  980. package/src/index.ts +125 -19
  981. package/src/internal-debug.ts +2 -4
  982. package/src/loader-store.ts +500 -0
  983. package/src/loader.rsc.ts +20 -13
  984. package/src/loader.ts +12 -11
  985. package/src/missing-id-error.ts +68 -0
  986. package/src/network-error-thrower.tsx +1 -6
  987. package/src/outlet-context.ts +1 -1
  988. package/src/outlet-provider.tsx +1 -5
  989. package/src/prerender/param-hash.ts +16 -16
  990. package/src/prerender/store.ts +32 -37
  991. package/src/prerender.ts +61 -6
  992. package/src/redirect-origin.ts +100 -0
  993. package/src/regex-escape.ts +8 -0
  994. package/src/response-utils.ts +62 -0
  995. package/src/reverse.ts +65 -36
  996. package/src/root-error-boundary.tsx +1 -19
  997. package/src/route-content-wrapper.tsx +7 -72
  998. package/src/route-definition/dsl-helpers.ts +418 -273
  999. package/src/route-definition/helper-factories.ts +29 -139
  1000. package/src/route-definition/helpers-types.ts +103 -31
  1001. package/src/route-definition/redirect.ts +44 -11
  1002. package/src/route-definition/resolve-handler-use.ts +12 -0
  1003. package/src/route-definition/use-item-types.ts +32 -0
  1004. package/src/route-map-builder.ts +0 -16
  1005. package/src/route-types.ts +26 -41
  1006. package/src/router/basename.ts +14 -0
  1007. package/src/router/content-negotiation.ts +73 -25
  1008. package/src/router/error-handling.ts +45 -18
  1009. package/src/router/find-match.ts +44 -23
  1010. package/src/router/handler-context.ts +27 -39
  1011. package/src/router/instrument.ts +350 -0
  1012. package/src/router/intercept-resolution.ts +39 -20
  1013. package/src/router/lazy-includes.ts +15 -52
  1014. package/src/router/loader-resolution.ts +155 -72
  1015. package/src/router/logging.ts +0 -6
  1016. package/src/router/manifest.ts +40 -42
  1017. package/src/router/match-api.ts +4 -23
  1018. package/src/router/match-context.ts +0 -22
  1019. package/src/router/match-handlers.ts +58 -58
  1020. package/src/router/match-middleware/background-revalidation.ts +6 -7
  1021. package/src/router/match-middleware/cache-lookup.ts +161 -286
  1022. package/src/router/match-middleware/cache-store.ts +31 -34
  1023. package/src/router/match-middleware/intercept-resolution.ts +0 -22
  1024. package/src/router/match-middleware/segment-resolution.ts +0 -22
  1025. package/src/router/match-pipelines.ts +1 -42
  1026. package/src/router/match-result.ts +44 -74
  1027. package/src/router/metrics.ts +0 -34
  1028. package/src/router/middleware-types.ts +7 -134
  1029. package/src/router/middleware.ts +266 -166
  1030. package/src/router/navigation-snapshot.ts +0 -51
  1031. package/src/router/params-util.ts +23 -0
  1032. package/src/router/pattern-matching.ts +132 -90
  1033. package/src/router/prefetch-cache-ttl.ts +51 -0
  1034. package/src/router/prerender-match.ts +104 -65
  1035. package/src/router/preview-match.ts +3 -1
  1036. package/src/router/request-classification.ts +28 -62
  1037. package/src/router/revalidation.ts +123 -73
  1038. package/src/router/route-snapshot.ts +0 -1
  1039. package/src/router/router-context.ts +3 -28
  1040. package/src/router/router-interfaces.ts +83 -35
  1041. package/src/router/router-options.ts +136 -5
  1042. package/src/router/router-registry.ts +2 -5
  1043. package/src/router/segment-resolution/fresh.ts +93 -84
  1044. package/src/router/segment-resolution/helpers.ts +86 -6
  1045. package/src/router/segment-resolution/loader-cache.ts +62 -37
  1046. package/src/router/segment-resolution/revalidation.ts +269 -320
  1047. package/src/router/segment-resolution/static-store.ts +19 -5
  1048. package/src/router/segment-resolution/streamed-handler-telemetry.ts +52 -0
  1049. package/src/router/segment-resolution/view-transition-default.ts +36 -0
  1050. package/src/router/segment-resolution.ts +5 -1
  1051. package/src/router/segment-wrappers.ts +6 -5
  1052. package/src/router/state-cookie-name.ts +33 -0
  1053. package/src/router/substitute-pattern-params.ts +56 -0
  1054. package/src/router/telemetry-otel.ts +161 -199
  1055. package/src/router/telemetry.ts +96 -19
  1056. package/src/router/timeout.ts +0 -20
  1057. package/src/router/tracing.ts +206 -0
  1058. package/src/router/trie-matching.ts +163 -59
  1059. package/src/router/types.ts +9 -63
  1060. package/src/router/url-params.ts +44 -0
  1061. package/src/router.ts +110 -55
  1062. package/src/rsc/handler-context.ts +3 -2
  1063. package/src/rsc/handler.ts +266 -219
  1064. package/src/rsc/helpers.ts +168 -46
  1065. package/src/rsc/index.ts +2 -5
  1066. package/src/rsc/json-route-result.ts +38 -0
  1067. package/src/rsc/loader-fetch.ts +114 -38
  1068. package/src/rsc/manifest-init.ts +28 -41
  1069. package/src/rsc/origin-guard.ts +39 -25
  1070. package/src/rsc/progressive-enhancement.ts +63 -9
  1071. package/src/rsc/redirect-guard.ts +99 -0
  1072. package/src/rsc/response-cache-serve.ts +238 -0
  1073. package/src/rsc/response-error.ts +79 -12
  1074. package/src/rsc/response-route-handler.ts +99 -189
  1075. package/src/rsc/rsc-rendering.ts +99 -75
  1076. package/src/rsc/runtime-warnings.ts +23 -10
  1077. package/src/rsc/server-action.ts +258 -115
  1078. package/src/rsc/ssr-setup.ts +16 -0
  1079. package/src/rsc/types.ts +23 -5
  1080. package/src/runtime-env.ts +18 -0
  1081. package/src/search-params.ts +35 -30
  1082. package/src/segment-content-promise.ts +67 -0
  1083. package/src/segment-loader-promise.ts +149 -0
  1084. package/src/segment-system.tsx +218 -202
  1085. package/src/serialize.ts +243 -0
  1086. package/src/server/context.ts +175 -53
  1087. package/src/server/cookie-parse.ts +32 -0
  1088. package/src/server/cookie-store.ts +80 -5
  1089. package/src/server/handle-store.ts +21 -38
  1090. package/src/server/loader-registry.ts +21 -42
  1091. package/src/server/request-context.ts +235 -175
  1092. package/src/ssr/index.tsx +21 -16
  1093. package/src/static-handler.ts +10 -13
  1094. package/src/testing/cache-status.ts +162 -0
  1095. package/src/testing/collect-handle.ts +40 -0
  1096. package/src/testing/dispatch.ts +701 -0
  1097. package/src/testing/dom.entry.ts +22 -0
  1098. package/src/testing/e2e/fixture.ts +188 -0
  1099. package/src/testing/e2e/index.ts +128 -0
  1100. package/src/testing/e2e/matchers.ts +35 -0
  1101. package/src/testing/e2e/page-helpers.ts +272 -0
  1102. package/src/testing/e2e/parity.ts +387 -0
  1103. package/src/testing/e2e/server.ts +195 -0
  1104. package/src/testing/flight-matchers.ts +97 -0
  1105. package/src/testing/flight-normalize.ts +11 -0
  1106. package/src/testing/flight-runtime.d.ts +57 -0
  1107. package/src/testing/flight-tree.ts +682 -0
  1108. package/src/testing/flight.entry.ts +52 -0
  1109. package/src/testing/flight.ts +257 -0
  1110. package/src/testing/generated-routes.ts +183 -0
  1111. package/src/testing/index.ts +99 -0
  1112. package/src/testing/internal/context.ts +371 -0
  1113. package/src/testing/internal/flight-client-globals.ts +30 -0
  1114. package/src/testing/internal/seed-vars.ts +54 -0
  1115. package/src/testing/render-handler.ts +343 -0
  1116. package/src/testing/render-route.tsx +581 -0
  1117. package/src/testing/run-loader.ts +385 -0
  1118. package/src/testing/run-middleware.ts +205 -0
  1119. package/src/testing/vitest-stubs/cloudflare-email.ts +9 -0
  1120. package/src/testing/vitest-stubs/cloudflare-workers.ts +21 -0
  1121. package/src/testing/vitest-stubs/plugin-rsc.ts +16 -0
  1122. package/src/testing/vitest-stubs/version.ts +5 -0
  1123. package/src/testing/vitest.ts +305 -0
  1124. package/src/theme/ThemeProvider.tsx +20 -58
  1125. package/src/theme/ThemeScript.tsx +7 -9
  1126. package/src/theme/constants.ts +52 -13
  1127. package/src/theme/index.ts +0 -7
  1128. package/src/theme/theme-context.ts +1 -5
  1129. package/src/theme/theme-script.ts +22 -21
  1130. package/src/theme/use-theme.ts +0 -3
  1131. package/src/types/boundaries.ts +0 -35
  1132. package/src/types/cache-types.ts +13 -4
  1133. package/src/types/error-types.ts +30 -90
  1134. package/src/types/global-namespace.ts +54 -41
  1135. package/src/types/handler-context.ts +109 -61
  1136. package/src/types/index.ts +1 -10
  1137. package/src/types/loader-types.ts +11 -9
  1138. package/src/types/request-scope.ts +112 -0
  1139. package/src/types/route-config.ts +6 -50
  1140. package/src/types/route-entry.ts +11 -6
  1141. package/src/types/segments.ts +35 -15
  1142. package/src/urls/include-helper.ts +33 -70
  1143. package/src/urls/index.ts +1 -11
  1144. package/src/urls/path-helper-types.ts +49 -9
  1145. package/src/urls/path-helper.ts +17 -106
  1146. package/src/urls/pattern-types.ts +36 -19
  1147. package/src/urls/response-types.ts +22 -29
  1148. package/src/urls/type-extraction.ts +58 -139
  1149. package/src/urls/urls-function.ts +1 -18
  1150. package/src/use-loader.tsx +292 -107
  1151. package/src/vercel/index.ts +11 -0
  1152. package/src/vercel/tracing.ts +88 -0
  1153. package/src/vite/debug.ts +185 -0
  1154. package/src/vite/discovery/bundle-postprocess.ts +8 -7
  1155. package/src/vite/discovery/discover-routers.ts +126 -85
  1156. package/src/vite/discovery/discovery-errors.ts +194 -0
  1157. package/src/vite/discovery/gate-state.ts +171 -0
  1158. package/src/vite/discovery/prerender-collection.ts +96 -68
  1159. package/src/vite/discovery/route-types-writer.ts +40 -84
  1160. package/src/vite/discovery/self-gen-tracking.ts +27 -1
  1161. package/src/vite/discovery/state.ts +45 -1
  1162. package/src/vite/discovery/virtual-module-codegen.ts +14 -34
  1163. package/src/vite/index.ts +4 -0
  1164. package/src/vite/plugin-types.ts +210 -10
  1165. package/src/vite/plugins/cjs-to-esm.ts +16 -19
  1166. package/src/vite/plugins/client-ref-dedup.ts +16 -11
  1167. package/src/vite/plugins/client-ref-hashing.ts +28 -15
  1168. package/src/vite/plugins/cloudflare-protocol-loader-hook.d.mts +23 -0
  1169. package/src/vite/plugins/cloudflare-protocol-loader-hook.mjs +76 -0
  1170. package/src/vite/plugins/cloudflare-protocol-stub.ts +194 -0
  1171. package/src/vite/plugins/expose-action-id.ts +48 -95
  1172. package/src/vite/plugins/expose-id-utils.ts +88 -55
  1173. package/src/vite/plugins/expose-ids/export-analysis.ts +101 -34
  1174. package/src/vite/plugins/expose-ids/handler-transform.ts +11 -90
  1175. package/src/vite/plugins/expose-ids/loader-transform.ts +14 -24
  1176. package/src/vite/plugins/expose-ids/router-transform.ts +118 -29
  1177. package/src/vite/plugins/expose-internal-ids.ts +505 -486
  1178. package/src/vite/plugins/performance-tracks.ts +26 -25
  1179. package/src/vite/plugins/refresh-cmd.ts +1 -1
  1180. package/src/vite/plugins/use-cache-transform.ts +73 -83
  1181. package/src/vite/plugins/vercel-output.ts +295 -0
  1182. package/src/vite/plugins/version-injector.ts +21 -25
  1183. package/src/vite/plugins/version-plugin.ts +37 -40
  1184. package/src/vite/plugins/virtual-entries.ts +71 -18
  1185. package/src/vite/rango.ts +225 -137
  1186. package/src/vite/router-discovery.ts +769 -106
  1187. package/src/vite/utils/ast-handler-extract.ts +26 -35
  1188. package/src/vite/utils/banner.ts +1 -1
  1189. package/src/vite/utils/bundle-analysis.ts +10 -15
  1190. package/src/vite/utils/client-chunks.ts +184 -0
  1191. package/src/vite/utils/directive-prologue.ts +40 -0
  1192. package/src/vite/utils/forward-user-plugins.ts +171 -0
  1193. package/src/vite/utils/manifest-utils.ts +4 -59
  1194. package/src/vite/utils/package-resolution.ts +20 -52
  1195. package/src/vite/utils/prerender-utils.ts +67 -38
  1196. package/src/vite/utils/shared-utils.ts +95 -43
  1197. package/src/browser/action-response-classifier.ts +0 -99
  1198. package/src/browser/shallow.ts +0 -40
  1199. package/src/router/middleware-cookies.ts +0 -55
package/dist/bin/rango.js CHANGED
@@ -22,10 +22,10 @@ function extractParamsFromPattern(pattern) {
22
22
  function formatRouteEntry(key, pattern, _params, search) {
23
23
  const hasSearch = search && Object.keys(search).length > 0;
24
24
  if (!hasSearch) {
25
- return ` ${key}: "${pattern}",`;
25
+ return ` ${key}: ${JSON.stringify(pattern)},`;
26
26
  }
27
- const searchBody = Object.entries(search).map(([k, v]) => `${k}: "${v}"`).join(", ");
28
- return ` ${key}: { path: "${pattern}", search: { ${searchBody} } },`;
27
+ const searchBody = Object.entries(search).map(([k, v]) => `${k}: ${JSON.stringify(v)}`).join(", ");
28
+ return ` ${key}: { path: ${JSON.stringify(pattern)}, search: { ${searchBody} } },`;
29
29
  }
30
30
  var init_param_extraction = __esm({
31
31
  "src/build/route-types/param-extraction.ts"() {
@@ -59,8 +59,8 @@ var init_ast_helpers = __esm({
59
59
 
60
60
  // src/build/route-types/ast-route-extraction.ts
61
61
  import ts2 from "typescript";
62
- function extractRoutesFromSource(code) {
63
- const sourceFile = ts2.createSourceFile(
62
+ function extractRoutesFromSource(code, sourceFileArg) {
63
+ const sourceFile = sourceFileArg ?? ts2.createSourceFile(
64
64
  "input.tsx",
65
65
  code,
66
66
  ts2.ScriptTarget.Latest,
@@ -139,7 +139,7 @@ function generatePerModuleTypesSource(routes) {
139
139
  const valid = routes.filter(({ name }) => {
140
140
  if (!name || /["'\\`\n\r]/.test(name)) {
141
141
  console.warn(
142
- `[rsc-router] Skipping route with invalid name: ${JSON.stringify(name)}`
142
+ `[rango] Skipping route with invalid name: ${JSON.stringify(name)}`
143
143
  );
144
144
  return false;
145
145
  }
@@ -149,7 +149,7 @@ function generatePerModuleTypesSource(routes) {
149
149
  for (const { name, pattern, params, search } of valid) {
150
150
  if (deduped.has(name)) {
151
151
  console.warn(
152
- `[rsc-router] Duplicate route name "${name}" \u2014 keeping first definition`
152
+ `[rango] Duplicate route name "${name}" \u2014 keeping first definition`
153
153
  );
154
154
  continue;
155
155
  }
@@ -185,9 +185,13 @@ export const NamedRoutes = {
185
185
  ${objectBody}
186
186
  } as const;
187
187
 
188
+ // Aliased so the augmentation below does not pay a homomorphic mapped-type
189
+ // instantiation per route; \`as const\` already makes the members readonly.
190
+ type NamedRoutesShape = typeof NamedRoutes;
191
+
188
192
  declare global {
189
- namespace RSCRouter {
190
- interface GeneratedRouteMap extends Readonly<typeof NamedRoutes> {}
193
+ namespace Rango {
194
+ interface GeneratedRouteMap extends NamedRoutesShape {}
191
195
  }
192
196
  }
193
197
  `;
@@ -211,7 +215,7 @@ function findTsFiles(dir, filter) {
211
215
  entries = readdirSync(dir, { withFileTypes: true });
212
216
  } catch (err) {
213
217
  console.warn(
214
- `[rsc-router] Failed to scan directory ${dir}: ${err.message}`
218
+ `[rango] Failed to scan directory ${dir}: ${err.message}`
215
219
  );
216
220
  return results;
217
221
  }
@@ -238,6 +242,33 @@ var init_scan_filter = __esm({
238
242
  import { readFileSync, existsSync } from "node:fs";
239
243
  import { dirname, resolve } from "node:path";
240
244
  import ts3 from "typescript";
245
+ function createScanMemo() {
246
+ return { files: /* @__PURE__ */ new Map(), blockSourceFiles: /* @__PURE__ */ new Map() };
247
+ }
248
+ function parseBlock(memo, block) {
249
+ if (memo) {
250
+ const cached = memo.blockSourceFiles.get(block);
251
+ if (cached) return cached;
252
+ }
253
+ const sf = ts3.createSourceFile(
254
+ "input.tsx",
255
+ block,
256
+ ts3.ScriptTarget.Latest,
257
+ true,
258
+ ts3.ScriptKind.TSX
259
+ );
260
+ if (memo) memo.blockSourceFiles.set(block, sf);
261
+ return sf;
262
+ }
263
+ function readSourceMemoized(memo, realPath) {
264
+ if (memo) {
265
+ const cached = memo.files.get(realPath);
266
+ if (cached !== void 0) return cached;
267
+ }
268
+ const source = readFileSync(realPath, "utf-8");
269
+ if (memo) memo.files.set(realPath, source);
270
+ return source;
271
+ }
241
272
  function extractNamePrefixFromInclude(node) {
242
273
  if (node.arguments.length >= 3) {
243
274
  const thirdArg = node.arguments[2];
@@ -253,8 +284,8 @@ function extractNamePrefixFromInclude(node) {
253
284
  }
254
285
  return null;
255
286
  }
256
- function extractIncludesWithDiagnostics(code) {
257
- const sourceFile = ts3.createSourceFile(
287
+ function extractIncludesWithDiagnostics(code, sourceFileArg) {
288
+ const sourceFile = sourceFileArg ?? ts3.createSourceFile(
258
289
  "input.tsx",
259
290
  code,
260
291
  ts3.ScriptTarget.Latest,
@@ -308,7 +339,7 @@ function extractIncludesWithDiagnostics(code) {
308
339
  return { resolved, unresolvable };
309
340
  }
310
341
  function resolveImportedVariable(code, localName) {
311
- const importRegex = /import\s*\{([^}]+)\}\s*from\s*["']([^"']+)["']/g;
342
+ const importRegex = /import\s*(?:[\w$]+\s*,\s*)?\{([^}]+)\}\s*from\s*["']([^"']+)["']/g;
312
343
  let match;
313
344
  while ((match = importRegex.exec(code)) !== null) {
314
345
  const imports = match[1];
@@ -345,8 +376,8 @@ function resolveImportPath(importSpec, fromFile) {
345
376
  }
346
377
  return null;
347
378
  }
348
- function extractUrlsBlockForVariable(code, varName) {
349
- const sourceFile = ts3.createSourceFile(
379
+ function extractUrlsBlockForVariable(code, varName, sourceFileArg) {
380
+ const sourceFile = sourceFileArg ?? ts3.createSourceFile(
350
381
  "input.tsx",
351
382
  code,
352
383
  ts3.ScriptTarget.Latest,
@@ -368,16 +399,20 @@ function extractUrlsBlockForVariable(code, varName) {
368
399
  visit(sourceFile);
369
400
  return result;
370
401
  }
371
- function buildRouteMapFromBlock(block, fullSource, filePath, visited, searchSchemasOut, diagnosticsOut) {
402
+ function buildRouteMapFromBlock(block, fullSource, filePath, visited, searchSchemasOut, diagnosticsOut, memo) {
372
403
  const routeMap = {};
373
- const localRoutes = extractRoutesFromSource(block);
404
+ const blockSourceFile = parseBlock(memo, block);
405
+ const localRoutes = extractRoutesFromSource(block, blockSourceFile);
374
406
  for (const { name, pattern, search } of localRoutes) {
375
407
  routeMap[name] = pattern;
376
408
  if (search && searchSchemasOut) {
377
409
  searchSchemasOut[name] = search;
378
410
  }
379
411
  }
380
- const { resolved: includes, unresolvable } = extractIncludesWithDiagnostics(block);
412
+ const { resolved: includes, unresolvable } = extractIncludesWithDiagnostics(
413
+ block,
414
+ blockSourceFile
415
+ );
381
416
  if (diagnosticsOut) {
382
417
  for (const entry of unresolvable) {
383
418
  diagnosticsOut.push({ ...entry, sourceFile: filePath });
@@ -404,12 +439,15 @@ function buildRouteMapFromBlock(block, fullSource, filePath, visited, searchSche
404
439
  targetFile,
405
440
  imported.exportedName,
406
441
  visited,
407
- diagnosticsOut
442
+ diagnosticsOut,
443
+ void 0,
444
+ memo
408
445
  );
409
446
  } else {
410
447
  const sameFileBlock = extractUrlsBlockForVariable(
411
448
  fullSource,
412
- variableName
449
+ variableName,
450
+ parseBlock(memo, fullSource)
413
451
  );
414
452
  if (!sameFileBlock) {
415
453
  if (diagnosticsOut) {
@@ -427,7 +465,9 @@ function buildRouteMapFromBlock(block, fullSource, filePath, visited, searchSche
427
465
  filePath,
428
466
  variableName,
429
467
  visited,
430
- diagnosticsOut
468
+ diagnosticsOut,
469
+ void 0,
470
+ memo
431
471
  );
432
472
  }
433
473
  if (namePrefix === null) {
@@ -451,18 +491,19 @@ function buildRouteMapFromBlock(block, fullSource, filePath, visited, searchSche
451
491
  }
452
492
  return routeMap;
453
493
  }
454
- function buildCombinedRouteMapWithSearch(filePath, variableName, visited, diagnosticsOut, inlineBlock) {
494
+ function buildCombinedRouteMapWithSearch(filePath, variableName, visited, diagnosticsOut, inlineBlock, memo) {
455
495
  visited = visited ?? /* @__PURE__ */ new Set();
496
+ memo = memo ?? createScanMemo();
456
497
  const realPath = resolve(filePath);
457
498
  const key = variableName ? `${realPath}:${variableName}` : realPath;
458
499
  if (visited.has(key)) {
459
- console.warn(`[rsc-router] Circular include detected, skipping: ${key}`);
500
+ console.warn(`[rango] Circular include detected, skipping: ${key}`);
460
501
  return { routes: {}, searchSchemas: {} };
461
502
  }
462
503
  visited.add(key);
463
504
  let source;
464
505
  try {
465
- source = readFileSync(realPath, "utf-8");
506
+ source = readSourceMemoized(memo, realPath);
466
507
  } catch {
467
508
  return { routes: {}, searchSchemas: {} };
468
509
  }
@@ -470,7 +511,11 @@ function buildCombinedRouteMapWithSearch(filePath, variableName, visited, diagno
470
511
  if (inlineBlock) {
471
512
  block = inlineBlock;
472
513
  } else if (variableName) {
473
- const extracted = extractUrlsBlockForVariable(source, variableName);
514
+ const extracted = extractUrlsBlockForVariable(
515
+ source,
516
+ variableName,
517
+ parseBlock(memo, source)
518
+ );
474
519
  if (!extracted) return { routes: {}, searchSchemas: {} };
475
520
  block = extracted;
476
521
  } else {
@@ -483,7 +528,8 @@ function buildCombinedRouteMapWithSearch(filePath, variableName, visited, diagno
483
528
  realPath,
484
529
  visited,
485
530
  searchSchemas,
486
- diagnosticsOut
531
+ diagnosticsOut,
532
+ memo
487
533
  );
488
534
  visited.delete(key);
489
535
  return { routes, searchSchemas };
@@ -528,8 +574,16 @@ function writePerModuleRouteTypesForFile(filePath) {
528
574
  let routes;
529
575
  if (varNames.length > 0) {
530
576
  routes = [];
577
+ const memo = createScanMemo();
531
578
  for (const varName of varNames) {
532
- const { routes: routeMap, searchSchemas } = buildCombinedRouteMapWithSearch(filePath, varName);
579
+ const { routes: routeMap, searchSchemas } = buildCombinedRouteMapWithSearch(
580
+ filePath,
581
+ varName,
582
+ void 0,
583
+ void 0,
584
+ void 0,
585
+ memo
586
+ );
533
587
  for (const [name, pattern] of Object.entries(routeMap)) {
534
588
  const params = extractParamsFromPattern(pattern);
535
589
  routes.push({
@@ -543,12 +597,12 @@ function writePerModuleRouteTypesForFile(filePath) {
543
597
  } else {
544
598
  routes = extractRoutesFromSource(source);
545
599
  }
546
- const genPath = filePath.replace(/\.(tsx?)$/, ".gen.ts");
600
+ const genPath = filePath.replace(/\.(tsx?|jsx?)$/, ".gen.ts");
547
601
  if (routes.length === 0) {
548
602
  if (varNames.length > 0 && !existsSync2(genPath)) {
549
603
  writeFileSync(genPath, generatePerModuleTypesSource([]));
550
604
  console.log(
551
- `[rsc-router] Generated route types (placeholder) -> ${genPath}`
605
+ `[rango] Generated route types (placeholder) -> ${genPath}`
552
606
  );
553
607
  }
554
608
  return;
@@ -557,11 +611,11 @@ function writePerModuleRouteTypesForFile(filePath) {
557
611
  const existing = existsSync2(genPath) ? readFileSync2(genPath, "utf-8") : null;
558
612
  if (existing !== genSource) {
559
613
  writeFileSync(genPath, genSource);
560
- console.log(`[rsc-router] Generated route types -> ${genPath}`);
614
+ console.log(`[rango] Generated route types -> ${genPath}`);
561
615
  }
562
616
  } catch (err) {
563
617
  console.warn(
564
- `[rsc-router] Failed to generate route types for ${filePath}: ${err.message}`
618
+ `[rango] Failed to generate route types for ${filePath}: ${err.message}`
565
619
  );
566
620
  }
567
621
  }
@@ -576,6 +630,131 @@ var init_per_module_writer = __esm({
576
630
  }
577
631
  });
578
632
 
633
+ // src/build/route-types/source-scan.ts
634
+ function isLineTerminator(ch) {
635
+ const c = ch.charCodeAt(0);
636
+ return c === 10 || c === 13 || c === 8232 || c === 8233;
637
+ }
638
+ function isRegexPositionAt(code, slashPos, prevChar) {
639
+ if (prevChar === void 0) return true;
640
+ if (prevChar === ")" || prevChar === "]" || prevChar === "}") return false;
641
+ if (!/[\w$]/.test(prevChar)) return true;
642
+ let k = slashPos - 1;
643
+ while (k >= 0 && /\s/.test(code[k])) k--;
644
+ const wordEnd = k + 1;
645
+ while (k >= 0 && /[\w$]/.test(code[k])) k--;
646
+ return REGEX_PRECEDING_KEYWORDS.has(code.slice(k + 1, wordEnd));
647
+ }
648
+ function makeCodeClassifier(code) {
649
+ const n = code.length;
650
+ let i = 0;
651
+ let skipStart = -1;
652
+ let skipEnd = -1;
653
+ let lastSig;
654
+ return (q) => {
655
+ if (q >= skipStart && q < skipEnd) return false;
656
+ while (i < n && i <= q) {
657
+ const c = code[i];
658
+ const d = i + 1 < n ? code[i + 1] : "";
659
+ let end = -1;
660
+ let transparent = false;
661
+ if (c === "/" && d === "/") {
662
+ let j = i + 2;
663
+ while (j < n && !isLineTerminator(code[j])) j++;
664
+ end = j;
665
+ transparent = true;
666
+ } else if (c === "/" && d === "*") {
667
+ let j = i + 2;
668
+ while (j < n && !(code[j] === "*" && code[j + 1] === "/")) j++;
669
+ end = Math.min(n, j + 2);
670
+ transparent = true;
671
+ } else if (c === '"' || c === "'" || c === "`") {
672
+ let j = i + 1;
673
+ while (j < n) {
674
+ if (code[j] === "\\") {
675
+ j += 2;
676
+ continue;
677
+ }
678
+ if (code[j] === c) {
679
+ j++;
680
+ break;
681
+ }
682
+ j++;
683
+ }
684
+ end = j;
685
+ } else if (c === "/" && d !== "/" && d !== "*" && isRegexPositionAt(code, i, lastSig)) {
686
+ let j = i + 1;
687
+ let inClass = false;
688
+ let closed = false;
689
+ while (j < n && !isLineTerminator(code[j])) {
690
+ const r = code[j];
691
+ if (r === "\\") {
692
+ j += 2;
693
+ continue;
694
+ }
695
+ if (r === "[") inClass = true;
696
+ else if (r === "]") inClass = false;
697
+ else if (r === "/" && !inClass) {
698
+ j++;
699
+ closed = true;
700
+ break;
701
+ }
702
+ j++;
703
+ }
704
+ if (closed) {
705
+ while (j < n && /[a-z]/.test(code[j])) j++;
706
+ end = j;
707
+ }
708
+ }
709
+ if (end >= 0) {
710
+ if (q < end) {
711
+ skipStart = i;
712
+ skipEnd = end;
713
+ return false;
714
+ }
715
+ i = end;
716
+ if (!transparent) lastSig = "x";
717
+ } else {
718
+ if (!/\s/.test(c)) lastSig = c;
719
+ i++;
720
+ }
721
+ }
722
+ return true;
723
+ };
724
+ }
725
+ function firstCodeMatchIndex(code, pattern) {
726
+ const inCode = makeCodeClassifier(code);
727
+ pattern.lastIndex = 0;
728
+ let m;
729
+ while ((m = pattern.exec(code)) !== null) {
730
+ if (inCode(m.index)) return m.index;
731
+ if (pattern.lastIndex <= m.index) pattern.lastIndex = m.index + 1;
732
+ }
733
+ return -1;
734
+ }
735
+ var REGEX_PRECEDING_KEYWORDS;
736
+ var init_source_scan = __esm({
737
+ "src/build/route-types/source-scan.ts"() {
738
+ "use strict";
739
+ REGEX_PRECEDING_KEYWORDS = /* @__PURE__ */ new Set([
740
+ "return",
741
+ "typeof",
742
+ "instanceof",
743
+ "in",
744
+ "of",
745
+ "new",
746
+ "delete",
747
+ "void",
748
+ "do",
749
+ "else",
750
+ "yield",
751
+ "await",
752
+ "case",
753
+ "throw"
754
+ ]);
755
+ }
756
+ });
757
+
579
758
  // src/build/route-types/router-processing.ts
580
759
  import {
581
760
  readFileSync as readFileSync3,
@@ -606,43 +785,50 @@ function countPublicRouteEntries(source) {
606
785
  function isRoutableSourceFile(name) {
607
786
  return (name.endsWith(".ts") || name.endsWith(".tsx") || name.endsWith(".js") || name.endsWith(".jsx")) && !name.includes(".gen.") && !name.includes(".test.") && !name.includes(".spec.");
608
787
  }
609
- function findRouterFilesRecursive(dir, filter, results) {
788
+ function isExcludedScanDir(name) {
789
+ return name === "node_modules" || name === "dist" || name === "coverage" || name === "__tests__" || name === "__mocks__" || name.startsWith(".");
790
+ }
791
+ function findCallSiteFilesRecursive(dir, pattern, patternG, stopAtMatchDir, filter, results) {
610
792
  let entries;
611
793
  try {
612
794
  entries = readdirSync2(dir, { withFileTypes: true });
613
795
  } catch (err) {
614
796
  console.warn(
615
- `[rsc-router] Failed to scan directory ${dir}: ${err.message}`
797
+ `[rango] Failed to scan directory ${dir}: ${err.message}`
616
798
  );
617
799
  return;
618
800
  }
619
801
  const childDirs = [];
620
- const routerFilesInDir = [];
802
+ const matchesInDir = [];
621
803
  for (const entry of entries) {
622
804
  const fullPath = join2(dir, entry.name);
623
805
  if (entry.isDirectory()) {
624
- if (entry.name === "node_modules" || entry.name === "dist" || entry.name === "coverage" || entry.name === "__tests__" || entry.name === "__mocks__" || entry.name.startsWith("."))
625
- continue;
626
- childDirs.push(fullPath);
806
+ if (!isExcludedScanDir(entry.name)) childDirs.push(fullPath);
627
807
  continue;
628
808
  }
629
809
  if (!isRoutableSourceFile(entry.name)) continue;
630
810
  if (filter && !filter(fullPath)) continue;
631
811
  try {
632
812
  const source = readFileSync3(fullPath, "utf-8");
633
- if (ROUTER_CALL_PATTERN.test(source)) {
634
- routerFilesInDir.push(fullPath);
813
+ if (pattern.test(source) && firstCodeMatchIndex(source, patternG) >= 0) {
814
+ matchesInDir.push(fullPath);
635
815
  }
636
816
  } catch {
637
817
  continue;
638
818
  }
639
819
  }
640
- if (routerFilesInDir.length > 0) {
641
- results.push(...routerFilesInDir);
642
- return;
643
- }
644
- for (const childDir of childDirs) {
645
- findRouterFilesRecursive(childDir, filter, results);
820
+ results.push(...matchesInDir);
821
+ if (!stopAtMatchDir || matchesInDir.length === 0) {
822
+ for (const childDir of childDirs) {
823
+ findCallSiteFilesRecursive(
824
+ childDir,
825
+ pattern,
826
+ patternG,
827
+ stopAtMatchDir,
828
+ filter,
829
+ results
830
+ );
831
+ }
646
832
  }
647
833
  }
648
834
  function findNestedRouterConflict(routerFiles) {
@@ -668,7 +854,7 @@ function findNestedRouterConflict(routerFiles) {
668
854
  }
669
855
  return null;
670
856
  }
671
- function formatNestedRouterConflictError(conflict, prefix = "[rsc-router]") {
857
+ function formatNestedRouterConflictError(conflict, prefix = "[rango]") {
672
858
  return `${prefix} Nested router roots are not supported.
673
859
  Router root: ${conflict.ancestor}
674
860
  Nested router: ${conflict.nested}
@@ -764,19 +950,38 @@ function extractBasenameFromRouter(code) {
764
950
  visit(sourceFile);
765
951
  return result;
766
952
  }
767
- function applyBasenameToRoutes(result, basename2) {
953
+ function applyBasenameToRoutes(result, basename) {
768
954
  const prefixed = {};
769
955
  for (const [name, pattern] of Object.entries(result.routes)) {
770
956
  if (pattern === "/") {
771
- prefixed[name] = basename2;
772
- } else if (basename2.endsWith("/") && pattern.startsWith("/")) {
773
- prefixed[name] = basename2 + pattern.slice(1);
957
+ prefixed[name] = basename;
958
+ } else if (basename.endsWith("/") && pattern.startsWith("/")) {
959
+ prefixed[name] = basename + pattern.slice(1);
774
960
  } else {
775
- prefixed[name] = basename2 + pattern;
961
+ prefixed[name] = basename + pattern;
776
962
  }
777
963
  }
778
964
  return { routes: prefixed, searchSchemas: result.searchSchemas };
779
965
  }
966
+ function genFileTsPath(sourceFile) {
967
+ const base = pathBasename(sourceFile).replace(/\.(tsx?|jsx?)$/, "");
968
+ return join2(dirname2(sourceFile), `${base}.named-routes.gen.ts`);
969
+ }
970
+ function resolveSearchSchemas(publicRouteNames, runtimeSchemas, sourceFile) {
971
+ if (runtimeSchemas && Object.keys(runtimeSchemas).length > 0) {
972
+ return runtimeSchemas;
973
+ }
974
+ const staticParsed = buildCombinedRouteMapForRouterFile(sourceFile);
975
+ if (Object.keys(staticParsed.searchSchemas).length === 0) {
976
+ return runtimeSchemas;
977
+ }
978
+ const filtered = {};
979
+ for (const name of publicRouteNames) {
980
+ const schema = staticParsed.searchSchemas[name];
981
+ if (schema) filtered[name] = schema;
982
+ }
983
+ return Object.keys(filtered).length > 0 ? filtered : runtimeSchemas;
984
+ }
780
985
  function buildCombinedRouteMapForRouterFile(routerFilePath) {
781
986
  let routerSource;
782
987
  try {
@@ -789,7 +994,7 @@ function buildCombinedRouteMapForRouterFile(routerFilePath) {
789
994
  return { routes: {}, searchSchemas: {} };
790
995
  }
791
996
  const rawBasename = extractBasenameFromRouter(routerSource);
792
- const basename2 = rawBasename ? ("/" + rawBasename.replace(/^\/+|\/+$/g, "")).replace(/^\/$/, "") : void 0;
997
+ const basename = rawBasename ? ("/" + rawBasename.replace(/^\/+|\/+$/g, "")).replace(/^\/$/, "") : void 0;
793
998
  let result;
794
999
  if (extraction.kind === "inline") {
795
1000
  result = buildCombinedRouteMapWithSearch(
@@ -814,8 +1019,8 @@ function buildCombinedRouteMapForRouterFile(routerFilePath) {
814
1019
  result = buildCombinedRouteMapWithSearch(routerFilePath, extraction.name);
815
1020
  }
816
1021
  }
817
- if (basename2) {
818
- result = applyBasenameToRoutes(result, basename2);
1022
+ if (basename) {
1023
+ result = applyBasenameToRoutes(result, basename);
819
1024
  }
820
1025
  return result;
821
1026
  }
@@ -888,7 +1093,14 @@ function detectUnresolvableIncludesForUrlsFile(filePath) {
888
1093
  }
889
1094
  function findRouterFiles(root, filter) {
890
1095
  const result = [];
891
- findRouterFilesRecursive(root, filter, result);
1096
+ findCallSiteFilesRecursive(
1097
+ root,
1098
+ ROUTER_CALL_PATTERN,
1099
+ ROUTER_CALL_PATTERN_G,
1100
+ true,
1101
+ filter,
1102
+ result
1103
+ );
892
1104
  return result;
893
1105
  }
894
1106
  function writeCombinedRouteTypes(root, knownRouterFiles, opts) {
@@ -897,7 +1109,7 @@ function writeCombinedRouteTypes(root, knownRouterFiles, opts) {
897
1109
  if (existsSync3(oldCombinedPath)) {
898
1110
  unlinkSync(oldCombinedPath);
899
1111
  console.log(
900
- `[rsc-router] Removed stale combined route types: ${oldCombinedPath}`
1112
+ `[rango] Removed stale combined route types: ${oldCombinedPath}`
901
1113
  );
902
1114
  }
903
1115
  } catch {
@@ -919,18 +1131,12 @@ function writeCombinedRouteTypes(root, knownRouterFiles, opts) {
919
1131
  }
920
1132
  if (!extractUrlsFromRouter(routerSource)) continue;
921
1133
  }
922
- const routerBasename = pathBasename(routerFilePath).replace(
923
- /\.(tsx?|jsx?)$/,
924
- ""
925
- );
926
- const outPath = join2(
927
- dirname2(routerFilePath),
928
- `${routerBasename}.named-routes.gen.ts`
929
- );
1134
+ const outPath = genFileTsPath(routerFilePath);
930
1135
  const existing = existsSync3(outPath) ? readFileSync3(outPath, "utf-8") : null;
931
1136
  if (Object.keys(result.routes).length === 0) {
932
1137
  if (!existing) {
933
1138
  const emptySource = generateRouteTypesSource({});
1139
+ opts?.onWrite?.(outPath, emptySource);
934
1140
  writeFileSync2(outPath, emptySource);
935
1141
  }
936
1142
  continue;
@@ -950,22 +1156,25 @@ function writeCombinedRouteTypes(root, knownRouterFiles, opts) {
950
1156
  continue;
951
1157
  }
952
1158
  }
1159
+ opts?.onWrite?.(outPath, source);
953
1160
  writeFileSync2(outPath, source);
954
1161
  console.log(
955
- `[rsc-router] Generated route types (${Object.keys(result.routes).length} routes) -> ${outPath}`
1162
+ `[rango] Generated route types (${Object.keys(result.routes).length} routes) -> ${outPath}`
956
1163
  );
957
1164
  }
958
1165
  }
959
1166
  }
960
- var ROUTER_CALL_PATTERN;
1167
+ var ROUTER_CALL_PATTERN, ROUTER_CALL_PATTERN_G;
961
1168
  var init_router_processing = __esm({
962
1169
  "src/build/route-types/router-processing.ts"() {
963
1170
  "use strict";
964
1171
  init_codegen();
1172
+ init_source_scan();
965
1173
  init_include_resolution();
966
1174
  init_per_module_writer();
967
1175
  init_route_name();
968
1176
  ROUTER_CALL_PATTERN = /\bcreateRouter\s*[<(]/;
1177
+ ROUTER_CALL_PATTERN_G = /\bcreateRouter\s*[<(]/g;
969
1178
  }
970
1179
  });
971
1180
 
@@ -1003,7 +1212,7 @@ import {
1003
1212
  import { createElement, StrictMode } from "react";
1004
1213
  import { hydrateRoot } from "react-dom/client";
1005
1214
  import { rscStream } from "@rangojs/router/internal/deps/html-stream-client";
1006
- import { initBrowserApp, RSCRouter } from "@rangojs/router/browser";
1215
+ import { initBrowserApp, Rango } from "@rangojs/router/browser";
1007
1216
 
1008
1217
  async function initializeApp() {
1009
1218
  const deps = {
@@ -1014,11 +1223,16 @@ async function initializeApp() {
1014
1223
  createTemporaryReferenceSet,
1015
1224
  };
1016
1225
 
1017
- await initBrowserApp({ rscStream, deps });
1226
+ // initBrowserApp resolves the initial payload and returns the browser app
1227
+ // context, including strictMode (default true) from createRouter. StrictMode
1228
+ // is the default; createRouter({ strictMode: false }) ships the opt-out in the
1229
+ // payload metadata. StrictMode emits no DOM, so toggling never changes markup.
1230
+ const { strictMode } = await initBrowserApp({ rscStream, deps });
1018
1231
 
1232
+ const app = createElement(Rango);
1019
1233
  hydrateRoot(
1020
1234
  document,
1021
- createElement(StrictMode, null, createElement(RSCRouter))
1235
+ strictMode === false ? app : createElement(StrictMode, null, app)
1022
1236
  );
1023
1237
  }
1024
1238
 
@@ -1047,12 +1261,37 @@ export const renderHTML = createSSRHandler({
1047
1261
  }
1048
1262
  });
1049
1263
 
1264
+ // src/vite/utils/directive-prologue.ts
1265
+ import { parseAst } from "vite";
1266
+ function hasUseClientDirective(source) {
1267
+ let program;
1268
+ try {
1269
+ program = parseAst(source, { lang: "tsx" });
1270
+ } catch {
1271
+ return false;
1272
+ }
1273
+ for (const node of program.body ?? []) {
1274
+ if (node?.type === "ExpressionStatement" && node.expression?.type === "Literal" && typeof node.expression.value === "string") {
1275
+ if (node.expression.value === "use client") return true;
1276
+ continue;
1277
+ }
1278
+ break;
1279
+ }
1280
+ return false;
1281
+ }
1282
+ var init_directive_prologue = __esm({
1283
+ "src/vite/utils/directive-prologue.ts"() {
1284
+ "use strict";
1285
+ }
1286
+ });
1287
+
1050
1288
  // src/vite/plugins/version-plugin.ts
1051
1289
  var version_plugin_exports = {};
1052
1290
  __export(version_plugin_exports, {
1053
- createVersionPlugin: () => createVersionPlugin
1291
+ createVersionPlugin: () => createVersionPlugin,
1292
+ isViteDepCachePath: () => isViteDepCachePath
1054
1293
  });
1055
- import { parseAst } from "vite";
1294
+ import { parseAst as parseAst2 } from "vite";
1056
1295
  function isCodeModule(id) {
1057
1296
  return /\.(tsx?|jsx?)($|\?)/.test(id);
1058
1297
  }
@@ -1060,23 +1299,13 @@ function normalizeModuleId(id) {
1060
1299
  return id.split("?", 1)[0];
1061
1300
  }
1062
1301
  function getClientModuleSignature(source) {
1302
+ if (!hasUseClientDirective(source)) return void 0;
1063
1303
  let program;
1064
1304
  try {
1065
- program = parseAst(source, { jsx: true });
1305
+ program = parseAst2(source, { lang: "tsx" });
1066
1306
  } catch {
1067
1307
  return void 0;
1068
1308
  }
1069
- let isUseClient = false;
1070
- for (const node of program.body ?? []) {
1071
- if (node?.type === "ExpressionStatement" && node.expression?.type === "Literal" && typeof node.expression.value === "string") {
1072
- if (node.expression.value === "use client") {
1073
- isUseClient = true;
1074
- }
1075
- continue;
1076
- }
1077
- break;
1078
- }
1079
- if (!isUseClient) return void 0;
1080
1309
  const exports = /* @__PURE__ */ new Set();
1081
1310
  let hasDefault = false;
1082
1311
  let hasExportAll = false;
@@ -1145,11 +1374,12 @@ function createVersionPlugin() {
1145
1374
  let currentVersion = buildVersion;
1146
1375
  let isDev = false;
1147
1376
  let server = null;
1377
+ let resolvedCacheDir;
1148
1378
  const clientModuleSignatures = /* @__PURE__ */ new Map();
1149
1379
  let versionCounter = 0;
1150
1380
  const bumpVersion = (reason) => {
1151
1381
  currentVersion = Date.now().toString(16) + String(++versionCounter);
1152
- console.log(`[rsc-router] ${reason}, version updated: ${currentVersion}`);
1382
+ console.log(`[rango] ${reason}, version updated: ${currentVersion}`);
1153
1383
  const rscEnv = server?.environments?.rsc;
1154
1384
  const versionMod = rscEnv?.moduleGraph?.getModuleById(
1155
1385
  "\0" + VIRTUAL_IDS.version
@@ -1163,6 +1393,7 @@ function createVersionPlugin() {
1163
1393
  enforce: "pre",
1164
1394
  configResolved(config) {
1165
1395
  isDev = config.command === "serve";
1396
+ resolvedCacheDir = config.cacheDir ? String(config.cacheDir).replace(/\\/g, "/") : void 0;
1166
1397
  },
1167
1398
  configureServer(devServer) {
1168
1399
  server = devServer;
@@ -1199,11 +1430,11 @@ function createVersionPlugin() {
1199
1430
  }
1200
1431
  return null;
1201
1432
  },
1202
- // Track RSC module changes and update version
1203
1433
  async hotUpdate(ctx) {
1204
1434
  if (!isDev) return;
1205
1435
  const isRscModule = this.environment?.name === "rsc";
1206
1436
  if (!isRscModule) return;
1437
+ if (isViteDepCachePath(ctx.file, resolvedCacheDir)) return;
1207
1438
  if (ctx.modules.length === 1 && ctx.modules[0].id === "\0" + VIRTUAL_IDS.version) {
1208
1439
  return;
1209
1440
  }
@@ -1233,10 +1464,22 @@ function createVersionPlugin() {
1233
1464
  }
1234
1465
  };
1235
1466
  }
1467
+ function isViteDepCachePath(filePath, cacheDir) {
1468
+ if (!filePath) return false;
1469
+ const normalized = filePath.replace(/\\/g, "/");
1470
+ if (cacheDir) {
1471
+ const normalizedCacheDir = cacheDir.replace(/\\/g, "/").replace(/\/+$/, "");
1472
+ if (normalized === normalizedCacheDir || normalized.startsWith(normalizedCacheDir + "/")) {
1473
+ return true;
1474
+ }
1475
+ }
1476
+ return /\/node_modules\/\.vite[^/]*\//.test(normalized) || normalized.includes("/.vite-isolated/");
1477
+ }
1236
1478
  var init_version_plugin = __esm({
1237
1479
  "src/vite/plugins/version-plugin.ts"() {
1238
1480
  "use strict";
1239
1481
  init_virtual_entries();
1482
+ init_directive_prologue();
1240
1483
  }
1241
1484
  });
1242
1485
 
@@ -1278,7 +1521,7 @@ var runtime_discovery_exports = {};
1278
1521
  __export(runtime_discovery_exports, {
1279
1522
  discoverAndWriteRouteTypes: () => discoverAndWriteRouteTypes
1280
1523
  });
1281
- import { dirname as dirname3, join as join3, basename, resolve as resolve3 } from "node:path";
1524
+ import { resolve as resolve3 } from "node:path";
1282
1525
  import { existsSync as existsSync4, readFileSync as readFileSync4, writeFileSync as writeFileSync3 } from "node:fs";
1283
1526
  async function discoverAndWriteRouteTypes(opts) {
1284
1527
  let createViteServer;
@@ -1388,22 +1631,12 @@ This means createRouter() stack trace parsing matched an internal frame.
1388
1631
  Set an explicit \`id\` on createRouter() or check the call site.`
1389
1632
  );
1390
1633
  }
1391
- if (!routeSearchSchemas || Object.keys(routeSearchSchemas).length === 0) {
1392
- const staticParsed = buildCombinedRouteMapForRouterFile(sourceFile);
1393
- if (Object.keys(staticParsed.searchSchemas).length > 0) {
1394
- const filtered = {};
1395
- for (const name of Object.keys(routeManifest)) {
1396
- const schema = staticParsed.searchSchemas[name];
1397
- if (schema) filtered[name] = schema;
1398
- }
1399
- if (Object.keys(filtered).length > 0) {
1400
- routeSearchSchemas = filtered;
1401
- }
1402
- }
1403
- }
1404
- const routerDir = dirname3(sourceFile);
1405
- const routerBasename = basename(sourceFile).replace(/\.(tsx?|jsx?)$/, "");
1406
- const outPath = join3(routerDir, `${routerBasename}.named-routes.gen.ts`);
1634
+ routeSearchSchemas = resolveSearchSchemas(
1635
+ Object.keys(routeManifest),
1636
+ routeSearchSchemas,
1637
+ sourceFile
1638
+ );
1639
+ const outPath = genFileTsPath(sourceFile);
1407
1640
  const source = generateRouteTypesSource(
1408
1641
  routeManifest,
1409
1642
  routeSearchSchemas && Object.keys(routeSearchSchemas).length > 0 ? routeSearchSchemas : void 0
@@ -1440,7 +1673,7 @@ var init_runtime_discovery = __esm({
1440
1673
 
1441
1674
  // src/bin/rango.ts
1442
1675
  init_generate_route_types();
1443
- import { resolve as resolve4, dirname as dirname4 } from "node:path";
1676
+ import { resolve as resolve4, dirname as dirname3 } from "node:path";
1444
1677
  import { readFileSync as readFileSync5, statSync, existsSync as existsSync5 } from "node:fs";
1445
1678
  var [command, ...rawArgs] = process.argv.slice(2);
1446
1679
  if (command === "generate") {
@@ -1511,12 +1744,12 @@ Examples:
1511
1744
  );
1512
1745
  }
1513
1746
  function findProjectRoot(fromPath) {
1514
- let dir = dirname4(resolve4(fromPath));
1515
- while (dir !== dirname4(dir)) {
1747
+ let dir = dirname3(resolve4(fromPath));
1748
+ while (dir !== dirname3(dir)) {
1516
1749
  if (existsSync5(resolve4(dir, "package.json")) || existsSync5(resolve4(dir, "vite.config.ts")) || existsSync5(resolve4(dir, "vite.config.js"))) {
1517
1750
  return dir;
1518
1751
  }
1519
- dir = dirname4(dir);
1752
+ dir = dirname3(dir);
1520
1753
  }
1521
1754
  return process.cwd();
1522
1755
  }