@rangojs/router 0.0.0-experimental.8 → 0.0.0-experimental.80daa23e

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 (1746) hide show
  1. package/AGENTS.md +13 -0
  2. package/README.md +472 -7
  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 +2343 -0
  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 -26
  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/dist/handles/index.d.ts +6 -0
  356. package/dist/handles/index.d.ts.map +1 -0
  357. package/{src/handles/index.ts → dist/handles/index.js} +1 -1
  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/{src/href-context.ts → dist/href-context.d.ts} +7 -11
  424. package/dist/href-context.d.ts.map +1 -0
  425. package/dist/href-context.js +21 -0
  426. package/dist/href-context.js.map +1 -0
  427. package/dist/index.d.ts +73 -0
  428. package/dist/index.d.ts.map +1 -0
  429. package/dist/index.js +91 -0
  430. package/dist/index.js.map +1 -0
  431. package/dist/index.rsc.d.ts +32 -0
  432. package/dist/index.rsc.d.ts.map +1 -0
  433. package/dist/index.rsc.js +40 -0
  434. package/dist/index.rsc.js.map +1 -0
  435. package/dist/internal-debug.d.ts +2 -0
  436. package/dist/internal-debug.d.ts.map +1 -0
  437. package/dist/internal-debug.js +5 -0
  438. package/dist/internal-debug.js.map +1 -0
  439. package/dist/loader.d.ts +14 -0
  440. package/dist/loader.d.ts.map +1 -0
  441. package/dist/loader.js +20 -0
  442. package/dist/loader.js.map +1 -0
  443. package/dist/loader.rsc.d.ts +19 -0
  444. package/dist/loader.rsc.d.ts.map +1 -0
  445. package/dist/loader.rsc.js +99 -0
  446. package/dist/loader.rsc.js.map +1 -0
  447. package/{src/network-error-thrower.tsx → dist/network-error-thrower.d.ts} +4 -8
  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/__internal.d.ts +127 -0
  749. package/dist/types/bin/rango.d.ts +1 -0
  750. package/dist/types/browser/action-coordinator.d.ts +57 -0
  751. package/dist/types/browser/action-fence.d.ts +33 -0
  752. package/dist/types/browser/app-shell.d.ts +34 -0
  753. package/dist/types/browser/app-version.d.ts +6 -0
  754. package/dist/types/browser/connection-warmup.d.ts +31 -0
  755. package/dist/types/browser/cookie-name.d.ts +66 -0
  756. package/dist/types/browser/dev-discovery.d.ts +11 -0
  757. package/dist/types/browser/event-controller.d.ts +231 -0
  758. package/dist/types/browser/history-state.d.ts +26 -0
  759. package/dist/types/browser/index.d.ts +1 -0
  760. package/dist/types/browser/intercept-utils.d.ts +30 -0
  761. package/dist/types/browser/invalidate-client-cache.d.ts +17 -0
  762. package/dist/types/browser/link-interceptor.d.ts +53 -0
  763. package/dist/types/browser/logging.d.ts +33 -0
  764. package/dist/types/browser/merge-segment-loaders.d.ts +38 -0
  765. package/dist/types/browser/navigation-bridge.d.ts +39 -0
  766. package/dist/types/browser/navigation-client.d.ts +17 -0
  767. package/dist/types/browser/navigation-store-handle.d.ts +25 -0
  768. package/dist/types/browser/navigation-store.d.ts +85 -0
  769. package/dist/types/browser/navigation-transaction.d.ts +75 -0
  770. package/dist/types/browser/network-error-handler.d.ts +35 -0
  771. package/dist/types/browser/notify-listeners.d.ts +2 -0
  772. package/dist/types/browser/partial-update.d.ts +61 -0
  773. package/dist/types/browser/prefetch/cache.d.ts +224 -0
  774. package/dist/types/browser/prefetch/default-strategy.d.ts +31 -0
  775. package/dist/types/browser/prefetch/fetch.d.ts +52 -0
  776. package/dist/types/browser/prefetch/invalidation.d.ts +6 -0
  777. package/dist/types/browser/prefetch/loader.d.ts +12 -0
  778. package/dist/types/browser/prefetch/observer.d.ts +24 -0
  779. package/dist/types/browser/prefetch/policy.d.ts +13 -0
  780. package/dist/types/browser/prefetch/queue.d.ts +48 -0
  781. package/dist/types/browser/prefetch/resource-ready.d.ts +28 -0
  782. package/dist/types/browser/prefetch/runtime.d.ts +2 -0
  783. package/dist/types/browser/rango-state.d.ts +56 -0
  784. package/dist/types/browser/react/Link.d.ts +132 -0
  785. package/dist/types/browser/react/NavigationProvider.d.ts +88 -0
  786. package/dist/types/browser/react/ScrollRestoration.d.ts +78 -0
  787. package/dist/types/browser/react/context.d.ts +57 -0
  788. package/dist/types/browser/react/filter-segment-order.d.ts +35 -0
  789. package/dist/types/browser/react/index.d.ts +1 -0
  790. package/dist/types/browser/react/location-state-shared.d.ts +162 -0
  791. package/dist/types/browser/react/location-state.d.ts +29 -0
  792. package/dist/types/browser/react/mount-context.d.ts +23 -0
  793. package/dist/types/browser/react/nonce-context.d.ts +14 -0
  794. package/dist/types/browser/react/shallow-equal.d.ts +5 -0
  795. package/dist/types/browser/react/use-action.d.ts +61 -0
  796. package/dist/types/browser/react/use-handle.d.ts +21 -0
  797. package/dist/types/browser/react/use-href.d.ts +32 -0
  798. package/dist/types/browser/react/use-link-status.d.ts +36 -0
  799. package/dist/types/browser/react/use-mount.d.ts +24 -0
  800. package/dist/types/browser/react/use-navigation.d.ts +15 -0
  801. package/dist/types/browser/react/use-params.d.ts +21 -0
  802. package/dist/types/browser/react/use-pathname.d.ts +13 -0
  803. package/dist/types/browser/react/use-reverse.d.ts +40 -0
  804. package/dist/types/browser/react/use-router.d.ts +30 -0
  805. package/dist/types/browser/react/use-search-params.d.ts +66 -0
  806. package/dist/types/browser/react/use-segments.d.ts +29 -0
  807. package/dist/types/browser/response-adapter.d.ts +58 -0
  808. package/dist/types/browser/rsc-router.d.ts +146 -0
  809. package/dist/types/browser/scroll-restoration.d.ts +103 -0
  810. package/dist/types/browser/segment-reconciler.d.ts +74 -0
  811. package/dist/types/browser/segment-structure-assert.d.ts +16 -0
  812. package/dist/types/browser/server-action-bridge.d.ts +29 -0
  813. package/dist/types/browser/types.d.ts +546 -0
  814. package/dist/types/browser/validate-redirect-origin.d.ts +28 -0
  815. package/dist/types/build/collect-fallback-refs.d.ts +5 -0
  816. package/dist/types/build/generate-manifest.d.ts +106 -0
  817. package/dist/types/build/generate-route-types.d.ts +8 -0
  818. package/dist/types/build/index.d.ts +21 -0
  819. package/dist/types/build/merge-full-manifests.d.ts +3 -0
  820. package/dist/types/build/prefix-tree-utils.d.ts +56 -0
  821. package/dist/types/build/route-trie.d.ts +20 -0
  822. package/dist/types/build/route-types/ast-helpers.d.ts +3 -0
  823. package/dist/types/build/route-types/ast-route-extraction.d.ts +13 -0
  824. package/dist/types/build/route-types/codegen.d.ts +16 -0
  825. package/dist/types/build/route-types/include-resolution.d.ts +74 -0
  826. package/dist/types/build/route-types/param-extraction.d.ts +13 -0
  827. package/dist/types/build/route-types/per-module-writer.d.ts +20 -0
  828. package/dist/types/build/route-types/router-processing.d.ts +81 -0
  829. package/dist/types/build/route-types/scan-filter.d.ts +17 -0
  830. package/dist/types/build/route-types/source-scan.d.ts +13 -0
  831. package/dist/types/build/runtime-discovery.d.ts +24 -0
  832. package/dist/types/cache/background-task.d.ts +21 -0
  833. package/dist/types/cache/cache-error.d.ts +71 -0
  834. package/dist/types/cache/cache-exec-scope.d.ts +31 -0
  835. package/dist/types/cache/cache-key-utils.d.ts +43 -0
  836. package/dist/types/cache/cache-policy.d.ts +59 -0
  837. package/dist/types/cache/cache-runtime.d.ts +51 -0
  838. package/dist/types/cache/cache-scope.d.ts +215 -0
  839. package/dist/types/cache/cache-tag.d.ts +79 -0
  840. package/dist/types/cache/cf/cf-base64.d.ts +4 -0
  841. package/dist/types/cache/cf/cf-cache-constants.d.ts +112 -0
  842. package/dist/types/cache/cf/cf-cache-store.d.ts +630 -0
  843. package/dist/types/cache/cf/cf-cache-types.d.ts +365 -0
  844. package/dist/types/cache/cf/cf-kv-utils.d.ts +43 -0
  845. package/dist/types/cache/cf/cf-tag-marker-memo.d.ts +15 -0
  846. package/dist/types/cache/cf/cf-zone-purge.d.ts +31 -0
  847. package/dist/types/cache/cf/index.d.ts +4 -0
  848. package/dist/types/cache/document-cache.d.ts +71 -0
  849. package/dist/types/cache/handle-capture.d.ts +23 -0
  850. package/dist/types/cache/handle-snapshot.d.ts +39 -0
  851. package/dist/types/cache/index.d.ts +9 -0
  852. package/dist/types/cache/memory-segment-store.d.ts +163 -0
  853. package/dist/types/cache/profile-registry.d.ts +40 -0
  854. package/dist/types/cache/read-through-swr.d.ts +61 -0
  855. package/dist/types/cache/search-params-filter.d.ts +64 -0
  856. package/dist/types/cache/segment-codec.d.ts +78 -0
  857. package/dist/types/cache/shell-snapshot.d.ts +186 -0
  858. package/dist/types/cache/tag-invalidation.d.ts +74 -0
  859. package/dist/types/cache/taint.d.ts +77 -0
  860. package/dist/types/cache/types.d.ts +522 -0
  861. package/dist/types/cache/vercel/index.d.ts +1 -0
  862. package/dist/types/cache/vercel/vercel-cache-store.d.ts +268 -0
  863. package/dist/types/client-urls/client-root.d.ts +38 -0
  864. package/dist/types/client-urls/client-urls.d.ts +5 -0
  865. package/dist/types/client-urls/navigation.d.ts +38 -0
  866. package/dist/types/client-urls/revalidation-protocol.d.ts +25 -0
  867. package/dist/types/client-urls/server-projection.d.ts +71 -0
  868. package/dist/types/client-urls/types.d.ts +148 -0
  869. package/dist/types/client.d.ts +192 -0
  870. package/dist/types/client.rsc.d.ts +42 -0
  871. package/dist/types/cloudflare/index.d.ts +7 -0
  872. package/dist/types/cloudflare/tracing.d.ts +57 -0
  873. package/dist/types/component-utils.d.ts +46 -0
  874. package/dist/types/components/DefaultDocument.d.ts +13 -0
  875. package/dist/types/context-var.d.ts +84 -0
  876. package/dist/types/debug.d.ts +57 -0
  877. package/dist/types/decode-loader-results.d.ts +42 -0
  878. package/dist/types/default-error-boundary.d.ts +10 -0
  879. package/dist/types/defer.d.ts +89 -0
  880. package/dist/types/deps/browser.d.ts +1 -0
  881. package/dist/types/deps/html-stream-client.d.ts +1 -0
  882. package/dist/types/deps/html-stream-server.d.ts +1 -0
  883. package/dist/types/deps/rsc.d.ts +1 -0
  884. package/dist/types/deps/ssr.d.ts +1 -0
  885. package/dist/types/dev-discovery-protocol.d.ts +5 -0
  886. package/dist/types/encode-kv.d.ts +35 -0
  887. package/dist/types/errors.d.ts +227 -0
  888. package/dist/types/escape-script.d.ts +44 -0
  889. package/dist/types/handle.d.ts +93 -0
  890. package/dist/types/handles/MetaTags.d.ts +17 -0
  891. package/dist/types/handles/Scripts.d.ts +38 -0
  892. package/dist/types/handles/breadcrumbs.d.ts +43 -0
  893. package/dist/types/handles/deferred-resolution.d.ts +53 -0
  894. package/dist/types/handles/is-thenable.d.ts +10 -0
  895. package/dist/types/handles/meta.d.ts +43 -0
  896. package/dist/types/handles/script.d.ts +139 -0
  897. package/dist/types/host/cookie-handler.d.ts +8 -0
  898. package/dist/types/host/errors.d.ts +40 -0
  899. package/dist/types/host/index.d.ts +33 -0
  900. package/dist/types/host/pattern-matcher.d.ts +30 -0
  901. package/dist/types/host/router.d.ts +12 -0
  902. package/dist/types/host/testing.d.ts +41 -0
  903. package/dist/types/host/types.d.ts +148 -0
  904. package/dist/types/host/utils.d.ts +20 -0
  905. package/dist/types/href-client.d.ts +214 -0
  906. package/dist/types/index.d.ts +113 -0
  907. package/dist/types/index.rsc.d.ts +52 -0
  908. package/dist/types/internal-debug.d.ts +1 -0
  909. package/dist/types/loader-redirect.d.ts +27 -0
  910. package/dist/types/loader-store.d.ts +193 -0
  911. package/dist/types/loader.d.ts +18 -0
  912. package/dist/types/loader.rsc.d.ts +18 -0
  913. package/dist/types/missing-id-error.d.ts +1 -0
  914. package/dist/types/outlet-context.d.ts +32 -0
  915. package/dist/types/outlet-provider.d.ts +15 -0
  916. package/dist/types/prerender/build-shell-capture.d.ts +104 -0
  917. package/dist/types/prerender/param-hash.d.ts +6 -0
  918. package/dist/types/prerender/shell-manifest-key.d.ts +18 -0
  919. package/dist/types/prerender/store.d.ts +63 -0
  920. package/dist/types/prerender.d.ts +292 -0
  921. package/dist/types/redirect-origin.d.ts +71 -0
  922. package/dist/types/regex-escape.d.ts +6 -0
  923. package/dist/types/render-error-thrower.d.ts +13 -0
  924. package/dist/types/response-utils.d.ts +35 -0
  925. package/dist/types/reverse.d.ts +206 -0
  926. package/dist/types/root-error-boundary.d.ts +32 -0
  927. package/dist/types/route-content-wrapper.d.ts +84 -0
  928. package/dist/types/route-definition/dsl-helpers.d.ts +130 -0
  929. package/dist/types/route-definition/helper-factories.d.ts +22 -0
  930. package/dist/types/route-definition/helpers-types.d.ts +405 -0
  931. package/dist/types/route-definition/index.d.ts +7 -0
  932. package/dist/types/route-definition/redirect.d.ts +48 -0
  933. package/dist/types/route-definition/resolve-handler-use.d.ts +19 -0
  934. package/dist/types/route-definition/use-item-types.d.ts +1 -0
  935. package/dist/types/route-definition.d.ts +1 -0
  936. package/dist/types/route-map-builder.d.ts +102 -0
  937. package/dist/types/route-name.d.ts +27 -0
  938. package/dist/types/route-types.d.ts +172 -0
  939. package/dist/types/router/basename.d.ts +10 -0
  940. package/dist/types/router/content-negotiation.d.ts +91 -0
  941. package/dist/types/router/debug-manifest.d.ts +7 -0
  942. package/dist/types/router/error-handling.d.ts +110 -0
  943. package/dist/types/router/find-match.d.ts +19 -0
  944. package/dist/types/router/handler-context.d.ts +41 -0
  945. package/dist/types/router/instrument.d.ts +191 -0
  946. package/dist/types/router/intercept-resolution.d.ts +91 -0
  947. package/dist/types/router/lazy-includes.d.ts +26 -0
  948. package/dist/types/router/loader-resolution.d.ts +85 -0
  949. package/dist/types/router/logging.d.ts +41 -0
  950. package/dist/types/router/manifest.d.ts +8 -0
  951. package/dist/types/router/match-api.d.ts +19 -0
  952. package/dist/types/router/match-context.d.ts +184 -0
  953. package/dist/types/router/match-handlers.d.ts +48 -0
  954. package/dist/types/router/match-middleware/background-revalidation.d.ts +113 -0
  955. package/dist/types/router/match-middleware/cache-lookup.d.ts +126 -0
  956. package/dist/types/router/match-middleware/cache-store.d.ts +112 -0
  957. package/dist/types/router/match-middleware/index.d.ts +80 -0
  958. package/dist/types/router/match-middleware/intercept-resolution.d.ts +116 -0
  959. package/dist/types/router/match-middleware/segment-resolution.d.ts +94 -0
  960. package/dist/types/router/match-pipelines.d.ts +103 -0
  961. package/dist/types/router/match-result.d.ts +114 -0
  962. package/dist/types/router/metrics.d.ts +6 -0
  963. package/dist/types/router/middleware-types.d.ts +74 -0
  964. package/dist/types/router/middleware.d.ts +116 -0
  965. package/dist/types/router/navigation-snapshot.d.ts +51 -0
  966. package/dist/types/router/params-util.d.ts +8 -0
  967. package/dist/types/router/parse-pattern.d.ts +38 -0
  968. package/dist/types/router/pattern-matching.d.ts +169 -0
  969. package/dist/types/router/prefetch-cache-ttl.d.ts +27 -0
  970. package/dist/types/router/prefetch-default.d.ts +28 -0
  971. package/dist/types/router/prefetch-limits.d.ts +20 -0
  972. package/dist/types/router/prerender-match.d.ts +53 -0
  973. package/dist/types/router/preview-match.d.ts +22 -0
  974. package/dist/types/router/request-classification.d.ts +104 -0
  975. package/dist/types/router/revalidation.d.ts +64 -0
  976. package/dist/types/router/route-snapshot.d.ts +112 -0
  977. package/dist/types/router/route-trie-builder.d.ts +77 -0
  978. package/dist/types/router/router-context.d.ts +137 -0
  979. package/dist/types/router/router-interfaces.d.ts +461 -0
  980. package/dist/types/router/router-options.d.ts +792 -0
  981. package/dist/types/router/router-registry.d.ts +15 -0
  982. package/dist/types/router/segment-resolution/fresh.d.ts +55 -0
  983. package/dist/types/router/segment-resolution/helpers.d.ts +93 -0
  984. package/dist/types/router/segment-resolution/loader-cache.d.ts +33 -0
  985. package/dist/types/router/segment-resolution/loader-mask.d.ts +44 -0
  986. package/dist/types/router/segment-resolution/loader-snapshot.d.ts +90 -0
  987. package/dist/types/router/segment-resolution/mask-nested.d.ts +53 -0
  988. package/dist/types/router/segment-resolution/revalidation.d.ts +85 -0
  989. package/dist/types/router/segment-resolution/static-store.d.ts +17 -0
  990. package/dist/types/router/segment-resolution/streamed-handler-telemetry.d.ts +16 -0
  991. package/dist/types/router/segment-resolution/view-transition-default.d.ts +27 -0
  992. package/dist/types/router/segment-resolution.d.ts +3 -0
  993. package/dist/types/router/segment-wrappers.d.ts +53 -0
  994. package/dist/types/router/state-cookie-name.d.ts +1 -0
  995. package/dist/types/router/substitute-pattern-params.d.ts +23 -0
  996. package/dist/types/router/telemetry-otel.d.ts +113 -0
  997. package/dist/types/router/telemetry.d.ts +216 -0
  998. package/dist/types/router/timeout.d.ts +107 -0
  999. package/dist/types/router/tracing.d.ts +139 -0
  1000. package/dist/types/router/transition-when.d.ts +13 -0
  1001. package/dist/types/router/trie-matching.d.ts +32 -0
  1002. package/dist/types/router/types.d.ts +98 -0
  1003. package/dist/types/router/url-params.d.ts +26 -0
  1004. package/dist/types/router.d.ts +7 -0
  1005. package/dist/types/rsc/capture-queue.d.ts +49 -0
  1006. package/dist/types/rsc/full-payload.d.ts +22 -0
  1007. package/dist/types/rsc/handler-context.d.ts +32 -0
  1008. package/dist/types/rsc/handler.d.ts +9 -0
  1009. package/dist/types/rsc/helpers.d.ts +127 -0
  1010. package/dist/types/rsc/index.d.ts +17 -0
  1011. package/dist/types/rsc/json-route-result.d.ts +20 -0
  1012. package/dist/types/rsc/loader-fetch.d.ts +14 -0
  1013. package/dist/types/rsc/manifest-init.d.ts +18 -0
  1014. package/dist/types/rsc/nonce.d.ts +38 -0
  1015. package/dist/types/rsc/origin-guard.d.ts +50 -0
  1016. package/dist/types/rsc/progressive-enhancement.d.ts +19 -0
  1017. package/dist/types/rsc/redirect-guard.d.ts +37 -0
  1018. package/dist/types/rsc/render-pipeline.d.ts +148 -0
  1019. package/dist/types/rsc/response-cache-serve.d.ts +46 -0
  1020. package/dist/types/rsc/response-error.d.ts +19 -0
  1021. package/dist/types/rsc/response-route-handler.d.ts +29 -0
  1022. package/dist/types/rsc/routine-plan.d.ts +124 -0
  1023. package/dist/types/rsc/rsc-rendering.d.ts +18 -0
  1024. package/dist/types/rsc/runtime-warnings.d.ts +22 -0
  1025. package/dist/types/rsc/server-action.d.ts +68 -0
  1026. package/dist/types/rsc/shell-build-manifest.d.ts +90 -0
  1027. package/dist/types/rsc/shell-capture-constants.d.ts +44 -0
  1028. package/dist/types/rsc/shell-capture.d.ts +425 -0
  1029. package/dist/types/rsc/shell-serve.d.ts +200 -0
  1030. package/dist/types/rsc/ssr-setup.d.ts +73 -0
  1031. package/dist/types/rsc/stream-idle.d.ts +60 -0
  1032. package/dist/types/rsc/transition-gate.d.ts +23 -0
  1033. package/dist/types/rsc/types.d.ts +353 -0
  1034. package/dist/types/runtime-env.d.ts +1 -0
  1035. package/dist/types/search-params.d.ts +125 -0
  1036. package/dist/types/segment-content-promise.d.ts +13 -0
  1037. package/dist/types/segment-fragments.d.ts +79 -0
  1038. package/dist/types/segment-loader-promise.d.ts +22 -0
  1039. package/dist/types/segment-system.d.ts +86 -0
  1040. package/dist/types/serialize.d.ts +164 -0
  1041. package/dist/types/server/context.d.ts +520 -0
  1042. package/dist/types/server/cookie-parse.d.ts +10 -0
  1043. package/dist/types/server/cookie-store.d.ts +107 -0
  1044. package/dist/types/server/fetchable-loader-store.d.ts +20 -0
  1045. package/dist/types/server/handle-store.d.ts +131 -0
  1046. package/dist/types/server/loader-registry.d.ts +32 -0
  1047. package/dist/types/server/request-context.d.ts +717 -0
  1048. package/dist/types/server/root-layout.d.ts +3 -0
  1049. package/dist/types/server.d.ts +16 -0
  1050. package/dist/types/ssr/index.d.ts +271 -0
  1051. package/dist/types/ssr/inject-rsc-eager.d.ts +3 -0
  1052. package/dist/types/ssr/preinit-client-references.d.ts +71 -0
  1053. package/dist/types/ssr/ssr-root.d.ts +84 -0
  1054. package/dist/types/ssr-suspension-warning.d.ts +19 -0
  1055. package/dist/types/static-handler.d.ts +71 -0
  1056. package/dist/types/testing/cache-status.d.ts +63 -0
  1057. package/dist/types/testing/collect-handle.d.ts +20 -0
  1058. package/dist/types/testing/dispatch.d.ts +127 -0
  1059. package/dist/types/testing/dom.entry.d.ts +15 -0
  1060. package/dist/types/testing/e2e/fixture.d.ts +37 -0
  1061. package/dist/types/testing/e2e/index.d.ts +31 -0
  1062. package/dist/types/testing/e2e/matchers.d.ts +17 -0
  1063. package/dist/types/testing/e2e/page-helpers.d.ts +86 -0
  1064. package/dist/types/testing/e2e/parity.d.ts +111 -0
  1065. package/dist/types/testing/e2e/server.d.ts +35 -0
  1066. package/dist/types/testing/flight-matchers.d.ts +55 -0
  1067. package/dist/types/testing/flight-normalize.d.ts +1 -0
  1068. package/dist/types/testing/flight-tree.d.ts +192 -0
  1069. package/dist/types/testing/flight.d.ts +115 -0
  1070. package/dist/types/testing/flight.entry.d.ts +27 -0
  1071. package/dist/types/testing/generated-routes.d.ts +66 -0
  1072. package/dist/types/testing/index.d.ts +54 -0
  1073. package/dist/types/testing/internal/context.d.ts +225 -0
  1074. package/dist/types/testing/internal/flight-client-globals.d.ts +1 -0
  1075. package/dist/types/testing/internal/seed-vars.d.ts +30 -0
  1076. package/dist/types/testing/render-handler.d.ts +160 -0
  1077. package/dist/types/testing/render-route.d.ts +265 -0
  1078. package/dist/types/testing/run-loader.d.ts +195 -0
  1079. package/dist/types/testing/run-middleware.d.ts +132 -0
  1080. package/dist/types/testing/run-transition-when.d.ts +78 -0
  1081. package/dist/types/testing/shell-status.d.ts +81 -0
  1082. package/dist/types/testing/vitest-stubs/cloudflare-email.d.ts +6 -0
  1083. package/dist/types/testing/vitest-stubs/cloudflare-workers.d.ts +13 -0
  1084. package/dist/types/testing/vitest-stubs/plugin-rsc.d.ts +7 -0
  1085. package/dist/types/testing/vitest-stubs/version.d.ts +1 -0
  1086. package/dist/types/testing/vitest.d.ts +205 -0
  1087. package/dist/types/theme/ThemeProvider.d.ts +13 -0
  1088. package/dist/types/theme/ThemeScript.d.ts +45 -0
  1089. package/dist/types/theme/constants.d.ts +39 -0
  1090. package/dist/types/theme/index.d.ts +29 -0
  1091. package/dist/types/theme/theme-context.d.ts +21 -0
  1092. package/dist/types/theme/theme-script.d.ts +26 -0
  1093. package/dist/types/theme/types.d.ts +162 -0
  1094. package/dist/types/theme/use-theme.d.ts +8 -0
  1095. package/dist/types/types/boundaries.d.ts +115 -0
  1096. package/dist/types/types/cache-types.d.ts +191 -0
  1097. package/dist/types/types/error-types.d.ts +114 -0
  1098. package/dist/types/types/global-namespace.d.ts +90 -0
  1099. package/dist/types/types/handler-context.d.ts +658 -0
  1100. package/dist/types/types/index.d.ts +11 -0
  1101. package/dist/types/types/loader-types.d.ts +240 -0
  1102. package/dist/types/types/request-scope.d.ts +93 -0
  1103. package/dist/types/types/route-config.d.ts +105 -0
  1104. package/dist/types/types/route-entry.d.ts +98 -0
  1105. package/dist/types/types/segments.d.ts +254 -0
  1106. package/dist/types/types.d.ts +1 -0
  1107. package/dist/types/urls/include-helper.d.ts +17 -0
  1108. package/dist/types/urls/include-provider.d.ts +27 -0
  1109. package/dist/types/urls/index.d.ts +6 -0
  1110. package/dist/types/urls/path-helper-types.d.ts +207 -0
  1111. package/dist/types/urls/path-helper.d.ts +12 -0
  1112. package/dist/types/urls/pattern-types.d.ts +166 -0
  1113. package/dist/types/urls/response-types.d.ts +67 -0
  1114. package/dist/types/urls/type-extraction.d.ts +157 -0
  1115. package/dist/types/urls/urls-function.d.ts +24 -0
  1116. package/dist/types/urls.d.ts +1 -0
  1117. package/dist/types/use-loader.d.ts +150 -0
  1118. package/dist/types/vercel/index.d.ts +10 -0
  1119. package/dist/types/vercel/tracing.d.ts +71 -0
  1120. package/dist/types/vite/debug.d.ts +80 -0
  1121. package/dist/types/vite/discovery/bundle-postprocess.d.ts +12 -0
  1122. package/dist/types/vite/discovery/client-urls-projection.d.ts +53 -0
  1123. package/dist/types/vite/discovery/dev-prerender-cache.d.ts +65 -0
  1124. package/dist/types/vite/discovery/discover-routers.d.ts +17 -0
  1125. package/dist/types/vite/discovery/discovery-errors.d.ts +113 -0
  1126. package/dist/types/vite/discovery/gate-state.d.ts +79 -0
  1127. package/dist/types/vite/discovery/prerender-collection.d.ts +24 -0
  1128. package/dist/types/vite/discovery/route-types-writer.d.ts +32 -0
  1129. package/dist/types/vite/discovery/self-gen-tracking.d.ts +22 -0
  1130. package/dist/types/vite/discovery/shell-prerender-phase.d.ts +40 -0
  1131. package/dist/types/vite/discovery/state.d.ts +170 -0
  1132. package/dist/types/vite/discovery/virtual-module-codegen.d.ts +15 -0
  1133. package/dist/types/vite/encryption-key.d.ts +2 -0
  1134. package/dist/types/vite/index.d.ts +11 -0
  1135. package/dist/types/vite/inject-client-debug.d.ts +56 -0
  1136. package/dist/types/vite/plugin-types.d.ts +298 -0
  1137. package/dist/types/vite/plugins/cjs-to-esm.d.ts +6 -0
  1138. package/dist/types/vite/plugins/client-ref-dedup.d.ts +29 -0
  1139. package/dist/types/vite/plugins/client-ref-hashing.d.ts +35 -0
  1140. package/dist/types/vite/plugins/cloudflare-protocol-stub.d.ts +64 -0
  1141. package/dist/types/vite/plugins/expose-action-id.d.ts +18 -0
  1142. package/dist/types/vite/plugins/expose-id-utils.d.ts +37 -0
  1143. package/dist/types/vite/plugins/expose-ids/export-analysis.d.ts +19 -0
  1144. package/dist/types/vite/plugins/expose-ids/handler-transform.d.ts +10 -0
  1145. package/dist/types/vite/plugins/expose-ids/loader-transform.d.ts +8 -0
  1146. package/dist/types/vite/plugins/expose-ids/router-transform.d.ts +13 -0
  1147. package/dist/types/vite/plugins/expose-ids/types.d.ts +29 -0
  1148. package/dist/types/vite/plugins/expose-internal-ids.d.ts +16 -0
  1149. package/dist/types/vite/plugins/performance-tracks.d.ts +25 -0
  1150. package/dist/types/vite/plugins/refresh-cmd.d.ts +20 -0
  1151. package/dist/types/vite/plugins/server-ref-hashing.d.ts +24 -0
  1152. package/dist/types/vite/plugins/server-reference-pattern.d.ts +1 -0
  1153. package/dist/types/vite/plugins/use-cache-transform.d.ts +20 -0
  1154. package/dist/types/vite/plugins/vercel-output.d.ts +85 -0
  1155. package/dist/types/vite/plugins/version-injector.d.ts +21 -0
  1156. package/dist/types/vite/plugins/version-plugin.d.ts +19 -0
  1157. package/dist/types/vite/plugins/virtual-entries.d.ts +36 -0
  1158. package/dist/types/vite/plugins/virtual-stub-plugin.d.ts +7 -0
  1159. package/dist/types/vite/rango.d.ts +29 -0
  1160. package/dist/types/vite/router-discovery.d.ts +23 -0
  1161. package/dist/types/vite/utils/ast-handler-extract.d.ts +64 -0
  1162. package/dist/types/vite/utils/banner.d.ts +2 -0
  1163. package/dist/types/vite/utils/bundle-analysis.d.ts +28 -0
  1164. package/dist/types/vite/utils/client-chunks.d.ts +55 -0
  1165. package/dist/types/vite/utils/directive-prologue.d.ts +16 -0
  1166. package/dist/types/vite/utils/forward-user-plugins.d.ts +37 -0
  1167. package/dist/types/vite/utils/manifest-utils.d.ts +7 -0
  1168. package/dist/types/vite/utils/package-resolution.d.ts +6 -0
  1169. package/dist/types/vite/utils/prerender-utils.d.ts +32 -0
  1170. package/dist/types/vite/utils/shared-utils.d.ts +67 -0
  1171. package/dist/types.d.ts +1479 -0
  1172. package/dist/types.d.ts.map +1 -0
  1173. package/dist/types.js +10 -0
  1174. package/dist/types.js.map +1 -0
  1175. package/dist/urls.d.ts +441 -0
  1176. package/dist/urls.d.ts.map +1 -0
  1177. package/dist/urls.gen.d.ts +8 -0
  1178. package/dist/urls.gen.d.ts.map +1 -0
  1179. package/dist/urls.gen.js +8 -0
  1180. package/dist/urls.gen.js.map +1 -0
  1181. package/dist/urls.js +443 -0
  1182. package/dist/urls.js.map +1 -0
  1183. package/dist/use-loader.d.ts +127 -0
  1184. package/dist/use-loader.d.ts.map +1 -0
  1185. package/dist/use-loader.js +237 -0
  1186. package/dist/use-loader.js.map +1 -0
  1187. package/dist/vite/__tests__/ast-handler-extract.test.d.ts +2 -0
  1188. package/dist/vite/__tests__/ast-handler-extract.test.d.ts.map +1 -0
  1189. package/dist/vite/__tests__/ast-handler-extract.test.js +294 -0
  1190. package/dist/vite/__tests__/ast-handler-extract.test.js.map +1 -0
  1191. package/dist/vite/__tests__/expose-id-utils.test.d.ts +2 -0
  1192. package/dist/vite/__tests__/expose-id-utils.test.d.ts.map +1 -0
  1193. package/dist/vite/__tests__/expose-id-utils.test.js +224 -0
  1194. package/dist/vite/__tests__/expose-id-utils.test.js.map +1 -0
  1195. package/dist/vite/__tests__/expose-internal-ids.test.d.ts +2 -0
  1196. package/dist/vite/__tests__/expose-internal-ids.test.d.ts.map +1 -0
  1197. package/dist/vite/__tests__/expose-internal-ids.test.js +647 -0
  1198. package/dist/vite/__tests__/expose-internal-ids.test.js.map +1 -0
  1199. package/dist/vite/__tests__/expose-router-id.test.d.ts +2 -0
  1200. package/dist/vite/__tests__/expose-router-id.test.d.ts.map +1 -0
  1201. package/dist/vite/__tests__/expose-router-id.test.js +39 -0
  1202. package/dist/vite/__tests__/expose-router-id.test.js.map +1 -0
  1203. package/dist/vite/ast-handler-extract.d.ts +49 -0
  1204. package/dist/vite/ast-handler-extract.d.ts.map +1 -0
  1205. package/dist/vite/ast-handler-extract.js +249 -0
  1206. package/dist/vite/ast-handler-extract.js.map +1 -0
  1207. package/dist/vite/expose-action-id.d.ts +19 -0
  1208. package/dist/vite/expose-action-id.d.ts.map +1 -0
  1209. package/dist/vite/expose-action-id.js +250 -0
  1210. package/dist/vite/expose-action-id.js.map +1 -0
  1211. package/dist/vite/expose-id-utils.d.ts +69 -0
  1212. package/dist/vite/expose-id-utils.d.ts.map +1 -0
  1213. package/dist/vite/expose-id-utils.js +289 -0
  1214. package/dist/vite/expose-id-utils.js.map +1 -0
  1215. package/dist/vite/expose-internal-ids.d.ts +22 -0
  1216. package/dist/vite/expose-internal-ids.d.ts.map +1 -0
  1217. package/dist/vite/expose-internal-ids.js +886 -0
  1218. package/dist/vite/expose-internal-ids.js.map +1 -0
  1219. package/dist/vite/index.d.ts +149 -0
  1220. package/dist/vite/index.d.ts.map +1 -0
  1221. package/dist/vite/index.js +12042 -1346
  1222. package/dist/vite/index.js.bak +5448 -0
  1223. package/dist/vite/index.js.map +1 -0
  1224. package/dist/vite/index.named-routes.gen.ts +103 -0
  1225. package/dist/vite/package-resolution.d.ts +43 -0
  1226. package/dist/vite/package-resolution.d.ts.map +1 -0
  1227. package/{src/vite/package-resolution.ts → dist/vite/package-resolution.js} +53 -66
  1228. package/dist/vite/package-resolution.js.map +1 -0
  1229. package/dist/vite/plugins/cloudflare-protocol-loader-hook.mjs +76 -0
  1230. package/dist/vite/virtual-entries.d.ts +25 -0
  1231. package/dist/vite/virtual-entries.d.ts.map +1 -0
  1232. package/{src/vite/virtual-entries.ts → dist/vite/virtual-entries.js} +12 -16
  1233. package/dist/vite/virtual-entries.js.map +1 -0
  1234. package/package.json +170 -77
  1235. package/skills/api-client/SKILL.md +211 -0
  1236. package/skills/breadcrumbs/SKILL.md +359 -0
  1237. package/skills/bundle-analysis/SKILL.md +159 -0
  1238. package/skills/cache-guide/SKILL.md +492 -0
  1239. package/skills/caching/SKILL.md +452 -26
  1240. package/skills/catalog.json +289 -0
  1241. package/skills/client-urls/SKILL.md +339 -0
  1242. package/skills/cloudflare/SKILL.md +153 -0
  1243. package/skills/cloudflare/agents/openai.yaml +4 -0
  1244. package/skills/cloudflare/references/d1-and-local-dev.md +131 -0
  1245. package/skills/cloudflare/references/streaming-and-deploy.md +107 -0
  1246. package/skills/cloudflare/references/webhooks-and-crypto.md +147 -0
  1247. package/skills/comparison/SKILL.md +50 -0
  1248. package/skills/comparison/agents/openai.yaml +4 -0
  1249. package/skills/comparison/references/framework-comparison.md +858 -0
  1250. package/skills/composability/SKILL.md +292 -0
  1251. package/skills/css/SKILL.md +76 -0
  1252. package/skills/debug-manifest/SKILL.md +16 -18
  1253. package/skills/defer-hydration/SKILL.md +235 -0
  1254. package/skills/deployment-caching/SKILL.md +176 -0
  1255. package/skills/document-cache/SKILL.md +125 -65
  1256. package/skills/fonts/SKILL.md +167 -0
  1257. package/skills/handler-use/SKILL.md +364 -0
  1258. package/skills/hooks/SKILL.md +76 -432
  1259. package/skills/hooks/data.md +282 -0
  1260. package/skills/hooks/handle-and-actions.md +110 -0
  1261. package/skills/hooks/navigation.md +110 -0
  1262. package/skills/hooks/outlets.md +62 -0
  1263. package/skills/hooks/state.md +228 -0
  1264. package/skills/hooks/urls.md +172 -0
  1265. package/skills/host-router/SKILL.md +320 -0
  1266. package/skills/i18n/SKILL.md +276 -0
  1267. package/skills/intercept/SKILL.md +215 -16
  1268. package/skills/layout/SKILL.md +147 -7
  1269. package/skills/links/SKILL.md +360 -33
  1270. package/skills/loader/SKILL.md +762 -51
  1271. package/skills/middleware/SKILL.md +251 -38
  1272. package/skills/migrate-nextjs/SKILL.md +854 -0
  1273. package/skills/migrate-nextjs/backend-host-swap.md +120 -0
  1274. package/skills/migrate-react-router/SKILL.md +189 -0
  1275. package/skills/migrate-react-router/component-migration.md +201 -0
  1276. package/skills/migrate-react-router/data-and-actions.md +236 -0
  1277. package/skills/migrate-react-router/route-mapping.md +284 -0
  1278. package/skills/mime-routes/SKILL.md +165 -0
  1279. package/skills/observability/SKILL.md +231 -0
  1280. package/skills/parallel/SKILL.md +327 -4
  1281. package/skills/ppr/SKILL.md +918 -0
  1282. package/skills/prerender/SKILL.md +751 -0
  1283. package/skills/rango/SKILL.md +387 -17
  1284. package/skills/react-compiler/SKILL.md +168 -0
  1285. package/skills/response-routes/SKILL.md +539 -0
  1286. package/skills/route/SKILL.md +399 -15
  1287. package/skills/router-setup/SKILL.md +270 -34
  1288. package/skills/scripts/SKILL.md +189 -0
  1289. package/skills/server-actions/SKILL.md +776 -0
  1290. package/skills/shell-manifest/SKILL.md +194 -0
  1291. package/skills/streams-and-websockets/SKILL.md +283 -0
  1292. package/skills/tailwind/SKILL.md +153 -0
  1293. package/skills/testing/SKILL.md +131 -0
  1294. package/skills/testing/bindings.md +103 -0
  1295. package/skills/testing/cache-prerender.md +172 -0
  1296. package/skills/testing/client-components.md +131 -0
  1297. package/skills/testing/e2e-parity.md +125 -0
  1298. package/skills/testing/flight.md +91 -0
  1299. package/skills/testing/handles.md +153 -0
  1300. package/skills/testing/loader.md +130 -0
  1301. package/skills/testing/middleware.md +99 -0
  1302. package/skills/testing/render-handler.md +122 -0
  1303. package/skills/testing/response-routes.md +95 -0
  1304. package/skills/testing/reverse-and-types.md +85 -0
  1305. package/skills/testing/server-actions.md +107 -0
  1306. package/skills/testing/server-tree.md +128 -0
  1307. package/skills/testing/setup.md +123 -0
  1308. package/skills/theme/SKILL.md +16 -12
  1309. package/skills/typesafety/SKILL.md +45 -387
  1310. package/skills/typesafety/env-and-bindings.md +254 -0
  1311. package/skills/typesafety/generated-files-and-cli.md +342 -0
  1312. package/skills/typesafety/params-and-search.md +153 -0
  1313. package/skills/typesafety/route-types.md +213 -0
  1314. package/skills/use-cache/SKILL.md +430 -0
  1315. package/skills/vercel/SKILL.md +149 -0
  1316. package/skills/view-transitions/SKILL.md +341 -0
  1317. package/src/__augment-tests__/augment.ts +81 -0
  1318. package/src/__augment-tests__/augmented.check.ts +116 -0
  1319. package/src/__internal.ts +77 -44
  1320. package/src/bin/rango.ts +325 -0
  1321. package/src/browser/action-coordinator.ts +114 -0
  1322. package/src/browser/action-fence.ts +47 -0
  1323. package/src/browser/app-shell.ts +39 -0
  1324. package/src/browser/app-version.ts +14 -0
  1325. package/src/browser/connection-warmup.ts +134 -0
  1326. package/src/browser/cookie-name.ts +140 -0
  1327. package/src/browser/dev-discovery.ts +66 -0
  1328. package/src/browser/event-controller.ts +477 -217
  1329. package/src/browser/history-state.ts +101 -0
  1330. package/src/browser/index.ts +3 -3
  1331. package/src/browser/intercept-utils.ts +52 -0
  1332. package/src/browser/invalidate-client-cache.ts +52 -0
  1333. package/src/browser/link-interceptor.ts +487 -18
  1334. package/src/browser/logging.ts +83 -0
  1335. package/src/browser/merge-segment-loaders.ts +23 -13
  1336. package/src/browser/navigation-bridge.ts +471 -570
  1337. package/src/browser/navigation-client.ts +343 -79
  1338. package/src/browser/navigation-store-handle.ts +38 -0
  1339. package/src/browser/navigation-store.ts +228 -366
  1340. package/src/browser/navigation-transaction.ts +247 -0
  1341. package/src/browser/network-error-handler.ts +88 -0
  1342. package/src/browser/notify-listeners.ts +22 -0
  1343. package/src/browser/partial-update.ts +491 -365
  1344. package/src/browser/prefetch/cache.ts +457 -0
  1345. package/src/browser/prefetch/default-strategy.ts +74 -0
  1346. package/src/browser/prefetch/fetch.ts +548 -0
  1347. package/src/browser/prefetch/invalidation.ts +30 -0
  1348. package/src/browser/prefetch/loader.ts +111 -0
  1349. package/src/browser/prefetch/observer.ts +93 -0
  1350. package/src/browser/prefetch/policy.ts +48 -0
  1351. package/src/browser/prefetch/queue.ts +209 -0
  1352. package/src/browser/prefetch/resource-ready.ts +77 -0
  1353. package/src/browser/prefetch/runtime.ts +6 -0
  1354. package/src/browser/rango-state.ts +215 -0
  1355. package/src/browser/react/Link.tsx +332 -85
  1356. package/src/browser/react/NavigationProvider.tsx +275 -109
  1357. package/src/browser/react/ScrollRestoration.tsx +10 -6
  1358. package/src/browser/react/context.ts +15 -0
  1359. package/src/browser/react/filter-segment-order.ts +70 -0
  1360. package/src/browser/react/index.ts +0 -48
  1361. package/src/browser/react/location-state-shared.ts +272 -60
  1362. package/src/browser/react/location-state.ts +90 -20
  1363. package/src/browser/react/mount-context.ts +6 -1
  1364. package/src/browser/react/nonce-context.ts +23 -0
  1365. package/src/browser/react/shallow-equal.ts +27 -0
  1366. package/src/browser/react/use-action.ts +35 -66
  1367. package/src/browser/react/use-handle.ts +39 -132
  1368. package/src/browser/react/use-href.tsx +9 -2
  1369. package/src/browser/react/use-link-status.ts +39 -13
  1370. package/src/browser/react/use-navigation.ts +53 -69
  1371. package/src/browser/react/use-params.ts +75 -0
  1372. package/src/browser/react/use-pathname.ts +47 -0
  1373. package/src/browser/react/use-reverse.ts +106 -0
  1374. package/src/browser/react/use-router.ts +127 -0
  1375. package/src/browser/react/use-search-params.ts +174 -0
  1376. package/src/browser/react/use-segments.ts +72 -99
  1377. package/src/browser/response-adapter.ts +164 -0
  1378. package/src/browser/rsc-router.tsx +446 -74
  1379. package/src/browser/scroll-restoration.ts +140 -50
  1380. package/src/browser/segment-reconciler.ts +253 -0
  1381. package/src/browser/segment-structure-assert.ts +17 -1
  1382. package/src/browser/server-action-bridge.ts +707 -603
  1383. package/src/browser/types.ts +266 -75
  1384. package/src/browser/validate-redirect-origin.ts +56 -0
  1385. package/src/build/collect-fallback-refs.ts +107 -0
  1386. package/src/build/generate-manifest.ts +324 -84
  1387. package/src/build/generate-route-types.ts +41 -0
  1388. package/src/build/index.ts +22 -1
  1389. package/src/build/merge-full-manifests.ts +161 -0
  1390. package/src/build/prefix-tree-utils.ts +123 -0
  1391. package/src/build/route-trie.ts +54 -0
  1392. package/src/build/route-types/ast-helpers.ts +25 -0
  1393. package/src/build/route-types/ast-route-extraction.ts +105 -0
  1394. package/src/build/route-types/codegen.ts +113 -0
  1395. package/src/build/route-types/include-resolution.ts +867 -0
  1396. package/src/build/route-types/param-extraction.ts +51 -0
  1397. package/src/build/route-types/per-module-writer.ts +149 -0
  1398. package/src/build/route-types/router-processing.ts +726 -0
  1399. package/src/build/route-types/scan-filter.ts +85 -0
  1400. package/src/build/route-types/source-scan.ts +216 -0
  1401. package/src/build/runtime-discovery.ts +234 -0
  1402. package/src/cache/background-task.ts +34 -0
  1403. package/src/cache/cache-error.ts +104 -0
  1404. package/src/cache/cache-exec-scope.ts +47 -0
  1405. package/src/cache/cache-key-utils.ts +102 -0
  1406. package/src/cache/cache-policy.ts +199 -0
  1407. package/src/cache/cache-runtime.ts +787 -0
  1408. package/src/cache/cache-scope.ts +478 -342
  1409. package/src/cache/cache-tag.ts +149 -0
  1410. package/src/cache/cf/cf-base64.ts +33 -0
  1411. package/src/cache/cf/cf-cache-constants.ts +134 -0
  1412. package/src/cache/cf/cf-cache-store.ts +3397 -152
  1413. package/src/cache/cf/cf-cache-types.ts +417 -0
  1414. package/src/cache/cf/cf-kv-utils.ts +84 -0
  1415. package/src/cache/cf/cf-tag-marker-memo.ts +108 -0
  1416. package/src/cache/cf/cf-zone-purge.ts +101 -0
  1417. package/src/cache/cf/index.ts +21 -16
  1418. package/src/cache/document-cache.ts +275 -105
  1419. package/src/cache/handle-capture.ts +81 -0
  1420. package/src/cache/handle-snapshot.ts +132 -0
  1421. package/src/cache/index.ts +33 -35
  1422. package/src/cache/memory-segment-store.ts +457 -30
  1423. package/src/cache/profile-registry.ts +88 -0
  1424. package/src/cache/read-through-swr.ts +184 -0
  1425. package/src/cache/search-params-filter.ts +118 -0
  1426. package/src/cache/segment-codec.ts +311 -0
  1427. package/src/cache/shell-snapshot.ts +516 -0
  1428. package/src/cache/tag-invalidation.ts +230 -0
  1429. package/src/cache/taint.ts +172 -0
  1430. package/src/cache/types.ts +405 -212
  1431. package/src/cache/vercel/index.ts +11 -0
  1432. package/src/cache/vercel/vercel-cache-store.ts +1264 -0
  1433. package/src/client-urls/client-root.tsx +168 -0
  1434. package/src/client-urls/client-urls.ts +779 -0
  1435. package/src/client-urls/navigation.ts +237 -0
  1436. package/src/client-urls/revalidation-protocol.ts +56 -0
  1437. package/src/client-urls/server-projection.ts +670 -0
  1438. package/src/client-urls/types.ts +202 -0
  1439. package/src/client.rsc.tsx +55 -21
  1440. package/src/client.tsx +179 -330
  1441. package/src/cloudflare/index.ts +11 -0
  1442. package/src/cloudflare/tracing.ts +112 -0
  1443. package/src/component-utils.ts +23 -4
  1444. package/src/components/DefaultDocument.tsx +13 -3
  1445. package/src/context-var.ts +168 -0
  1446. package/src/debug.ts +19 -9
  1447. package/src/decode-loader-results.ts +165 -0
  1448. package/src/defer.ts +185 -0
  1449. package/src/deps/ssr.ts +4 -2
  1450. package/src/dev-discovery-protocol.ts +11 -0
  1451. package/src/encode-kv.ts +49 -0
  1452. package/src/errors.ts +149 -3
  1453. package/src/escape-script.ts +52 -0
  1454. package/src/handle.ts +111 -55
  1455. package/src/handles/MetaTags.tsx +83 -59
  1456. package/src/handles/Scripts.tsx +183 -0
  1457. package/src/handles/breadcrumbs.ts +93 -0
  1458. package/src/handles/deferred-resolution.ts +134 -0
  1459. package/src/handles/is-thenable.ts +16 -0
  1460. package/src/handles/meta.ts +44 -53
  1461. package/src/handles/script.ts +244 -0
  1462. package/src/host/cookie-handler.ts +20 -65
  1463. package/src/host/errors.ts +21 -30
  1464. package/src/host/index.ts +13 -9
  1465. package/src/host/pattern-matcher.ts +50 -79
  1466. package/src/host/router.ts +151 -121
  1467. package/src/host/testing.ts +45 -32
  1468. package/src/host/types.ts +52 -11
  1469. package/src/host/utils.ts +2 -2
  1470. package/src/href-client.ts +236 -31
  1471. package/src/index.rsc.ts +252 -20
  1472. package/src/index.ts +343 -30
  1473. package/src/internal-debug.ts +12 -0
  1474. package/src/loader-redirect.tsx +64 -0
  1475. package/src/loader-store.ts +500 -0
  1476. package/src/loader.rsc.ts +39 -163
  1477. package/src/loader.ts +31 -13
  1478. package/src/missing-id-error.ts +68 -0
  1479. package/src/outlet-context.ts +21 -1
  1480. package/src/outlet-provider.tsx +59 -0
  1481. package/src/prerender/build-shell-capture.ts +453 -0
  1482. package/src/prerender/param-hash.ts +37 -0
  1483. package/src/prerender/shell-manifest-key.ts +20 -0
  1484. package/src/prerender/store.ts +195 -0
  1485. package/src/prerender.ts +592 -0
  1486. package/src/redirect-origin.ts +172 -0
  1487. package/src/regex-escape.ts +8 -0
  1488. package/src/render-error-thrower.tsx +20 -0
  1489. package/src/response-utils.ts +62 -0
  1490. package/src/reverse.ts +380 -0
  1491. package/src/root-error-boundary.tsx +42 -48
  1492. package/src/route-content-wrapper.tsx +123 -78
  1493. package/src/route-definition/dsl-helpers.ts +1150 -0
  1494. package/src/route-definition/helper-factories.ts +88 -0
  1495. package/src/route-definition/helpers-types.ts +522 -0
  1496. package/src/route-definition/index.ts +54 -0
  1497. package/src/route-definition/redirect.ts +133 -0
  1498. package/src/route-definition/resolve-handler-use.ts +160 -0
  1499. package/src/route-definition/use-item-types.ts +29 -0
  1500. package/src/route-definition.ts +1 -1428
  1501. package/src/route-map-builder.ts +249 -127
  1502. package/src/route-name.ts +53 -0
  1503. package/src/route-types.ts +87 -45
  1504. package/src/router/basename.ts +14 -0
  1505. package/src/router/content-negotiation.ts +305 -0
  1506. package/src/router/debug-manifest.ts +72 -0
  1507. package/src/router/error-handling.ts +119 -38
  1508. package/src/router/find-match.ts +259 -0
  1509. package/src/router/handler-context.ts +439 -86
  1510. package/src/router/instrument.ts +401 -0
  1511. package/src/router/intercept-resolution.ts +479 -0
  1512. package/src/router/lazy-includes.ts +261 -0
  1513. package/src/router/loader-resolution.ts +714 -142
  1514. package/src/router/logging.ts +245 -0
  1515. package/src/router/manifest.ts +225 -63
  1516. package/src/router/match-api.ts +591 -0
  1517. package/src/router/match-context.ts +5 -25
  1518. package/src/router/match-handlers.ts +537 -0
  1519. package/src/router/match-middleware/background-revalidation.ts +128 -97
  1520. package/src/router/match-middleware/cache-lookup.ts +537 -73
  1521. package/src/router/match-middleware/cache-store.ts +214 -60
  1522. package/src/router/match-middleware/intercept-resolution.ts +56 -38
  1523. package/src/router/match-middleware/segment-resolution.ts +71 -19
  1524. package/src/router/match-pipelines.ts +11 -87
  1525. package/src/router/match-result.ts +150 -53
  1526. package/src/router/metrics.ts +235 -29
  1527. package/src/router/middleware-types.ts +110 -0
  1528. package/src/router/middleware.ts +526 -441
  1529. package/src/router/navigation-snapshot.ts +173 -0
  1530. package/src/router/params-util.ts +23 -0
  1531. package/src/router/parse-pattern.ts +115 -0
  1532. package/src/router/pattern-matching.ts +348 -149
  1533. package/src/router/prefetch-cache-ttl.ts +51 -0
  1534. package/src/router/prefetch-default.ts +59 -0
  1535. package/src/router/prefetch-limits.ts +37 -0
  1536. package/src/router/prerender-match.ts +592 -0
  1537. package/src/router/preview-match.ts +102 -0
  1538. package/src/router/request-classification.ts +291 -0
  1539. package/src/router/revalidation.ts +252 -90
  1540. package/src/router/route-snapshot.ts +256 -0
  1541. package/src/router/route-trie-builder.ts +334 -0
  1542. package/src/router/router-context.ts +45 -48
  1543. package/src/router/router-interfaces.ts +614 -0
  1544. package/src/router/router-options.ts +842 -0
  1545. package/src/router/router-registry.ts +21 -0
  1546. package/src/router/segment-resolution/fresh.ts +879 -0
  1547. package/src/router/segment-resolution/helpers.ts +346 -0
  1548. package/src/router/segment-resolution/loader-cache.ts +368 -0
  1549. package/src/router/segment-resolution/loader-mask.ts +60 -0
  1550. package/src/router/segment-resolution/loader-snapshot.ts +259 -0
  1551. package/src/router/segment-resolution/mask-nested.ts +99 -0
  1552. package/src/router/segment-resolution/revalidation.ts +1376 -0
  1553. package/src/router/segment-resolution/static-store.ts +107 -0
  1554. package/src/router/segment-resolution/streamed-handler-telemetry.ts +52 -0
  1555. package/src/router/segment-resolution/view-transition-default.ts +60 -0
  1556. package/src/router/segment-resolution.ts +25 -0
  1557. package/src/router/segment-wrappers.ts +292 -0
  1558. package/src/router/state-cookie-name.ts +33 -0
  1559. package/src/router/substitute-pattern-params.ts +75 -0
  1560. package/src/router/telemetry-otel.ts +270 -0
  1561. package/src/router/telemetry.ts +386 -0
  1562. package/src/router/timeout.ts +179 -0
  1563. package/src/router/tracing.ts +235 -0
  1564. package/src/router/transition-when.ts +76 -0
  1565. package/src/router/trie-matching.ts +351 -0
  1566. package/src/router/types.ts +60 -39
  1567. package/src/router/url-params.ts +57 -0
  1568. package/src/router.ts +911 -4253
  1569. package/src/rsc/capture-queue.ts +218 -0
  1570. package/src/rsc/full-payload.ts +77 -0
  1571. package/src/rsc/handler-context.ts +47 -0
  1572. package/src/rsc/handler.ts +1226 -834
  1573. package/src/rsc/helpers.ts +351 -19
  1574. package/src/rsc/index.ts +2 -25
  1575. package/src/rsc/json-route-result.ts +38 -0
  1576. package/src/rsc/loader-fetch.ts +305 -0
  1577. package/src/rsc/manifest-init.ts +89 -0
  1578. package/src/rsc/nonce.ts +39 -0
  1579. package/src/rsc/origin-guard.ts +155 -0
  1580. package/src/rsc/progressive-enhancement.ts +686 -0
  1581. package/src/rsc/redirect-guard.ts +102 -0
  1582. package/src/rsc/render-pipeline.ts +611 -0
  1583. package/src/rsc/response-cache-serve.ts +259 -0
  1584. package/src/rsc/response-error.ts +104 -0
  1585. package/src/rsc/response-route-handler.ts +221 -0
  1586. package/src/rsc/routine-plan.ts +359 -0
  1587. package/src/rsc/rsc-rendering.ts +1729 -0
  1588. package/src/rsc/runtime-warnings.ts +55 -0
  1589. package/src/rsc/server-action.ts +639 -0
  1590. package/src/rsc/shell-build-manifest.ts +343 -0
  1591. package/src/rsc/shell-capture-constants.ts +45 -0
  1592. package/src/rsc/shell-capture.ts +2135 -0
  1593. package/src/rsc/shell-serve.ts +350 -0
  1594. package/src/rsc/ssr-setup.ts +236 -0
  1595. package/src/rsc/stream-idle.ts +137 -0
  1596. package/src/rsc/transition-gate.ts +86 -0
  1597. package/src/rsc/types.ts +167 -14
  1598. package/src/runtime-env.ts +18 -0
  1599. package/src/search-params.ts +235 -0
  1600. package/src/segment-content-promise.ts +67 -0
  1601. package/src/segment-fragments.ts +165 -0
  1602. package/src/segment-loader-promise.ts +167 -0
  1603. package/src/segment-system.tsx +544 -136
  1604. package/src/serialize.ts +243 -0
  1605. package/src/server/context.ts +741 -90
  1606. package/src/server/cookie-parse.ts +32 -0
  1607. package/src/server/cookie-store.ts +337 -0
  1608. package/src/server/fetchable-loader-store.ts +37 -0
  1609. package/src/server/handle-store.ts +278 -60
  1610. package/src/server/loader-registry.ts +51 -100
  1611. package/src/server/request-context.ts +1296 -161
  1612. package/src/server.ts +38 -128
  1613. package/src/ssr/index.tsx +716 -140
  1614. package/src/ssr/inject-rsc-eager.ts +167 -0
  1615. package/src/ssr/preinit-client-references.ts +106 -0
  1616. package/src/ssr/ssr-root.tsx +305 -0
  1617. package/src/ssr-suspension-warning.ts +67 -0
  1618. package/src/static-handler.ts +139 -0
  1619. package/src/testing/cache-status.ts +162 -0
  1620. package/src/testing/collect-handle.ts +46 -0
  1621. package/src/testing/dispatch.ts +951 -0
  1622. package/src/testing/dom.entry.ts +22 -0
  1623. package/src/testing/e2e/fixture.ts +188 -0
  1624. package/src/testing/e2e/index.ts +147 -0
  1625. package/src/testing/e2e/matchers.ts +35 -0
  1626. package/src/testing/e2e/page-helpers.ts +319 -0
  1627. package/src/testing/e2e/parity.ts +400 -0
  1628. package/src/testing/e2e/server.ts +195 -0
  1629. package/src/testing/flight-matchers.ts +97 -0
  1630. package/src/testing/flight-normalize.ts +11 -0
  1631. package/src/testing/flight-runtime.d.ts +57 -0
  1632. package/src/testing/flight-tree.ts +682 -0
  1633. package/src/testing/flight.entry.ts +52 -0
  1634. package/src/testing/flight.ts +257 -0
  1635. package/src/testing/generated-routes.ts +199 -0
  1636. package/src/testing/index.ts +121 -0
  1637. package/src/testing/internal/context.ts +380 -0
  1638. package/src/testing/internal/flight-client-globals.ts +30 -0
  1639. package/src/testing/internal/seed-vars.ts +54 -0
  1640. package/src/testing/render-handler.ts +371 -0
  1641. package/src/testing/render-route.tsx +667 -0
  1642. package/src/testing/run-loader.ts +423 -0
  1643. package/src/testing/run-middleware.ts +219 -0
  1644. package/src/testing/run-transition-when.ts +197 -0
  1645. package/src/testing/shell-status.ts +206 -0
  1646. package/src/testing/vitest-stubs/cloudflare-email.ts +9 -0
  1647. package/src/testing/vitest-stubs/cloudflare-workers.ts +21 -0
  1648. package/src/testing/vitest-stubs/plugin-rsc.ts +16 -0
  1649. package/src/testing/vitest-stubs/version.ts +5 -0
  1650. package/src/testing/vitest.ts +305 -0
  1651. package/src/theme/ThemeProvider.tsx +76 -98
  1652. package/src/theme/ThemeScript.tsx +12 -14
  1653. package/src/theme/constants.ts +57 -15
  1654. package/src/theme/index.ts +3 -20
  1655. package/src/theme/theme-context.ts +5 -35
  1656. package/src/theme/theme-script.ts +43 -39
  1657. package/src/theme/use-theme.ts +0 -3
  1658. package/src/types/boundaries.ts +142 -0
  1659. package/src/types/cache-types.ts +207 -0
  1660. package/src/types/error-types.ts +132 -0
  1661. package/src/types/global-namespace.ts +113 -0
  1662. package/src/types/handler-context.ts +850 -0
  1663. package/src/types/index.ts +82 -0
  1664. package/src/types/loader-types.ts +273 -0
  1665. package/src/types/request-scope.ts +112 -0
  1666. package/src/types/route-config.ts +138 -0
  1667. package/src/types/route-entry.ts +117 -0
  1668. package/src/types/segments.ts +291 -0
  1669. package/src/types.ts +1 -1623
  1670. package/src/urls/include-helper.ts +181 -0
  1671. package/src/urls/include-provider.ts +71 -0
  1672. package/src/urls/index.ts +44 -0
  1673. package/src/urls/path-helper-types.ts +435 -0
  1674. package/src/urls/path-helper.ts +284 -0
  1675. package/src/urls/pattern-types.ts +189 -0
  1676. package/src/urls/response-types.ts +109 -0
  1677. package/src/urls/type-extraction.ts +316 -0
  1678. package/src/urls/urls-function.ts +80 -0
  1679. package/src/urls.ts +1 -802
  1680. package/src/use-loader.tsx +487 -138
  1681. package/src/vercel/index.ts +11 -0
  1682. package/src/vercel/tracing.ts +89 -0
  1683. package/src/vite/debug.ts +185 -0
  1684. package/src/vite/discovery/bundle-postprocess.ts +185 -0
  1685. package/src/vite/discovery/client-urls-projection.ts +322 -0
  1686. package/src/vite/discovery/dev-prerender-cache.ts +117 -0
  1687. package/src/vite/discovery/discover-routers.ts +375 -0
  1688. package/src/vite/discovery/discovery-errors.ts +255 -0
  1689. package/src/vite/discovery/gate-state.ts +171 -0
  1690. package/src/vite/discovery/prerender-collection.ts +494 -0
  1691. package/src/vite/discovery/route-types-writer.ts +214 -0
  1692. package/src/vite/discovery/self-gen-tracking.ts +73 -0
  1693. package/src/vite/discovery/shell-prerender-phase.ts +397 -0
  1694. package/src/vite/discovery/state.ts +215 -0
  1695. package/src/vite/discovery/virtual-module-codegen.ts +342 -0
  1696. package/src/vite/encryption-key.ts +29 -0
  1697. package/src/vite/index.ts +31 -1137
  1698. package/src/vite/inject-client-debug.ts +88 -0
  1699. package/src/vite/plugin-types.ts +336 -0
  1700. package/src/vite/plugins/cjs-to-esm.ts +90 -0
  1701. package/src/vite/plugins/client-ref-dedup.ts +382 -0
  1702. package/src/vite/plugins/client-ref-hashing.ts +118 -0
  1703. package/src/vite/plugins/cloudflare-protocol-loader-hook.d.mts +23 -0
  1704. package/src/vite/plugins/cloudflare-protocol-loader-hook.mjs +76 -0
  1705. package/src/vite/plugins/cloudflare-protocol-stub.ts +194 -0
  1706. package/src/vite/{expose-action-id.ts → plugins/expose-action-id.ts} +130 -136
  1707. package/src/vite/plugins/expose-id-utils.ts +332 -0
  1708. package/src/vite/plugins/expose-ids/export-analysis.ts +363 -0
  1709. package/src/vite/plugins/expose-ids/handler-transform.ts +130 -0
  1710. package/src/vite/plugins/expose-ids/loader-transform.ts +64 -0
  1711. package/src/vite/plugins/expose-ids/router-transform.ts +199 -0
  1712. package/src/vite/plugins/expose-ids/types.ts +45 -0
  1713. package/src/vite/plugins/expose-internal-ids.ts +851 -0
  1714. package/src/vite/plugins/performance-tracks.ts +89 -0
  1715. package/src/vite/plugins/refresh-cmd.ts +127 -0
  1716. package/src/vite/plugins/server-ref-hashing.ts +74 -0
  1717. package/src/vite/plugins/server-reference-pattern.ts +10 -0
  1718. package/src/vite/plugins/use-cache-transform.ts +313 -0
  1719. package/src/vite/plugins/vercel-output.ts +384 -0
  1720. package/src/vite/plugins/version-injector.ts +93 -0
  1721. package/src/vite/plugins/version-plugin.ts +271 -0
  1722. package/src/vite/plugins/virtual-entries.ts +286 -0
  1723. package/src/vite/plugins/virtual-stub-plugin.ts +29 -0
  1724. package/src/vite/rango.ts +609 -0
  1725. package/src/vite/router-discovery.ts +2400 -0
  1726. package/src/vite/utils/ast-handler-extract.ts +508 -0
  1727. package/src/vite/utils/banner.ts +36 -0
  1728. package/src/vite/utils/bundle-analysis.ts +132 -0
  1729. package/src/vite/utils/client-chunks.ts +184 -0
  1730. package/src/vite/utils/directive-prologue.ts +40 -0
  1731. package/src/vite/utils/forward-user-plugins.ts +171 -0
  1732. package/src/vite/utils/manifest-utils.ts +12 -0
  1733. package/src/vite/utils/package-resolution.ts +90 -0
  1734. package/src/vite/utils/prerender-utils.ts +268 -0
  1735. package/src/vite/utils/shared-utils.ts +283 -0
  1736. package/CLAUDE.md +0 -43
  1737. package/src/browser/lru-cache.ts +0 -69
  1738. package/src/browser/request-controller.ts +0 -164
  1739. package/src/browser/shallow.ts +0 -35
  1740. package/src/cache/memory-store.ts +0 -253
  1741. package/src/href.ts +0 -255
  1742. package/src/server/route-manifest-cache.ts +0 -173
  1743. package/src/vite/expose-handle-id.ts +0 -209
  1744. package/src/vite/expose-loader-id.ts +0 -426
  1745. package/src/vite/expose-location-state-id.ts +0 -177
  1746. /package/src/vite/{version.d.ts → plugins/version.d.ts} +0 -0
@@ -0,0 +1,2343 @@
1
+ #!/usr/bin/env node
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __esm = (fn, res, err) => function __init() {
5
+ if (err) throw err[0];
6
+ try {
7
+ return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
8
+ } catch (e) {
9
+ throw err = [e], e;
10
+ }
11
+ };
12
+ var __export = (target, all) => {
13
+ for (var name in all)
14
+ __defProp(target, name, { get: all[name], enumerable: true });
15
+ };
16
+
17
+ // src/build/route-types/param-extraction.ts
18
+ function extractParamsFromPattern(pattern) {
19
+ const params = {};
20
+ const regex = /:([a-zA-Z_$][\w$]*)(?:\([^)]+\))?(\?)?/g;
21
+ let match;
22
+ while ((match = regex.exec(pattern)) !== null) {
23
+ params[match[1]] = match[2] ? "string?" : "string";
24
+ }
25
+ return Object.keys(params).length > 0 ? params : void 0;
26
+ }
27
+ function formatRouteEntry(key, pattern, _params, search) {
28
+ const hasSearch = search && Object.keys(search).length > 0;
29
+ if (!hasSearch) {
30
+ return ` ${key}: ${JSON.stringify(pattern)},`;
31
+ }
32
+ const searchBody = Object.entries(search).map(([k, v]) => `${k}: ${JSON.stringify(v)}`).join(", ");
33
+ return ` ${key}: { path: ${JSON.stringify(pattern)}, search: { ${searchBody} } },`;
34
+ }
35
+ var init_param_extraction = __esm({
36
+ "src/build/route-types/param-extraction.ts"() {
37
+ "use strict";
38
+ }
39
+ });
40
+
41
+ // src/build/route-types/ast-helpers.ts
42
+ import ts from "typescript";
43
+ function getStringValue(node) {
44
+ if (ts.isStringLiteral(node)) return node.text;
45
+ if (ts.isNoSubstitutionTemplateLiteral(node)) return node.text;
46
+ return null;
47
+ }
48
+ function extractObjectStringProperties(node) {
49
+ const result = {};
50
+ for (const prop of node.properties) {
51
+ if (!ts.isPropertyAssignment(prop)) continue;
52
+ const key = ts.isIdentifier(prop.name) ? prop.name.text : ts.isStringLiteral(prop.name) ? prop.name.text : null;
53
+ if (!key) continue;
54
+ const val = getStringValue(prop.initializer);
55
+ if (val !== null) result[key] = val;
56
+ }
57
+ return result;
58
+ }
59
+ var init_ast_helpers = __esm({
60
+ "src/build/route-types/ast-helpers.ts"() {
61
+ "use strict";
62
+ }
63
+ });
64
+
65
+ // src/build/route-types/ast-route-extraction.ts
66
+ import ts2 from "typescript";
67
+ function extractRoutesFromSource(code, sourceFileArg) {
68
+ const sourceFile = sourceFileArg ?? ts2.createSourceFile(
69
+ "input.tsx",
70
+ code,
71
+ ts2.ScriptTarget.Latest,
72
+ true,
73
+ ts2.ScriptKind.TSX
74
+ );
75
+ const routes = [];
76
+ function visit(node) {
77
+ if (ts2.isCallExpression(node)) {
78
+ const callee = node.expression;
79
+ const isPath = ts2.isIdentifier(callee) && callee.text === "path" || ts2.isPropertyAccessExpression(callee) && ts2.isIdentifier(callee.expression) && callee.expression.text === "path";
80
+ if (isPath && node.arguments.length >= 1) {
81
+ const route = extractRouteFromCallExpression(node);
82
+ if (route) routes.push(route);
83
+ }
84
+ }
85
+ ts2.forEachChild(node, visit);
86
+ }
87
+ visit(sourceFile);
88
+ return routes;
89
+ }
90
+ function extractRouteFromCallExpression(node) {
91
+ const patternNode = node.arguments[0];
92
+ const pattern = getStringValue(patternNode);
93
+ if (pattern === null) return null;
94
+ let name = null;
95
+ let search;
96
+ for (let i = 1; i < node.arguments.length; i++) {
97
+ const arg = node.arguments[i];
98
+ if (ts2.isObjectLiteralExpression(arg)) {
99
+ for (const prop of arg.properties) {
100
+ if (!ts2.isPropertyAssignment(prop)) continue;
101
+ const propName = ts2.isIdentifier(prop.name) ? prop.name.text : null;
102
+ if (propName === "name") {
103
+ name = getStringValue(prop.initializer);
104
+ } else if (propName === "search" && ts2.isObjectLiteralExpression(prop.initializer)) {
105
+ search = extractObjectStringProperties(prop.initializer);
106
+ }
107
+ }
108
+ }
109
+ }
110
+ if (!name) return null;
111
+ const params = extractParamsFromPattern(pattern);
112
+ return {
113
+ name,
114
+ pattern,
115
+ ...params ? { params } : {},
116
+ ...search && Object.keys(search).length > 0 ? { search } : {}
117
+ };
118
+ }
119
+ var init_ast_route_extraction = __esm({
120
+ "src/build/route-types/ast-route-extraction.ts"() {
121
+ "use strict";
122
+ init_ast_helpers();
123
+ init_param_extraction();
124
+ }
125
+ });
126
+
127
+ // src/route-name.ts
128
+ function isAutoGeneratedRouteName(name) {
129
+ return name.split(".").some((segment) => {
130
+ return segment.startsWith(AUTO_GENERATED_ROUTE_PREFIX) || segment.startsWith(INTERNAL_INCLUDE_SCOPE_PREFIX);
131
+ });
132
+ }
133
+ var AUTO_GENERATED_ROUTE_PREFIX, INTERNAL_INCLUDE_SCOPE_PREFIX;
134
+ var init_route_name = __esm({
135
+ "src/route-name.ts"() {
136
+ "use strict";
137
+ AUTO_GENERATED_ROUTE_PREFIX = "$path_";
138
+ INTERNAL_INCLUDE_SCOPE_PREFIX = "$prefix_";
139
+ }
140
+ });
141
+
142
+ // src/build/route-types/codegen.ts
143
+ function generatePerModuleTypesSource(routes) {
144
+ const valid = routes.filter(({ name }) => {
145
+ if (!name || /["'\\`\n\r]/.test(name)) {
146
+ console.warn(
147
+ `[rango] Skipping route with invalid name: ${JSON.stringify(name)}`
148
+ );
149
+ return false;
150
+ }
151
+ return true;
152
+ });
153
+ const deduped = /* @__PURE__ */ new Map();
154
+ for (const { name, pattern, params, search } of valid) {
155
+ if (deduped.has(name)) {
156
+ console.warn(
157
+ `[rango] Duplicate route name "${name}" \u2014 keeping first definition`
158
+ );
159
+ continue;
160
+ }
161
+ deduped.set(name, { pattern, params, search });
162
+ }
163
+ const sorted = [...deduped.entries()].sort(([a], [b]) => a.localeCompare(b));
164
+ const body = sorted.map(([name, { pattern, params, search }]) => {
165
+ const key = /^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(name) ? name : `"${name}"`;
166
+ return formatRouteEntry(key, pattern, params, search);
167
+ }).join("\n");
168
+ return `// Auto-generated by @rangojs/router - do not edit
169
+ export const routes = {
170
+ ${body}
171
+ } as const;
172
+ export type routes = typeof routes;
173
+ `;
174
+ }
175
+ function generateRouteTypesSource(routeManifest, searchSchemas) {
176
+ const entries = Object.entries(routeManifest).filter(([name]) => !isAutoGeneratedRouteName(name)).sort(([a], [b]) => a.localeCompare(b));
177
+ const filteredSearchSchemas = searchSchemas ? Object.fromEntries(
178
+ Object.entries(searchSchemas).filter(
179
+ ([name]) => !isAutoGeneratedRouteName(name)
180
+ )
181
+ ) : void 0;
182
+ const objectBody = entries.map(([name, pattern]) => {
183
+ const key = /^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(name) ? name : `"${name}"`;
184
+ const params = extractParamsFromPattern(pattern);
185
+ const search = filteredSearchSchemas?.[name];
186
+ return formatRouteEntry(key, pattern, params, search);
187
+ }).join("\n");
188
+ return `// Auto-generated by @rangojs/router - do not edit
189
+ export const NamedRoutes = {
190
+ ${objectBody}
191
+ } as const;
192
+
193
+ // Aliased so the augmentation below does not pay a homomorphic mapped-type
194
+ // instantiation per route; \`as const\` already makes the members readonly.
195
+ type NamedRoutesShape = typeof NamedRoutes;
196
+
197
+ declare global {
198
+ namespace Rango {
199
+ interface GeneratedRouteMap extends NamedRoutesShape {}
200
+ }
201
+ }
202
+ `;
203
+ }
204
+ var init_codegen = __esm({
205
+ "src/build/route-types/codegen.ts"() {
206
+ "use strict";
207
+ init_param_extraction();
208
+ init_route_name();
209
+ }
210
+ });
211
+
212
+ // src/build/route-types/scan-filter.ts
213
+ import { join, relative } from "node:path";
214
+ import { readdirSync } from "node:fs";
215
+ import picomatch from "picomatch";
216
+ function findTsFiles(dir, filter) {
217
+ const results = [];
218
+ let entries;
219
+ try {
220
+ entries = readdirSync(dir, { withFileTypes: true });
221
+ } catch (err) {
222
+ console.warn(
223
+ `[rango] Failed to scan directory ${dir}: ${err.message}`
224
+ );
225
+ return results;
226
+ }
227
+ for (const entry of entries) {
228
+ const fullPath = join(dir, entry.name);
229
+ if (entry.isDirectory()) {
230
+ if (entry.name === "node_modules" || entry.name.startsWith(".") || entry.name === "dist" || entry.name === "build" || entry.name === "coverage")
231
+ continue;
232
+ results.push(...findTsFiles(fullPath, filter));
233
+ } else if ((entry.name.endsWith(".ts") || entry.name.endsWith(".tsx") || entry.name.endsWith(".js") || entry.name.endsWith(".jsx")) && !entry.name.includes(".gen.")) {
234
+ if (filter && !filter(fullPath)) continue;
235
+ results.push(fullPath);
236
+ }
237
+ }
238
+ return results;
239
+ }
240
+ var init_scan_filter = __esm({
241
+ "src/build/route-types/scan-filter.ts"() {
242
+ "use strict";
243
+ }
244
+ });
245
+
246
+ // src/build/route-types/include-resolution.ts
247
+ import { readFileSync, existsSync } from "node:fs";
248
+ import { dirname, resolve } from "node:path";
249
+ import ts3 from "typescript";
250
+ function createScanMemo() {
251
+ return { files: /* @__PURE__ */ new Map(), blockSourceFiles: /* @__PURE__ */ new Map() };
252
+ }
253
+ function parseBlock(memo, block) {
254
+ if (memo) {
255
+ const cached = memo.blockSourceFiles.get(block);
256
+ if (cached) return cached;
257
+ }
258
+ const sf = ts3.createSourceFile(
259
+ "input.tsx",
260
+ block,
261
+ ts3.ScriptTarget.Latest,
262
+ true,
263
+ ts3.ScriptKind.TSX
264
+ );
265
+ if (memo) memo.blockSourceFiles.set(block, sf);
266
+ return sf;
267
+ }
268
+ function readSourceMemoized(memo, realPath) {
269
+ if (memo) {
270
+ const cached = memo.files.get(realPath);
271
+ if (cached !== void 0) return cached;
272
+ }
273
+ const source = readFileSync(realPath, "utf-8");
274
+ if (memo) memo.files.set(realPath, source);
275
+ return source;
276
+ }
277
+ function isUrlsDefinitionCall(node) {
278
+ const callee = node.expression;
279
+ return ts3.isIdentifier(callee) && (callee.text === "urls" || callee.text === "clientUrls");
280
+ }
281
+ function extractNamePrefixFromInclude(node) {
282
+ if (node.arguments.length >= 3) {
283
+ const thirdArg = node.arguments[2];
284
+ if (ts3.isObjectLiteralExpression(thirdArg)) {
285
+ for (const prop of thirdArg.properties) {
286
+ if (!ts3.isPropertyAssignment(prop)) continue;
287
+ const propName = ts3.isIdentifier(prop.name) ? prop.name.text : null;
288
+ if (propName === "name") {
289
+ return getStringValue(prop.initializer);
290
+ }
291
+ }
292
+ }
293
+ }
294
+ return null;
295
+ }
296
+ function thenSelectsNonDefaultMember(expr) {
297
+ const findThenCall = (e) => {
298
+ if (ts3.isCallExpression(e) && ts3.isPropertyAccessExpression(e.expression) && e.expression.name.text === "then") {
299
+ return e;
300
+ }
301
+ if (ts3.isCallExpression(e) && ts3.isPropertyAccessExpression(e.expression)) {
302
+ return findThenCall(e.expression.expression);
303
+ }
304
+ if (ts3.isPropertyAccessExpression(e)) return findThenCall(e.expression);
305
+ if (ts3.isParenthesizedExpression(e)) return findThenCall(e.expression);
306
+ if (ts3.isAwaitExpression(e)) return findThenCall(e.expression);
307
+ return null;
308
+ };
309
+ const thenCall = findThenCall(expr);
310
+ if (!thenCall || thenCall.arguments.length === 0) return false;
311
+ const cb = thenCall.arguments[0];
312
+ if (!ts3.isArrowFunction(cb) && !ts3.isFunctionExpression(cb)) return false;
313
+ let ret;
314
+ if (ts3.isBlock(cb.body)) {
315
+ for (const stmt of cb.body.statements) {
316
+ if (ts3.isReturnStatement(stmt) && stmt.expression) {
317
+ ret = stmt.expression;
318
+ break;
319
+ }
320
+ }
321
+ } else {
322
+ ret = cb.body;
323
+ }
324
+ if (!ret) return false;
325
+ if (ts3.isPropertyAccessExpression(ret)) {
326
+ return ret.name.text !== "default";
327
+ }
328
+ return false;
329
+ }
330
+ function extractDynamicImportSpecifier(node) {
331
+ let body;
332
+ if (ts3.isArrowFunction(node) || ts3.isFunctionExpression(node)) {
333
+ body = node.body;
334
+ }
335
+ if (!body) return null;
336
+ let expr;
337
+ if (ts3.isBlock(body)) {
338
+ for (const stmt of body.statements) {
339
+ if (ts3.isReturnStatement(stmt) && stmt.expression) {
340
+ expr = stmt.expression;
341
+ break;
342
+ }
343
+ }
344
+ } else {
345
+ expr = body;
346
+ }
347
+ if (!expr) return null;
348
+ const findImportCall = (e) => {
349
+ if (ts3.isCallExpression(e) && e.expression.kind === ts3.SyntaxKind.ImportKeyword) {
350
+ return e;
351
+ }
352
+ if (ts3.isCallExpression(e) && ts3.isPropertyAccessExpression(e.expression)) {
353
+ return findImportCall(e.expression.expression);
354
+ }
355
+ if (ts3.isPropertyAccessExpression(e)) return findImportCall(e.expression);
356
+ if (ts3.isParenthesizedExpression(e)) return findImportCall(e.expression);
357
+ if (ts3.isAwaitExpression(e)) return findImportCall(e.expression);
358
+ return null;
359
+ };
360
+ const importCall = findImportCall(expr);
361
+ if (!importCall || importCall.arguments.length === 0) return null;
362
+ if (thenSelectsNonDefaultMember(expr)) return null;
363
+ return getStringValue(importCall.arguments[0]);
364
+ }
365
+ function resolveDefaultExportTarget(code, sourceFile) {
366
+ let result = null;
367
+ function visit(node) {
368
+ if (result) return;
369
+ if (ts3.isExportAssignment(node) && !node.isExportEquals) {
370
+ const expr = node.expression;
371
+ if (ts3.isIdentifier(expr)) {
372
+ result = { variableName: expr.text };
373
+ } else if (ts3.isCallExpression(expr) && isUrlsDefinitionCall(expr)) {
374
+ result = { inlineBlock: expr.getText(sourceFile) };
375
+ }
376
+ return;
377
+ }
378
+ ts3.forEachChild(node, visit);
379
+ }
380
+ visit(sourceFile);
381
+ return result;
382
+ }
383
+ function extractIncludesWithDiagnostics(code, sourceFileArg) {
384
+ const sourceFile = sourceFileArg ?? ts3.createSourceFile(
385
+ "input.tsx",
386
+ code,
387
+ ts3.ScriptTarget.Latest,
388
+ true,
389
+ ts3.ScriptKind.TSX
390
+ );
391
+ const resolved = [];
392
+ const unresolvable = [];
393
+ function visit(node) {
394
+ if (ts3.isCallExpression(node)) {
395
+ const callee = node.expression;
396
+ if (ts3.isIdentifier(callee) && callee.text === "include") {
397
+ if (node.arguments.length < 2) {
398
+ ts3.forEachChild(node, visit);
399
+ return;
400
+ }
401
+ const pathPrefix = getStringValue(node.arguments[0]);
402
+ if (pathPrefix === null) {
403
+ ts3.forEachChild(node, visit);
404
+ return;
405
+ }
406
+ const secondArg = node.arguments[1];
407
+ const namePrefix = extractNamePrefixFromInclude(node);
408
+ const dynamicImportSpec = extractDynamicImportSpecifier(secondArg);
409
+ if (ts3.isIdentifier(secondArg)) {
410
+ resolved.push({
411
+ pathPrefix,
412
+ variableName: secondArg.text,
413
+ namePrefix
414
+ });
415
+ } else if (dynamicImportSpec !== null) {
416
+ resolved.push({
417
+ pathPrefix,
418
+ moduleSpecifier: dynamicImportSpec,
419
+ namePrefix
420
+ });
421
+ } else if (ts3.isCallExpression(secondArg)) {
422
+ const callText = secondArg.expression.getText(sourceFile);
423
+ unresolvable.push({
424
+ pathPrefix,
425
+ namePrefix,
426
+ reason: "factory-call",
427
+ detail: `${callText}()`
428
+ });
429
+ } else {
430
+ unresolvable.push({
431
+ pathPrefix,
432
+ namePrefix,
433
+ reason: "dynamic-expression",
434
+ detail: secondArg.getText(sourceFile)
435
+ });
436
+ }
437
+ }
438
+ }
439
+ ts3.forEachChild(node, visit);
440
+ }
441
+ visit(sourceFile);
442
+ return { resolved, unresolvable };
443
+ }
444
+ function resolveImportedVariable(code, localName) {
445
+ const defaultImportRegex = /import\s+([\w$]+)\s*(?:,\s*\{[^}]*\})?\s+from\s*["']([^"']+)["']/g;
446
+ let defaultMatch;
447
+ while ((defaultMatch = defaultImportRegex.exec(code)) !== null) {
448
+ if (defaultMatch[1] === localName) {
449
+ return { specifier: defaultMatch[2], exportedName: "default" };
450
+ }
451
+ }
452
+ const importRegex = /import\s*(?:[\w$]+\s*,\s*)?\{([^}]+)\}\s*from\s*["']([^"']+)["']/g;
453
+ let match;
454
+ while ((match = importRegex.exec(code)) !== null) {
455
+ const imports = match[1];
456
+ const specifier = match[2];
457
+ const parts = imports.split(",").map((s) => s.trim()).filter(Boolean);
458
+ for (const part of parts) {
459
+ const asMatch = part.match(/^(\w+)\s+as\s+(\w+)$/);
460
+ if (asMatch && asMatch[2] === localName)
461
+ return { specifier, exportedName: asMatch[1] };
462
+ if (part === localName) return { specifier, exportedName: localName };
463
+ }
464
+ }
465
+ return null;
466
+ }
467
+ function resolveImportPath(importSpec, fromFile) {
468
+ if (!importSpec.startsWith(".")) return null;
469
+ const dir = dirname(fromFile);
470
+ let base = importSpec;
471
+ if (base.endsWith(".js")) base = base.slice(0, -3);
472
+ else if (base.endsWith(".mjs")) base = base.slice(0, -4);
473
+ else if (base.endsWith(".jsx")) base = base.slice(0, -4);
474
+ const candidates = [
475
+ resolve(dir, base + ".ts"),
476
+ resolve(dir, base + ".tsx"),
477
+ resolve(dir, base + ".js"),
478
+ resolve(dir, base + ".jsx"),
479
+ resolve(dir, base + "/index.ts"),
480
+ resolve(dir, base + "/index.tsx"),
481
+ resolve(dir, base + "/index.js"),
482
+ resolve(dir, base + "/index.jsx")
483
+ ];
484
+ for (const candidate of candidates) {
485
+ if (existsSync(candidate)) return candidate;
486
+ }
487
+ return null;
488
+ }
489
+ function extractUrlsBlockForVariable(code, varName, sourceFileArg) {
490
+ const sourceFile = sourceFileArg ?? ts3.createSourceFile(
491
+ "input.tsx",
492
+ code,
493
+ ts3.ScriptTarget.Latest,
494
+ true,
495
+ ts3.ScriptKind.TSX
496
+ );
497
+ let result = null;
498
+ function visit(node) {
499
+ if (result) return;
500
+ if (ts3.isVariableDeclaration(node) && ts3.isIdentifier(node.name) && node.name.text === varName && node.initializer && ts3.isCallExpression(node.initializer)) {
501
+ if (isUrlsDefinitionCall(node.initializer)) {
502
+ result = node.initializer.getText(sourceFile);
503
+ return;
504
+ }
505
+ }
506
+ ts3.forEachChild(node, visit);
507
+ }
508
+ visit(sourceFile);
509
+ return result;
510
+ }
511
+ function buildRouteMapFromBlock(block, fullSource, filePath, visited, searchSchemasOut, diagnosticsOut, memo) {
512
+ const routeMap = {};
513
+ const blockSourceFile = parseBlock(memo, block);
514
+ const localRoutes = extractRoutesFromSource(block, blockSourceFile);
515
+ for (const { name, pattern, search } of localRoutes) {
516
+ routeMap[name] = pattern;
517
+ if (search && searchSchemasOut) {
518
+ searchSchemasOut[name] = search;
519
+ }
520
+ }
521
+ const { resolved: includes, unresolvable } = extractIncludesWithDiagnostics(
522
+ block,
523
+ blockSourceFile
524
+ );
525
+ if (diagnosticsOut) {
526
+ for (const entry of unresolvable) {
527
+ diagnosticsOut.push({ ...entry, sourceFile: filePath });
528
+ }
529
+ }
530
+ for (const inc of includes) {
531
+ const { pathPrefix, namePrefix } = inc;
532
+ let childResult;
533
+ if (inc.moduleSpecifier) {
534
+ const targetFile = resolveImportPath(inc.moduleSpecifier, filePath);
535
+ if (!targetFile) {
536
+ diagnosticsOut?.push({
537
+ pathPrefix,
538
+ namePrefix,
539
+ reason: "file-not-found",
540
+ sourceFile: filePath,
541
+ detail: `import("${inc.moduleSpecifier}") resolved to no file`
542
+ });
543
+ continue;
544
+ }
545
+ let targetSource;
546
+ try {
547
+ targetSource = readSourceMemoized(memo, resolve(targetFile));
548
+ } catch (err) {
549
+ diagnosticsOut?.push({
550
+ pathPrefix,
551
+ namePrefix,
552
+ reason: "file-not-found",
553
+ sourceFile: filePath,
554
+ detail: `import("${inc.moduleSpecifier}") resolved to "${targetFile}" but reading it failed: ${err?.message ?? String(err)}`
555
+ });
556
+ continue;
557
+ }
558
+ const def = resolveDefaultExportTarget(
559
+ targetSource,
560
+ parseBlock(memo, targetSource)
561
+ );
562
+ if (!def) {
563
+ diagnosticsOut?.push({
564
+ pathPrefix,
565
+ namePrefix,
566
+ reason: "unresolvable-import",
567
+ sourceFile: filePath,
568
+ detail: `import("${inc.moduleSpecifier}") has no resolvable \`export default urls(...)\``
569
+ });
570
+ continue;
571
+ }
572
+ if (def.inlineBlock) {
573
+ childResult = buildCombinedRouteMapWithSearch(
574
+ targetFile,
575
+ void 0,
576
+ visited,
577
+ diagnosticsOut,
578
+ def.inlineBlock,
579
+ memo
580
+ );
581
+ } else {
582
+ const variableName = def.variableName;
583
+ const resolved = resolveIncludedVariable({
584
+ variableName,
585
+ resolutionFile: targetFile,
586
+ resolutionSource: targetSource,
587
+ reportFile: filePath,
588
+ memo,
589
+ visited,
590
+ diagnosticsOut,
591
+ pathPrefix,
592
+ namePrefix,
593
+ fileNotFoundDetail: (specifier) => `import("${inc.moduleSpecifier}") default re-exports "${variableName}" from "${specifier}", which resolved to no file`,
594
+ notFoundDetail: () => `import("${inc.moduleSpecifier}") default "${variableName}" not found in its imports or same-file scope`
595
+ });
596
+ if (!resolved) continue;
597
+ childResult = resolved;
598
+ }
599
+ } else if (inc.variableName) {
600
+ const variableName = inc.variableName;
601
+ const resolved = resolveIncludedVariable({
602
+ variableName,
603
+ resolutionFile: filePath,
604
+ resolutionSource: fullSource,
605
+ reportFile: filePath,
606
+ memo,
607
+ visited,
608
+ diagnosticsOut,
609
+ pathPrefix,
610
+ namePrefix,
611
+ fileNotFoundDetail: (specifier) => `import "${specifier}" resolved to no file`,
612
+ notFoundDetail: () => `variable "${variableName}" not found in imports or same-file scope`
613
+ });
614
+ if (!resolved) continue;
615
+ childResult = resolved;
616
+ } else {
617
+ continue;
618
+ }
619
+ if (namePrefix === null) {
620
+ continue;
621
+ }
622
+ for (const [name, pattern] of Object.entries(childResult.routes)) {
623
+ const prefixedName = namePrefix ? `${namePrefix}.${name}` : name;
624
+ let prefixedPattern;
625
+ if (pattern === "/") {
626
+ prefixedPattern = pathPrefix || "/";
627
+ } else if (pathPrefix.endsWith("/") && pattern.startsWith("/")) {
628
+ prefixedPattern = pathPrefix + pattern.slice(1);
629
+ } else {
630
+ prefixedPattern = pathPrefix + pattern;
631
+ }
632
+ routeMap[prefixedName] = prefixedPattern;
633
+ if (childResult.searchSchemas[name] && searchSchemasOut) {
634
+ searchSchemasOut[prefixedName] = childResult.searchSchemas[name];
635
+ }
636
+ }
637
+ }
638
+ return routeMap;
639
+ }
640
+ function resolveIncludedVariable(opts) {
641
+ const {
642
+ variableName,
643
+ resolutionFile,
644
+ resolutionSource,
645
+ reportFile,
646
+ memo,
647
+ visited,
648
+ diagnosticsOut,
649
+ pathPrefix,
650
+ namePrefix
651
+ } = opts;
652
+ const imported = resolveImportedVariable(resolutionSource, variableName);
653
+ if (imported) {
654
+ const targetFile = resolveImportPath(imported.specifier, resolutionFile);
655
+ if (!targetFile) {
656
+ diagnosticsOut?.push({
657
+ pathPrefix,
658
+ namePrefix,
659
+ reason: "file-not-found",
660
+ sourceFile: reportFile,
661
+ detail: opts.fileNotFoundDetail(imported.specifier)
662
+ });
663
+ return null;
664
+ }
665
+ return buildCombinedRouteMapWithSearch(
666
+ targetFile,
667
+ imported.exportedName,
668
+ visited,
669
+ diagnosticsOut,
670
+ void 0,
671
+ memo
672
+ );
673
+ }
674
+ const sameFileBlock = extractUrlsBlockForVariable(
675
+ resolutionSource,
676
+ variableName,
677
+ parseBlock(memo, resolutionSource)
678
+ );
679
+ if (!sameFileBlock) {
680
+ diagnosticsOut?.push({
681
+ pathPrefix,
682
+ namePrefix,
683
+ reason: "unresolvable-import",
684
+ sourceFile: reportFile,
685
+ detail: opts.notFoundDetail()
686
+ });
687
+ return null;
688
+ }
689
+ return buildCombinedRouteMapWithSearch(
690
+ resolutionFile,
691
+ variableName,
692
+ visited,
693
+ diagnosticsOut,
694
+ void 0,
695
+ memo
696
+ );
697
+ }
698
+ function buildCombinedRouteMapWithSearch(filePath, variableName, visited, diagnosticsOut, inlineBlock, memo) {
699
+ visited = visited ?? /* @__PURE__ */ new Set();
700
+ memo = memo ?? createScanMemo();
701
+ const realPath = resolve(filePath);
702
+ const key = variableName ? `${realPath}:${variableName}` : realPath;
703
+ if (visited.has(key)) {
704
+ console.warn(`[rango] Circular include detected, skipping: ${key}`);
705
+ return { routes: {}, searchSchemas: {} };
706
+ }
707
+ visited.add(key);
708
+ let source;
709
+ try {
710
+ source = readSourceMemoized(memo, realPath);
711
+ } catch {
712
+ return { routes: {}, searchSchemas: {} };
713
+ }
714
+ let block;
715
+ if (inlineBlock) {
716
+ block = inlineBlock;
717
+ } else if (variableName === "default") {
718
+ const defaultTarget = resolveDefaultExportTarget(
719
+ source,
720
+ parseBlock(memo, source)
721
+ );
722
+ if (!defaultTarget) {
723
+ visited.delete(key);
724
+ return { routes: {}, searchSchemas: {} };
725
+ }
726
+ if (defaultTarget.inlineBlock) {
727
+ block = defaultTarget.inlineBlock;
728
+ } else {
729
+ const targetName = defaultTarget.variableName;
730
+ const imported = resolveImportedVariable(source, targetName);
731
+ if (imported) {
732
+ const targetFile = resolveImportPath(imported.specifier, realPath);
733
+ if (!targetFile) {
734
+ visited.delete(key);
735
+ return { routes: {}, searchSchemas: {} };
736
+ }
737
+ const result = buildCombinedRouteMapWithSearch(
738
+ targetFile,
739
+ imported.exportedName,
740
+ visited,
741
+ diagnosticsOut,
742
+ void 0,
743
+ memo
744
+ );
745
+ visited.delete(key);
746
+ return result;
747
+ }
748
+ const extracted = extractUrlsBlockForVariable(
749
+ source,
750
+ targetName,
751
+ parseBlock(memo, source)
752
+ );
753
+ if (!extracted) {
754
+ visited.delete(key);
755
+ return { routes: {}, searchSchemas: {} };
756
+ }
757
+ block = extracted;
758
+ }
759
+ } else if (variableName) {
760
+ const extracted = extractUrlsBlockForVariable(
761
+ source,
762
+ variableName,
763
+ parseBlock(memo, source)
764
+ );
765
+ if (!extracted) return { routes: {}, searchSchemas: {} };
766
+ block = extracted;
767
+ } else {
768
+ block = source;
769
+ }
770
+ const searchSchemas = {};
771
+ const routes = buildRouteMapFromBlock(
772
+ block,
773
+ source,
774
+ realPath,
775
+ visited,
776
+ searchSchemas,
777
+ diagnosticsOut,
778
+ memo
779
+ );
780
+ visited.delete(key);
781
+ return { routes, searchSchemas };
782
+ }
783
+ var init_include_resolution = __esm({
784
+ "src/build/route-types/include-resolution.ts"() {
785
+ "use strict";
786
+ init_ast_helpers();
787
+ init_ast_route_extraction();
788
+ }
789
+ });
790
+
791
+ // src/build/route-types/per-module-writer.ts
792
+ import { readFileSync as readFileSync2, writeFileSync, existsSync as existsSync2 } from "node:fs";
793
+ import ts4 from "typescript";
794
+ function findUrlsVariableNames(code) {
795
+ const sourceFile = ts4.createSourceFile(
796
+ "input.tsx",
797
+ code,
798
+ ts4.ScriptTarget.Latest,
799
+ true,
800
+ ts4.ScriptKind.TSX
801
+ );
802
+ const names = [];
803
+ function visit(node) {
804
+ if (ts4.isVariableDeclaration(node) && ts4.isIdentifier(node.name) && node.initializer && ts4.isCallExpression(node.initializer)) {
805
+ const callee = node.initializer.expression;
806
+ if (ts4.isIdentifier(callee) && (callee.text === "urls" || callee.text === "clientUrls")) {
807
+ names.push(node.name.text);
808
+ }
809
+ }
810
+ ts4.forEachChild(node, visit);
811
+ }
812
+ visit(sourceFile);
813
+ return names;
814
+ }
815
+ function writePerModuleRouteTypesForFile(filePath) {
816
+ try {
817
+ const source = readFileSync2(filePath, "utf-8");
818
+ if (!source.includes("urls(") && !source.includes("clientUrls(")) return;
819
+ const varNames = findUrlsVariableNames(source);
820
+ let routes;
821
+ if (varNames.length > 0) {
822
+ routes = [];
823
+ const memo = createScanMemo();
824
+ for (const varName of varNames) {
825
+ const { routes: routeMap, searchSchemas } = buildCombinedRouteMapWithSearch(
826
+ filePath,
827
+ varName,
828
+ void 0,
829
+ void 0,
830
+ void 0,
831
+ memo
832
+ );
833
+ for (const [name, pattern] of Object.entries(routeMap)) {
834
+ const params = extractParamsFromPattern(pattern);
835
+ routes.push({
836
+ name,
837
+ pattern,
838
+ ...params ? { params } : {},
839
+ ...searchSchemas[name] ? { search: searchSchemas[name] } : {}
840
+ });
841
+ }
842
+ }
843
+ } else {
844
+ routes = extractRoutesFromSource(source);
845
+ }
846
+ const genPath = filePath.replace(/\.(tsx?|jsx?)$/, ".gen.ts");
847
+ if (routes.length === 0) {
848
+ if (varNames.length > 0 && !existsSync2(genPath)) {
849
+ writeFileSync(genPath, generatePerModuleTypesSource([]));
850
+ console.log(
851
+ `[rango] Generated route types (placeholder) -> ${genPath}`
852
+ );
853
+ }
854
+ return;
855
+ }
856
+ const genSource = generatePerModuleTypesSource(routes);
857
+ const existing = existsSync2(genPath) ? readFileSync2(genPath, "utf-8") : null;
858
+ if (existing !== genSource) {
859
+ writeFileSync(genPath, genSource);
860
+ console.log(`[rango] Generated route types -> ${genPath}`);
861
+ }
862
+ } catch (err) {
863
+ console.warn(
864
+ `[rango] Failed to generate route types for ${filePath}: ${err.message}`
865
+ );
866
+ }
867
+ }
868
+ var init_per_module_writer = __esm({
869
+ "src/build/route-types/per-module-writer.ts"() {
870
+ "use strict";
871
+ init_param_extraction();
872
+ init_ast_route_extraction();
873
+ init_codegen();
874
+ init_include_resolution();
875
+ init_scan_filter();
876
+ }
877
+ });
878
+
879
+ // src/build/route-types/source-scan.ts
880
+ function isLineTerminator(ch) {
881
+ const c = ch.charCodeAt(0);
882
+ return c === 10 || c === 13 || c === 8232 || c === 8233;
883
+ }
884
+ function isRegexPositionAt(code, slashPos, prevChar) {
885
+ if (prevChar === void 0) return true;
886
+ if (prevChar === ")" || prevChar === "]" || prevChar === "}") return false;
887
+ if (!/[\w$]/.test(prevChar)) return true;
888
+ let k = slashPos - 1;
889
+ while (k >= 0 && /\s/.test(code[k])) k--;
890
+ const wordEnd = k + 1;
891
+ while (k >= 0 && /[\w$]/.test(code[k])) k--;
892
+ return REGEX_PRECEDING_KEYWORDS.has(code.slice(k + 1, wordEnd));
893
+ }
894
+ function makeCodeClassifier(code) {
895
+ const n = code.length;
896
+ let i = 0;
897
+ let skipStart = -1;
898
+ let skipEnd = -1;
899
+ let lastSig;
900
+ return (q) => {
901
+ if (q >= skipStart && q < skipEnd) return false;
902
+ while (i < n && i <= q) {
903
+ const c = code[i];
904
+ const d = i + 1 < n ? code[i + 1] : "";
905
+ let end = -1;
906
+ let transparent = false;
907
+ if (c === "/" && d === "/") {
908
+ let j = i + 2;
909
+ while (j < n && !isLineTerminator(code[j])) j++;
910
+ end = j;
911
+ transparent = true;
912
+ } else if (c === "/" && d === "*") {
913
+ let j = i + 2;
914
+ while (j < n && !(code[j] === "*" && code[j + 1] === "/")) j++;
915
+ end = Math.min(n, j + 2);
916
+ transparent = true;
917
+ } else if (c === '"' || c === "'" || c === "`") {
918
+ let j = i + 1;
919
+ while (j < n) {
920
+ if (code[j] === "\\") {
921
+ j += 2;
922
+ continue;
923
+ }
924
+ if (code[j] === c) {
925
+ j++;
926
+ break;
927
+ }
928
+ j++;
929
+ }
930
+ end = j;
931
+ } else if (c === "/" && d !== "/" && d !== "*" && isRegexPositionAt(code, i, lastSig)) {
932
+ let j = i + 1;
933
+ let inClass = false;
934
+ let closed = false;
935
+ while (j < n && !isLineTerminator(code[j])) {
936
+ const r = code[j];
937
+ if (r === "\\") {
938
+ j += 2;
939
+ continue;
940
+ }
941
+ if (r === "[") inClass = true;
942
+ else if (r === "]") inClass = false;
943
+ else if (r === "/" && !inClass) {
944
+ j++;
945
+ closed = true;
946
+ break;
947
+ }
948
+ j++;
949
+ }
950
+ if (closed) {
951
+ while (j < n && /[a-z]/.test(code[j])) j++;
952
+ end = j;
953
+ }
954
+ }
955
+ if (end >= 0) {
956
+ if (q < end) {
957
+ skipStart = i;
958
+ skipEnd = end;
959
+ return false;
960
+ }
961
+ i = end;
962
+ if (!transparent) lastSig = "x";
963
+ } else {
964
+ if (!/\s/.test(c)) lastSig = c;
965
+ i++;
966
+ }
967
+ }
968
+ return true;
969
+ };
970
+ }
971
+ function firstCodeMatchIndex(code, pattern) {
972
+ const inCode = makeCodeClassifier(code);
973
+ pattern.lastIndex = 0;
974
+ let m;
975
+ while ((m = pattern.exec(code)) !== null) {
976
+ if (inCode(m.index)) return m.index;
977
+ if (pattern.lastIndex <= m.index) pattern.lastIndex = m.index + 1;
978
+ }
979
+ return -1;
980
+ }
981
+ var REGEX_PRECEDING_KEYWORDS;
982
+ var init_source_scan = __esm({
983
+ "src/build/route-types/source-scan.ts"() {
984
+ "use strict";
985
+ REGEX_PRECEDING_KEYWORDS = /* @__PURE__ */ new Set([
986
+ "return",
987
+ "typeof",
988
+ "instanceof",
989
+ "in",
990
+ "of",
991
+ "new",
992
+ "delete",
993
+ "void",
994
+ "do",
995
+ "else",
996
+ "yield",
997
+ "await",
998
+ "case",
999
+ "throw"
1000
+ ]);
1001
+ }
1002
+ });
1003
+
1004
+ // src/build/route-types/router-processing.ts
1005
+ import {
1006
+ readFileSync as readFileSync3,
1007
+ writeFileSync as writeFileSync2,
1008
+ existsSync as existsSync3,
1009
+ unlinkSync,
1010
+ readdirSync as readdirSync2
1011
+ } from "node:fs";
1012
+ import {
1013
+ join as join2,
1014
+ dirname as dirname2,
1015
+ resolve as resolve2,
1016
+ sep,
1017
+ basename as pathBasename
1018
+ } from "node:path";
1019
+ import ts5 from "typescript";
1020
+ function countPublicRouteEntries(source) {
1021
+ const matches = source.matchAll(/^\s+(?:"([^"]+)"|([a-zA-Z_$][^:]*)):\s*["{]/gm) ?? [];
1022
+ let count = 0;
1023
+ for (const match of matches) {
1024
+ const routeName = match[1] || match[2];
1025
+ if (routeName && !isAutoGeneratedRouteName(routeName.trim())) {
1026
+ count++;
1027
+ }
1028
+ }
1029
+ return count;
1030
+ }
1031
+ function isRoutableSourceFile(name) {
1032
+ return (name.endsWith(".ts") || name.endsWith(".tsx") || name.endsWith(".js") || name.endsWith(".jsx")) && !name.includes(".gen.") && !name.includes(".test.") && !name.includes(".spec.");
1033
+ }
1034
+ function isExcludedScanDir(name) {
1035
+ return name === "node_modules" || name === "dist" || name === "coverage" || name === "__tests__" || name === "__mocks__" || name.startsWith(".");
1036
+ }
1037
+ function findCallSiteFilesRecursive(dir, pattern, patternG, stopAtMatchDir, filter, results) {
1038
+ let entries;
1039
+ try {
1040
+ entries = readdirSync2(dir, { withFileTypes: true });
1041
+ } catch (err) {
1042
+ console.warn(
1043
+ `[rango] Failed to scan directory ${dir}: ${err.message}`
1044
+ );
1045
+ return;
1046
+ }
1047
+ const childDirs = [];
1048
+ const matchesInDir = [];
1049
+ for (const entry of entries) {
1050
+ const fullPath = join2(dir, entry.name);
1051
+ if (entry.isDirectory()) {
1052
+ if (!isExcludedScanDir(entry.name)) childDirs.push(fullPath);
1053
+ continue;
1054
+ }
1055
+ if (!isRoutableSourceFile(entry.name)) continue;
1056
+ if (filter && !filter(fullPath)) continue;
1057
+ try {
1058
+ const source = readFileSync3(fullPath, "utf-8");
1059
+ if (pattern.test(source) && firstCodeMatchIndex(source, patternG) >= 0) {
1060
+ matchesInDir.push(fullPath);
1061
+ }
1062
+ } catch {
1063
+ continue;
1064
+ }
1065
+ }
1066
+ results.push(...matchesInDir);
1067
+ if (!stopAtMatchDir || matchesInDir.length === 0) {
1068
+ for (const childDir of childDirs) {
1069
+ findCallSiteFilesRecursive(
1070
+ childDir,
1071
+ pattern,
1072
+ patternG,
1073
+ stopAtMatchDir,
1074
+ filter,
1075
+ results
1076
+ );
1077
+ }
1078
+ }
1079
+ }
1080
+ function findNestedRouterConflict(routerFiles) {
1081
+ const routerDirs = [
1082
+ ...new Set(routerFiles.map((filePath) => dirname2(resolve2(filePath))))
1083
+ ].sort((a, b) => a.length - b.length);
1084
+ for (let i = 0; i < routerDirs.length; i++) {
1085
+ const ancestorDir = routerDirs[i];
1086
+ const prefix = ancestorDir.endsWith(sep) ? ancestorDir : `${ancestorDir}${sep}`;
1087
+ for (let j = i + 1; j < routerDirs.length; j++) {
1088
+ const nestedDir = routerDirs[j];
1089
+ if (!nestedDir.startsWith(prefix)) continue;
1090
+ const ancestorFile = routerFiles.find(
1091
+ (filePath) => dirname2(resolve2(filePath)) === ancestorDir
1092
+ );
1093
+ const nestedFile = routerFiles.find(
1094
+ (filePath) => dirname2(resolve2(filePath)) === nestedDir
1095
+ );
1096
+ if (ancestorFile && nestedFile) {
1097
+ return { ancestor: ancestorFile, nested: nestedFile };
1098
+ }
1099
+ }
1100
+ }
1101
+ return null;
1102
+ }
1103
+ function formatNestedRouterConflictError(conflict, prefix = "[rango]") {
1104
+ return `${prefix} Nested router roots are not supported.
1105
+ Router root: ${conflict.ancestor}
1106
+ Nested router: ${conflict.nested}
1107
+ Move the nested router into a sibling directory or configure it as a separate app root.`;
1108
+ }
1109
+ function isCreateRouterCall(node) {
1110
+ if (!ts5.isCallExpression(node)) return false;
1111
+ const callee = node.expression;
1112
+ return ts5.isIdentifier(callee) && callee.text === "createRouter";
1113
+ }
1114
+ function extractUrlsArgument(node, sourceFile) {
1115
+ if (ts5.isIdentifier(node)) {
1116
+ return { kind: "variable", name: node.text };
1117
+ }
1118
+ if (ts5.isArrowFunction(node) || ts5.isFunctionExpression(node)) {
1119
+ return { kind: "inline", block: node.getText(sourceFile) };
1120
+ }
1121
+ return null;
1122
+ }
1123
+ function collectCreateRouterCallChain(endpoint) {
1124
+ const calls = [];
1125
+ let current = endpoint;
1126
+ while (true) {
1127
+ calls.push(current);
1128
+ if (isCreateRouterCall(current)) return calls.reverse();
1129
+ if (!ts5.isPropertyAccessExpression(current.expression)) return null;
1130
+ const receiver = current.expression.expression;
1131
+ if (!ts5.isCallExpression(receiver)) return null;
1132
+ current = receiver;
1133
+ }
1134
+ }
1135
+ function extractAllUrlsFromRouter(code) {
1136
+ const sourceFile = ts5.createSourceFile(
1137
+ "router.tsx",
1138
+ code,
1139
+ ts5.ScriptTarget.Latest,
1140
+ true,
1141
+ ts5.ScriptKind.TSX
1142
+ );
1143
+ let result = null;
1144
+ function visit(node) {
1145
+ if (result) return;
1146
+ if (ts5.isCallExpression(node)) {
1147
+ const chain = collectCreateRouterCallChain(node);
1148
+ if (chain) {
1149
+ const extracted = [];
1150
+ const createRouterCall = chain[0];
1151
+ for (const callArg of createRouterCall.arguments) {
1152
+ if (!ts5.isObjectLiteralExpression(callArg)) continue;
1153
+ for (const prop of callArg.properties) {
1154
+ if (!ts5.isPropertyAssignment(prop) || !ts5.isIdentifier(prop.name) || prop.name.text !== "urls") {
1155
+ continue;
1156
+ }
1157
+ const urls = extractUrlsArgument(prop.initializer, sourceFile);
1158
+ if (urls) extracted.push(urls);
1159
+ break;
1160
+ }
1161
+ }
1162
+ for (const call of chain.slice(1)) {
1163
+ if (!ts5.isPropertyAccessExpression(call.expression) || call.expression.name.text !== "routes" || call.arguments.length === 0) {
1164
+ continue;
1165
+ }
1166
+ const urls = extractUrlsArgument(call.arguments[0], sourceFile);
1167
+ if (urls) extracted.push(urls);
1168
+ }
1169
+ if (extracted.length > 0) {
1170
+ result = extracted;
1171
+ return;
1172
+ }
1173
+ }
1174
+ }
1175
+ ts5.forEachChild(node, visit);
1176
+ }
1177
+ visit(sourceFile);
1178
+ return result ?? [];
1179
+ }
1180
+ function extractUrlsFromRouter(code) {
1181
+ const extractions = extractAllUrlsFromRouter(code);
1182
+ return extractions[extractions.length - 1] ?? null;
1183
+ }
1184
+ function extractBasenameFromRouter(code) {
1185
+ const sourceFile = ts5.createSourceFile(
1186
+ "router.tsx",
1187
+ code,
1188
+ ts5.ScriptTarget.Latest,
1189
+ true,
1190
+ ts5.ScriptKind.TSX
1191
+ );
1192
+ let result;
1193
+ function visit(node) {
1194
+ if (result !== void 0) return;
1195
+ if (ts5.isCallExpression(node) && ts5.isIdentifier(node.expression) && node.expression.text === "createRouter") {
1196
+ for (const arg of node.arguments) {
1197
+ if (ts5.isObjectLiteralExpression(arg)) {
1198
+ for (const prop of arg.properties) {
1199
+ if (ts5.isPropertyAssignment(prop) && ts5.isIdentifier(prop.name) && prop.name.text === "basename" && ts5.isStringLiteral(prop.initializer)) {
1200
+ result = prop.initializer.text;
1201
+ return;
1202
+ }
1203
+ }
1204
+ }
1205
+ }
1206
+ }
1207
+ ts5.forEachChild(node, visit);
1208
+ }
1209
+ visit(sourceFile);
1210
+ return result;
1211
+ }
1212
+ function applyBasenameToRoutes(result, basename) {
1213
+ const prefixed = {};
1214
+ for (const [name, pattern] of Object.entries(result.routes)) {
1215
+ if (pattern === "/") {
1216
+ prefixed[name] = basename;
1217
+ } else if (basename.endsWith("/") && pattern.startsWith("/")) {
1218
+ prefixed[name] = basename + pattern.slice(1);
1219
+ } else {
1220
+ prefixed[name] = basename + pattern;
1221
+ }
1222
+ }
1223
+ return { routes: prefixed, searchSchemas: result.searchSchemas };
1224
+ }
1225
+ function resolveRouterUrlsExtraction(routerFilePath, routerSource, extraction, diagnosticsOut, memo) {
1226
+ if (extraction.kind === "inline") {
1227
+ return buildCombinedRouteMapWithSearch(
1228
+ routerFilePath,
1229
+ void 0,
1230
+ /* @__PURE__ */ new Set(),
1231
+ diagnosticsOut,
1232
+ extraction.block,
1233
+ memo
1234
+ );
1235
+ }
1236
+ const imported = resolveImportedVariable(routerSource, extraction.name);
1237
+ if (imported) {
1238
+ const targetFile = resolveImportPath(imported.specifier, routerFilePath);
1239
+ if (!targetFile) {
1240
+ diagnosticsOut?.push({
1241
+ pathPrefix: "/",
1242
+ namePrefix: null,
1243
+ reason: "file-not-found",
1244
+ sourceFile: routerFilePath,
1245
+ detail: `import "${imported.specifier}" resolved to no file`
1246
+ });
1247
+ return { routes: {}, searchSchemas: {} };
1248
+ }
1249
+ return buildCombinedRouteMapWithSearch(
1250
+ targetFile,
1251
+ imported.exportedName,
1252
+ /* @__PURE__ */ new Set(),
1253
+ diagnosticsOut,
1254
+ void 0,
1255
+ memo
1256
+ );
1257
+ }
1258
+ return buildCombinedRouteMapWithSearch(
1259
+ routerFilePath,
1260
+ extraction.name,
1261
+ /* @__PURE__ */ new Set(),
1262
+ diagnosticsOut,
1263
+ void 0,
1264
+ memo
1265
+ );
1266
+ }
1267
+ function mergeRouteMaps(target, source) {
1268
+ for (const [name, pattern] of Object.entries(source.routes)) {
1269
+ target.routes[name] = pattern;
1270
+ const search = source.searchSchemas[name];
1271
+ if (search) {
1272
+ target.searchSchemas[name] = search;
1273
+ } else {
1274
+ delete target.searchSchemas[name];
1275
+ }
1276
+ }
1277
+ }
1278
+ function genFileTsPath(sourceFile) {
1279
+ const base = pathBasename(sourceFile).replace(/\.(tsx?|jsx?)$/, "");
1280
+ return join2(dirname2(sourceFile), `${base}.named-routes.gen.ts`);
1281
+ }
1282
+ function resolveSearchSchemas(publicRouteNames, runtimeSchemas, sourceFile) {
1283
+ if (runtimeSchemas && Object.keys(runtimeSchemas).length > 0) {
1284
+ return runtimeSchemas;
1285
+ }
1286
+ const staticParsed = buildCombinedRouteMapForRouterFile(sourceFile);
1287
+ if (Object.keys(staticParsed.searchSchemas).length === 0) {
1288
+ return runtimeSchemas;
1289
+ }
1290
+ const filtered = {};
1291
+ for (const name of publicRouteNames) {
1292
+ const schema = staticParsed.searchSchemas[name];
1293
+ if (schema) filtered[name] = schema;
1294
+ }
1295
+ return Object.keys(filtered).length > 0 ? filtered : runtimeSchemas;
1296
+ }
1297
+ function buildCombinedRouteMapForRouterFile(routerFilePath) {
1298
+ let routerSource;
1299
+ try {
1300
+ routerSource = readFileSync3(routerFilePath, "utf-8");
1301
+ } catch {
1302
+ return { routes: {}, searchSchemas: {} };
1303
+ }
1304
+ const extractions = extractAllUrlsFromRouter(routerSource);
1305
+ if (extractions.length === 0) {
1306
+ return { routes: {}, searchSchemas: {} };
1307
+ }
1308
+ const rawBasename = extractBasenameFromRouter(routerSource);
1309
+ const basename = rawBasename ? ("/" + rawBasename.replace(/^\/+|\/+$/g, "")).replace(/^\/$/, "") : void 0;
1310
+ const result = { routes: {}, searchSchemas: {} };
1311
+ const memo = createScanMemo();
1312
+ for (const extraction of extractions) {
1313
+ mergeRouteMaps(
1314
+ result,
1315
+ resolveRouterUrlsExtraction(
1316
+ routerFilePath,
1317
+ routerSource,
1318
+ extraction,
1319
+ void 0,
1320
+ memo
1321
+ )
1322
+ );
1323
+ }
1324
+ if (basename) {
1325
+ return applyBasenameToRoutes(result, basename);
1326
+ }
1327
+ return result;
1328
+ }
1329
+ function detectUnresolvableIncludes(routerFilePath) {
1330
+ const realPath = resolve2(routerFilePath);
1331
+ let source;
1332
+ try {
1333
+ source = readFileSync3(realPath, "utf-8");
1334
+ } catch {
1335
+ return [];
1336
+ }
1337
+ const extractions = extractAllUrlsFromRouter(source);
1338
+ if (extractions.length === 0) return [];
1339
+ const diagnostics = [];
1340
+ const memo = createScanMemo();
1341
+ for (const extraction of extractions) {
1342
+ resolveRouterUrlsExtraction(
1343
+ realPath,
1344
+ source,
1345
+ extraction,
1346
+ diagnostics,
1347
+ memo
1348
+ );
1349
+ }
1350
+ return diagnostics;
1351
+ }
1352
+ function detectUnresolvableIncludesForUrlsFile(filePath) {
1353
+ const realPath = resolve2(filePath);
1354
+ let source;
1355
+ try {
1356
+ source = readFileSync3(realPath, "utf-8");
1357
+ } catch {
1358
+ return [];
1359
+ }
1360
+ const varNames = findUrlsVariableNames(source);
1361
+ if (varNames.length === 0) return [];
1362
+ const diagnostics = [];
1363
+ for (const varName of varNames) {
1364
+ buildCombinedRouteMapWithSearch(realPath, varName, /* @__PURE__ */ new Set(), diagnostics);
1365
+ }
1366
+ return diagnostics;
1367
+ }
1368
+ function findRouterFiles(root, filter) {
1369
+ const result = [];
1370
+ findCallSiteFilesRecursive(
1371
+ root,
1372
+ ROUTER_CALL_PATTERN,
1373
+ ROUTER_CALL_PATTERN_G,
1374
+ true,
1375
+ filter,
1376
+ result
1377
+ );
1378
+ return result;
1379
+ }
1380
+ function writeCombinedRouteTypes(root, knownRouterFiles, opts) {
1381
+ try {
1382
+ const oldCombinedPath = join2(root, "src", "named-routes.gen.ts");
1383
+ if (existsSync3(oldCombinedPath)) {
1384
+ unlinkSync(oldCombinedPath);
1385
+ console.log(
1386
+ `[rango] Removed stale combined route types: ${oldCombinedPath}`
1387
+ );
1388
+ }
1389
+ } catch {
1390
+ }
1391
+ const routerFilePaths = knownRouterFiles ?? findRouterFiles(root);
1392
+ if (routerFilePaths.length === 0) return;
1393
+ const nestedRouterConflict = findNestedRouterConflict(routerFilePaths);
1394
+ if (nestedRouterConflict) {
1395
+ throw new Error(formatNestedRouterConflictError(nestedRouterConflict));
1396
+ }
1397
+ for (const routerFilePath of routerFilePaths) {
1398
+ const result = buildCombinedRouteMapForRouterFile(routerFilePath);
1399
+ if (Object.keys(result.routes).length === 0 && Object.keys(result.searchSchemas).length === 0) {
1400
+ let routerSource;
1401
+ try {
1402
+ routerSource = readFileSync3(routerFilePath, "utf-8");
1403
+ } catch {
1404
+ continue;
1405
+ }
1406
+ if (!extractUrlsFromRouter(routerSource)) continue;
1407
+ }
1408
+ const outPath = genFileTsPath(routerFilePath);
1409
+ const existing = existsSync3(outPath) ? readFileSync3(outPath, "utf-8") : null;
1410
+ if (Object.keys(result.routes).length === 0) {
1411
+ if (!existing) {
1412
+ const emptySource = generateRouteTypesSource({});
1413
+ opts?.onWrite?.(outPath, emptySource);
1414
+ writeFileSync2(outPath, emptySource);
1415
+ }
1416
+ continue;
1417
+ }
1418
+ const hasSearchSchemas = Object.keys(result.searchSchemas).length > 0;
1419
+ const source = generateRouteTypesSource(
1420
+ result.routes,
1421
+ hasSearchSchemas ? result.searchSchemas : void 0
1422
+ );
1423
+ if (existing !== source) {
1424
+ if (opts?.preserveIfLarger && existing) {
1425
+ const existingCount = countPublicRouteEntries(existing);
1426
+ const newCount = Object.keys(result.routes).filter(
1427
+ (name) => !isAutoGeneratedRouteName(name)
1428
+ ).length;
1429
+ if (existingCount > newCount) {
1430
+ continue;
1431
+ }
1432
+ }
1433
+ opts?.onWrite?.(outPath, source);
1434
+ writeFileSync2(outPath, source);
1435
+ console.log(
1436
+ `[rango] Generated route types (${Object.keys(result.routes).length} routes) -> ${outPath}`
1437
+ );
1438
+ }
1439
+ }
1440
+ }
1441
+ var ROUTER_CALL_PATTERN, ROUTER_CALL_PATTERN_G;
1442
+ var init_router_processing = __esm({
1443
+ "src/build/route-types/router-processing.ts"() {
1444
+ "use strict";
1445
+ init_codegen();
1446
+ init_source_scan();
1447
+ init_include_resolution();
1448
+ init_per_module_writer();
1449
+ init_route_name();
1450
+ ROUTER_CALL_PATTERN = /\bcreateRouter\s*[<(]/;
1451
+ ROUTER_CALL_PATTERN_G = /\bcreateRouter\s*[<(]/g;
1452
+ }
1453
+ });
1454
+
1455
+ // src/build/generate-route-types.ts
1456
+ var init_generate_route_types = __esm({
1457
+ "src/build/generate-route-types.ts"() {
1458
+ "use strict";
1459
+ init_param_extraction();
1460
+ init_ast_route_extraction();
1461
+ init_codegen();
1462
+ init_scan_filter();
1463
+ init_per_module_writer();
1464
+ init_include_resolution();
1465
+ init_router_processing();
1466
+ init_per_module_writer();
1467
+ }
1468
+ });
1469
+
1470
+ // src/build/merge-full-manifests.ts
1471
+ function clonePrefixNode(node) {
1472
+ return {
1473
+ staticPrefix: node.staticPrefix,
1474
+ fullPrefix: node.fullPrefix,
1475
+ ...node.namePrefix === void 0 ? {} : { namePrefix: node.namePrefix },
1476
+ children: clonePrefixTree(node.children),
1477
+ routes: [...node.routes]
1478
+ };
1479
+ }
1480
+ function clonePrefixTree(tree) {
1481
+ return Object.fromEntries(
1482
+ Object.entries(tree).map(([prefix, node]) => [
1483
+ prefix,
1484
+ clonePrefixNode(node)
1485
+ ])
1486
+ );
1487
+ }
1488
+ function removeRoutesFromPrefixTree(tree, routeNames) {
1489
+ return Object.fromEntries(
1490
+ Object.entries(tree).map(([prefix, node]) => [
1491
+ prefix,
1492
+ {
1493
+ staticPrefix: node.staticPrefix,
1494
+ fullPrefix: node.fullPrefix,
1495
+ ...node.namePrefix === void 0 ? {} : { namePrefix: node.namePrefix },
1496
+ children: removeRoutesFromPrefixTree(node.children, routeNames),
1497
+ routes: node.routes.filter((name) => !routeNames.has(name))
1498
+ }
1499
+ ])
1500
+ );
1501
+ }
1502
+ function mergePrefixTrees(earlier, later) {
1503
+ const merged = clonePrefixTree(earlier);
1504
+ for (const [prefix, laterNode] of Object.entries(later)) {
1505
+ const earlierNode = merged[prefix];
1506
+ if (!earlierNode) {
1507
+ merged[prefix] = clonePrefixNode(laterNode);
1508
+ continue;
1509
+ }
1510
+ merged[prefix] = {
1511
+ staticPrefix: laterNode.staticPrefix,
1512
+ fullPrefix: laterNode.fullPrefix,
1513
+ ...laterNode.namePrefix === void 0 ? {} : { namePrefix: laterNode.namePrefix },
1514
+ children: mergePrefixTrees(earlierNode.children, laterNode.children),
1515
+ routes: [.../* @__PURE__ */ new Set([...earlierNode.routes, ...laterNode.routes])]
1516
+ };
1517
+ }
1518
+ return merged;
1519
+ }
1520
+ function mergeRouteRecord(earlier, later, overwrittenRoutes, cloneValue) {
1521
+ const merged = {};
1522
+ for (const [name, value] of Object.entries(earlier ?? {})) {
1523
+ if (!overwrittenRoutes.has(name)) merged[name] = cloneValue(value);
1524
+ }
1525
+ for (const [name, value] of Object.entries(later ?? {})) {
1526
+ merged[name] = cloneValue(value);
1527
+ }
1528
+ return Object.keys(merged).length > 0 ? merged : void 0;
1529
+ }
1530
+ function mergeRouteList(earlier, later, overwrittenRoutes) {
1531
+ const merged = [
1532
+ ...(earlier ?? []).filter((name) => !overwrittenRoutes.has(name)),
1533
+ ...later ?? []
1534
+ ];
1535
+ const unique = [...new Set(merged)];
1536
+ return unique.length > 0 ? unique : void 0;
1537
+ }
1538
+ function mergeFullManifests(manifests) {
1539
+ let merged = {
1540
+ prefixTree: {},
1541
+ routeManifest: {}
1542
+ };
1543
+ for (const manifest of manifests) {
1544
+ const overwrittenRoutes = new Set(Object.keys(manifest.routeManifest));
1545
+ const prefixTreeWithoutOverwrites = removeRoutesFromPrefixTree(
1546
+ merged.prefixTree,
1547
+ overwrittenRoutes
1548
+ );
1549
+ merged = {
1550
+ prefixTree: mergePrefixTrees(
1551
+ prefixTreeWithoutOverwrites,
1552
+ manifest.prefixTree
1553
+ ),
1554
+ routeManifest: {
1555
+ ...merged.routeManifest,
1556
+ ...manifest.routeManifest
1557
+ },
1558
+ routeTrailingSlash: mergeRouteRecord(
1559
+ merged.routeTrailingSlash,
1560
+ manifest.routeTrailingSlash,
1561
+ overwrittenRoutes,
1562
+ (value) => value
1563
+ ),
1564
+ prerenderRoutes: mergeRouteList(
1565
+ merged.prerenderRoutes,
1566
+ manifest.prerenderRoutes,
1567
+ overwrittenRoutes
1568
+ ),
1569
+ passthroughRoutes: mergeRouteList(
1570
+ merged.passthroughRoutes,
1571
+ manifest.passthroughRoutes,
1572
+ overwrittenRoutes
1573
+ ),
1574
+ responseTypeRoutes: mergeRouteRecord(
1575
+ merged.responseTypeRoutes,
1576
+ manifest.responseTypeRoutes,
1577
+ overwrittenRoutes,
1578
+ (value) => value
1579
+ ),
1580
+ routeSearchSchemas: mergeRouteRecord(
1581
+ merged.routeSearchSchemas,
1582
+ manifest.routeSearchSchemas,
1583
+ overwrittenRoutes,
1584
+ (value) => ({ ...value })
1585
+ ),
1586
+ _prerenderDefs: mergeRouteRecord(
1587
+ merged._prerenderDefs,
1588
+ manifest._prerenderDefs,
1589
+ overwrittenRoutes,
1590
+ (value) => value
1591
+ )
1592
+ };
1593
+ }
1594
+ return merged;
1595
+ }
1596
+ var init_merge_full_manifests = __esm({
1597
+ "src/build/merge-full-manifests.ts"() {
1598
+ "use strict";
1599
+ }
1600
+ });
1601
+
1602
+ // src/vite/plugins/virtual-entries.ts
1603
+ function getVirtualVersionContent(version) {
1604
+ return `export const VERSION = ${JSON.stringify(version)};`;
1605
+ }
1606
+ var VIRTUAL_ENTRY_BROWSER, VIRTUAL_IDS;
1607
+ var init_virtual_entries = __esm({
1608
+ "src/vite/plugins/virtual-entries.ts"() {
1609
+ "use strict";
1610
+ VIRTUAL_ENTRY_BROWSER = `
1611
+ import {
1612
+ createFromReadableStream,
1613
+ createFromFetch,
1614
+ setServerCallback,
1615
+ encodeReply,
1616
+ createTemporaryReferenceSet,
1617
+ } from "@rangojs/router/internal/deps/browser";
1618
+ import { createElement, StrictMode } from "react";
1619
+ import { hydrateRoot } from "react-dom/client";
1620
+ import { rscStream } from "@rangojs/router/internal/deps/html-stream-client";
1621
+ import { initBrowserApp, Rango } from "@rangojs/router/browser";
1622
+
1623
+ async function initializeApp() {
1624
+ const deps = {
1625
+ createFromFetch,
1626
+ createFromReadableStream,
1627
+ encodeReply,
1628
+ setServerCallback,
1629
+ createTemporaryReferenceSet,
1630
+ };
1631
+
1632
+ // initBrowserApp resolves the initial payload and returns the browser app
1633
+ // context, including strictMode (default true) from createRouter. StrictMode
1634
+ // is the default; createRouter({ strictMode: false }) ships the opt-out in the
1635
+ // payload metadata. StrictMode emits no DOM, so toggling never changes markup.
1636
+ const { strictMode, initialPayload } = await initBrowserApp({ rscStream, deps });
1637
+
1638
+ if (import.meta.hot) {
1639
+ const { startDevDiscoveryHandshake } = await import(
1640
+ "@rangojs/router/internal/browser/dev-discovery"
1641
+ );
1642
+ startDevDiscoveryHandshake(
1643
+ initialPayload.metadata?.devDiscoveryEpoch,
1644
+ import.meta.hot
1645
+ );
1646
+ }
1647
+
1648
+ const app = createElement(Rango);
1649
+ hydrateRoot(
1650
+ document,
1651
+ strictMode === false ? app : createElement(StrictMode, null, app)
1652
+ );
1653
+ }
1654
+
1655
+ initializeApp().catch(console.error);
1656
+ `.trim();
1657
+ VIRTUAL_IDS = {
1658
+ browser: "virtual:rsc-router/entry.browser.js",
1659
+ ssr: "virtual:rsc-router/entry.ssr.js",
1660
+ rsc: "virtual:rsc-router/entry.rsc.js",
1661
+ version: "@rangojs/router:version"
1662
+ };
1663
+ }
1664
+ });
1665
+
1666
+ // src/vite/utils/directive-prologue.ts
1667
+ import { parseAst } from "vite";
1668
+ function hasUseClientDirective(source) {
1669
+ let program;
1670
+ try {
1671
+ program = parseAst(source, { lang: "tsx" });
1672
+ } catch {
1673
+ return false;
1674
+ }
1675
+ for (const node of program.body ?? []) {
1676
+ if (node?.type === "ExpressionStatement" && node.expression?.type === "Literal" && typeof node.expression.value === "string") {
1677
+ if (node.expression.value === "use client") return true;
1678
+ continue;
1679
+ }
1680
+ break;
1681
+ }
1682
+ return false;
1683
+ }
1684
+ var init_directive_prologue = __esm({
1685
+ "src/vite/utils/directive-prologue.ts"() {
1686
+ "use strict";
1687
+ }
1688
+ });
1689
+
1690
+ // src/vite/plugins/version-plugin.ts
1691
+ var version_plugin_exports = {};
1692
+ __export(version_plugin_exports, {
1693
+ createVersionPlugin: () => createVersionPlugin,
1694
+ isViteDepCachePath: () => isViteDepCachePath
1695
+ });
1696
+ import { parseAst as parseAst2 } from "vite";
1697
+ function isCodeModule(id) {
1698
+ return /\.(tsx?|jsx?)($|\?)/.test(id);
1699
+ }
1700
+ function normalizeModuleId(id) {
1701
+ return id.split("?", 1)[0];
1702
+ }
1703
+ function getClientModuleSignature(source) {
1704
+ if (!hasUseClientDirective(source)) return void 0;
1705
+ let program;
1706
+ try {
1707
+ program = parseAst2(source, { lang: "tsx" });
1708
+ } catch {
1709
+ return void 0;
1710
+ }
1711
+ const exports = /* @__PURE__ */ new Set();
1712
+ let hasDefault = false;
1713
+ let hasExportAll = false;
1714
+ const collectBindingNames = (pattern) => {
1715
+ if (!pattern) return;
1716
+ if (pattern.type === "Identifier") {
1717
+ exports.add(pattern.name);
1718
+ } else if (pattern.type === "ObjectPattern") {
1719
+ for (const prop of pattern.properties ?? []) {
1720
+ if (prop?.type === "RestElement") {
1721
+ collectBindingNames(prop.argument);
1722
+ } else {
1723
+ collectBindingNames(prop?.value);
1724
+ }
1725
+ }
1726
+ } else if (pattern.type === "ArrayPattern") {
1727
+ for (const el of pattern.elements ?? []) {
1728
+ if (el?.type === "RestElement") {
1729
+ collectBindingNames(el.argument);
1730
+ } else {
1731
+ collectBindingNames(el);
1732
+ }
1733
+ }
1734
+ }
1735
+ };
1736
+ const collectDeclarationNames = (declaration) => {
1737
+ if (!declaration) return;
1738
+ if (declaration.type === "VariableDeclaration") {
1739
+ for (const decl of declaration.declarations ?? []) {
1740
+ collectBindingNames(decl?.id);
1741
+ }
1742
+ return;
1743
+ }
1744
+ collectBindingNames(declaration.id);
1745
+ };
1746
+ for (const node of program.body ?? []) {
1747
+ if (node?.type === "ExportDefaultDeclaration") {
1748
+ hasDefault = true;
1749
+ continue;
1750
+ }
1751
+ if (node?.type === "ExportAllDeclaration") {
1752
+ hasExportAll = true;
1753
+ continue;
1754
+ }
1755
+ if (node?.type !== "ExportNamedDeclaration") continue;
1756
+ collectDeclarationNames(node.declaration);
1757
+ for (const specifier of node.specifiers ?? []) {
1758
+ const exportedName = specifier?.exported?.name ?? specifier?.exported?.value;
1759
+ if (exportedName === "default") {
1760
+ hasDefault = true;
1761
+ } else if (typeof exportedName === "string") {
1762
+ exports.add(exportedName);
1763
+ }
1764
+ }
1765
+ }
1766
+ return {
1767
+ key: JSON.stringify({
1768
+ default: hasDefault,
1769
+ exportAll: hasExportAll,
1770
+ exports: [...exports].sort()
1771
+ })
1772
+ };
1773
+ }
1774
+ function createVersionPlugin() {
1775
+ const buildVersion = Date.now().toString(16);
1776
+ let currentVersion = buildVersion;
1777
+ let isDev = false;
1778
+ let server = null;
1779
+ let resolvedCacheDir;
1780
+ const clientModuleSignatures = /* @__PURE__ */ new Map();
1781
+ let versionCounter = 0;
1782
+ const bumpVersion = (reason) => {
1783
+ currentVersion = Date.now().toString(16) + String(++versionCounter);
1784
+ console.log(`[rango] ${reason}, version updated: ${currentVersion}`);
1785
+ const rscEnv = server?.environments?.rsc;
1786
+ const versionMod = rscEnv?.moduleGraph?.getModuleById(
1787
+ "\0" + VIRTUAL_IDS.version
1788
+ );
1789
+ if (versionMod) {
1790
+ rscEnv.moduleGraph.invalidateModule(versionMod);
1791
+ }
1792
+ };
1793
+ return {
1794
+ name: "@rangojs/router:version",
1795
+ enforce: "pre",
1796
+ // The build-time shell capture phase (producer B, #699) stamps entries
1797
+ // with THIS instance's version — the value folded into the shipped worker
1798
+ // — never the discovery temp server's own version-plugin value (a
1799
+ // different Date.now() stamp that would fail the serve-side gate).
1800
+ api: {
1801
+ getBuildVersion: () => currentVersion
1802
+ },
1803
+ configResolved(config) {
1804
+ isDev = config.command === "serve";
1805
+ resolvedCacheDir = config.cacheDir ? String(config.cacheDir).replace(/\\/g, "/") : void 0;
1806
+ },
1807
+ configureServer(devServer) {
1808
+ server = devServer;
1809
+ devServer.watcher.on("unlink", (filePath) => {
1810
+ if (!isDev) return;
1811
+ if (!clientModuleSignatures.has(filePath)) return;
1812
+ clientModuleSignatures.delete(filePath);
1813
+ bumpVersion("Client module removed");
1814
+ });
1815
+ },
1816
+ resolveId(id) {
1817
+ if (id === VIRTUAL_IDS.version) {
1818
+ return "\0" + id;
1819
+ }
1820
+ return null;
1821
+ },
1822
+ load(id) {
1823
+ if (id === "\0" + VIRTUAL_IDS.version) {
1824
+ return getVirtualVersionContent(currentVersion);
1825
+ }
1826
+ return null;
1827
+ },
1828
+ transform(code, id) {
1829
+ if (!isDev || !isCodeModule(id)) return null;
1830
+ const normalizedId = normalizeModuleId(id);
1831
+ if (!code.includes("use client") && !clientModuleSignatures.has(normalizedId)) {
1832
+ return null;
1833
+ }
1834
+ const signature = getClientModuleSignature(code);
1835
+ if (signature) {
1836
+ clientModuleSignatures.set(normalizedId, signature);
1837
+ } else {
1838
+ clientModuleSignatures.delete(normalizedId);
1839
+ }
1840
+ return null;
1841
+ },
1842
+ async hotUpdate(ctx) {
1843
+ if (!isDev) return;
1844
+ const isRscModule = this.environment?.name === "rsc";
1845
+ if (!isRscModule) return;
1846
+ if (isViteDepCachePath(ctx.file, resolvedCacheDir)) return;
1847
+ if (ctx.modules.length === 1 && ctx.modules[0].id === "\0" + VIRTUAL_IDS.version) {
1848
+ return;
1849
+ }
1850
+ if (isCodeModule(ctx.file)) {
1851
+ const filePath = normalizeModuleId(ctx.file);
1852
+ const previousSignature = clientModuleSignatures.get(filePath);
1853
+ try {
1854
+ const source = await ctx.read();
1855
+ const nextSignature = getClientModuleSignature(source);
1856
+ if (nextSignature) {
1857
+ clientModuleSignatures.set(filePath, nextSignature);
1858
+ if (previousSignature && previousSignature.key === nextSignature.key) {
1859
+ return;
1860
+ }
1861
+ } else {
1862
+ clientModuleSignatures.delete(filePath);
1863
+ if (!previousSignature) {
1864
+ if (ctx.modules.length === 0) return;
1865
+ }
1866
+ }
1867
+ } catch {
1868
+ }
1869
+ } else {
1870
+ if (ctx.modules.length === 0) return;
1871
+ }
1872
+ bumpVersion("RSC module changed");
1873
+ }
1874
+ };
1875
+ }
1876
+ function isViteDepCachePath(filePath, cacheDir) {
1877
+ if (!filePath) return false;
1878
+ const normalized = filePath.replace(/\\/g, "/");
1879
+ if (cacheDir) {
1880
+ const normalizedCacheDir = cacheDir.replace(/\\/g, "/").replace(/\/+$/, "");
1881
+ if (normalized === normalizedCacheDir || normalized.startsWith(normalizedCacheDir + "/")) {
1882
+ return true;
1883
+ }
1884
+ }
1885
+ return /\/node_modules\/\.vite[^/]*\//.test(normalized) || normalized.includes("/.vite-isolated/");
1886
+ }
1887
+ var init_version_plugin = __esm({
1888
+ "src/vite/plugins/version-plugin.ts"() {
1889
+ "use strict";
1890
+ init_virtual_entries();
1891
+ init_directive_prologue();
1892
+ }
1893
+ });
1894
+
1895
+ // src/vite/plugins/virtual-stub-plugin.ts
1896
+ var virtual_stub_plugin_exports = {};
1897
+ __export(virtual_stub_plugin_exports, {
1898
+ createVirtualStubPlugin: () => createVirtualStubPlugin
1899
+ });
1900
+ function createVirtualStubPlugin() {
1901
+ const STUB_PREFIXES = [
1902
+ "virtual:rsc-router/",
1903
+ "virtual:entry-",
1904
+ "virtual:vite-rsc/"
1905
+ ];
1906
+ return {
1907
+ name: "@rangojs/router:virtual-stubs",
1908
+ resolveId(id) {
1909
+ if (STUB_PREFIXES.some((p) => id.startsWith(p))) {
1910
+ return "\0stub:" + id;
1911
+ }
1912
+ return null;
1913
+ },
1914
+ load(id) {
1915
+ if (id.startsWith("\0stub:")) {
1916
+ return "export default {}";
1917
+ }
1918
+ return null;
1919
+ }
1920
+ };
1921
+ }
1922
+ var init_virtual_stub_plugin = __esm({
1923
+ "src/vite/plugins/virtual-stub-plugin.ts"() {
1924
+ "use strict";
1925
+ }
1926
+ });
1927
+
1928
+ // src/build/runtime-discovery.ts
1929
+ var runtime_discovery_exports = {};
1930
+ __export(runtime_discovery_exports, {
1931
+ discoverAndWriteRouteTypes: () => discoverAndWriteRouteTypes
1932
+ });
1933
+ import { resolve as resolve3 } from "node:path";
1934
+ import { existsSync as existsSync4, readFileSync as readFileSync4, writeFileSync as writeFileSync3 } from "node:fs";
1935
+ async function discoverAndWriteRouteTypes(opts) {
1936
+ let createViteServer;
1937
+ let loadConfigFromFile;
1938
+ let rsc;
1939
+ try {
1940
+ const vite = await import("vite");
1941
+ createViteServer = vite.createServer;
1942
+ loadConfigFromFile = vite.loadConfigFromFile;
1943
+ } catch {
1944
+ throw new Error(
1945
+ "Runtime discovery requires 'vite'. Install it with: pnpm add -D vite"
1946
+ );
1947
+ }
1948
+ try {
1949
+ const rscMod = await import("@vitejs/plugin-rsc");
1950
+ rsc = rscMod.default;
1951
+ } catch {
1952
+ throw new Error(
1953
+ "Runtime discovery requires '@vitejs/plugin-rsc'. Install it with: pnpm add -D @vitejs/plugin-rsc"
1954
+ );
1955
+ }
1956
+ const { createVersionPlugin: createVersionPlugin2 } = await Promise.resolve().then(() => (init_version_plugin(), version_plugin_exports));
1957
+ const { createVirtualStubPlugin: createVirtualStubPlugin2 } = await Promise.resolve().then(() => (init_virtual_stub_plugin(), virtual_stub_plugin_exports));
1958
+ let userResolveAlias = opts.resolveAlias;
1959
+ if (!userResolveAlias) {
1960
+ const configPath = opts.configFile;
1961
+ try {
1962
+ const loaded = await loadConfigFromFile(
1963
+ { command: "serve", mode: "development" },
1964
+ configPath,
1965
+ opts.root
1966
+ );
1967
+ if (loaded?.config?.resolve?.alias) {
1968
+ userResolveAlias = loaded.config.resolve.alias;
1969
+ }
1970
+ } catch {
1971
+ }
1972
+ }
1973
+ const entryPath = resolve3(opts.entry);
1974
+ let tempServer = null;
1975
+ try {
1976
+ tempServer = await createViteServer({
1977
+ root: opts.root,
1978
+ configFile: false,
1979
+ server: { middlewareMode: true },
1980
+ appType: "custom",
1981
+ logLevel: "silent",
1982
+ cacheDir: "node_modules/.vite_rango_generate",
1983
+ resolve: userResolveAlias ? { alias: userResolveAlias } : void 0,
1984
+ esbuild: { jsx: "automatic", jsxImportSource: "react" },
1985
+ plugins: [
1986
+ rsc({
1987
+ entries: {
1988
+ client: "virtual:entry-client",
1989
+ ssr: "virtual:entry-ssr",
1990
+ rsc: entryPath
1991
+ }
1992
+ }),
1993
+ createVersionPlugin2(),
1994
+ createVirtualStubPlugin2()
1995
+ ]
1996
+ });
1997
+ const rscEnv = tempServer.environments?.rsc;
1998
+ if (!rscEnv?.runner) {
1999
+ throw new Error("RSC environment runner not available");
2000
+ }
2001
+ await rscEnv.runner.import(entryPath);
2002
+ const serverMod = await rscEnv.runner.import("@rangojs/router/server");
2003
+ const registry = serverMod.RouterRegistry;
2004
+ if (!registry || registry.size === 0) {
2005
+ throw new Error(
2006
+ `No routers found in registry after importing ${opts.entry}`
2007
+ );
2008
+ }
2009
+ const buildMod = await rscEnv.runner.import("@rangojs/router/build");
2010
+ const generateManifestFull = buildMod.generateManifestFull;
2011
+ if (!generateManifestFull) {
2012
+ throw new Error(
2013
+ "generateManifestFull not found in @rangojs/router/build"
2014
+ );
2015
+ }
2016
+ const outputFiles = [];
2017
+ let totalRouteCount = 0;
2018
+ let globalMountIndex = 0;
2019
+ let routerCount = 0;
2020
+ for (const [id, router] of registry) {
2021
+ const mounts = router.__urlpatternMounts ?? (router.urlpatterns ? [{ patterns: router.urlpatterns }] : []);
2022
+ if (mounts.length === 0) continue;
2023
+ const mountManifests = [];
2024
+ for (const mount of mounts) {
2025
+ mountManifests.push(
2026
+ await generateManifestFull(mount.patterns, globalMountIndex)
2027
+ );
2028
+ globalMountIndex++;
2029
+ }
2030
+ const manifest = mergeFullManifests(mountManifests);
2031
+ routerCount++;
2032
+ const rawManifest = manifest.routeManifest;
2033
+ const routeManifest = {};
2034
+ for (const [name, pattern] of Object.entries(rawManifest)) {
2035
+ if (!isAutoGeneratedRouteName(name)) {
2036
+ routeManifest[name] = pattern;
2037
+ }
2038
+ }
2039
+ let routeSearchSchemas = manifest.routeSearchSchemas;
2040
+ const sourceFile = router.__sourceFile;
2041
+ if (!sourceFile) {
2042
+ console.warn(
2043
+ `[rango] Router "${id}" has no __sourceFile, skipping gen file`
2044
+ );
2045
+ continue;
2046
+ }
2047
+ if (sourceFile.includes("node_modules")) {
2048
+ throw new Error(
2049
+ `[rango] Router "${id}" has sourceFile inside node_modules: ${sourceFile}
2050
+ This means createRouter() stack trace parsing matched an internal frame.
2051
+ Set an explicit \`id\` on createRouter() or check the call site.`
2052
+ );
2053
+ }
2054
+ routeSearchSchemas = resolveSearchSchemas(
2055
+ Object.keys(routeManifest),
2056
+ routeSearchSchemas,
2057
+ sourceFile
2058
+ );
2059
+ const outPath = genFileTsPath(sourceFile);
2060
+ const source = generateRouteTypesSource(
2061
+ routeManifest,
2062
+ routeSearchSchemas && Object.keys(routeSearchSchemas).length > 0 ? routeSearchSchemas : void 0
2063
+ );
2064
+ const existing = existsSync4(outPath) ? readFileSync4(outPath, "utf-8") : null;
2065
+ if (existing !== source) {
2066
+ writeFileSync3(outPath, source);
2067
+ }
2068
+ const routeCount = Object.keys(routeManifest).length;
2069
+ totalRouteCount += routeCount;
2070
+ outputFiles.push(outPath);
2071
+ console.log(
2072
+ `[rango] Generated route types (${routeCount} routes) -> ${outPath}`
2073
+ );
2074
+ }
2075
+ return {
2076
+ routerCount,
2077
+ routeCount: totalRouteCount,
2078
+ outputFiles
2079
+ };
2080
+ } finally {
2081
+ if (tempServer) {
2082
+ await tempServer.close();
2083
+ }
2084
+ }
2085
+ }
2086
+ var init_runtime_discovery = __esm({
2087
+ "src/build/runtime-discovery.ts"() {
2088
+ "use strict";
2089
+ init_generate_route_types();
2090
+ init_merge_full_manifests();
2091
+ init_route_name();
2092
+ }
2093
+ });
2094
+
2095
+ // src/bin/rango.ts
2096
+ init_generate_route_types();
2097
+ import { resolve as resolve4, dirname as dirname3 } from "node:path";
2098
+ import { readFileSync as readFileSync5, statSync, existsSync as existsSync5 } from "node:fs";
2099
+ var [command, ...rawArgs] = process.argv.slice(2);
2100
+ if (command === "generate") {
2101
+ let mode = "default";
2102
+ let configFile;
2103
+ const positionalArgs = [];
2104
+ for (let i = 0; i < rawArgs.length; i++) {
2105
+ const arg = rawArgs[i];
2106
+ if (arg === "--runtime") {
2107
+ mode = "runtime";
2108
+ } else if (arg === "--static") {
2109
+ mode = "static";
2110
+ } else if (arg === "--config") {
2111
+ configFile = rawArgs[++i];
2112
+ if (!configFile) {
2113
+ console.error("[rango] --config requires a path argument");
2114
+ process.exit(1);
2115
+ }
2116
+ } else if (arg.startsWith("--")) {
2117
+ console.error(`[rango] Unknown flag: ${arg}`);
2118
+ process.exit(1);
2119
+ } else {
2120
+ positionalArgs.push(arg);
2121
+ }
2122
+ }
2123
+ if (positionalArgs.length === 0) {
2124
+ console.error(
2125
+ "[rango] Usage: rango generate <file|dir> [file2 ...] [--runtime|--static] [--config <path>]"
2126
+ );
2127
+ process.exit(1);
2128
+ }
2129
+ if (configFile && mode !== "runtime") {
2130
+ console.warn("[rango] --config is only used with --runtime, ignoring");
2131
+ }
2132
+ if (mode === "runtime") {
2133
+ runRuntimeDiscovery(positionalArgs, configFile).catch((err) => {
2134
+ console.error(`[rango] Runtime discovery failed: ${err.message}`);
2135
+ process.exit(1);
2136
+ });
2137
+ } else {
2138
+ runStaticGeneration(positionalArgs, mode);
2139
+ }
2140
+ } else {
2141
+ if (command && command !== "help" && command !== "--help" && command !== "-h") {
2142
+ console.error(`[rango] Unknown command: ${command}
2143
+ `);
2144
+ }
2145
+ console.log(`Usage: rango generate <file|dir> [file2 ...] [--runtime|--static] [--config <path>]
2146
+
2147
+ Auto-detects file type (createRouter, urls) and generates
2148
+ the appropriate .gen.ts route type files.
2149
+
2150
+ Modes:
2151
+ (default) Static parser with error on unresolvable includes
2152
+ --runtime Vite-based runtime discovery (100% coverage)
2153
+ Requires vite and @vitejs/plugin-rsc
2154
+ --static Static parser, accept partial output with warnings
2155
+
2156
+ Options:
2157
+ --config <path> Path to vite.config.ts (--runtime only, auto-detected if omitted)
2158
+
2159
+ Examples:
2160
+ rango generate src/router.tsx
2161
+ rango generate src/router.tsx --runtime
2162
+ rango generate src/ --static`);
2163
+ process.exit(
2164
+ command && command !== "help" && command !== "--help" && command !== "-h" ? 1 : 0
2165
+ );
2166
+ }
2167
+ function findProjectRoot(fromPath) {
2168
+ let dir = dirname3(resolve4(fromPath));
2169
+ while (dir !== dirname3(dir)) {
2170
+ if (existsSync5(resolve4(dir, "package.json")) || existsSync5(resolve4(dir, "vite.config.ts")) || existsSync5(resolve4(dir, "vite.config.js"))) {
2171
+ return dir;
2172
+ }
2173
+ dir = dirname3(dir);
2174
+ }
2175
+ return process.cwd();
2176
+ }
2177
+ function runStaticGeneration(args, mode) {
2178
+ const files = [];
2179
+ for (const arg of args) {
2180
+ const resolved = resolve4(arg);
2181
+ try {
2182
+ if (statSync(resolved).isDirectory()) {
2183
+ files.push(...findTsFiles(resolved));
2184
+ } else {
2185
+ files.push(resolved);
2186
+ }
2187
+ } catch {
2188
+ console.warn(`[rango] Skipping ${arg}: not found`);
2189
+ }
2190
+ }
2191
+ if (files.length === 0) {
2192
+ console.log("[rango] No files to process");
2193
+ process.exit(0);
2194
+ }
2195
+ const routerFiles = [];
2196
+ const urlsFiles = [];
2197
+ for (const filePath of files) {
2198
+ try {
2199
+ const source = readFileSync5(filePath, "utf-8");
2200
+ if (/\bcreateRouter\s*[<(]/.test(source)) {
2201
+ routerFiles.push(filePath);
2202
+ }
2203
+ if (source.includes("urls(") || source.includes("clientUrls(")) {
2204
+ urlsFiles.push(filePath);
2205
+ }
2206
+ } catch (err) {
2207
+ console.warn(
2208
+ `[rango] Failed to process ${filePath}: ${err.message}`
2209
+ );
2210
+ }
2211
+ }
2212
+ const allDiagnostics = [];
2213
+ for (const routerFile of routerFiles) {
2214
+ const diagnostics = detectUnresolvableIncludes(routerFile);
2215
+ for (const d of diagnostics) {
2216
+ allDiagnostics.push({ ...d, routerFile });
2217
+ }
2218
+ }
2219
+ const routerFileSet = new Set(routerFiles);
2220
+ for (const urlsFile of urlsFiles) {
2221
+ if (routerFileSet.has(urlsFile)) continue;
2222
+ const diagnostics = detectUnresolvableIncludesForUrlsFile(urlsFile);
2223
+ for (const d of diagnostics) {
2224
+ allDiagnostics.push({ ...d, routerFile: urlsFile });
2225
+ }
2226
+ }
2227
+ const seen = /* @__PURE__ */ new Set();
2228
+ const uniqueDiagnostics = allDiagnostics.filter((d) => {
2229
+ const key = `${d.sourceFile}:${d.pathPrefix}:${d.reason}`;
2230
+ if (seen.has(key)) return false;
2231
+ seen.add(key);
2232
+ return true;
2233
+ });
2234
+ if (uniqueDiagnostics.length > 0 && mode === "default") {
2235
+ console.error("\n[rango] Unresolvable includes detected:\n");
2236
+ formatDiagnostics(uniqueDiagnostics);
2237
+ console.error(
2238
+ "\nThe static parser cannot resolve these includes because they use factory functions or dynamic expressions.\n\nOptions:\n rango generate <path> --runtime Use Vite-based discovery (requires vite)\n rango generate <path> --static Accept partial output (missing routes above)\n"
2239
+ );
2240
+ process.exit(1);
2241
+ }
2242
+ if (uniqueDiagnostics.length > 0 && mode === "static") {
2243
+ console.warn(
2244
+ "\n[rango] Warning: partial output (unresolvable includes):\n"
2245
+ );
2246
+ formatDiagnostics(uniqueDiagnostics);
2247
+ console.warn("");
2248
+ }
2249
+ const nestedRouterConflict = findNestedRouterConflict(routerFiles);
2250
+ if (nestedRouterConflict) {
2251
+ console.error(
2252
+ `
2253
+ ${formatNestedRouterConflictError(nestedRouterConflict, "[rango]")}
2254
+ `
2255
+ );
2256
+ process.exit(1);
2257
+ }
2258
+ for (const urlsFile of urlsFiles) {
2259
+ writePerModuleRouteTypesForFile(urlsFile);
2260
+ }
2261
+ for (const routerFile of routerFiles) {
2262
+ const projectRoot = findProjectRoot(routerFile);
2263
+ writeCombinedRouteTypes(projectRoot, [routerFile]);
2264
+ }
2265
+ console.log(
2266
+ `[rango] Processed ${files.length} file(s)${routerFiles.length ? ` (${routerFiles.length} router)` : ""}`
2267
+ );
2268
+ process.exit(0);
2269
+ }
2270
+ async function runRuntimeDiscovery(args, configFile) {
2271
+ const files = [];
2272
+ for (const arg of args) {
2273
+ const resolved = resolve4(arg);
2274
+ try {
2275
+ if (statSync(resolved).isDirectory()) {
2276
+ files.push(...findTsFiles(resolved));
2277
+ } else {
2278
+ files.push(resolved);
2279
+ }
2280
+ } catch {
2281
+ console.warn(`[rango] Skipping ${arg}: not found`);
2282
+ }
2283
+ }
2284
+ const routerEntries = [];
2285
+ for (const filePath of files) {
2286
+ try {
2287
+ const source = readFileSync5(filePath, "utf-8");
2288
+ if (/\bcreateRouter\s*[<(]/.test(source)) {
2289
+ routerEntries.push(filePath);
2290
+ }
2291
+ if (source.includes("urls(") || source.includes("clientUrls(")) {
2292
+ writePerModuleRouteTypesForFile(filePath);
2293
+ }
2294
+ } catch {
2295
+ }
2296
+ }
2297
+ if (routerEntries.length === 0) {
2298
+ console.error("[rango] No router files found in the provided paths");
2299
+ process.exit(1);
2300
+ }
2301
+ const nestedRouterConflict = findNestedRouterConflict(routerEntries);
2302
+ if (nestedRouterConflict) {
2303
+ console.error(
2304
+ `
2305
+ ${formatNestedRouterConflictError(nestedRouterConflict, "[rango]")}
2306
+ `
2307
+ );
2308
+ process.exit(1);
2309
+ }
2310
+ let discoverAndWriteRouteTypes2;
2311
+ try {
2312
+ const mod = await Promise.resolve().then(() => (init_runtime_discovery(), runtime_discovery_exports));
2313
+ discoverAndWriteRouteTypes2 = mod.discoverAndWriteRouteTypes;
2314
+ } catch (err) {
2315
+ if (err.code === "ERR_MODULE_NOT_FOUND" || err.code === "MODULE_NOT_FOUND") {
2316
+ console.error(
2317
+ "[rango] Runtime discovery requires 'vite' and '@vitejs/plugin-rsc'.\nInstall them with: pnpm add -D vite @vitejs/plugin-rsc"
2318
+ );
2319
+ } else {
2320
+ console.error(`[rango] Failed to load runtime discovery: ${err.message}`);
2321
+ }
2322
+ process.exit(1);
2323
+ }
2324
+ for (const entry of routerEntries) {
2325
+ const projectRoot = findProjectRoot(entry);
2326
+ const result = await discoverAndWriteRouteTypes2({
2327
+ root: projectRoot,
2328
+ configFile,
2329
+ entry
2330
+ });
2331
+ console.log(
2332
+ `[rango] Runtime discovery: ${result.routerCount} router(s), ${result.routeCount} route(s)`
2333
+ );
2334
+ }
2335
+ }
2336
+ function formatDiagnostics(diagnostics) {
2337
+ for (const d of diagnostics) {
2338
+ const prefix = d.namePrefix ? `${d.namePrefix}.*` : `${d.pathPrefix}*`;
2339
+ console.error(` ${prefix}`);
2340
+ console.error(` Reason: ${d.reason} -- ${d.detail}`);
2341
+ console.error(` Source: ${d.sourceFile}`);
2342
+ }
2343
+ }