@rangojs/router 0.0.0-experimental.137 → 0.0.0-experimental.139

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 (866) hide show
  1. package/README.md +273 -924
  2. package/dist/bin/rango.js +265 -56
  3. package/dist/vite/index.js +710 -119
  4. package/package.json +16 -1
  5. package/skills/comparison/SKILL.md +50 -0
  6. package/skills/comparison/agents/openai.yaml +4 -0
  7. package/skills/comparison/references/framework-comparison.md +837 -0
  8. package/skills/composability/SKILL.md +50 -0
  9. package/skills/host-router/SKILL.md +45 -3
  10. package/skills/layout/SKILL.md +26 -9
  11. package/skills/middleware/SKILL.md +6 -2
  12. package/skills/migrate-nextjs/SKILL.md +12 -0
  13. package/skills/observability/SKILL.md +23 -1
  14. package/skills/parallel/SKILL.md +11 -3
  15. package/skills/rango/SKILL.md +76 -24
  16. package/skills/response-routes/SKILL.md +14 -0
  17. package/skills/route/SKILL.md +19 -3
  18. package/skills/router-setup/SKILL.md +13 -0
  19. package/skills/shell-manifest/SKILL.md +185 -0
  20. package/skills/testing/reverse-and-types.md +8 -7
  21. package/skills/vercel/SKILL.md +128 -0
  22. package/src/build/generate-manifest.ts +155 -131
  23. package/src/build/generate-route-types.ts +1 -0
  24. package/src/build/index.ts +3 -1
  25. package/src/build/route-types/include-resolution.ts +347 -47
  26. package/src/build/route-types/router-processing.ts +77 -27
  27. package/src/build/runtime-discovery.ts +4 -1
  28. package/src/cache/cf/cf-cache-store.ts +22 -0
  29. package/src/cache/index.ts +12 -0
  30. package/src/cache/vercel/index.ts +11 -0
  31. package/src/cache/vercel/vercel-cache-store.ts +948 -0
  32. package/src/host/errors.ts +15 -0
  33. package/src/host/index.ts +1 -0
  34. package/src/router/find-match.ts +71 -7
  35. package/src/router/lazy-includes.ts +64 -10
  36. package/src/router/manifest.ts +43 -6
  37. package/src/router/match-api.ts +2 -2
  38. package/src/router/navigation-snapshot.ts +7 -5
  39. package/src/router/prerender-match.ts +4 -2
  40. package/src/router/preview-match.ts +3 -1
  41. package/src/router/request-classification.ts +3 -1
  42. package/src/router/route-snapshot.ts +4 -2
  43. package/src/router/router-context.ts +3 -1
  44. package/src/router/router-interfaces.ts +9 -1
  45. package/src/router.ts +9 -2
  46. package/src/rsc/manifest-init.ts +1 -1
  47. package/src/testing/dispatch.ts +3 -3
  48. package/src/testing/generated-routes.ts +27 -11
  49. package/src/urls/include-helper.ts +10 -8
  50. package/src/urls/include-provider.ts +71 -0
  51. package/src/urls/path-helper-types.ts +25 -1
  52. package/src/vercel/index.ts +11 -0
  53. package/src/vercel/tracing.ts +88 -0
  54. package/src/vite/discovery/discover-routers.ts +1 -1
  55. package/src/vite/discovery/state.ts +1 -1
  56. package/src/vite/index.ts +2 -0
  57. package/src/vite/plugin-types.ts +84 -2
  58. package/src/vite/plugins/vercel-output.ts +384 -0
  59. package/src/vite/plugins/virtual-entries.ts +72 -0
  60. package/src/vite/rango.ts +128 -21
  61. package/src/vite/router-discovery.ts +8 -0
  62. package/src/vite/utils/shared-utils.ts +52 -2
  63. package/dist/__internal.d.ts +0 -83
  64. package/dist/__internal.d.ts.map +0 -1
  65. package/dist/__internal.js +0 -19
  66. package/dist/__internal.js.map +0 -1
  67. package/dist/__mocks__/version.d.ts +0 -7
  68. package/dist/__mocks__/version.d.ts.map +0 -1
  69. package/dist/__mocks__/version.js +0 -7
  70. package/dist/__mocks__/version.js.map +0 -1
  71. package/dist/__tests__/client-href.test.d.ts +0 -2
  72. package/dist/__tests__/client-href.test.d.ts.map +0 -1
  73. package/dist/__tests__/client-href.test.js +0 -74
  74. package/dist/__tests__/client-href.test.js.map +0 -1
  75. package/dist/__tests__/component-utils.test.d.ts +0 -2
  76. package/dist/__tests__/component-utils.test.d.ts.map +0 -1
  77. package/dist/__tests__/component-utils.test.js +0 -51
  78. package/dist/__tests__/component-utils.test.js.map +0 -1
  79. package/dist/__tests__/event-controller.test.d.ts +0 -2
  80. package/dist/__tests__/event-controller.test.d.ts.map +0 -1
  81. package/dist/__tests__/event-controller.test.js +0 -538
  82. package/dist/__tests__/event-controller.test.js.map +0 -1
  83. package/dist/__tests__/helpers/route-tree.d.ts +0 -118
  84. package/dist/__tests__/helpers/route-tree.d.ts.map +0 -1
  85. package/dist/__tests__/helpers/route-tree.js +0 -374
  86. package/dist/__tests__/helpers/route-tree.js.map +0 -1
  87. package/dist/__tests__/match-result.test.d.ts +0 -2
  88. package/dist/__tests__/match-result.test.d.ts.map +0 -1
  89. package/dist/__tests__/match-result.test.js +0 -154
  90. package/dist/__tests__/match-result.test.js.map +0 -1
  91. package/dist/__tests__/navigation-store.test.d.ts +0 -2
  92. package/dist/__tests__/navigation-store.test.d.ts.map +0 -1
  93. package/dist/__tests__/navigation-store.test.js +0 -440
  94. package/dist/__tests__/navigation-store.test.js.map +0 -1
  95. package/dist/__tests__/partial-update.test.d.ts +0 -2
  96. package/dist/__tests__/partial-update.test.d.ts.map +0 -1
  97. package/dist/__tests__/partial-update.test.js +0 -1009
  98. package/dist/__tests__/partial-update.test.js.map +0 -1
  99. package/dist/__tests__/reverse-types.test.d.ts +0 -8
  100. package/dist/__tests__/reverse-types.test.d.ts.map +0 -1
  101. package/dist/__tests__/reverse-types.test.js +0 -656
  102. package/dist/__tests__/reverse-types.test.js.map +0 -1
  103. package/dist/__tests__/route-definition.test.d.ts +0 -2
  104. package/dist/__tests__/route-definition.test.d.ts.map +0 -1
  105. package/dist/__tests__/route-definition.test.js +0 -55
  106. package/dist/__tests__/route-definition.test.js.map +0 -1
  107. package/dist/__tests__/router-helpers.test.d.ts +0 -2
  108. package/dist/__tests__/router-helpers.test.d.ts.map +0 -1
  109. package/dist/__tests__/router-helpers.test.js +0 -377
  110. package/dist/__tests__/router-helpers.test.js.map +0 -1
  111. package/dist/__tests__/router-integration-2.test.d.ts +0 -2
  112. package/dist/__tests__/router-integration-2.test.d.ts.map +0 -1
  113. package/dist/__tests__/router-integration-2.test.js +0 -426
  114. package/dist/__tests__/router-integration-2.test.js.map +0 -1
  115. package/dist/__tests__/router-integration.test.d.ts +0 -2
  116. package/dist/__tests__/router-integration.test.d.ts.map +0 -1
  117. package/dist/__tests__/router-integration.test.js +0 -1051
  118. package/dist/__tests__/router-integration.test.js.map +0 -1
  119. package/dist/__tests__/search-params.test.d.ts +0 -5
  120. package/dist/__tests__/search-params.test.d.ts.map +0 -1
  121. package/dist/__tests__/search-params.test.js +0 -306
  122. package/dist/__tests__/search-params.test.js.map +0 -1
  123. package/dist/__tests__/segment-system.test.d.ts +0 -2
  124. package/dist/__tests__/segment-system.test.d.ts.map +0 -1
  125. package/dist/__tests__/segment-system.test.js +0 -627
  126. package/dist/__tests__/segment-system.test.js.map +0 -1
  127. package/dist/__tests__/static-handler-types.test.d.ts +0 -8
  128. package/dist/__tests__/static-handler-types.test.d.ts.map +0 -1
  129. package/dist/__tests__/static-handler-types.test.js +0 -63
  130. package/dist/__tests__/static-handler-types.test.js.map +0 -1
  131. package/dist/__tests__/urls.test.d.ts +0 -2
  132. package/dist/__tests__/urls.test.d.ts.map +0 -1
  133. package/dist/__tests__/urls.test.js +0 -421
  134. package/dist/__tests__/urls.test.js.map +0 -1
  135. package/dist/__tests__/use-mount.test.d.ts +0 -2
  136. package/dist/__tests__/use-mount.test.d.ts.map +0 -1
  137. package/dist/__tests__/use-mount.test.js +0 -35
  138. package/dist/__tests__/use-mount.test.js.map +0 -1
  139. package/dist/bin/rango.d.ts +0 -2
  140. package/dist/bin/rango.d.ts.map +0 -1
  141. package/dist/bin/rango.js.map +0 -1
  142. package/dist/browser/event-controller.d.ts +0 -191
  143. package/dist/browser/event-controller.d.ts.map +0 -1
  144. package/dist/browser/event-controller.js +0 -559
  145. package/dist/browser/event-controller.js.map +0 -1
  146. package/dist/browser/index.d.ts +0 -2
  147. package/dist/browser/index.d.ts.map +0 -1
  148. package/dist/browser/index.js +0 -14
  149. package/dist/browser/index.js.map +0 -1
  150. package/dist/browser/link-interceptor.d.ts +0 -38
  151. package/dist/browser/link-interceptor.d.ts.map +0 -1
  152. package/dist/browser/link-interceptor.js +0 -99
  153. package/dist/browser/link-interceptor.js.map +0 -1
  154. package/dist/browser/logging.d.ts +0 -10
  155. package/dist/browser/logging.d.ts.map +0 -1
  156. package/dist/browser/logging.js +0 -29
  157. package/dist/browser/logging.js.map +0 -1
  158. package/dist/browser/lru-cache.d.ts +0 -17
  159. package/dist/browser/lru-cache.d.ts.map +0 -1
  160. package/dist/browser/lru-cache.js +0 -50
  161. package/dist/browser/lru-cache.js.map +0 -1
  162. package/dist/browser/merge-segment-loaders.d.ts +0 -39
  163. package/dist/browser/merge-segment-loaders.d.ts.map +0 -1
  164. package/dist/browser/merge-segment-loaders.js +0 -102
  165. package/dist/browser/merge-segment-loaders.js.map +0 -1
  166. package/dist/browser/navigation-bridge.d.ts +0 -102
  167. package/dist/browser/navigation-bridge.d.ts.map +0 -1
  168. package/dist/browser/navigation-bridge.js +0 -708
  169. package/dist/browser/navigation-bridge.js.map +0 -1
  170. package/dist/browser/navigation-client.d.ts +0 -25
  171. package/dist/browser/navigation-client.d.ts.map +0 -1
  172. package/dist/browser/navigation-client.js +0 -157
  173. package/dist/browser/navigation-client.js.map +0 -1
  174. package/dist/browser/navigation-store.d.ts +0 -101
  175. package/dist/browser/navigation-store.d.ts.map +0 -1
  176. package/dist/browser/navigation-store.js +0 -625
  177. package/dist/browser/navigation-store.js.map +0 -1
  178. package/dist/browser/partial-update.d.ts +0 -75
  179. package/dist/browser/partial-update.d.ts.map +0 -1
  180. package/dist/browser/partial-update.js +0 -426
  181. package/dist/browser/partial-update.js.map +0 -1
  182. package/dist/browser/react/Link.d.ts +0 -86
  183. package/dist/browser/react/Link.d.ts.map +0 -1
  184. package/dist/browser/react/Link.js +0 -128
  185. package/dist/browser/react/Link.js.map +0 -1
  186. package/dist/browser/react/NavigationProvider.d.ts +0 -63
  187. package/dist/browser/react/NavigationProvider.d.ts.map +0 -1
  188. package/dist/browser/react/NavigationProvider.js +0 -216
  189. package/dist/browser/react/NavigationProvider.js.map +0 -1
  190. package/dist/browser/react/ScrollRestoration.d.ts +0 -75
  191. package/dist/browser/react/ScrollRestoration.d.ts.map +0 -1
  192. package/dist/browser/react/ScrollRestoration.js +0 -57
  193. package/dist/browser/react/ScrollRestoration.js.map +0 -1
  194. package/dist/browser/react/context.d.ts +0 -46
  195. package/dist/browser/react/context.d.ts.map +0 -1
  196. package/dist/browser/react/context.js +0 -10
  197. package/dist/browser/react/context.js.map +0 -1
  198. package/dist/browser/react/index.d.ts +0 -11
  199. package/dist/browser/react/index.d.ts.map +0 -1
  200. package/dist/browser/react/index.js +0 -22
  201. package/dist/browser/react/index.js.map +0 -1
  202. package/dist/browser/react/location-state-shared.d.ts +0 -63
  203. package/dist/browser/react/location-state-shared.d.ts.map +0 -1
  204. package/dist/browser/react/location-state-shared.js +0 -81
  205. package/dist/browser/react/location-state-shared.js.map +0 -1
  206. package/dist/browser/react/location-state.d.ts +0 -23
  207. package/dist/browser/react/location-state.d.ts.map +0 -1
  208. package/dist/browser/react/location-state.js +0 -29
  209. package/dist/browser/react/location-state.js.map +0 -1
  210. package/dist/browser/react/mount-context.d.ts +0 -24
  211. package/dist/browser/react/mount-context.d.ts.map +0 -1
  212. package/dist/browser/react/mount-context.js +0 -24
  213. package/dist/browser/react/mount-context.js.map +0 -1
  214. package/dist/browser/react/use-action.d.ts +0 -64
  215. package/dist/browser/react/use-action.d.ts.map +0 -1
  216. package/dist/browser/react/use-action.js +0 -134
  217. package/dist/browser/react/use-action.js.map +0 -1
  218. package/dist/browser/react/use-client-cache.d.ts +0 -41
  219. package/dist/browser/react/use-client-cache.d.ts.map +0 -1
  220. package/dist/browser/react/use-client-cache.js +0 -39
  221. package/dist/browser/react/use-client-cache.js.map +0 -1
  222. package/dist/browser/react/use-handle.d.ts +0 -31
  223. package/dist/browser/react/use-handle.d.ts.map +0 -1
  224. package/dist/browser/react/use-handle.js +0 -144
  225. package/dist/browser/react/use-handle.js.map +0 -1
  226. package/dist/browser/react/use-href.d.ts +0 -33
  227. package/dist/browser/react/use-href.d.ts.map +0 -1
  228. package/dist/browser/react/use-href.js +0 -39
  229. package/dist/browser/react/use-href.js.map +0 -1
  230. package/dist/browser/react/use-link-status.d.ts +0 -37
  231. package/dist/browser/react/use-link-status.d.ts.map +0 -1
  232. package/dist/browser/react/use-link-status.js +0 -99
  233. package/dist/browser/react/use-link-status.js.map +0 -1
  234. package/dist/browser/react/use-mount.d.ts +0 -25
  235. package/dist/browser/react/use-mount.d.ts.map +0 -1
  236. package/dist/browser/react/use-mount.js +0 -30
  237. package/dist/browser/react/use-mount.js.map +0 -1
  238. package/dist/browser/react/use-navigation.d.ts +0 -27
  239. package/dist/browser/react/use-navigation.d.ts.map +0 -1
  240. package/dist/browser/react/use-navigation.js +0 -87
  241. package/dist/browser/react/use-navigation.js.map +0 -1
  242. package/dist/browser/react/use-segments.d.ts +0 -38
  243. package/dist/browser/react/use-segments.d.ts.map +0 -1
  244. package/dist/browser/react/use-segments.js +0 -130
  245. package/dist/browser/react/use-segments.js.map +0 -1
  246. package/dist/browser/request-controller.d.ts +0 -26
  247. package/dist/browser/request-controller.d.ts.map +0 -1
  248. package/dist/browser/request-controller.js +0 -147
  249. package/dist/browser/request-controller.js.map +0 -1
  250. package/dist/browser/rsc-router.d.ts +0 -129
  251. package/dist/browser/rsc-router.d.ts.map +0 -1
  252. package/dist/browser/rsc-router.js +0 -195
  253. package/dist/browser/rsc-router.js.map +0 -1
  254. package/dist/browser/scroll-restoration.d.ts +0 -93
  255. package/dist/browser/scroll-restoration.d.ts.map +0 -1
  256. package/dist/browser/scroll-restoration.js +0 -321
  257. package/dist/browser/scroll-restoration.js.map +0 -1
  258. package/dist/browser/segment-structure-assert.d.ts +0 -17
  259. package/dist/browser/segment-structure-assert.d.ts.map +0 -1
  260. package/dist/browser/segment-structure-assert.js +0 -59
  261. package/dist/browser/segment-structure-assert.js.map +0 -1
  262. package/dist/browser/server-action-bridge.d.ts +0 -26
  263. package/dist/browser/server-action-bridge.d.ts.map +0 -1
  264. package/dist/browser/server-action-bridge.js +0 -668
  265. package/dist/browser/server-action-bridge.js.map +0 -1
  266. package/dist/browser/shallow.d.ts +0 -12
  267. package/dist/browser/shallow.d.ts.map +0 -1
  268. package/dist/browser/shallow.js +0 -34
  269. package/dist/browser/shallow.js.map +0 -1
  270. package/dist/browser/types.d.ts +0 -369
  271. package/dist/browser/types.d.ts.map +0 -1
  272. package/dist/browser/types.js +0 -2
  273. package/dist/browser/types.js.map +0 -1
  274. package/dist/build/__tests__/generate-cli.test.d.ts +0 -2
  275. package/dist/build/__tests__/generate-cli.test.d.ts.map +0 -1
  276. package/dist/build/__tests__/generate-cli.test.js +0 -237
  277. package/dist/build/__tests__/generate-cli.test.js.map +0 -1
  278. package/dist/build/__tests__/generate-manifest.test.d.ts +0 -2
  279. package/dist/build/__tests__/generate-manifest.test.d.ts.map +0 -1
  280. package/dist/build/__tests__/generate-manifest.test.js +0 -119
  281. package/dist/build/__tests__/generate-manifest.test.js.map +0 -1
  282. package/dist/build/__tests__/generate-route-types.test.d.ts +0 -2
  283. package/dist/build/__tests__/generate-route-types.test.d.ts.map +0 -1
  284. package/dist/build/__tests__/generate-route-types.test.js +0 -620
  285. package/dist/build/__tests__/generate-route-types.test.js.map +0 -1
  286. package/dist/build/__tests__/per-router-manifest.test.d.ts +0 -2
  287. package/dist/build/__tests__/per-router-manifest.test.d.ts.map +0 -1
  288. package/dist/build/__tests__/per-router-manifest.test.js +0 -308
  289. package/dist/build/__tests__/per-router-manifest.test.js.map +0 -1
  290. package/dist/build/generate-manifest.d.ts +0 -81
  291. package/dist/build/generate-manifest.d.ts.map +0 -1
  292. package/dist/build/generate-manifest.js +0 -276
  293. package/dist/build/generate-manifest.js.map +0 -1
  294. package/dist/build/generate-route-types.d.ts +0 -115
  295. package/dist/build/generate-route-types.d.ts.map +0 -1
  296. package/dist/build/generate-route-types.js +0 -740
  297. package/dist/build/generate-route-types.js.map +0 -1
  298. package/dist/build/index.d.ts +0 -21
  299. package/dist/build/index.d.ts.map +0 -1
  300. package/dist/build/index.js +0 -21
  301. package/dist/build/index.js.map +0 -1
  302. package/dist/build/route-trie.d.ts +0 -71
  303. package/dist/build/route-trie.d.ts.map +0 -1
  304. package/dist/build/route-trie.js +0 -175
  305. package/dist/build/route-trie.js.map +0 -1
  306. package/dist/cache/__tests__/cache-scope.test.d.ts +0 -2
  307. package/dist/cache/__tests__/cache-scope.test.d.ts.map +0 -1
  308. package/dist/cache/__tests__/cache-scope.test.js +0 -208
  309. package/dist/cache/__tests__/cache-scope.test.js.map +0 -1
  310. package/dist/cache/__tests__/document-cache.test.d.ts +0 -2
  311. package/dist/cache/__tests__/document-cache.test.d.ts.map +0 -1
  312. package/dist/cache/__tests__/document-cache.test.js +0 -345
  313. package/dist/cache/__tests__/document-cache.test.js.map +0 -1
  314. package/dist/cache/__tests__/memory-segment-store.test.d.ts +0 -2
  315. package/dist/cache/__tests__/memory-segment-store.test.d.ts.map +0 -1
  316. package/dist/cache/__tests__/memory-segment-store.test.js +0 -425
  317. package/dist/cache/__tests__/memory-segment-store.test.js.map +0 -1
  318. package/dist/cache/__tests__/memory-store.test.d.ts +0 -2
  319. package/dist/cache/__tests__/memory-store.test.d.ts.map +0 -1
  320. package/dist/cache/__tests__/memory-store.test.js +0 -367
  321. package/dist/cache/__tests__/memory-store.test.js.map +0 -1
  322. package/dist/cache/cache-scope.d.ts +0 -102
  323. package/dist/cache/cache-scope.d.ts.map +0 -1
  324. package/dist/cache/cache-scope.js +0 -440
  325. package/dist/cache/cache-scope.js.map +0 -1
  326. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts +0 -2
  327. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts.map +0 -1
  328. package/dist/cache/cf/__tests__/cf-cache-store.test.js +0 -330
  329. package/dist/cache/cf/__tests__/cf-cache-store.test.js.map +0 -1
  330. package/dist/cache/cf/cf-cache-store.d.ts +0 -165
  331. package/dist/cache/cf/cf-cache-store.d.ts.map +0 -1
  332. package/dist/cache/cf/cf-cache-store.js +0 -242
  333. package/dist/cache/cf/cf-cache-store.js.map +0 -1
  334. package/dist/cache/cf/index.d.ts +0 -14
  335. package/dist/cache/cf/index.d.ts.map +0 -1
  336. package/dist/cache/cf/index.js +0 -17
  337. package/dist/cache/cf/index.js.map +0 -1
  338. package/dist/cache/document-cache.d.ts +0 -64
  339. package/dist/cache/document-cache.d.ts.map +0 -1
  340. package/dist/cache/document-cache.js +0 -228
  341. package/dist/cache/document-cache.js.map +0 -1
  342. package/dist/cache/index.d.ts +0 -19
  343. package/dist/cache/index.d.ts.map +0 -1
  344. package/dist/cache/index.js +0 -21
  345. package/dist/cache/index.js.map +0 -1
  346. package/dist/cache/memory-segment-store.d.ts +0 -110
  347. package/dist/cache/memory-segment-store.d.ts.map +0 -1
  348. package/dist/cache/memory-segment-store.js +0 -117
  349. package/dist/cache/memory-segment-store.js.map +0 -1
  350. package/dist/cache/memory-store.d.ts +0 -41
  351. package/dist/cache/memory-store.d.ts.map +0 -1
  352. package/dist/cache/memory-store.js +0 -191
  353. package/dist/cache/memory-store.js.map +0 -1
  354. package/dist/cache/types.d.ts +0 -317
  355. package/dist/cache/types.d.ts.map +0 -1
  356. package/dist/cache/types.js +0 -12
  357. package/dist/cache/types.js.map +0 -1
  358. package/dist/client.d.ts +0 -248
  359. package/dist/client.d.ts.map +0 -1
  360. package/dist/client.js +0 -367
  361. package/dist/client.js.map +0 -1
  362. package/dist/client.rsc.d.ts +0 -26
  363. package/dist/client.rsc.d.ts.map +0 -1
  364. package/dist/client.rsc.js +0 -46
  365. package/dist/client.rsc.js.map +0 -1
  366. package/dist/component-utils.d.ts +0 -36
  367. package/dist/component-utils.d.ts.map +0 -1
  368. package/dist/component-utils.js +0 -61
  369. package/dist/component-utils.js.map +0 -1
  370. package/dist/components/DefaultDocument.d.ts +0 -13
  371. package/dist/components/DefaultDocument.d.ts.map +0 -1
  372. package/dist/components/DefaultDocument.js +0 -15
  373. package/dist/components/DefaultDocument.js.map +0 -1
  374. package/dist/debug.d.ts +0 -58
  375. package/dist/debug.d.ts.map +0 -1
  376. package/dist/debug.js +0 -157
  377. package/dist/debug.js.map +0 -1
  378. package/dist/default-error-boundary.d.ts +0 -11
  379. package/dist/default-error-boundary.d.ts.map +0 -1
  380. package/dist/default-error-boundary.js +0 -45
  381. package/dist/default-error-boundary.js.map +0 -1
  382. package/dist/deps/browser.d.ts +0 -2
  383. package/dist/deps/browser.d.ts.map +0 -1
  384. package/dist/deps/browser.js +0 -3
  385. package/dist/deps/browser.js.map +0 -1
  386. package/dist/deps/html-stream-client.d.ts +0 -2
  387. package/dist/deps/html-stream-client.d.ts.map +0 -1
  388. package/dist/deps/html-stream-client.js +0 -3
  389. package/dist/deps/html-stream-client.js.map +0 -1
  390. package/dist/deps/html-stream-server.d.ts +0 -2
  391. package/dist/deps/html-stream-server.d.ts.map +0 -1
  392. package/dist/deps/html-stream-server.js +0 -3
  393. package/dist/deps/html-stream-server.js.map +0 -1
  394. package/dist/deps/rsc.d.ts +0 -2
  395. package/dist/deps/rsc.d.ts.map +0 -1
  396. package/dist/deps/rsc.js +0 -4
  397. package/dist/deps/rsc.js.map +0 -1
  398. package/dist/deps/ssr.d.ts +0 -2
  399. package/dist/deps/ssr.d.ts.map +0 -1
  400. package/dist/deps/ssr.js +0 -3
  401. package/dist/deps/ssr.js.map +0 -1
  402. package/dist/errors.d.ts +0 -174
  403. package/dist/errors.d.ts.map +0 -1
  404. package/dist/errors.js +0 -241
  405. package/dist/errors.js.map +0 -1
  406. package/dist/handle.d.ts +0 -78
  407. package/dist/handle.d.ts.map +0 -1
  408. package/dist/handle.js +0 -82
  409. package/dist/handle.js.map +0 -1
  410. package/dist/handles/MetaTags.d.ts +0 -14
  411. package/dist/handles/MetaTags.d.ts.map +0 -1
  412. package/dist/handles/MetaTags.js +0 -136
  413. package/dist/handles/MetaTags.js.map +0 -1
  414. package/dist/handles/index.d.ts +0 -6
  415. package/dist/handles/index.d.ts.map +0 -1
  416. package/dist/handles/index.js +0 -6
  417. package/dist/handles/index.js.map +0 -1
  418. package/dist/handles/meta.d.ts +0 -39
  419. package/dist/handles/meta.d.ts.map +0 -1
  420. package/dist/handles/meta.js +0 -202
  421. package/dist/handles/meta.js.map +0 -1
  422. package/dist/host/__tests__/errors.test.d.ts +0 -2
  423. package/dist/host/__tests__/errors.test.d.ts.map +0 -1
  424. package/dist/host/__tests__/errors.test.js +0 -76
  425. package/dist/host/__tests__/errors.test.js.map +0 -1
  426. package/dist/host/__tests__/pattern-comprehensive.test.d.ts +0 -2
  427. package/dist/host/__tests__/pattern-comprehensive.test.d.ts.map +0 -1
  428. package/dist/host/__tests__/pattern-comprehensive.test.js +0 -732
  429. package/dist/host/__tests__/pattern-comprehensive.test.js.map +0 -1
  430. package/dist/host/__tests__/pattern-matcher.test.d.ts +0 -2
  431. package/dist/host/__tests__/pattern-matcher.test.d.ts.map +0 -1
  432. package/dist/host/__tests__/pattern-matcher.test.js +0 -251
  433. package/dist/host/__tests__/pattern-matcher.test.js.map +0 -1
  434. package/dist/host/__tests__/router.test.d.ts +0 -2
  435. package/dist/host/__tests__/router.test.d.ts.map +0 -1
  436. package/dist/host/__tests__/router.test.js +0 -241
  437. package/dist/host/__tests__/router.test.js.map +0 -1
  438. package/dist/host/__tests__/testing.test.d.ts +0 -2
  439. package/dist/host/__tests__/testing.test.d.ts.map +0 -1
  440. package/dist/host/__tests__/testing.test.js +0 -64
  441. package/dist/host/__tests__/testing.test.js.map +0 -1
  442. package/dist/host/__tests__/utils.test.d.ts +0 -2
  443. package/dist/host/__tests__/utils.test.d.ts.map +0 -1
  444. package/dist/host/__tests__/utils.test.js +0 -29
  445. package/dist/host/__tests__/utils.test.js.map +0 -1
  446. package/dist/host/cookie-handler.d.ts +0 -34
  447. package/dist/host/cookie-handler.d.ts.map +0 -1
  448. package/dist/host/cookie-handler.js +0 -124
  449. package/dist/host/cookie-handler.js.map +0 -1
  450. package/dist/host/errors.d.ts +0 -56
  451. package/dist/host/errors.d.ts.map +0 -1
  452. package/dist/host/errors.js +0 -79
  453. package/dist/host/errors.js.map +0 -1
  454. package/dist/host/index.d.ts +0 -29
  455. package/dist/host/index.d.ts.map +0 -1
  456. package/dist/host/index.js +0 -32
  457. package/dist/host/index.js.map +0 -1
  458. package/dist/host/pattern-matcher.d.ts +0 -36
  459. package/dist/host/pattern-matcher.d.ts.map +0 -1
  460. package/dist/host/pattern-matcher.js +0 -172
  461. package/dist/host/pattern-matcher.js.map +0 -1
  462. package/dist/host/router.d.ts +0 -26
  463. package/dist/host/router.d.ts.map +0 -1
  464. package/dist/host/router.js +0 -218
  465. package/dist/host/router.js.map +0 -1
  466. package/dist/host/testing.d.ts +0 -36
  467. package/dist/host/testing.d.ts.map +0 -1
  468. package/dist/host/testing.js +0 -55
  469. package/dist/host/testing.js.map +0 -1
  470. package/dist/host/types.d.ts +0 -115
  471. package/dist/host/types.d.ts.map +0 -1
  472. package/dist/host/types.js +0 -7
  473. package/dist/host/types.js.map +0 -1
  474. package/dist/host/utils.d.ts +0 -21
  475. package/dist/host/utils.d.ts.map +0 -1
  476. package/dist/host/utils.js +0 -23
  477. package/dist/host/utils.js.map +0 -1
  478. package/dist/href-client.d.ts +0 -131
  479. package/dist/href-client.d.ts.map +0 -1
  480. package/dist/href-client.js +0 -64
  481. package/dist/href-client.js.map +0 -1
  482. package/dist/href-context.d.ts +0 -29
  483. package/dist/href-context.d.ts.map +0 -1
  484. package/dist/href-context.js +0 -21
  485. package/dist/href-context.js.map +0 -1
  486. package/dist/index.d.ts +0 -73
  487. package/dist/index.d.ts.map +0 -1
  488. package/dist/index.js +0 -91
  489. package/dist/index.js.map +0 -1
  490. package/dist/index.rsc.d.ts +0 -32
  491. package/dist/index.rsc.d.ts.map +0 -1
  492. package/dist/index.rsc.js +0 -40
  493. package/dist/index.rsc.js.map +0 -1
  494. package/dist/internal-debug.d.ts +0 -2
  495. package/dist/internal-debug.d.ts.map +0 -1
  496. package/dist/internal-debug.js +0 -5
  497. package/dist/internal-debug.js.map +0 -1
  498. package/dist/loader.d.ts +0 -14
  499. package/dist/loader.d.ts.map +0 -1
  500. package/dist/loader.js +0 -20
  501. package/dist/loader.js.map +0 -1
  502. package/dist/loader.rsc.d.ts +0 -19
  503. package/dist/loader.rsc.d.ts.map +0 -1
  504. package/dist/loader.rsc.js +0 -99
  505. package/dist/loader.rsc.js.map +0 -1
  506. package/dist/network-error-thrower.d.ts +0 -17
  507. package/dist/network-error-thrower.d.ts.map +0 -1
  508. package/dist/network-error-thrower.js +0 -14
  509. package/dist/network-error-thrower.js.map +0 -1
  510. package/dist/outlet-context.d.ts +0 -13
  511. package/dist/outlet-context.d.ts.map +0 -1
  512. package/dist/outlet-context.js +0 -3
  513. package/dist/outlet-context.js.map +0 -1
  514. package/dist/prerender/__tests__/param-hash.test.d.ts +0 -2
  515. package/dist/prerender/__tests__/param-hash.test.d.ts.map +0 -1
  516. package/dist/prerender/__tests__/param-hash.test.js +0 -148
  517. package/dist/prerender/__tests__/param-hash.test.js.map +0 -1
  518. package/dist/prerender/param-hash.d.ts +0 -16
  519. package/dist/prerender/param-hash.d.ts.map +0 -1
  520. package/dist/prerender/param-hash.js +0 -36
  521. package/dist/prerender/param-hash.js.map +0 -1
  522. package/dist/prerender/store.d.ts +0 -38
  523. package/dist/prerender/store.d.ts.map +0 -1
  524. package/dist/prerender/store.js +0 -61
  525. package/dist/prerender/store.js.map +0 -1
  526. package/dist/prerender.d.ts +0 -66
  527. package/dist/prerender.d.ts.map +0 -1
  528. package/dist/prerender.js +0 -57
  529. package/dist/prerender.js.map +0 -1
  530. package/dist/reverse.d.ts +0 -196
  531. package/dist/reverse.d.ts.map +0 -1
  532. package/dist/reverse.js +0 -78
  533. package/dist/reverse.js.map +0 -1
  534. package/dist/root-error-boundary.d.ts +0 -33
  535. package/dist/root-error-boundary.d.ts.map +0 -1
  536. package/dist/root-error-boundary.js +0 -165
  537. package/dist/root-error-boundary.js.map +0 -1
  538. package/dist/route-content-wrapper.d.ts +0 -46
  539. package/dist/route-content-wrapper.d.ts.map +0 -1
  540. package/dist/route-content-wrapper.js +0 -77
  541. package/dist/route-content-wrapper.js.map +0 -1
  542. package/dist/route-definition.d.ts +0 -421
  543. package/dist/route-definition.d.ts.map +0 -1
  544. package/dist/route-definition.js +0 -868
  545. package/dist/route-definition.js.map +0 -1
  546. package/dist/route-map-builder.d.ts +0 -155
  547. package/dist/route-map-builder.d.ts.map +0 -1
  548. package/dist/route-map-builder.js +0 -237
  549. package/dist/route-map-builder.js.map +0 -1
  550. package/dist/route-types.d.ts +0 -165
  551. package/dist/route-types.d.ts.map +0 -1
  552. package/dist/route-types.js +0 -7
  553. package/dist/route-types.js.map +0 -1
  554. package/dist/router/__tests__/handler-context.test.d.ts +0 -2
  555. package/dist/router/__tests__/handler-context.test.d.ts.map +0 -1
  556. package/dist/router/__tests__/handler-context.test.js +0 -65
  557. package/dist/router/__tests__/handler-context.test.js.map +0 -1
  558. package/dist/router/__tests__/loader-cycle-detection.test.d.ts +0 -2
  559. package/dist/router/__tests__/loader-cycle-detection.test.d.ts.map +0 -1
  560. package/dist/router/__tests__/loader-cycle-detection.test.js +0 -221
  561. package/dist/router/__tests__/loader-cycle-detection.test.js.map +0 -1
  562. package/dist/router/__tests__/match-context.test.d.ts +0 -2
  563. package/dist/router/__tests__/match-context.test.d.ts.map +0 -1
  564. package/dist/router/__tests__/match-context.test.js +0 -92
  565. package/dist/router/__tests__/match-context.test.js.map +0 -1
  566. package/dist/router/__tests__/match-pipelines.test.d.ts +0 -2
  567. package/dist/router/__tests__/match-pipelines.test.d.ts.map +0 -1
  568. package/dist/router/__tests__/match-pipelines.test.js +0 -417
  569. package/dist/router/__tests__/match-pipelines.test.js.map +0 -1
  570. package/dist/router/__tests__/match-result.test.d.ts +0 -2
  571. package/dist/router/__tests__/match-result.test.d.ts.map +0 -1
  572. package/dist/router/__tests__/match-result.test.js +0 -457
  573. package/dist/router/__tests__/match-result.test.js.map +0 -1
  574. package/dist/router/__tests__/on-error.test.d.ts +0 -2
  575. package/dist/router/__tests__/on-error.test.d.ts.map +0 -1
  576. package/dist/router/__tests__/on-error.test.js +0 -678
  577. package/dist/router/__tests__/on-error.test.js.map +0 -1
  578. package/dist/router/__tests__/pattern-matching.test.d.ts +0 -2
  579. package/dist/router/__tests__/pattern-matching.test.d.ts.map +0 -1
  580. package/dist/router/__tests__/pattern-matching.test.js +0 -629
  581. package/dist/router/__tests__/pattern-matching.test.js.map +0 -1
  582. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts +0 -2
  583. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts.map +0 -1
  584. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js +0 -155
  585. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js.map +0 -1
  586. package/dist/router/error-handling.d.ts +0 -77
  587. package/dist/router/error-handling.d.ts.map +0 -1
  588. package/dist/router/error-handling.js +0 -202
  589. package/dist/router/error-handling.js.map +0 -1
  590. package/dist/router/handler-context.d.ts +0 -20
  591. package/dist/router/handler-context.d.ts.map +0 -1
  592. package/dist/router/handler-context.js +0 -198
  593. package/dist/router/handler-context.js.map +0 -1
  594. package/dist/router/intercept-resolution.d.ts +0 -66
  595. package/dist/router/intercept-resolution.d.ts.map +0 -1
  596. package/dist/router/intercept-resolution.js +0 -246
  597. package/dist/router/intercept-resolution.js.map +0 -1
  598. package/dist/router/loader-resolution.d.ts +0 -64
  599. package/dist/router/loader-resolution.d.ts.map +0 -1
  600. package/dist/router/loader-resolution.js +0 -284
  601. package/dist/router/loader-resolution.js.map +0 -1
  602. package/dist/router/logging.d.ts +0 -15
  603. package/dist/router/logging.d.ts.map +0 -1
  604. package/dist/router/logging.js +0 -99
  605. package/dist/router/logging.js.map +0 -1
  606. package/dist/router/manifest.d.ts +0 -22
  607. package/dist/router/manifest.d.ts.map +0 -1
  608. package/dist/router/manifest.js +0 -181
  609. package/dist/router/manifest.js.map +0 -1
  610. package/dist/router/match-api.d.ts +0 -35
  611. package/dist/router/match-api.d.ts.map +0 -1
  612. package/dist/router/match-api.js +0 -406
  613. package/dist/router/match-api.js.map +0 -1
  614. package/dist/router/match-context.d.ts +0 -206
  615. package/dist/router/match-context.d.ts.map +0 -1
  616. package/dist/router/match-context.js +0 -17
  617. package/dist/router/match-context.js.map +0 -1
  618. package/dist/router/match-middleware/background-revalidation.d.ts +0 -127
  619. package/dist/router/match-middleware/background-revalidation.d.ts.map +0 -1
  620. package/dist/router/match-middleware/background-revalidation.js +0 -75
  621. package/dist/router/match-middleware/background-revalidation.js.map +0 -1
  622. package/dist/router/match-middleware/cache-lookup.d.ts +0 -112
  623. package/dist/router/match-middleware/cache-lookup.d.ts.map +0 -1
  624. package/dist/router/match-middleware/cache-lookup.js +0 -257
  625. package/dist/router/match-middleware/cache-lookup.js.map +0 -1
  626. package/dist/router/match-middleware/cache-store.d.ts +0 -113
  627. package/dist/router/match-middleware/cache-store.d.ts.map +0 -1
  628. package/dist/router/match-middleware/cache-store.js +0 -108
  629. package/dist/router/match-middleware/cache-store.js.map +0 -1
  630. package/dist/router/match-middleware/index.d.ts +0 -81
  631. package/dist/router/match-middleware/index.d.ts.map +0 -1
  632. package/dist/router/match-middleware/index.js +0 -80
  633. package/dist/router/match-middleware/index.js.map +0 -1
  634. package/dist/router/match-middleware/intercept-resolution.d.ts +0 -117
  635. package/dist/router/match-middleware/intercept-resolution.d.ts.map +0 -1
  636. package/dist/router/match-middleware/intercept-resolution.js +0 -134
  637. package/dist/router/match-middleware/intercept-resolution.js.map +0 -1
  638. package/dist/router/match-middleware/segment-resolution.d.ts +0 -99
  639. package/dist/router/match-middleware/segment-resolution.d.ts.map +0 -1
  640. package/dist/router/match-middleware/segment-resolution.js +0 -53
  641. package/dist/router/match-middleware/segment-resolution.js.map +0 -1
  642. package/dist/router/match-pipelines.d.ts +0 -147
  643. package/dist/router/match-pipelines.d.ts.map +0 -1
  644. package/dist/router/match-pipelines.js +0 -82
  645. package/dist/router/match-pipelines.js.map +0 -1
  646. package/dist/router/match-result.d.ts +0 -126
  647. package/dist/router/match-result.d.ts.map +0 -1
  648. package/dist/router/match-result.js +0 -93
  649. package/dist/router/match-result.js.map +0 -1
  650. package/dist/router/metrics.d.ts +0 -20
  651. package/dist/router/metrics.d.ts.map +0 -1
  652. package/dist/router/metrics.js +0 -47
  653. package/dist/router/metrics.js.map +0 -1
  654. package/dist/router/middleware.d.ts +0 -249
  655. package/dist/router/middleware.d.ts.map +0 -1
  656. package/dist/router/middleware.js +0 -434
  657. package/dist/router/middleware.js.map +0 -1
  658. package/dist/router/middleware.test.d.ts +0 -2
  659. package/dist/router/middleware.test.d.ts.map +0 -1
  660. package/dist/router/middleware.test.js +0 -816
  661. package/dist/router/middleware.test.js.map +0 -1
  662. package/dist/router/pattern-matching.d.ts +0 -149
  663. package/dist/router/pattern-matching.d.ts.map +0 -1
  664. package/dist/router/pattern-matching.js +0 -349
  665. package/dist/router/pattern-matching.js.map +0 -1
  666. package/dist/router/revalidation.d.ts +0 -44
  667. package/dist/router/revalidation.d.ts.map +0 -1
  668. package/dist/router/revalidation.js +0 -147
  669. package/dist/router/revalidation.js.map +0 -1
  670. package/dist/router/router-context.d.ts +0 -135
  671. package/dist/router/router-context.d.ts.map +0 -1
  672. package/dist/router/router-context.js +0 -36
  673. package/dist/router/router-context.js.map +0 -1
  674. package/dist/router/segment-resolution.d.ts +0 -127
  675. package/dist/router/segment-resolution.d.ts.map +0 -1
  676. package/dist/router/segment-resolution.js +0 -919
  677. package/dist/router/segment-resolution.js.map +0 -1
  678. package/dist/router/trie-matching.d.ts +0 -40
  679. package/dist/router/trie-matching.d.ts.map +0 -1
  680. package/dist/router/trie-matching.js +0 -127
  681. package/dist/router/trie-matching.js.map +0 -1
  682. package/dist/router/types.d.ts +0 -136
  683. package/dist/router/types.d.ts.map +0 -1
  684. package/dist/router/types.js +0 -7
  685. package/dist/router/types.js.map +0 -1
  686. package/dist/router.d.ts +0 -753
  687. package/dist/router.d.ts.map +0 -1
  688. package/dist/router.gen.d.ts +0 -6
  689. package/dist/router.gen.d.ts.map +0 -1
  690. package/dist/router.gen.js +0 -6
  691. package/dist/router.gen.js.map +0 -1
  692. package/dist/router.js +0 -1304
  693. package/dist/router.js.map +0 -1
  694. package/dist/rsc/__tests__/helpers.test.d.ts +0 -2
  695. package/dist/rsc/__tests__/helpers.test.d.ts.map +0 -1
  696. package/dist/rsc/__tests__/helpers.test.js +0 -140
  697. package/dist/rsc/__tests__/helpers.test.js.map +0 -1
  698. package/dist/rsc/handler.d.ts +0 -45
  699. package/dist/rsc/handler.d.ts.map +0 -1
  700. package/dist/rsc/handler.js +0 -1172
  701. package/dist/rsc/handler.js.map +0 -1
  702. package/dist/rsc/helpers.d.ts +0 -16
  703. package/dist/rsc/helpers.d.ts.map +0 -1
  704. package/dist/rsc/helpers.js +0 -55
  705. package/dist/rsc/helpers.js.map +0 -1
  706. package/dist/rsc/index.d.ts +0 -22
  707. package/dist/rsc/index.d.ts.map +0 -1
  708. package/dist/rsc/index.js +0 -23
  709. package/dist/rsc/index.js.map +0 -1
  710. package/dist/rsc/nonce.d.ts +0 -9
  711. package/dist/rsc/nonce.d.ts.map +0 -1
  712. package/dist/rsc/nonce.js +0 -18
  713. package/dist/rsc/nonce.js.map +0 -1
  714. package/dist/rsc/types.d.ts +0 -206
  715. package/dist/rsc/types.d.ts.map +0 -1
  716. package/dist/rsc/types.js +0 -8
  717. package/dist/rsc/types.js.map +0 -1
  718. package/dist/search-params.d.ts +0 -103
  719. package/dist/search-params.d.ts.map +0 -1
  720. package/dist/search-params.js +0 -74
  721. package/dist/search-params.js.map +0 -1
  722. package/dist/segment-system.d.ts +0 -75
  723. package/dist/segment-system.d.ts.map +0 -1
  724. package/dist/segment-system.js +0 -336
  725. package/dist/segment-system.js.map +0 -1
  726. package/dist/server/context.d.ts +0 -245
  727. package/dist/server/context.d.ts.map +0 -1
  728. package/dist/server/context.js +0 -197
  729. package/dist/server/context.js.map +0 -1
  730. package/dist/server/fetchable-loader-store.d.ts +0 -18
  731. package/dist/server/fetchable-loader-store.d.ts.map +0 -1
  732. package/dist/server/fetchable-loader-store.js +0 -18
  733. package/dist/server/fetchable-loader-store.js.map +0 -1
  734. package/dist/server/handle-store.d.ts +0 -85
  735. package/dist/server/handle-store.d.ts.map +0 -1
  736. package/dist/server/handle-store.js +0 -142
  737. package/dist/server/handle-store.js.map +0 -1
  738. package/dist/server/loader-registry.d.ts +0 -55
  739. package/dist/server/loader-registry.d.ts.map +0 -1
  740. package/dist/server/loader-registry.js +0 -132
  741. package/dist/server/loader-registry.js.map +0 -1
  742. package/dist/server/request-context.d.ts +0 -226
  743. package/dist/server/request-context.d.ts.map +0 -1
  744. package/dist/server/request-context.js +0 -290
  745. package/dist/server/request-context.js.map +0 -1
  746. package/dist/server/root-layout.d.ts +0 -4
  747. package/dist/server/root-layout.d.ts.map +0 -1
  748. package/dist/server/root-layout.js +0 -5
  749. package/dist/server/root-layout.js.map +0 -1
  750. package/dist/server.d.ts +0 -15
  751. package/dist/server.d.ts.map +0 -1
  752. package/dist/server.js +0 -20
  753. package/dist/server.js.map +0 -1
  754. package/dist/ssr/__tests__/ssr-handler.test.d.ts +0 -2
  755. package/dist/ssr/__tests__/ssr-handler.test.d.ts.map +0 -1
  756. package/dist/ssr/__tests__/ssr-handler.test.js +0 -132
  757. package/dist/ssr/__tests__/ssr-handler.test.js.map +0 -1
  758. package/dist/ssr/index.d.ts +0 -98
  759. package/dist/ssr/index.d.ts.map +0 -1
  760. package/dist/ssr/index.js +0 -158
  761. package/dist/ssr/index.js.map +0 -1
  762. package/dist/static-handler.d.ts +0 -50
  763. package/dist/static-handler.d.ts.map +0 -1
  764. package/dist/static-handler.gen.d.ts +0 -5
  765. package/dist/static-handler.gen.d.ts.map +0 -1
  766. package/dist/static-handler.gen.js +0 -5
  767. package/dist/static-handler.gen.js.map +0 -1
  768. package/dist/static-handler.js +0 -29
  769. package/dist/static-handler.js.map +0 -1
  770. package/dist/theme/ThemeProvider.d.ts +0 -20
  771. package/dist/theme/ThemeProvider.d.ts.map +0 -1
  772. package/dist/theme/ThemeProvider.js +0 -240
  773. package/dist/theme/ThemeProvider.js.map +0 -1
  774. package/dist/theme/ThemeScript.d.ts +0 -48
  775. package/dist/theme/ThemeScript.d.ts.map +0 -1
  776. package/dist/theme/ThemeScript.js +0 -13
  777. package/dist/theme/ThemeScript.js.map +0 -1
  778. package/dist/theme/__tests__/theme.test.d.ts +0 -2
  779. package/dist/theme/__tests__/theme.test.d.ts.map +0 -1
  780. package/dist/theme/__tests__/theme.test.js +0 -103
  781. package/dist/theme/__tests__/theme.test.js.map +0 -1
  782. package/dist/theme/constants.d.ts +0 -29
  783. package/dist/theme/constants.d.ts.map +0 -1
  784. package/dist/theme/constants.js +0 -48
  785. package/dist/theme/constants.js.map +0 -1
  786. package/dist/theme/index.d.ts +0 -31
  787. package/dist/theme/index.d.ts.map +0 -1
  788. package/dist/theme/index.js +0 -36
  789. package/dist/theme/index.js.map +0 -1
  790. package/dist/theme/theme-context.d.ts +0 -40
  791. package/dist/theme/theme-context.d.ts.map +0 -1
  792. package/dist/theme/theme-context.js +0 -60
  793. package/dist/theme/theme-context.js.map +0 -1
  794. package/dist/theme/theme-script.d.ts +0 -27
  795. package/dist/theme/theme-script.d.ts.map +0 -1
  796. package/dist/theme/theme-script.js +0 -147
  797. package/dist/theme/theme-script.js.map +0 -1
  798. package/dist/theme/types.d.ts +0 -163
  799. package/dist/theme/types.d.ts.map +0 -1
  800. package/dist/theme/types.js +0 -11
  801. package/dist/theme/types.js.map +0 -1
  802. package/dist/theme/use-theme.d.ts +0 -12
  803. package/dist/theme/use-theme.d.ts.map +0 -1
  804. package/dist/theme/use-theme.js +0 -40
  805. package/dist/theme/use-theme.js.map +0 -1
  806. package/dist/types.d.ts +0 -1479
  807. package/dist/types.d.ts.map +0 -1
  808. package/dist/types.js +0 -10
  809. package/dist/types.js.map +0 -1
  810. package/dist/urls.d.ts +0 -441
  811. package/dist/urls.d.ts.map +0 -1
  812. package/dist/urls.gen.d.ts +0 -8
  813. package/dist/urls.gen.d.ts.map +0 -1
  814. package/dist/urls.gen.js +0 -8
  815. package/dist/urls.gen.js.map +0 -1
  816. package/dist/urls.js +0 -443
  817. package/dist/urls.js.map +0 -1
  818. package/dist/use-loader.d.ts +0 -127
  819. package/dist/use-loader.d.ts.map +0 -1
  820. package/dist/use-loader.js +0 -237
  821. package/dist/use-loader.js.map +0 -1
  822. package/dist/vite/__tests__/ast-handler-extract.test.d.ts +0 -2
  823. package/dist/vite/__tests__/ast-handler-extract.test.d.ts.map +0 -1
  824. package/dist/vite/__tests__/ast-handler-extract.test.js +0 -294
  825. package/dist/vite/__tests__/ast-handler-extract.test.js.map +0 -1
  826. package/dist/vite/__tests__/expose-id-utils.test.d.ts +0 -2
  827. package/dist/vite/__tests__/expose-id-utils.test.d.ts.map +0 -1
  828. package/dist/vite/__tests__/expose-id-utils.test.js +0 -224
  829. package/dist/vite/__tests__/expose-id-utils.test.js.map +0 -1
  830. package/dist/vite/__tests__/expose-internal-ids.test.d.ts +0 -2
  831. package/dist/vite/__tests__/expose-internal-ids.test.d.ts.map +0 -1
  832. package/dist/vite/__tests__/expose-internal-ids.test.js +0 -647
  833. package/dist/vite/__tests__/expose-internal-ids.test.js.map +0 -1
  834. package/dist/vite/__tests__/expose-router-id.test.d.ts +0 -2
  835. package/dist/vite/__tests__/expose-router-id.test.d.ts.map +0 -1
  836. package/dist/vite/__tests__/expose-router-id.test.js +0 -39
  837. package/dist/vite/__tests__/expose-router-id.test.js.map +0 -1
  838. package/dist/vite/ast-handler-extract.d.ts +0 -49
  839. package/dist/vite/ast-handler-extract.d.ts.map +0 -1
  840. package/dist/vite/ast-handler-extract.js +0 -249
  841. package/dist/vite/ast-handler-extract.js.map +0 -1
  842. package/dist/vite/expose-action-id.d.ts +0 -19
  843. package/dist/vite/expose-action-id.d.ts.map +0 -1
  844. package/dist/vite/expose-action-id.js +0 -250
  845. package/dist/vite/expose-action-id.js.map +0 -1
  846. package/dist/vite/expose-id-utils.d.ts +0 -69
  847. package/dist/vite/expose-id-utils.d.ts.map +0 -1
  848. package/dist/vite/expose-id-utils.js +0 -289
  849. package/dist/vite/expose-id-utils.js.map +0 -1
  850. package/dist/vite/expose-internal-ids.d.ts +0 -22
  851. package/dist/vite/expose-internal-ids.d.ts.map +0 -1
  852. package/dist/vite/expose-internal-ids.js +0 -886
  853. package/dist/vite/expose-internal-ids.js.map +0 -1
  854. package/dist/vite/index.d.ts +0 -149
  855. package/dist/vite/index.d.ts.map +0 -1
  856. package/dist/vite/index.js.bak +0 -5448
  857. package/dist/vite/index.js.map +0 -1
  858. package/dist/vite/index.named-routes.gen.ts +0 -103
  859. package/dist/vite/package-resolution.d.ts +0 -43
  860. package/dist/vite/package-resolution.d.ts.map +0 -1
  861. package/dist/vite/package-resolution.js +0 -112
  862. package/dist/vite/package-resolution.js.map +0 -1
  863. package/dist/vite/virtual-entries.d.ts +0 -25
  864. package/dist/vite/virtual-entries.d.ts.map +0 -1
  865. package/dist/vite/virtual-entries.js +0 -110
  866. package/dist/vite/virtual-entries.js.map +0 -1
@@ -1,6 +1,6 @@
1
1
  // src/vite/rango.ts
2
- import { readFileSync as readFileSync7 } from "node:fs";
3
- import { resolve as resolve9 } from "node:path";
2
+ import { readFileSync as readFileSync7, existsSync as existsSync8 } from "node:fs";
3
+ import { resolve as resolve11 } from "node:path";
4
4
 
5
5
  // src/vite/plugins/expose-action-id.ts
6
6
  import MagicString from "magic-string";
@@ -2279,6 +2279,77 @@ export default function handler(request, env) {
2279
2279
  }
2280
2280
  `.trim();
2281
2281
  }
2282
+ function getVirtualEntryRSCHost(hostEntryPath) {
2283
+ return `
2284
+ import * as __hostEntry from "${hostEntryPath}";
2285
+ import { isNoRouteMatchError } from "@rangojs/router/host";
2286
+
2287
+ // Register every sub-app's fetchable loaders + route manifests at startup, same
2288
+ // as the single-router entry. Discovery's host fallback populates these for all
2289
+ // mounted sub-apps, so the aggregate manifests cover the whole host tree.
2290
+ import "virtual:rsc-router/loader-manifest";
2291
+ import "virtual:rsc-router/routes-manifest";
2292
+
2293
+ // The host entry module must export the HostRouter instance (createHostRouter()),
2294
+ // as a default export or a named \`hostRouter\`/\`router\` export. A Cloudflare-style
2295
+ // \`export default { fetch }\` object is not a HostRouter and is rejected (on first
2296
+ // request; see the lazy resolution below).
2297
+ // We require BOTH .match() and .host(): a regular createRouter() also exposes
2298
+ // .match(), so matching on .match() alone would accept an ordinary router and then
2299
+ // return its MatchResult (not a Response) at runtime. .host() is unique to a
2300
+ // HostRouter, so it disambiguates a mistaken \`hostRouter\` path.
2301
+ // Exports are read dynamically (m[name]) so Rollup does not emit IMPORT_IS_UNDEFINED
2302
+ // warnings for the named exports a default-only host module legitimately omits.
2303
+ const __resolveHostRouter = (m) => {
2304
+ for (const name of ["default", "hostRouter", "router"]) {
2305
+ const candidate = m[name];
2306
+ if (
2307
+ candidate &&
2308
+ typeof candidate.match === "function" &&
2309
+ typeof candidate.host === "function"
2310
+ )
2311
+ return candidate;
2312
+ }
2313
+ return undefined;
2314
+ };
2315
+
2316
+ // Resolve + validate the HostRouter lazily on first request, mirroring the
2317
+ // single-router entry's \`_handler\`. During HMR the host module can re-evaluate
2318
+ // before its createHostRouter() export has resolved; validating at module-
2319
+ // evaluation time would then throw a spurious "must export a HostRouter" error
2320
+ // overlay for a perfectly valid app. Resolving on first request lets the live
2321
+ // binding settle first.
2322
+ let _hostRouter;
2323
+
2324
+ // input = { env, ctx } from the launcher / node server. The host router threads
2325
+ // it unchanged to each matched sub-app's handler and cache factory.
2326
+ // On node/vercel rango owns this entry, so there is no user worker to translate
2327
+ // an unmatched host into a response: catch NoRouteMatchError and return 404
2328
+ // (parity with the documented Cloudflare catch). Other errors propagate.
2329
+ export default async function handler(request, input) {
2330
+ if (!_hostRouter) {
2331
+ _hostRouter = __resolveHostRouter(__hostEntry);
2332
+ if (!_hostRouter) {
2333
+ throw new Error(
2334
+ "[rango] The host entry (${hostEntryPath}) must export a HostRouter instance (createHostRouter()) for the node/vercel preset: a default export, or a named 'hostRouter'/'router' export. An ordinary createRouter() is not a host router (it has no .host()), and a Cloudflare-style 'export default { fetch }' object is not supported on this preset."
2335
+ );
2336
+ }
2337
+ }
2338
+ try {
2339
+ return await _hostRouter.match(request, input);
2340
+ } catch (err) {
2341
+ // isNoRouteMatchError also matches by name: a workspace with a duplicated
2342
+ // @rangojs/router copy can throw a NoRouteMatchError whose prototype differs
2343
+ // from this module's import, so a bare instanceof would turn an
2344
+ // unmatched-host 404 into a 500.
2345
+ if (isNoRouteMatchError(err)) {
2346
+ return new Response("Not Found", { status: 404 });
2347
+ }
2348
+ throw err;
2349
+ }
2350
+ }
2351
+ `.trim();
2352
+ }
2282
2353
  var VIRTUAL_IDS = {
2283
2354
  browser: "virtual:rsc-router/entry.browser.js",
2284
2355
  ssr: "virtual:rsc-router/entry.ssr.js",
@@ -2297,7 +2368,7 @@ import { resolve } from "node:path";
2297
2368
  // package.json
2298
2369
  var package_default = {
2299
2370
  name: "@rangojs/router",
2300
- version: "0.0.0-experimental.137",
2371
+ version: "0.0.0-experimental.139",
2301
2372
  description: "Django-inspired RSC router with composable URL patterns",
2302
2373
  keywords: [
2303
2374
  "react",
@@ -2412,6 +2483,11 @@ var package_default = {
2412
2483
  "react-server": "./src/cloudflare/index.ts",
2413
2484
  default: "./src/cloudflare/index.ts"
2414
2485
  },
2486
+ "./vercel": {
2487
+ types: "./src/vercel/index.ts",
2488
+ "react-server": "./src/vercel/index.ts",
2489
+ default: "./src/vercel/index.ts"
2490
+ },
2415
2491
  "./theme": {
2416
2492
  types: "./src/theme/index.ts",
2417
2493
  default: "./src/theme/index.ts"
@@ -2477,9 +2553,11 @@ var package_default = {
2477
2553
  "magic-string": "^0.30.17",
2478
2554
  picomatch: "^4.0.4",
2479
2555
  "rsc-html-stream": "^0.0.7",
2556
+ srvx: "^0.11.15",
2480
2557
  tinyexec: "^0.3.2"
2481
2558
  },
2482
2559
  devDependencies: {
2560
+ "@opentelemetry/api": "^1.9.0",
2483
2561
  "@playwright/test": "^1.49.1",
2484
2562
  "@shared/e2e": "workspace:*",
2485
2563
  "@testing-library/dom": "^10.4.1",
@@ -2497,8 +2575,10 @@ var package_default = {
2497
2575
  },
2498
2576
  peerDependencies: {
2499
2577
  "@cloudflare/vite-plugin": "^1.42.1",
2578
+ "@opentelemetry/api": "^1.9.0",
2500
2579
  "@playwright/test": "^1.49.1",
2501
2580
  "@testing-library/react": ">=16",
2581
+ "@vercel/functions": "^3.0.0",
2502
2582
  "@vitejs/plugin-rsc": "^0.5.27",
2503
2583
  react: ">=19.2.6 <20",
2504
2584
  "react-dom": ">=19.2.6 <20",
@@ -2509,12 +2589,18 @@ var package_default = {
2509
2589
  "@cloudflare/vite-plugin": {
2510
2590
  optional: true
2511
2591
  },
2592
+ "@opentelemetry/api": {
2593
+ optional: true
2594
+ },
2512
2595
  "@playwright/test": {
2513
2596
  optional: true
2514
2597
  },
2515
2598
  "@testing-library/react": {
2516
2599
  optional: true
2517
2600
  },
2601
+ "@vercel/functions": {
2602
+ optional: true
2603
+ },
2518
2604
  vite: {
2519
2605
  optional: true
2520
2606
  },
@@ -2795,6 +2881,96 @@ function extractNamePrefixFromInclude(node) {
2795
2881
  }
2796
2882
  return null;
2797
2883
  }
2884
+ function thenSelectsNonDefaultMember(expr) {
2885
+ const findThenCall = (e) => {
2886
+ if (ts3.isCallExpression(e) && ts3.isPropertyAccessExpression(e.expression) && e.expression.name.text === "then") {
2887
+ return e;
2888
+ }
2889
+ if (ts3.isCallExpression(e) && ts3.isPropertyAccessExpression(e.expression)) {
2890
+ return findThenCall(e.expression.expression);
2891
+ }
2892
+ if (ts3.isPropertyAccessExpression(e)) return findThenCall(e.expression);
2893
+ if (ts3.isParenthesizedExpression(e)) return findThenCall(e.expression);
2894
+ if (ts3.isAwaitExpression(e)) return findThenCall(e.expression);
2895
+ return null;
2896
+ };
2897
+ const thenCall = findThenCall(expr);
2898
+ if (!thenCall || thenCall.arguments.length === 0) return false;
2899
+ const cb = thenCall.arguments[0];
2900
+ if (!ts3.isArrowFunction(cb) && !ts3.isFunctionExpression(cb)) return false;
2901
+ let ret;
2902
+ if (ts3.isBlock(cb.body)) {
2903
+ for (const stmt of cb.body.statements) {
2904
+ if (ts3.isReturnStatement(stmt) && stmt.expression) {
2905
+ ret = stmt.expression;
2906
+ break;
2907
+ }
2908
+ }
2909
+ } else {
2910
+ ret = cb.body;
2911
+ }
2912
+ if (!ret) return false;
2913
+ if (ts3.isPropertyAccessExpression(ret)) {
2914
+ return ret.name.text !== "default";
2915
+ }
2916
+ return false;
2917
+ }
2918
+ function extractDynamicImportSpecifier(node) {
2919
+ let body;
2920
+ if (ts3.isArrowFunction(node) || ts3.isFunctionExpression(node)) {
2921
+ body = node.body;
2922
+ }
2923
+ if (!body) return null;
2924
+ let expr;
2925
+ if (ts3.isBlock(body)) {
2926
+ for (const stmt of body.statements) {
2927
+ if (ts3.isReturnStatement(stmt) && stmt.expression) {
2928
+ expr = stmt.expression;
2929
+ break;
2930
+ }
2931
+ }
2932
+ } else {
2933
+ expr = body;
2934
+ }
2935
+ if (!expr) return null;
2936
+ const findImportCall = (e) => {
2937
+ if (ts3.isCallExpression(e) && e.expression.kind === ts3.SyntaxKind.ImportKeyword) {
2938
+ return e;
2939
+ }
2940
+ if (ts3.isCallExpression(e) && ts3.isPropertyAccessExpression(e.expression)) {
2941
+ return findImportCall(e.expression.expression);
2942
+ }
2943
+ if (ts3.isPropertyAccessExpression(e)) return findImportCall(e.expression);
2944
+ if (ts3.isParenthesizedExpression(e)) return findImportCall(e.expression);
2945
+ if (ts3.isAwaitExpression(e)) return findImportCall(e.expression);
2946
+ return null;
2947
+ };
2948
+ const importCall = findImportCall(expr);
2949
+ if (!importCall || importCall.arguments.length === 0) return null;
2950
+ if (thenSelectsNonDefaultMember(expr)) return null;
2951
+ return getStringValue(importCall.arguments[0]);
2952
+ }
2953
+ function resolveDefaultExportTarget(code, sourceFile) {
2954
+ let result = null;
2955
+ function visit(node) {
2956
+ if (result) return;
2957
+ if (ts3.isExportAssignment(node) && !node.isExportEquals) {
2958
+ const expr = node.expression;
2959
+ if (ts3.isIdentifier(expr)) {
2960
+ result = { variableName: expr.text };
2961
+ } else if (ts3.isCallExpression(expr)) {
2962
+ const callee = expr.expression;
2963
+ if (ts3.isIdentifier(callee) && callee.text === "urls") {
2964
+ result = { inlineBlock: expr.getText(sourceFile) };
2965
+ }
2966
+ }
2967
+ return;
2968
+ }
2969
+ ts3.forEachChild(node, visit);
2970
+ }
2971
+ visit(sourceFile);
2972
+ return result;
2973
+ }
2798
2974
  function extractIncludesWithDiagnostics(code, sourceFileArg) {
2799
2975
  const sourceFile = sourceFileArg ?? ts3.createSourceFile(
2800
2976
  "input.tsx",
@@ -2820,12 +2996,19 @@ function extractIncludesWithDiagnostics(code, sourceFileArg) {
2820
2996
  }
2821
2997
  const secondArg = node.arguments[1];
2822
2998
  const namePrefix = extractNamePrefixFromInclude(node);
2999
+ const dynamicImportSpec = extractDynamicImportSpecifier(secondArg);
2823
3000
  if (ts3.isIdentifier(secondArg)) {
2824
3001
  resolved.push({
2825
3002
  pathPrefix,
2826
3003
  variableName: secondArg.text,
2827
3004
  namePrefix
2828
3005
  });
3006
+ } else if (dynamicImportSpec !== null) {
3007
+ resolved.push({
3008
+ pathPrefix,
3009
+ moduleSpecifier: dynamicImportSpec,
3010
+ namePrefix
3011
+ });
2829
3012
  } else if (ts3.isCallExpression(secondArg)) {
2830
3013
  const callText = secondArg.expression.getText(sourceFile);
2831
3014
  unresolvable.push({
@@ -2929,57 +3112,94 @@ function buildRouteMapFromBlock(block, fullSource, filePath, visited, searchSche
2929
3112
  diagnosticsOut.push({ ...entry, sourceFile: filePath });
2930
3113
  }
2931
3114
  }
2932
- for (const { pathPrefix, variableName, namePrefix } of includes) {
3115
+ for (const inc of includes) {
3116
+ const { pathPrefix, namePrefix } = inc;
2933
3117
  let childResult;
2934
- const imported = resolveImportedVariable(fullSource, variableName);
2935
- if (imported) {
2936
- const targetFile = resolveImportPath(imported.specifier, filePath);
3118
+ if (inc.moduleSpecifier) {
3119
+ const targetFile = resolveImportPath(inc.moduleSpecifier, filePath);
2937
3120
  if (!targetFile) {
2938
- if (diagnosticsOut) {
2939
- diagnosticsOut.push({
2940
- pathPrefix,
2941
- namePrefix,
2942
- reason: "file-not-found",
2943
- sourceFile: filePath,
2944
- detail: `import "${imported.specifier}" resolved to no file`
2945
- });
2946
- }
3121
+ diagnosticsOut?.push({
3122
+ pathPrefix,
3123
+ namePrefix,
3124
+ reason: "file-not-found",
3125
+ sourceFile: filePath,
3126
+ detail: `import("${inc.moduleSpecifier}") resolved to no file`
3127
+ });
2947
3128
  continue;
2948
3129
  }
2949
- childResult = buildCombinedRouteMapWithSearch(
2950
- targetFile,
2951
- imported.exportedName,
2952
- visited,
2953
- diagnosticsOut,
2954
- void 0,
2955
- memo
2956
- );
2957
- } else {
2958
- const sameFileBlock = extractUrlsBlockForVariable(
2959
- fullSource,
2960
- variableName,
2961
- parseBlock(memo, fullSource)
3130
+ let targetSource;
3131
+ try {
3132
+ targetSource = readSourceMemoized(memo, resolve2(targetFile));
3133
+ } catch (err) {
3134
+ diagnosticsOut?.push({
3135
+ pathPrefix,
3136
+ namePrefix,
3137
+ reason: "file-not-found",
3138
+ sourceFile: filePath,
3139
+ detail: `import("${inc.moduleSpecifier}") resolved to "${targetFile}" but reading it failed: ${err?.message ?? String(err)}`
3140
+ });
3141
+ continue;
3142
+ }
3143
+ const def = resolveDefaultExportTarget(
3144
+ targetSource,
3145
+ parseBlock(memo, targetSource)
2962
3146
  );
2963
- if (!sameFileBlock) {
2964
- if (diagnosticsOut) {
2965
- diagnosticsOut.push({
2966
- pathPrefix,
2967
- namePrefix,
2968
- reason: "unresolvable-import",
2969
- sourceFile: filePath,
2970
- detail: `variable "${variableName}" not found in imports or same-file scope`
2971
- });
2972
- }
3147
+ if (!def) {
3148
+ diagnosticsOut?.push({
3149
+ pathPrefix,
3150
+ namePrefix,
3151
+ reason: "unresolvable-import",
3152
+ sourceFile: filePath,
3153
+ detail: `import("${inc.moduleSpecifier}") has no resolvable \`export default urls(...)\``
3154
+ });
2973
3155
  continue;
2974
3156
  }
2975
- childResult = buildCombinedRouteMapWithSearch(
2976
- filePath,
3157
+ if (def.inlineBlock) {
3158
+ childResult = buildCombinedRouteMapWithSearch(
3159
+ targetFile,
3160
+ void 0,
3161
+ visited,
3162
+ diagnosticsOut,
3163
+ def.inlineBlock,
3164
+ memo
3165
+ );
3166
+ } else {
3167
+ const variableName = def.variableName;
3168
+ const resolved = resolveIncludedVariable({
3169
+ variableName,
3170
+ resolutionFile: targetFile,
3171
+ resolutionSource: targetSource,
3172
+ reportFile: filePath,
3173
+ memo,
3174
+ visited,
3175
+ diagnosticsOut,
3176
+ pathPrefix,
3177
+ namePrefix,
3178
+ fileNotFoundDetail: (specifier) => `import("${inc.moduleSpecifier}") default re-exports "${variableName}" from "${specifier}", which resolved to no file`,
3179
+ notFoundDetail: () => `import("${inc.moduleSpecifier}") default "${variableName}" not found in its imports or same-file scope`
3180
+ });
3181
+ if (!resolved) continue;
3182
+ childResult = resolved;
3183
+ }
3184
+ } else if (inc.variableName) {
3185
+ const variableName = inc.variableName;
3186
+ const resolved = resolveIncludedVariable({
2977
3187
  variableName,
3188
+ resolutionFile: filePath,
3189
+ resolutionSource: fullSource,
3190
+ reportFile: filePath,
3191
+ memo,
2978
3192
  visited,
2979
3193
  diagnosticsOut,
2980
- void 0,
2981
- memo
2982
- );
3194
+ pathPrefix,
3195
+ namePrefix,
3196
+ fileNotFoundDetail: (specifier) => `import "${specifier}" resolved to no file`,
3197
+ notFoundDetail: () => `variable "${variableName}" not found in imports or same-file scope`
3198
+ });
3199
+ if (!resolved) continue;
3200
+ childResult = resolved;
3201
+ } else {
3202
+ continue;
2983
3203
  }
2984
3204
  if (namePrefix === null) {
2985
3205
  continue;
@@ -3002,6 +3222,64 @@ function buildRouteMapFromBlock(block, fullSource, filePath, visited, searchSche
3002
3222
  }
3003
3223
  return routeMap;
3004
3224
  }
3225
+ function resolveIncludedVariable(opts) {
3226
+ const {
3227
+ variableName,
3228
+ resolutionFile,
3229
+ resolutionSource,
3230
+ reportFile,
3231
+ memo,
3232
+ visited,
3233
+ diagnosticsOut,
3234
+ pathPrefix,
3235
+ namePrefix
3236
+ } = opts;
3237
+ const imported = resolveImportedVariable(resolutionSource, variableName);
3238
+ if (imported) {
3239
+ const targetFile = resolveImportPath(imported.specifier, resolutionFile);
3240
+ if (!targetFile) {
3241
+ diagnosticsOut?.push({
3242
+ pathPrefix,
3243
+ namePrefix,
3244
+ reason: "file-not-found",
3245
+ sourceFile: reportFile,
3246
+ detail: opts.fileNotFoundDetail(imported.specifier)
3247
+ });
3248
+ return null;
3249
+ }
3250
+ return buildCombinedRouteMapWithSearch(
3251
+ targetFile,
3252
+ imported.exportedName,
3253
+ visited,
3254
+ diagnosticsOut,
3255
+ void 0,
3256
+ memo
3257
+ );
3258
+ }
3259
+ const sameFileBlock = extractUrlsBlockForVariable(
3260
+ resolutionSource,
3261
+ variableName,
3262
+ parseBlock(memo, resolutionSource)
3263
+ );
3264
+ if (!sameFileBlock) {
3265
+ diagnosticsOut?.push({
3266
+ pathPrefix,
3267
+ namePrefix,
3268
+ reason: "unresolvable-import",
3269
+ sourceFile: reportFile,
3270
+ detail: opts.notFoundDetail()
3271
+ });
3272
+ return null;
3273
+ }
3274
+ return buildCombinedRouteMapWithSearch(
3275
+ resolutionFile,
3276
+ variableName,
3277
+ visited,
3278
+ diagnosticsOut,
3279
+ void 0,
3280
+ memo
3281
+ );
3282
+ }
3005
3283
  function buildCombinedRouteMapWithSearch(filePath, variableName, visited, diagnosticsOut, inlineBlock, memo) {
3006
3284
  visited = visited ?? /* @__PURE__ */ new Set();
3007
3285
  memo = memo ?? createScanMemo();
@@ -3078,7 +3356,10 @@ var ROUTER_CALL_PATTERN_G = /\bcreateRouter\s*[<(]/g;
3078
3356
  function isRoutableSourceFile(name) {
3079
3357
  return (name.endsWith(".ts") || name.endsWith(".tsx") || name.endsWith(".js") || name.endsWith(".jsx")) && !name.includes(".gen.") && !name.includes(".test.") && !name.includes(".spec.");
3080
3358
  }
3081
- function findRouterFilesRecursive(dir, filter, results) {
3359
+ function isExcludedScanDir(name) {
3360
+ return name === "node_modules" || name === "dist" || name === "coverage" || name === "__tests__" || name === "__mocks__" || name.startsWith(".");
3361
+ }
3362
+ function findCallSiteFilesRecursive(dir, pattern, patternG, stopAtMatchDir, filter, results) {
3082
3363
  let entries;
3083
3364
  try {
3084
3365
  entries = readdirSync(dir, { withFileTypes: true });
@@ -3089,32 +3370,36 @@ function findRouterFilesRecursive(dir, filter, results) {
3089
3370
  return;
3090
3371
  }
3091
3372
  const childDirs = [];
3092
- const routerFilesInDir = [];
3373
+ const matchesInDir = [];
3093
3374
  for (const entry of entries) {
3094
3375
  const fullPath = join2(dir, entry.name);
3095
3376
  if (entry.isDirectory()) {
3096
- if (entry.name === "node_modules" || entry.name === "dist" || entry.name === "coverage" || entry.name === "__tests__" || entry.name === "__mocks__" || entry.name.startsWith("."))
3097
- continue;
3098
- childDirs.push(fullPath);
3377
+ if (!isExcludedScanDir(entry.name)) childDirs.push(fullPath);
3099
3378
  continue;
3100
3379
  }
3101
3380
  if (!isRoutableSourceFile(entry.name)) continue;
3102
3381
  if (filter && !filter(fullPath)) continue;
3103
3382
  try {
3104
3383
  const source = readFileSync2(fullPath, "utf-8");
3105
- if (ROUTER_CALL_PATTERN.test(source) && firstCodeMatchIndex(source, ROUTER_CALL_PATTERN_G) >= 0) {
3106
- routerFilesInDir.push(fullPath);
3384
+ if (pattern.test(source) && firstCodeMatchIndex(source, patternG) >= 0) {
3385
+ matchesInDir.push(fullPath);
3107
3386
  }
3108
3387
  } catch {
3109
3388
  continue;
3110
3389
  }
3111
3390
  }
3112
- if (routerFilesInDir.length > 0) {
3113
- results.push(...routerFilesInDir);
3114
- return;
3115
- }
3116
- for (const childDir of childDirs) {
3117
- findRouterFilesRecursive(childDir, filter, results);
3391
+ results.push(...matchesInDir);
3392
+ if (!stopAtMatchDir || matchesInDir.length === 0) {
3393
+ for (const childDir of childDirs) {
3394
+ findCallSiteFilesRecursive(
3395
+ childDir,
3396
+ pattern,
3397
+ patternG,
3398
+ stopAtMatchDir,
3399
+ filter,
3400
+ results
3401
+ );
3402
+ }
3118
3403
  }
3119
3404
  }
3120
3405
  function findNestedRouterConflict(routerFiles) {
@@ -3312,7 +3597,28 @@ function buildCombinedRouteMapForRouterFile(routerFilePath) {
3312
3597
  }
3313
3598
  function findRouterFiles(root, filter) {
3314
3599
  const result = [];
3315
- findRouterFilesRecursive(root, filter, result);
3600
+ findCallSiteFilesRecursive(
3601
+ root,
3602
+ ROUTER_CALL_PATTERN,
3603
+ ROUTER_CALL_PATTERN_G,
3604
+ true,
3605
+ filter,
3606
+ result
3607
+ );
3608
+ return result;
3609
+ }
3610
+ var HOST_ROUTER_CALL_PATTERN = /\bcreateHostRouter\s*[<(]/;
3611
+ var HOST_ROUTER_CALL_PATTERN_G = /\bcreateHostRouter\s*[<(]/g;
3612
+ function findHostRouterFiles(root, filter) {
3613
+ const result = [];
3614
+ findCallSiteFilesRecursive(
3615
+ root,
3616
+ HOST_ROUTER_CALL_PATTERN,
3617
+ HOST_ROUTER_CALL_PATTERN_G,
3618
+ false,
3619
+ filter,
3620
+ result
3621
+ );
3316
3622
  return result;
3317
3623
  }
3318
3624
  function writeCombinedRouteTypes(root, knownRouterFiles, opts) {
@@ -3586,6 +3892,7 @@ function isViteDepCachePath(filePath, cacheDir) {
3586
3892
 
3587
3893
  // src/vite/utils/shared-utils.ts
3588
3894
  import * as Vite from "vite";
3895
+ import { isAbsolute, resolve as resolve4 } from "node:path";
3589
3896
 
3590
3897
  // src/vite/plugins/performance-tracks.ts
3591
3898
  import { readFile } from "node:fs/promises";
@@ -3668,6 +3975,21 @@ var versionRolldownPlugin = {
3668
3975
  var sharedRolldownOptions = {
3669
3976
  plugins: [versionRolldownPlugin, performanceTracksOptimizeDepsPlugin()]
3670
3977
  };
3978
+ function normalizeHostRouterEntry(rawInput, root, exists) {
3979
+ const raw = rawInput.replaceAll("\\", "/");
3980
+ const isRelative = raw.startsWith("./") || raw.startsWith("../");
3981
+ const isRooted = raw.startsWith("/") || isAbsolute(rawInput);
3982
+ if (isRooted) return raw;
3983
+ if (isRelative) {
3984
+ if (!exists(resolve4(root, raw))) {
3985
+ throw new Error(
3986
+ `[rango] hostRouter entry not found: "${rawInput}" (resolved under ${root}). Point it at your createHostRouter() module, e.g. rango({ hostRouter: "./src/worker.rsc.tsx" }).`
3987
+ );
3988
+ }
3989
+ return raw;
3990
+ }
3991
+ return exists(resolve4(root, raw)) ? "./" + raw : raw;
3992
+ }
3671
3993
  function createVirtualEntriesPlugin(entries, routerPathRef) {
3672
3994
  const virtualModules = {};
3673
3995
  if (entries.client === VIRTUAL_IDS.browser) {
@@ -3701,7 +4023,7 @@ function createVirtualEntriesPlugin(entries, routerPathRef) {
3701
4023
  if (virtualId === VIRTUAL_IDS.rsc && routerPathRef?.path) {
3702
4024
  const raw = routerPathRef.path.startsWith(".") ? "/" + routerPathRef.path.slice(2) : routerPathRef.path;
3703
4025
  const absoluteRouterPath = raw.replaceAll("\\", "/");
3704
- return getVirtualEntryRSC(absoluteRouterPath);
4026
+ return routerPathRef.kind === "host" ? getVirtualEntryRSCHost(absoluteRouterPath) : getVirtualEntryRSC(absoluteRouterPath);
3705
4027
  }
3706
4028
  }
3707
4029
  return null;
@@ -3880,6 +4202,221 @@ function resolveClientChunks(option, ctx) {
3880
4202
  return option;
3881
4203
  }
3882
4204
 
4205
+ // src/vite/plugins/vercel-output.ts
4206
+ import { rm, mkdir, cp, writeFile } from "node:fs/promises";
4207
+ import { existsSync as existsSync4 } from "node:fs";
4208
+ import { resolve as resolve5, join as join3 } from "node:path";
4209
+ import { createRequire as createRequire2 } from "node:module";
4210
+ import { pathToFileURL } from "node:url";
4211
+ var LAUNCHER_SOURCE = `import { toNodeHandler } from "srvx/node";
4212
+ import { waitUntil } from "@vercel/functions";
4213
+ import rscHandler from "./rsc/index.js";
4214
+
4215
+ // The Vercel Node launcher invokes a Node (req, res) handler, not a Web fetch
4216
+ // handler. srvx's toNodeHandler bridges the Rango Web fetch handler and pipes
4217
+ // the streamed Response to the Node response (set supportsResponseStreaming).
4218
+ const onVercel = Boolean(process.env.VERCEL);
4219
+
4220
+ const fetchHandler = (request) =>
4221
+ rscHandler(request, {
4222
+ env: process.env,
4223
+ // Forward Vercel's waitUntil so cache writes / revalidation run off the
4224
+ // response path. Omitted off-platform so those writes settle inline.
4225
+ ctx: onVercel ? { waitUntil } : undefined,
4226
+ });
4227
+
4228
+ export default toNodeHandler(fetchHandler);
4229
+ `;
4230
+ function assertVercelNodeRuntime(runtime) {
4231
+ if (runtime != null && !runtime.startsWith("nodejs")) {
4232
+ throw new Error(
4233
+ `[rango] preset "vercel": runtime "${runtime}" is not supported. This preset emits a Node serverless function; use a "nodejs*" runtime (default "nodejs22.x"). The Edge runtime is not supported.`
4234
+ );
4235
+ }
4236
+ }
4237
+ function assertValidVercelFunctionName(functionName) {
4238
+ if (!/^[A-Za-z0-9._-]+$/.test(functionName)) {
4239
+ throw new Error(
4240
+ `[rango] preset "vercel": invalid functionName ${JSON.stringify(
4241
+ functionName
4242
+ )}. Use letters, digits, ".", "_" or "-" only (it becomes the .func directory and the routing dest).`
4243
+ );
4244
+ }
4245
+ }
4246
+ function buildVercelVcConfig(vercel) {
4247
+ const vcConfig = {
4248
+ runtime: vercel.runtime ?? "nodejs22.x",
4249
+ handler: "index.mjs",
4250
+ launcherType: "Nodejs",
4251
+ shouldAddHelpers: false,
4252
+ supportsResponseStreaming: true,
4253
+ maxDuration: vercel.maxDuration ?? 30
4254
+ };
4255
+ if (vercel.memory != null) vcConfig.memory = vercel.memory;
4256
+ if (vercel.regions != null) vcConfig.regions = vercel.regions;
4257
+ return vcConfig;
4258
+ }
4259
+ function buildVercelOutputConfig(functionName, assetsDir) {
4260
+ const assetsPrefix = assetsDir.replace(/^\/+|\/+$/g, "");
4261
+ const assetHeaderRoute = assetsPrefix ? [
4262
+ {
4263
+ src: `/${escapeRegExp(assetsPrefix)}/(.*)`,
4264
+ headers: { "cache-control": "public, max-age=31536000, immutable" },
4265
+ continue: true
4266
+ }
4267
+ ] : [];
4268
+ return {
4269
+ version: 3,
4270
+ routes: [
4271
+ ...assetHeaderRoute,
4272
+ { handle: "filesystem" },
4273
+ { src: "/(.*)", dest: `/${functionName}` }
4274
+ ]
4275
+ };
4276
+ }
4277
+ async function assemble(root, options, assetsDir, publicDir) {
4278
+ const vercel = options.vercel ?? {};
4279
+ assertVercelNodeRuntime(vercel.runtime);
4280
+ const assetsPrefix = assetsDir.replace(/^\/+|\/+$/g, "");
4281
+ if (publicDir && assetsPrefix && existsSync4(join3(publicDir, assetsPrefix))) {
4282
+ console.warn(
4283
+ `[rango] preset "vercel": ${join3(publicDir, assetsPrefix)} exists. Files under public/${assetsPrefix}/ share the /${assetsPrefix}/ URL prefix with hashed build assets and will be served with a one-year immutable cache-control header. Move un-hashed public files out of "${assetsPrefix}/".`
4284
+ );
4285
+ }
4286
+ const dist = join3(root, "dist");
4287
+ for (const dir of ["client", "rsc", "ssr"]) {
4288
+ if (!existsSync4(join3(dist, dir))) {
4289
+ throw new Error(
4290
+ `[rango] preset "vercel": missing dist/${dir}. Run the production build first.`
4291
+ );
4292
+ }
4293
+ }
4294
+ const functionName = vercel.functionName ?? "index";
4295
+ assertValidVercelFunctionName(functionName);
4296
+ const out = join3(root, ".vercel", "output");
4297
+ const funcDir = join3(out, "functions", `${functionName}.func`);
4298
+ await rm(out, { recursive: true, force: true });
4299
+ await mkdir(funcDir, { recursive: true });
4300
+ await cp(join3(dist, "client"), join3(out, "static"), { recursive: true });
4301
+ await cp(join3(dist, "rsc"), join3(funcDir, "rsc"), { recursive: true });
4302
+ await cp(join3(dist, "ssr"), join3(funcDir, "ssr"), { recursive: true });
4303
+ if (existsSync4(join3(dist, "static"))) {
4304
+ await cp(join3(dist, "static"), join3(funcDir, "static"), {
4305
+ recursive: true
4306
+ });
4307
+ }
4308
+ const rangoRequire = createRequire2(import.meta.url);
4309
+ let srvxNodePath;
4310
+ try {
4311
+ srvxNodePath = rangoRequire.resolve("srvx/node");
4312
+ } catch {
4313
+ throw new Error(
4314
+ '[rango] preset "vercel" requires "srvx" (a dependency of @rangojs/router). Reinstall dependencies.'
4315
+ );
4316
+ }
4317
+ const appRequire = createRequire2(join3(root, "package.json"));
4318
+ const resolveEsbuildPath = () => {
4319
+ try {
4320
+ const viteRequire = createRequire2(appRequire.resolve("vite"));
4321
+ return viteRequire.resolve("esbuild");
4322
+ } catch {
4323
+ }
4324
+ try {
4325
+ return appRequire.resolve("esbuild");
4326
+ } catch {
4327
+ }
4328
+ return rangoRequire.resolve("esbuild");
4329
+ };
4330
+ let esbuildModule;
4331
+ try {
4332
+ esbuildModule = await import(pathToFileURL(resolveEsbuildPath()).href);
4333
+ } catch {
4334
+ throw new Error(
4335
+ '[rango] preset "vercel" requires "esbuild" to bundle the function launcher. It ships with Vite; reinstall dependencies (or add esbuild to your app dependencies).'
4336
+ );
4337
+ }
4338
+ const esbuildBuild = esbuildModule.build ?? esbuildModule.default?.build;
4339
+ if (typeof esbuildBuild !== "function") {
4340
+ throw new Error('[rango] preset "vercel": could not load esbuild.build.');
4341
+ }
4342
+ try {
4343
+ await esbuildBuild({
4344
+ stdin: {
4345
+ contents: LAUNCHER_SOURCE,
4346
+ resolveDir: root,
4347
+ sourcefile: "func-entry.mjs",
4348
+ loader: "js"
4349
+ },
4350
+ outfile: join3(funcDir, "index.mjs"),
4351
+ bundle: true,
4352
+ format: "esm",
4353
+ platform: "node",
4354
+ target: "node18",
4355
+ alias: { "srvx/node": srvxNodePath },
4356
+ plugins: [
4357
+ {
4358
+ name: "external-rsc-entry",
4359
+ setup(b) {
4360
+ b.onResolve({ filter: /^\.\/rsc\/index\.js$/ }, () => ({
4361
+ path: "./rsc/index.js",
4362
+ external: true
4363
+ }));
4364
+ }
4365
+ }
4366
+ ]
4367
+ });
4368
+ } catch (error) {
4369
+ const message = error instanceof Error ? error.message : String(error);
4370
+ if (/@vercel\/functions/.test(message)) {
4371
+ throw new Error(
4372
+ '[rango] preset "vercel": could not resolve "@vercel/functions". Add it to your app dependencies (it also backs VercelCacheStore).\n' + message
4373
+ );
4374
+ }
4375
+ throw error;
4376
+ }
4377
+ await writeFile(
4378
+ join3(funcDir, "package.json"),
4379
+ JSON.stringify({ type: "module" }, null, 2) + "\n"
4380
+ );
4381
+ await writeFile(
4382
+ join3(funcDir, ".vc-config.json"),
4383
+ JSON.stringify(buildVercelVcConfig(vercel), null, 2) + "\n"
4384
+ );
4385
+ await writeFile(
4386
+ join3(out, "config.json"),
4387
+ JSON.stringify(buildVercelOutputConfig(functionName, assetsDir), null, 2) + "\n"
4388
+ );
4389
+ console.log(
4390
+ `[rango] assembled .vercel/output (function: ${functionName}.func)`
4391
+ );
4392
+ }
4393
+ function createVercelOutputPlugin(options) {
4394
+ let root = process.cwd();
4395
+ let isBuild = false;
4396
+ let assetsDir = "assets";
4397
+ let publicDir = "";
4398
+ return {
4399
+ name: "@rangojs/router:vercel-output",
4400
+ configResolved(config) {
4401
+ root = resolve5(config.root);
4402
+ isBuild = config.command === "build";
4403
+ assetsDir = config.environments?.client?.build?.assetsDir ?? config.build?.assetsDir ?? "assets";
4404
+ publicDir = config.publicDir || "";
4405
+ },
4406
+ // buildApp runs once after the whole multi-environment build (rsc, client,
4407
+ // ssr), so dist/ is complete here. closeBundle is unusable for this: it
4408
+ // fires per environment, and twice for ssr (the server-reference scan and
4409
+ // the real build), so it would run before dist/client exists.
4410
+ buildApp: {
4411
+ order: "post",
4412
+ async handler() {
4413
+ if (!isBuild) return;
4414
+ await assemble(root, options, assetsDir, publicDir);
4415
+ }
4416
+ }
4417
+ };
4418
+ }
4419
+
3883
4420
  // src/vite/utils/banner.ts
3884
4421
  var rangoVersion = package_default.version;
3885
4422
  var _bannerPrinted = false;
@@ -3907,7 +4444,7 @@ ${dim} ${reset}${bold}\u2550\u2550\u2550\u255D \u255A\u2550\u2550\u2550\u2550$
3907
4444
  }
3908
4445
 
3909
4446
  // src/vite/plugins/version-injector.ts
3910
- import { resolve as resolve4 } from "node:path";
4447
+ import { resolve as resolve6 } from "node:path";
3911
4448
  import * as Vite2 from "vite";
3912
4449
  function createVersionInjectorPlugin(rscEntryPath) {
3913
4450
  let resolvedEntryPath = "";
@@ -3918,7 +4455,7 @@ function createVersionInjectorPlugin(rscEntryPath) {
3918
4455
  let entryPath = rscEntryPath;
3919
4456
  if (!entryPath) entryPath = resolveRscEntryFromConfig(config);
3920
4457
  if (entryPath) {
3921
- resolvedEntryPath = resolve4(config.root, entryPath);
4458
+ resolvedEntryPath = resolve6(config.root, entryPath);
3922
4459
  }
3923
4460
  },
3924
4461
  transform(code, id) {
@@ -4027,10 +4564,10 @@ function createCjsToEsmPlugin() {
4027
4564
 
4028
4565
  // src/vite/router-discovery.ts
4029
4566
  import { createServer as createViteServer } from "vite";
4030
- import { resolve as resolve8 } from "node:path";
4567
+ import { resolve as resolve10 } from "node:path";
4031
4568
  import { readFileSync as readFileSync6 } from "node:fs";
4032
- import { createRequire as createRequire2, register } from "node:module";
4033
- import { pathToFileURL } from "node:url";
4569
+ import { createRequire as createRequire3, register } from "node:module";
4570
+ import { pathToFileURL as pathToFileURL2 } from "node:url";
4034
4571
 
4035
4572
  // src/vite/inject-client-debug.ts
4036
4573
  function injectClientDebugFlag(id) {
@@ -4668,13 +5205,13 @@ function contextSet(variables, keyOrVar, value, options) {
4668
5205
  import { createHash as createHash4 } from "node:crypto";
4669
5206
  import {
4670
5207
  copyFileSync,
4671
- existsSync as existsSync4,
5208
+ existsSync as existsSync5,
4672
5209
  mkdirSync,
4673
5210
  rmSync,
4674
5211
  statSync,
4675
5212
  writeFileSync as writeFileSync2
4676
5213
  } from "node:fs";
4677
- import { resolve as resolve5 } from "node:path";
5214
+ import { resolve as resolve7 } from "node:path";
4678
5215
  function encodePathParam(value) {
4679
5216
  return String(value).split("/").map((segment) => encodeURIComponent(segment)).join("/");
4680
5217
  }
@@ -4797,7 +5334,7 @@ function resolvePrerenderError(registry, error, onError, label, elapsed, phase,
4797
5334
  throw error;
4798
5335
  }
4799
5336
  function getStagedAssetDir(projectRoot) {
4800
- return resolve5(projectRoot, "node_modules/.rangojs-router-build/rsc-assets");
5337
+ return resolve7(projectRoot, "node_modules/.rangojs-router-build/rsc-assets");
4801
5338
  }
4802
5339
  function resetStagedBuildAssets(projectRoot) {
4803
5340
  rmSync(getStagedAssetDir(projectRoot), { recursive: true, force: true });
@@ -4807,8 +5344,8 @@ function stageBuildAssetModule(projectRoot, prefix, exportValue) {
4807
5344
  mkdirSync(stagedDir, { recursive: true });
4808
5345
  const contentHash = createHash4("sha256").update(exportValue).digest("hex").slice(0, 8);
4809
5346
  const fileName = `${prefix}-${contentHash}.js`;
4810
- const filePath = resolve5(stagedDir, fileName);
4811
- if (!existsSync4(filePath)) {
5347
+ const filePath = resolve7(stagedDir, fileName);
5348
+ if (!existsSync5(filePath)) {
4812
5349
  writeFileSync2(filePath, `export default ${exportValue};
4813
5350
  `);
4814
5351
  }
@@ -4816,12 +5353,12 @@ function stageBuildAssetModule(projectRoot, prefix, exportValue) {
4816
5353
  }
4817
5354
  function copyStagedBuildAssets(projectRoot, fileNames) {
4818
5355
  const stagedDir = getStagedAssetDir(projectRoot);
4819
- const distAssetsDir = resolve5(projectRoot, "dist/rsc/assets");
5356
+ const distAssetsDir = resolve7(projectRoot, "dist/rsc/assets");
4820
5357
  mkdirSync(distAssetsDir, { recursive: true });
4821
5358
  let totalBytes = 0;
4822
5359
  for (const fileName of new Set(fileNames)) {
4823
- const stagedPath = resolve5(stagedDir, fileName);
4824
- const distPath = resolve5(distAssetsDir, fileName);
5360
+ const stagedPath = resolve7(stagedDir, fileName);
5361
+ const distPath = resolve7(distAssetsDir, fileName);
4825
5362
  copyFileSync(stagedPath, distPath);
4826
5363
  totalBytes += statSync(stagedPath).size;
4827
5364
  }
@@ -5346,7 +5883,7 @@ async function discoverRouters(state, rscEnv) {
5346
5883
  if (!router.urlpatterns || !generateManifestFull) {
5347
5884
  continue;
5348
5885
  }
5349
- const manifest = generateManifestFull(
5886
+ const manifest = await generateManifestFull(
5350
5887
  router.urlpatterns,
5351
5888
  routerMountIndex,
5352
5889
  {
@@ -5490,8 +6027,8 @@ async function discoverRouters(state, rscEnv) {
5490
6027
  }
5491
6028
 
5492
6029
  // src/vite/discovery/route-types-writer.ts
5493
- import { dirname as dirname3, join as join3, resolve as resolve6 } from "node:path";
5494
- import { readFileSync as readFileSync4, writeFileSync as writeFileSync3, existsSync as existsSync5, unlinkSync as unlinkSync2 } from "node:fs";
6030
+ import { dirname as dirname3, join as join4, resolve as resolve8 } from "node:path";
6031
+ import { readFileSync as readFileSync4, writeFileSync as writeFileSync3, existsSync as existsSync6, unlinkSync as unlinkSync2 } from "node:fs";
5495
6032
  function filterUserNamedRoutes(manifest) {
5496
6033
  const filtered = {};
5497
6034
  for (const [name, pattern] of Object.entries(manifest)) {
@@ -5502,7 +6039,7 @@ function filterUserNamedRoutes(manifest) {
5502
6039
  return filtered;
5503
6040
  }
5504
6041
  function writeGenFileIfChanged(state, outPath, source, opts) {
5505
- const existing = existsSync5(outPath) ? readFileSync4(outPath, "utf-8") : null;
6042
+ const existing = existsSync6(outPath) ? readFileSync4(outPath, "utf-8") : null;
5506
6043
  if (existing === source) return;
5507
6044
  markSelfGenWrite(state, outPath, source);
5508
6045
  writeFileSync3(outPath, source);
@@ -5520,10 +6057,10 @@ function writeRouteTypesFiles(state) {
5520
6057
  if (state.perRouterManifests.length === 0) return;
5521
6058
  try {
5522
6059
  const entryDir = dirname3(
5523
- resolve6(state.projectRoot, state.resolvedEntryPath)
6060
+ resolve8(state.projectRoot, state.resolvedEntryPath)
5524
6061
  );
5525
- const oldCombinedPath = join3(entryDir, "named-routes.gen.ts");
5526
- if (existsSync5(oldCombinedPath)) {
6062
+ const oldCombinedPath = join4(entryDir, "named-routes.gen.ts");
6063
+ if (existsSync6(oldCombinedPath)) {
5527
6064
  unlinkSync2(oldCombinedPath);
5528
6065
  console.log(
5529
6066
  `[rango] Removed stale combined route types: ${oldCombinedPath}`
@@ -5604,7 +6141,7 @@ function supplementGenFilesWithRuntimeRoutes(state) {
5604
6141
  }
5605
6142
 
5606
6143
  // src/vite/discovery/virtual-module-codegen.ts
5607
- import { dirname as dirname4, basename, join as join4 } from "node:path";
6144
+ import { dirname as dirname4, basename, join as join5 } from "node:path";
5608
6145
  function generateRoutesManifestModule(state) {
5609
6146
  const hasManifest = state.mergedRouteManifest && Object.keys(state.mergedRouteManifest).length > 0;
5610
6147
  if (hasManifest) {
@@ -5619,7 +6156,7 @@ function generateRoutesManifestModule(state) {
5619
6156
  /\.(tsx?|jsx?)$/,
5620
6157
  ""
5621
6158
  );
5622
- const genPath = join4(
6159
+ const genPath = join5(
5623
6160
  routerDir,
5624
6161
  `${routerBasename}.named-routes.gen.js`
5625
6162
  ).replaceAll("\\", "/");
@@ -5704,7 +6241,7 @@ function generatePerRouterModule(state, routerId) {
5704
6241
  /\.(tsx?|jsx?)$/,
5705
6242
  ""
5706
6243
  );
5707
- const genPath = join4(
6244
+ const genPath = join5(
5708
6245
  routerDir,
5709
6246
  `${routerBasename}.named-routes.gen.js`
5710
6247
  ).replaceAll("\\", "/");
@@ -5731,13 +6268,13 @@ function generatePerRouterModule(state, routerId) {
5731
6268
  }
5732
6269
 
5733
6270
  // src/vite/discovery/bundle-postprocess.ts
5734
- import { resolve as resolve7 } from "node:path";
5735
- import { readFileSync as readFileSync5, writeFileSync as writeFileSync4, existsSync as existsSync6 } from "node:fs";
6271
+ import { resolve as resolve9 } from "node:path";
6272
+ import { readFileSync as readFileSync5, writeFileSync as writeFileSync4, existsSync as existsSync7 } from "node:fs";
5736
6273
  function postprocessBundle(state) {
5737
6274
  const hasPrerenderData = state.prerenderManifestEntries && Object.keys(state.prerenderManifestEntries).length > 0;
5738
6275
  const hasStaticData = state.staticManifestEntries && Object.keys(state.staticManifestEntries).length > 0;
5739
6276
  if (!hasPrerenderData && !hasStaticData) return;
5740
- const rscEntryPath = resolve7(
6277
+ const rscEntryPath = resolve9(
5741
6278
  state.projectRoot,
5742
6279
  "dist/rsc",
5743
6280
  state.rscEntryFileName ?? "index.js"
@@ -5758,7 +6295,7 @@ function postprocessBundle(state) {
5758
6295
  ];
5759
6296
  for (const target of evictionTargets) {
5760
6297
  for (const info of target.infos) {
5761
- const chunkPath = resolve7(state.projectRoot, "dist/rsc", info.fileName);
6298
+ const chunkPath = resolve9(state.projectRoot, "dist/rsc", info.fileName);
5762
6299
  try {
5763
6300
  const code = readFileSync5(chunkPath, "utf-8");
5764
6301
  const result = evictHandlerCode(
@@ -5783,7 +6320,7 @@ function postprocessBundle(state) {
5783
6320
  }
5784
6321
  state.handlerChunkInfoMap.clear();
5785
6322
  state.staticHandlerChunkInfoMap.clear();
5786
- if (hasPrerenderData && existsSync6(rscEntryPath)) {
6323
+ if (hasPrerenderData && existsSync7(rscEntryPath)) {
5787
6324
  const rscCode = readFileSync5(rscEntryPath, "utf-8");
5788
6325
  if (!rscCode.includes("__prerender-manifest.js")) {
5789
6326
  try {
@@ -5803,7 +6340,7 @@ function postprocessBundle(state) {
5803
6340
  `export default m;`,
5804
6341
  ""
5805
6342
  ].join("\n");
5806
- const manifestPath = resolve7(
6343
+ const manifestPath = resolve9(
5807
6344
  state.projectRoot,
5808
6345
  "dist/rsc/__prerender-manifest.js"
5809
6346
  );
@@ -5823,7 +6360,7 @@ function postprocessBundle(state) {
5823
6360
  }
5824
6361
  }
5825
6362
  }
5826
- if (hasStaticData && existsSync6(rscEntryPath)) {
6363
+ if (hasStaticData && existsSync7(rscEntryPath)) {
5827
6364
  const rscCode = readFileSync5(rscEntryPath, "utf-8");
5828
6365
  if (!rscCode.includes("__static-manifest.js")) {
5829
6366
  try {
@@ -5841,7 +6378,7 @@ function postprocessBundle(state) {
5841
6378
  }
5842
6379
  const manifestCode = `const m={${manifestEntries.join(",")}};globalThis.__STATIC_MANIFEST=m;export default m;
5843
6380
  `;
5844
- const manifestPath = resolve7(
6381
+ const manifestPath = resolve9(
5845
6382
  state.projectRoot,
5846
6383
  "dist/rsc/__static-manifest.js"
5847
6384
  );
@@ -5873,8 +6410,8 @@ function createDiscoveryGate(s, debug11) {
5873
6410
  let pendingEvents = false;
5874
6411
  const beginGate = () => {
5875
6412
  if (gatePending) return;
5876
- s.discoveryDone = new Promise((resolve10) => {
5877
- gateResolver = resolve10;
6413
+ s.discoveryDone = new Promise((resolve12) => {
6414
+ gateResolver = resolve12;
5878
6415
  });
5879
6416
  gatePending = true;
5880
6417
  };
@@ -5966,15 +6503,15 @@ function selectForwardableResolvePlugins(plugins) {
5966
6503
  }
5967
6504
  function pickForwardedRunnerConfig(config) {
5968
6505
  const r = config.resolve ?? {};
5969
- const resolve10 = {};
5970
- if (r.alias !== void 0) resolve10.alias = r.alias;
5971
- if (r.dedupe !== void 0) resolve10.dedupe = r.dedupe;
5972
- if (r.conditions !== void 0) resolve10.conditions = r.conditions;
5973
- if (r.mainFields !== void 0) resolve10.mainFields = r.mainFields;
5974
- if (r.extensions !== void 0) resolve10.extensions = r.extensions;
6506
+ const resolve12 = {};
6507
+ if (r.alias !== void 0) resolve12.alias = r.alias;
6508
+ if (r.dedupe !== void 0) resolve12.dedupe = r.dedupe;
6509
+ if (r.conditions !== void 0) resolve12.conditions = r.conditions;
6510
+ if (r.mainFields !== void 0) resolve12.mainFields = r.mainFields;
6511
+ if (r.extensions !== void 0) resolve12.extensions = r.extensions;
5975
6512
  if (r.preserveSymlinks !== void 0)
5976
- resolve10.preserveSymlinks = r.preserveSymlinks;
5977
- if (r.tsconfigPaths !== void 0) resolve10.tsconfigPaths = r.tsconfigPaths;
6513
+ resolve12.preserveSymlinks = r.preserveSymlinks;
6514
+ if (r.tsconfigPaths !== void 0) resolve12.tsconfigPaths = r.tsconfigPaths;
5978
6515
  const userOxc = config.oxc;
5979
6516
  const userJsx = userOxc && typeof userOxc === "object" && typeof userOxc.jsx === "object" && userOxc.jsx !== null ? userOxc.jsx : {};
5980
6517
  const oxc = userOxc && typeof userOxc === "object" ? {
@@ -5982,7 +6519,7 @@ function pickForwardedRunnerConfig(config) {
5982
6519
  jsx: { ...userJsx, runtime: "automatic", importSource: "react" }
5983
6520
  } : { jsx: { runtime: "automatic", importSource: "react" } };
5984
6521
  return {
5985
- resolve: resolve10,
6522
+ resolve: resolve12,
5986
6523
  define: config.define,
5987
6524
  oxc
5988
6525
  };
@@ -6060,11 +6597,11 @@ async function resolveBuildEnv(option, factoryCtx) {
6060
6597
  );
6061
6598
  }
6062
6599
  try {
6063
- const userRequire = createRequire2(
6064
- resolve8(factoryCtx.root, "package.json")
6600
+ const userRequire = createRequire3(
6601
+ resolve10(factoryCtx.root, "package.json")
6065
6602
  );
6066
6603
  const wranglerPath = userRequire.resolve("wrangler");
6067
- const { getPlatformProxy } = await import(pathToFileURL(wranglerPath).href);
6604
+ const { getPlatformProxy } = await import(pathToFileURL2(wranglerPath).href);
6068
6605
  const proxy = await getPlatformProxy();
6069
6606
  return {
6070
6607
  env: proxy.env,
@@ -6161,8 +6698,8 @@ function createRouterDiscoveryPlugin(entryPath, opts) {
6161
6698
  if (globalThis.__rscRouterDiscoveryActive) return;
6162
6699
  s.devServer = server;
6163
6700
  let resolveDiscovery;
6164
- const discoveryPromise = new Promise((resolve10) => {
6165
- resolveDiscovery = resolve10;
6701
+ const discoveryPromise = new Promise((resolve12) => {
6702
+ resolveDiscovery = resolve12;
6166
6703
  });
6167
6704
  const gate = createDiscoveryGate(s, debugDiscovery);
6168
6705
  const beginDiscoveryGate = gate.beginGate;
@@ -6269,6 +6806,10 @@ function createRouterDiscoveryPlugin(entryPath, opts) {
6269
6806
  );
6270
6807
  console.warn(`[rango] Failed to create temp runner: ${err.message}`);
6271
6808
  }
6809
+ await prerenderTempServer?.close().catch(() => {
6810
+ });
6811
+ prerenderTempServer = null;
6812
+ prerenderNodeRegistry = null;
6272
6813
  return null;
6273
6814
  }
6274
6815
  async function clearTempRegistries(tempRscEnv) {
@@ -6740,7 +7281,7 @@ ${err.stack}`
6740
7281
  if (hasCreateRouter) {
6741
7282
  const nestedRouterConflict = findNestedRouterConflict([
6742
7283
  ...s.cachedRouterFiles ?? [],
6743
- resolve8(filePath)
7284
+ resolve10(filePath)
6744
7285
  ]);
6745
7286
  if (nestedRouterConflict) {
6746
7287
  server.config.logger.error(
@@ -7052,7 +7593,11 @@ async function rango(options) {
7052
7593
  ];
7053
7594
  const pkg = getPublishedPackageName();
7054
7595
  const nested = (spec) => `${pkg} > ${spec}`;
7055
- const routerRef = { path: void 0 };
7596
+ const routerRef = {
7597
+ path: void 0,
7598
+ kind: "router"
7599
+ };
7600
+ const explicitHostRouter = preset !== "cloudflare" ? resolvedOptions.hostRouter : void 0;
7056
7601
  const prerenderEnabled = true;
7057
7602
  if (preset === "cloudflare") {
7058
7603
  const { default: rsc } = await import("@vitejs/plugin-rsc");
@@ -7160,17 +7705,49 @@ async function rango(options) {
7160
7705
  name: "@rangojs/router:auto-discover",
7161
7706
  config(userConfig) {
7162
7707
  if (routerRef.path) return;
7163
- const root = userConfig.root ? resolve9(process.cwd(), userConfig.root) : process.cwd();
7708
+ const root = userConfig.root ? resolve11(process.cwd(), userConfig.root) : process.cwd();
7709
+ const toRootRelative = (abs) => (abs.startsWith(root) ? "./" + abs.slice(root.length + 1) : abs).replaceAll("\\", "/");
7710
+ const bulletList = (files) => files.map((f) => " - " + toRootRelative(f)).join("\n");
7711
+ if (explicitHostRouter) {
7712
+ routerRef.path = normalizeHostRouterEntry(
7713
+ explicitHostRouter,
7714
+ root,
7715
+ existsSync8
7716
+ );
7717
+ routerRef.kind = "host";
7718
+ return;
7719
+ }
7720
+ const hostCandidates = findHostRouterFiles(root);
7721
+ if (hostCandidates.length === 1) {
7722
+ const hostPath = toRootRelative(hostCandidates[0]);
7723
+ console.info(
7724
+ `[rango] Serving host router entry ${hostPath} (auto-detected). Set the \`hostRouter\` option to override.`
7725
+ );
7726
+ routerRef.path = hostPath;
7727
+ routerRef.kind = "host";
7728
+ return;
7729
+ }
7730
+ if (hostCandidates.length > 1) {
7731
+ throw new Error(
7732
+ `[rango] Multiple host routers found:
7733
+ ${bulletList(hostCandidates)}
7734
+
7735
+ Set the \`hostRouter\` option to the entry to serve, e.g. rango({ preset: "${preset}", hostRouter: "./src/worker.rsc.tsx" }).`
7736
+ );
7737
+ }
7164
7738
  const candidates = findRouterFiles(root);
7165
7739
  if (candidates.length === 1) {
7166
- const abs = candidates[0];
7167
- routerRef.path = (abs.startsWith(root) ? "./" + abs.slice(root.length + 1) : abs).replaceAll("\\", "/");
7168
- } else if (candidates.length > 1) {
7169
- const list = candidates.map(
7170
- (f) => " - " + (f.startsWith(root) ? f.slice(root.length + 1) : f)
7171
- ).join("\n");
7172
- throw new Error(`[rango] Multiple routers found:
7173
- ${list}`);
7740
+ routerRef.path = toRootRelative(candidates[0]);
7741
+ routerRef.kind = "router";
7742
+ return;
7743
+ }
7744
+ if (candidates.length > 1) {
7745
+ throw new Error(
7746
+ `[rango] Multiple routers found:
7747
+ ${bulletList(candidates)}
7748
+
7749
+ If this is a multi-app host router, export a createHostRouter() instance and set the \`hostRouter\` option (e.g. rango({ preset: "${preset}", hostRouter: "./src/worker.rsc.tsx" })), or use preset: "cloudflare" where you own the worker entry.`
7750
+ );
7174
7751
  }
7175
7752
  }
7176
7753
  });
@@ -7184,8 +7761,11 @@ ${list}`);
7184
7761
  plugins.push({
7185
7762
  name: "@rangojs/router:rsc-integration",
7186
7763
  enforce: "pre",
7187
- config() {
7764
+ config(_userConfig, configEnv) {
7765
+ const vercelDefine = preset === "vercel" && configEnv.command === "build" ? { "process.env.NODE_ENV": JSON.stringify("production") } : void 0;
7766
+ const vercelServerEnv = preset === "vercel" && configEnv.command === "build" ? { resolve: { noExternal: true } } : void 0;
7188
7767
  return {
7768
+ ...vercelDefine ? { define: vercelDefine } : {},
7189
7769
  optimizeDeps: {
7190
7770
  exclude: excludeDeps,
7191
7771
  rolldownOptions: sharedRolldownOptions
@@ -7228,6 +7808,7 @@ ${list}`);
7228
7808
  }
7229
7809
  },
7230
7810
  ssr: {
7811
+ ...vercelServerEnv ?? {},
7231
7812
  optimizeDeps: {
7232
7813
  entries: [VIRTUAL_IDS.ssr],
7233
7814
  include: [
@@ -7246,6 +7827,7 @@ ${list}`);
7246
7827
  }
7247
7828
  },
7248
7829
  rsc: {
7830
+ ...vercelServerEnv ?? {},
7249
7831
  optimizeDeps: {
7250
7832
  entries: [VIRTUAL_IDS.rsc],
7251
7833
  include: [
@@ -7271,7 +7853,11 @@ ${list}`);
7271
7853
  configResolved(config) {
7272
7854
  if (showBanner) {
7273
7855
  const mode = config.command === "serve" ? process.argv.includes("preview") ? "preview" : "dev" : "build";
7274
- printBanner(mode, "node", rangoVersion);
7856
+ printBanner(
7857
+ mode,
7858
+ preset === "vercel" ? "vercel" : "node",
7859
+ rangoVersion
7860
+ );
7275
7861
  }
7276
7862
  const rscMinimalCount = config.plugins.filter(
7277
7863
  (p) => p.name === "rsc:minimal"
@@ -7333,6 +7919,11 @@ ${list}`);
7333
7919
  clientChunkCtx
7334
7920
  })
7335
7921
  );
7922
+ if (preset === "vercel") {
7923
+ plugins.push(
7924
+ createVercelOutputPlugin(resolvedOptions)
7925
+ );
7926
+ }
7336
7927
  debugConfig?.(
7337
7928
  "rango(%s) setup done: %d plugin(s) (%sms)",
7338
7929
  preset,