@rangojs/router 0.0.0-experimental.9c9afef3 → 0.0.0-experimental.9eb4192e

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 (955) hide show
  1. package/README.md +126 -38
  2. package/dist/bin/rango.js +130 -47
  3. package/dist/vite/index.js +1543 -574
  4. package/dist/vite/plugins/cloudflare-protocol-loader-hook.mjs +76 -0
  5. package/package.json +7 -5
  6. package/skills/breadcrumbs/SKILL.md +3 -1
  7. package/skills/handler-use/SKILL.md +362 -0
  8. package/skills/hooks/SKILL.md +28 -20
  9. package/skills/intercept/SKILL.md +20 -0
  10. package/skills/layout/SKILL.md +22 -0
  11. package/skills/links/SKILL.md +91 -17
  12. package/skills/loader/SKILL.md +35 -2
  13. package/skills/middleware/SKILL.md +34 -3
  14. package/skills/migrate-nextjs/SKILL.md +560 -0
  15. package/skills/migrate-react-router/SKILL.md +765 -0
  16. package/skills/parallel/SKILL.md +59 -0
  17. package/skills/prerender/SKILL.md +110 -68
  18. package/skills/rango/SKILL.md +24 -22
  19. package/skills/response-routes/SKILL.md +8 -0
  20. package/skills/route/SKILL.md +24 -0
  21. package/skills/router-setup/SKILL.md +35 -0
  22. package/skills/streams-and-websockets/SKILL.md +283 -0
  23. package/skills/typesafety/SKILL.md +3 -1
  24. package/src/__internal.ts +1 -1
  25. package/src/browser/app-shell.ts +52 -0
  26. package/src/browser/app-version.ts +14 -0
  27. package/src/browser/navigation-bridge.ts +87 -6
  28. package/src/browser/navigation-client.ts +128 -68
  29. package/src/browser/navigation-store.ts +68 -9
  30. package/src/browser/partial-update.ts +60 -7
  31. package/src/browser/prefetch/cache.ts +129 -21
  32. package/src/browser/prefetch/fetch.ts +156 -18
  33. package/src/browser/prefetch/queue.ts +36 -5
  34. package/src/browser/rango-state.ts +53 -13
  35. package/src/browser/react/Link.tsx +72 -8
  36. package/src/browser/react/NavigationProvider.tsx +57 -11
  37. package/src/browser/react/context.ts +7 -2
  38. package/src/browser/react/use-handle.ts +9 -58
  39. package/src/browser/react/use-navigation.ts +22 -2
  40. package/src/browser/react/use-params.ts +11 -1
  41. package/src/browser/react/use-router.ts +29 -9
  42. package/src/browser/rsc-router.tsx +60 -9
  43. package/src/browser/scroll-restoration.ts +10 -8
  44. package/src/browser/segment-reconciler.ts +36 -14
  45. package/src/browser/server-action-bridge.ts +8 -17
  46. package/src/browser/types.ts +37 -5
  47. package/src/build/generate-manifest.ts +6 -6
  48. package/src/build/generate-route-types.ts +3 -0
  49. package/src/build/route-trie.ts +50 -24
  50. package/src/build/route-types/include-resolution.ts +8 -1
  51. package/src/build/route-types/router-processing.ts +211 -72
  52. package/src/build/route-types/scan-filter.ts +8 -1
  53. package/src/cache/cf/cf-cache-store.ts +5 -7
  54. package/src/client.tsx +84 -230
  55. package/src/handle.ts +40 -0
  56. package/src/index.rsc.ts +6 -1
  57. package/src/index.ts +49 -6
  58. package/src/outlet-context.ts +1 -1
  59. package/src/prerender/store.ts +5 -4
  60. package/src/prerender.ts +138 -77
  61. package/src/response-utils.ts +28 -0
  62. package/src/reverse.ts +27 -2
  63. package/src/route-definition/dsl-helpers.ts +210 -35
  64. package/src/route-definition/helpers-types.ts +61 -14
  65. package/src/route-definition/index.ts +3 -0
  66. package/src/route-definition/redirect.ts +9 -1
  67. package/src/route-definition/resolve-handler-use.ts +155 -0
  68. package/src/route-types.ts +18 -0
  69. package/src/router/content-negotiation.ts +100 -1
  70. package/src/router/handler-context.ts +70 -17
  71. package/src/router/intercept-resolution.ts +9 -4
  72. package/src/router/lazy-includes.ts +6 -6
  73. package/src/router/loader-resolution.ts +153 -21
  74. package/src/router/manifest.ts +22 -13
  75. package/src/router/match-api.ts +127 -192
  76. package/src/router/match-middleware/cache-lookup.ts +28 -8
  77. package/src/router/match-middleware/segment-resolution.ts +53 -0
  78. package/src/router/match-result.ts +82 -4
  79. package/src/router/middleware-types.ts +2 -28
  80. package/src/router/middleware.ts +32 -7
  81. package/src/router/navigation-snapshot.ts +182 -0
  82. package/src/router/pattern-matching.ts +60 -9
  83. package/src/router/prerender-match.ts +110 -10
  84. package/src/router/preview-match.ts +30 -102
  85. package/src/router/request-classification.ts +310 -0
  86. package/src/router/route-snapshot.ts +245 -0
  87. package/src/router/router-interfaces.ts +36 -4
  88. package/src/router/router-options.ts +37 -11
  89. package/src/router/segment-resolution/fresh.ts +70 -5
  90. package/src/router/segment-resolution/revalidation.ts +87 -9
  91. package/src/router/trie-matching.ts +10 -4
  92. package/src/router/url-params.ts +49 -0
  93. package/src/router.ts +54 -7
  94. package/src/rsc/handler.ts +478 -395
  95. package/src/rsc/helpers.ts +69 -41
  96. package/src/rsc/loader-fetch.ts +18 -3
  97. package/src/rsc/manifest-init.ts +5 -1
  98. package/src/rsc/progressive-enhancement.ts +14 -3
  99. package/src/rsc/response-route-handler.ts +14 -1
  100. package/src/rsc/rsc-rendering.ts +15 -2
  101. package/src/rsc/server-action.ts +10 -2
  102. package/src/rsc/ssr-setup.ts +2 -2
  103. package/src/rsc/types.ts +6 -4
  104. package/src/segment-content-promise.ts +67 -0
  105. package/src/segment-loader-promise.ts +122 -0
  106. package/src/segment-system.tsx +11 -61
  107. package/src/server/context.ts +65 -5
  108. package/src/server/handle-store.ts +19 -0
  109. package/src/server/loader-registry.ts +9 -8
  110. package/src/server/request-context.ts +142 -55
  111. package/src/ssr/index.tsx +3 -0
  112. package/src/static-handler.ts +18 -6
  113. package/src/types/cache-types.ts +4 -4
  114. package/src/types/handler-context.ts +17 -43
  115. package/src/types/loader-types.ts +37 -11
  116. package/src/types/request-scope.ts +126 -0
  117. package/src/types/route-entry.ts +12 -1
  118. package/src/types/segments.ts +1 -1
  119. package/src/urls/include-helper.ts +24 -14
  120. package/src/urls/path-helper-types.ts +39 -6
  121. package/src/urls/path-helper.ts +47 -12
  122. package/src/urls/pattern-types.ts +12 -0
  123. package/src/urls/response-types.ts +18 -16
  124. package/src/use-loader.tsx +77 -5
  125. package/src/vite/debug.ts +140 -0
  126. package/src/vite/discovery/bundle-postprocess.ts +30 -33
  127. package/src/vite/discovery/discover-routers.ts +36 -4
  128. package/src/vite/discovery/prerender-collection.ts +175 -74
  129. package/src/vite/discovery/state.ts +13 -4
  130. package/src/vite/index.ts +4 -0
  131. package/src/vite/plugin-types.ts +60 -5
  132. package/src/vite/plugins/cjs-to-esm.ts +11 -0
  133. package/src/vite/plugins/client-ref-dedup.ts +21 -0
  134. package/src/vite/plugins/client-ref-hashing.ts +16 -4
  135. package/src/vite/plugins/cloudflare-protocol-loader-hook.d.mts +23 -0
  136. package/src/vite/plugins/cloudflare-protocol-loader-hook.mjs +76 -0
  137. package/src/vite/plugins/cloudflare-protocol-stub.ts +214 -0
  138. package/src/vite/plugins/expose-action-id.ts +52 -28
  139. package/src/vite/plugins/expose-id-utils.ts +12 -0
  140. package/src/vite/plugins/expose-ids/handler-transform.ts +30 -0
  141. package/src/vite/plugins/expose-ids/router-transform.ts +20 -3
  142. package/src/vite/plugins/expose-internal-ids.ts +563 -316
  143. package/src/vite/plugins/performance-tracks.ts +71 -170
  144. package/src/vite/plugins/refresh-cmd.ts +88 -26
  145. package/src/vite/plugins/use-cache-transform.ts +57 -43
  146. package/src/vite/rango.ts +62 -14
  147. package/src/vite/router-discovery.ts +389 -59
  148. package/src/vite/utils/banner.ts +1 -1
  149. package/src/vite/utils/package-resolution.ts +41 -1
  150. package/src/vite/utils/prerender-utils.ts +37 -5
  151. package/src/vite/utils/shared-utils.ts +3 -2
  152. package/dist/__internal.d.ts +0 -83
  153. package/dist/__internal.d.ts.map +0 -1
  154. package/dist/__internal.js +0 -19
  155. package/dist/__internal.js.map +0 -1
  156. package/dist/__mocks__/version.d.ts +0 -7
  157. package/dist/__mocks__/version.d.ts.map +0 -1
  158. package/dist/__mocks__/version.js +0 -7
  159. package/dist/__mocks__/version.js.map +0 -1
  160. package/dist/__tests__/client-href.test.d.ts +0 -2
  161. package/dist/__tests__/client-href.test.d.ts.map +0 -1
  162. package/dist/__tests__/client-href.test.js +0 -74
  163. package/dist/__tests__/client-href.test.js.map +0 -1
  164. package/dist/__tests__/component-utils.test.d.ts +0 -2
  165. package/dist/__tests__/component-utils.test.d.ts.map +0 -1
  166. package/dist/__tests__/component-utils.test.js +0 -51
  167. package/dist/__tests__/component-utils.test.js.map +0 -1
  168. package/dist/__tests__/event-controller.test.d.ts +0 -2
  169. package/dist/__tests__/event-controller.test.d.ts.map +0 -1
  170. package/dist/__tests__/event-controller.test.js +0 -538
  171. package/dist/__tests__/event-controller.test.js.map +0 -1
  172. package/dist/__tests__/helpers/route-tree.d.ts +0 -118
  173. package/dist/__tests__/helpers/route-tree.d.ts.map +0 -1
  174. package/dist/__tests__/helpers/route-tree.js +0 -374
  175. package/dist/__tests__/helpers/route-tree.js.map +0 -1
  176. package/dist/__tests__/match-result.test.d.ts +0 -2
  177. package/dist/__tests__/match-result.test.d.ts.map +0 -1
  178. package/dist/__tests__/match-result.test.js +0 -154
  179. package/dist/__tests__/match-result.test.js.map +0 -1
  180. package/dist/__tests__/navigation-store.test.d.ts +0 -2
  181. package/dist/__tests__/navigation-store.test.d.ts.map +0 -1
  182. package/dist/__tests__/navigation-store.test.js +0 -440
  183. package/dist/__tests__/navigation-store.test.js.map +0 -1
  184. package/dist/__tests__/partial-update.test.d.ts +0 -2
  185. package/dist/__tests__/partial-update.test.d.ts.map +0 -1
  186. package/dist/__tests__/partial-update.test.js +0 -1009
  187. package/dist/__tests__/partial-update.test.js.map +0 -1
  188. package/dist/__tests__/reverse-types.test.d.ts +0 -8
  189. package/dist/__tests__/reverse-types.test.d.ts.map +0 -1
  190. package/dist/__tests__/reverse-types.test.js +0 -656
  191. package/dist/__tests__/reverse-types.test.js.map +0 -1
  192. package/dist/__tests__/route-definition.test.d.ts +0 -2
  193. package/dist/__tests__/route-definition.test.d.ts.map +0 -1
  194. package/dist/__tests__/route-definition.test.js +0 -55
  195. package/dist/__tests__/route-definition.test.js.map +0 -1
  196. package/dist/__tests__/router-helpers.test.d.ts +0 -2
  197. package/dist/__tests__/router-helpers.test.d.ts.map +0 -1
  198. package/dist/__tests__/router-helpers.test.js +0 -377
  199. package/dist/__tests__/router-helpers.test.js.map +0 -1
  200. package/dist/__tests__/router-integration-2.test.d.ts +0 -2
  201. package/dist/__tests__/router-integration-2.test.d.ts.map +0 -1
  202. package/dist/__tests__/router-integration-2.test.js +0 -426
  203. package/dist/__tests__/router-integration-2.test.js.map +0 -1
  204. package/dist/__tests__/router-integration.test.d.ts +0 -2
  205. package/dist/__tests__/router-integration.test.d.ts.map +0 -1
  206. package/dist/__tests__/router-integration.test.js +0 -1051
  207. package/dist/__tests__/router-integration.test.js.map +0 -1
  208. package/dist/__tests__/search-params.test.d.ts +0 -5
  209. package/dist/__tests__/search-params.test.d.ts.map +0 -1
  210. package/dist/__tests__/search-params.test.js +0 -306
  211. package/dist/__tests__/search-params.test.js.map +0 -1
  212. package/dist/__tests__/segment-system.test.d.ts +0 -2
  213. package/dist/__tests__/segment-system.test.d.ts.map +0 -1
  214. package/dist/__tests__/segment-system.test.js +0 -627
  215. package/dist/__tests__/segment-system.test.js.map +0 -1
  216. package/dist/__tests__/static-handler-types.test.d.ts +0 -8
  217. package/dist/__tests__/static-handler-types.test.d.ts.map +0 -1
  218. package/dist/__tests__/static-handler-types.test.js +0 -63
  219. package/dist/__tests__/static-handler-types.test.js.map +0 -1
  220. package/dist/__tests__/urls.test.d.ts +0 -2
  221. package/dist/__tests__/urls.test.d.ts.map +0 -1
  222. package/dist/__tests__/urls.test.js +0 -421
  223. package/dist/__tests__/urls.test.js.map +0 -1
  224. package/dist/__tests__/use-mount.test.d.ts +0 -2
  225. package/dist/__tests__/use-mount.test.d.ts.map +0 -1
  226. package/dist/__tests__/use-mount.test.js +0 -35
  227. package/dist/__tests__/use-mount.test.js.map +0 -1
  228. package/dist/bin/rango.d.ts +0 -2
  229. package/dist/bin/rango.d.ts.map +0 -1
  230. package/dist/bin/rango.js.map +0 -1
  231. package/dist/browser/event-controller.d.ts +0 -191
  232. package/dist/browser/event-controller.d.ts.map +0 -1
  233. package/dist/browser/event-controller.js +0 -559
  234. package/dist/browser/event-controller.js.map +0 -1
  235. package/dist/browser/index.d.ts +0 -2
  236. package/dist/browser/index.d.ts.map +0 -1
  237. package/dist/browser/index.js +0 -14
  238. package/dist/browser/index.js.map +0 -1
  239. package/dist/browser/link-interceptor.d.ts +0 -38
  240. package/dist/browser/link-interceptor.d.ts.map +0 -1
  241. package/dist/browser/link-interceptor.js +0 -99
  242. package/dist/browser/link-interceptor.js.map +0 -1
  243. package/dist/browser/logging.d.ts +0 -10
  244. package/dist/browser/logging.d.ts.map +0 -1
  245. package/dist/browser/logging.js +0 -29
  246. package/dist/browser/logging.js.map +0 -1
  247. package/dist/browser/lru-cache.d.ts +0 -17
  248. package/dist/browser/lru-cache.d.ts.map +0 -1
  249. package/dist/browser/lru-cache.js +0 -50
  250. package/dist/browser/lru-cache.js.map +0 -1
  251. package/dist/browser/merge-segment-loaders.d.ts +0 -39
  252. package/dist/browser/merge-segment-loaders.d.ts.map +0 -1
  253. package/dist/browser/merge-segment-loaders.js +0 -102
  254. package/dist/browser/merge-segment-loaders.js.map +0 -1
  255. package/dist/browser/navigation-bridge.d.ts +0 -102
  256. package/dist/browser/navigation-bridge.d.ts.map +0 -1
  257. package/dist/browser/navigation-bridge.js +0 -708
  258. package/dist/browser/navigation-bridge.js.map +0 -1
  259. package/dist/browser/navigation-client.d.ts +0 -25
  260. package/dist/browser/navigation-client.d.ts.map +0 -1
  261. package/dist/browser/navigation-client.js +0 -157
  262. package/dist/browser/navigation-client.js.map +0 -1
  263. package/dist/browser/navigation-store.d.ts +0 -101
  264. package/dist/browser/navigation-store.d.ts.map +0 -1
  265. package/dist/browser/navigation-store.js +0 -625
  266. package/dist/browser/navigation-store.js.map +0 -1
  267. package/dist/browser/partial-update.d.ts +0 -75
  268. package/dist/browser/partial-update.d.ts.map +0 -1
  269. package/dist/browser/partial-update.js +0 -426
  270. package/dist/browser/partial-update.js.map +0 -1
  271. package/dist/browser/react/Link.d.ts +0 -86
  272. package/dist/browser/react/Link.d.ts.map +0 -1
  273. package/dist/browser/react/Link.js +0 -128
  274. package/dist/browser/react/Link.js.map +0 -1
  275. package/dist/browser/react/NavigationProvider.d.ts +0 -63
  276. package/dist/browser/react/NavigationProvider.d.ts.map +0 -1
  277. package/dist/browser/react/NavigationProvider.js +0 -216
  278. package/dist/browser/react/NavigationProvider.js.map +0 -1
  279. package/dist/browser/react/ScrollRestoration.d.ts +0 -75
  280. package/dist/browser/react/ScrollRestoration.d.ts.map +0 -1
  281. package/dist/browser/react/ScrollRestoration.js +0 -57
  282. package/dist/browser/react/ScrollRestoration.js.map +0 -1
  283. package/dist/browser/react/context.d.ts +0 -46
  284. package/dist/browser/react/context.d.ts.map +0 -1
  285. package/dist/browser/react/context.js +0 -10
  286. package/dist/browser/react/context.js.map +0 -1
  287. package/dist/browser/react/index.d.ts +0 -11
  288. package/dist/browser/react/index.d.ts.map +0 -1
  289. package/dist/browser/react/index.js +0 -22
  290. package/dist/browser/react/index.js.map +0 -1
  291. package/dist/browser/react/location-state-shared.d.ts +0 -63
  292. package/dist/browser/react/location-state-shared.d.ts.map +0 -1
  293. package/dist/browser/react/location-state-shared.js +0 -81
  294. package/dist/browser/react/location-state-shared.js.map +0 -1
  295. package/dist/browser/react/location-state.d.ts +0 -23
  296. package/dist/browser/react/location-state.d.ts.map +0 -1
  297. package/dist/browser/react/location-state.js +0 -29
  298. package/dist/browser/react/location-state.js.map +0 -1
  299. package/dist/browser/react/mount-context.d.ts +0 -24
  300. package/dist/browser/react/mount-context.d.ts.map +0 -1
  301. package/dist/browser/react/mount-context.js +0 -24
  302. package/dist/browser/react/mount-context.js.map +0 -1
  303. package/dist/browser/react/use-action.d.ts +0 -64
  304. package/dist/browser/react/use-action.d.ts.map +0 -1
  305. package/dist/browser/react/use-action.js +0 -134
  306. package/dist/browser/react/use-action.js.map +0 -1
  307. package/dist/browser/react/use-client-cache.d.ts +0 -41
  308. package/dist/browser/react/use-client-cache.d.ts.map +0 -1
  309. package/dist/browser/react/use-client-cache.js +0 -39
  310. package/dist/browser/react/use-client-cache.js.map +0 -1
  311. package/dist/browser/react/use-handle.d.ts +0 -31
  312. package/dist/browser/react/use-handle.d.ts.map +0 -1
  313. package/dist/browser/react/use-handle.js +0 -144
  314. package/dist/browser/react/use-handle.js.map +0 -1
  315. package/dist/browser/react/use-href.d.ts +0 -33
  316. package/dist/browser/react/use-href.d.ts.map +0 -1
  317. package/dist/browser/react/use-href.js +0 -39
  318. package/dist/browser/react/use-href.js.map +0 -1
  319. package/dist/browser/react/use-link-status.d.ts +0 -37
  320. package/dist/browser/react/use-link-status.d.ts.map +0 -1
  321. package/dist/browser/react/use-link-status.js +0 -99
  322. package/dist/browser/react/use-link-status.js.map +0 -1
  323. package/dist/browser/react/use-mount.d.ts +0 -25
  324. package/dist/browser/react/use-mount.d.ts.map +0 -1
  325. package/dist/browser/react/use-mount.js +0 -30
  326. package/dist/browser/react/use-mount.js.map +0 -1
  327. package/dist/browser/react/use-navigation.d.ts +0 -27
  328. package/dist/browser/react/use-navigation.d.ts.map +0 -1
  329. package/dist/browser/react/use-navigation.js +0 -87
  330. package/dist/browser/react/use-navigation.js.map +0 -1
  331. package/dist/browser/react/use-segments.d.ts +0 -38
  332. package/dist/browser/react/use-segments.d.ts.map +0 -1
  333. package/dist/browser/react/use-segments.js +0 -130
  334. package/dist/browser/react/use-segments.js.map +0 -1
  335. package/dist/browser/request-controller.d.ts +0 -26
  336. package/dist/browser/request-controller.d.ts.map +0 -1
  337. package/dist/browser/request-controller.js +0 -147
  338. package/dist/browser/request-controller.js.map +0 -1
  339. package/dist/browser/rsc-router.d.ts +0 -129
  340. package/dist/browser/rsc-router.d.ts.map +0 -1
  341. package/dist/browser/rsc-router.js +0 -195
  342. package/dist/browser/rsc-router.js.map +0 -1
  343. package/dist/browser/scroll-restoration.d.ts +0 -93
  344. package/dist/browser/scroll-restoration.d.ts.map +0 -1
  345. package/dist/browser/scroll-restoration.js +0 -321
  346. package/dist/browser/scroll-restoration.js.map +0 -1
  347. package/dist/browser/segment-structure-assert.d.ts +0 -17
  348. package/dist/browser/segment-structure-assert.d.ts.map +0 -1
  349. package/dist/browser/segment-structure-assert.js +0 -59
  350. package/dist/browser/segment-structure-assert.js.map +0 -1
  351. package/dist/browser/server-action-bridge.d.ts +0 -26
  352. package/dist/browser/server-action-bridge.d.ts.map +0 -1
  353. package/dist/browser/server-action-bridge.js +0 -668
  354. package/dist/browser/server-action-bridge.js.map +0 -1
  355. package/dist/browser/shallow.d.ts +0 -12
  356. package/dist/browser/shallow.d.ts.map +0 -1
  357. package/dist/browser/shallow.js +0 -34
  358. package/dist/browser/shallow.js.map +0 -1
  359. package/dist/browser/types.d.ts +0 -369
  360. package/dist/browser/types.d.ts.map +0 -1
  361. package/dist/browser/types.js +0 -2
  362. package/dist/browser/types.js.map +0 -1
  363. package/dist/build/__tests__/generate-cli.test.d.ts +0 -2
  364. package/dist/build/__tests__/generate-cli.test.d.ts.map +0 -1
  365. package/dist/build/__tests__/generate-cli.test.js +0 -237
  366. package/dist/build/__tests__/generate-cli.test.js.map +0 -1
  367. package/dist/build/__tests__/generate-manifest.test.d.ts +0 -2
  368. package/dist/build/__tests__/generate-manifest.test.d.ts.map +0 -1
  369. package/dist/build/__tests__/generate-manifest.test.js +0 -119
  370. package/dist/build/__tests__/generate-manifest.test.js.map +0 -1
  371. package/dist/build/__tests__/generate-route-types.test.d.ts +0 -2
  372. package/dist/build/__tests__/generate-route-types.test.d.ts.map +0 -1
  373. package/dist/build/__tests__/generate-route-types.test.js +0 -620
  374. package/dist/build/__tests__/generate-route-types.test.js.map +0 -1
  375. package/dist/build/__tests__/per-router-manifest.test.d.ts +0 -2
  376. package/dist/build/__tests__/per-router-manifest.test.d.ts.map +0 -1
  377. package/dist/build/__tests__/per-router-manifest.test.js +0 -308
  378. package/dist/build/__tests__/per-router-manifest.test.js.map +0 -1
  379. package/dist/build/generate-manifest.d.ts +0 -81
  380. package/dist/build/generate-manifest.d.ts.map +0 -1
  381. package/dist/build/generate-manifest.js +0 -276
  382. package/dist/build/generate-manifest.js.map +0 -1
  383. package/dist/build/generate-route-types.d.ts +0 -115
  384. package/dist/build/generate-route-types.d.ts.map +0 -1
  385. package/dist/build/generate-route-types.js +0 -740
  386. package/dist/build/generate-route-types.js.map +0 -1
  387. package/dist/build/index.d.ts +0 -21
  388. package/dist/build/index.d.ts.map +0 -1
  389. package/dist/build/index.js +0 -21
  390. package/dist/build/index.js.map +0 -1
  391. package/dist/build/route-trie.d.ts +0 -71
  392. package/dist/build/route-trie.d.ts.map +0 -1
  393. package/dist/build/route-trie.js +0 -175
  394. package/dist/build/route-trie.js.map +0 -1
  395. package/dist/cache/__tests__/cache-scope.test.d.ts +0 -2
  396. package/dist/cache/__tests__/cache-scope.test.d.ts.map +0 -1
  397. package/dist/cache/__tests__/cache-scope.test.js +0 -208
  398. package/dist/cache/__tests__/cache-scope.test.js.map +0 -1
  399. package/dist/cache/__tests__/document-cache.test.d.ts +0 -2
  400. package/dist/cache/__tests__/document-cache.test.d.ts.map +0 -1
  401. package/dist/cache/__tests__/document-cache.test.js +0 -345
  402. package/dist/cache/__tests__/document-cache.test.js.map +0 -1
  403. package/dist/cache/__tests__/memory-segment-store.test.d.ts +0 -2
  404. package/dist/cache/__tests__/memory-segment-store.test.d.ts.map +0 -1
  405. package/dist/cache/__tests__/memory-segment-store.test.js +0 -425
  406. package/dist/cache/__tests__/memory-segment-store.test.js.map +0 -1
  407. package/dist/cache/__tests__/memory-store.test.d.ts +0 -2
  408. package/dist/cache/__tests__/memory-store.test.d.ts.map +0 -1
  409. package/dist/cache/__tests__/memory-store.test.js +0 -367
  410. package/dist/cache/__tests__/memory-store.test.js.map +0 -1
  411. package/dist/cache/cache-scope.d.ts +0 -102
  412. package/dist/cache/cache-scope.d.ts.map +0 -1
  413. package/dist/cache/cache-scope.js +0 -440
  414. package/dist/cache/cache-scope.js.map +0 -1
  415. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts +0 -2
  416. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts.map +0 -1
  417. package/dist/cache/cf/__tests__/cf-cache-store.test.js +0 -330
  418. package/dist/cache/cf/__tests__/cf-cache-store.test.js.map +0 -1
  419. package/dist/cache/cf/cf-cache-store.d.ts +0 -165
  420. package/dist/cache/cf/cf-cache-store.d.ts.map +0 -1
  421. package/dist/cache/cf/cf-cache-store.js +0 -242
  422. package/dist/cache/cf/cf-cache-store.js.map +0 -1
  423. package/dist/cache/cf/index.d.ts +0 -14
  424. package/dist/cache/cf/index.d.ts.map +0 -1
  425. package/dist/cache/cf/index.js +0 -17
  426. package/dist/cache/cf/index.js.map +0 -1
  427. package/dist/cache/document-cache.d.ts +0 -64
  428. package/dist/cache/document-cache.d.ts.map +0 -1
  429. package/dist/cache/document-cache.js +0 -228
  430. package/dist/cache/document-cache.js.map +0 -1
  431. package/dist/cache/index.d.ts +0 -19
  432. package/dist/cache/index.d.ts.map +0 -1
  433. package/dist/cache/index.js +0 -21
  434. package/dist/cache/index.js.map +0 -1
  435. package/dist/cache/memory-segment-store.d.ts +0 -110
  436. package/dist/cache/memory-segment-store.d.ts.map +0 -1
  437. package/dist/cache/memory-segment-store.js +0 -117
  438. package/dist/cache/memory-segment-store.js.map +0 -1
  439. package/dist/cache/memory-store.d.ts +0 -41
  440. package/dist/cache/memory-store.d.ts.map +0 -1
  441. package/dist/cache/memory-store.js +0 -191
  442. package/dist/cache/memory-store.js.map +0 -1
  443. package/dist/cache/types.d.ts +0 -317
  444. package/dist/cache/types.d.ts.map +0 -1
  445. package/dist/cache/types.js +0 -12
  446. package/dist/cache/types.js.map +0 -1
  447. package/dist/client.d.ts +0 -248
  448. package/dist/client.d.ts.map +0 -1
  449. package/dist/client.js +0 -367
  450. package/dist/client.js.map +0 -1
  451. package/dist/client.rsc.d.ts +0 -26
  452. package/dist/client.rsc.d.ts.map +0 -1
  453. package/dist/client.rsc.js +0 -46
  454. package/dist/client.rsc.js.map +0 -1
  455. package/dist/component-utils.d.ts +0 -36
  456. package/dist/component-utils.d.ts.map +0 -1
  457. package/dist/component-utils.js +0 -61
  458. package/dist/component-utils.js.map +0 -1
  459. package/dist/components/DefaultDocument.d.ts +0 -13
  460. package/dist/components/DefaultDocument.d.ts.map +0 -1
  461. package/dist/components/DefaultDocument.js +0 -15
  462. package/dist/components/DefaultDocument.js.map +0 -1
  463. package/dist/debug.d.ts +0 -58
  464. package/dist/debug.d.ts.map +0 -1
  465. package/dist/debug.js +0 -157
  466. package/dist/debug.js.map +0 -1
  467. package/dist/default-error-boundary.d.ts +0 -11
  468. package/dist/default-error-boundary.d.ts.map +0 -1
  469. package/dist/default-error-boundary.js +0 -45
  470. package/dist/default-error-boundary.js.map +0 -1
  471. package/dist/deps/browser.d.ts +0 -2
  472. package/dist/deps/browser.d.ts.map +0 -1
  473. package/dist/deps/browser.js +0 -3
  474. package/dist/deps/browser.js.map +0 -1
  475. package/dist/deps/html-stream-client.d.ts +0 -2
  476. package/dist/deps/html-stream-client.d.ts.map +0 -1
  477. package/dist/deps/html-stream-client.js +0 -3
  478. package/dist/deps/html-stream-client.js.map +0 -1
  479. package/dist/deps/html-stream-server.d.ts +0 -2
  480. package/dist/deps/html-stream-server.d.ts.map +0 -1
  481. package/dist/deps/html-stream-server.js +0 -3
  482. package/dist/deps/html-stream-server.js.map +0 -1
  483. package/dist/deps/rsc.d.ts +0 -2
  484. package/dist/deps/rsc.d.ts.map +0 -1
  485. package/dist/deps/rsc.js +0 -4
  486. package/dist/deps/rsc.js.map +0 -1
  487. package/dist/deps/ssr.d.ts +0 -2
  488. package/dist/deps/ssr.d.ts.map +0 -1
  489. package/dist/deps/ssr.js +0 -3
  490. package/dist/deps/ssr.js.map +0 -1
  491. package/dist/errors.d.ts +0 -174
  492. package/dist/errors.d.ts.map +0 -1
  493. package/dist/errors.js +0 -241
  494. package/dist/errors.js.map +0 -1
  495. package/dist/handle.d.ts +0 -78
  496. package/dist/handle.d.ts.map +0 -1
  497. package/dist/handle.js +0 -82
  498. package/dist/handle.js.map +0 -1
  499. package/dist/handles/MetaTags.d.ts +0 -14
  500. package/dist/handles/MetaTags.d.ts.map +0 -1
  501. package/dist/handles/MetaTags.js +0 -136
  502. package/dist/handles/MetaTags.js.map +0 -1
  503. package/dist/handles/index.d.ts +0 -6
  504. package/dist/handles/index.d.ts.map +0 -1
  505. package/dist/handles/index.js +0 -6
  506. package/dist/handles/index.js.map +0 -1
  507. package/dist/handles/meta.d.ts +0 -39
  508. package/dist/handles/meta.d.ts.map +0 -1
  509. package/dist/handles/meta.js +0 -202
  510. package/dist/handles/meta.js.map +0 -1
  511. package/dist/host/__tests__/errors.test.d.ts +0 -2
  512. package/dist/host/__tests__/errors.test.d.ts.map +0 -1
  513. package/dist/host/__tests__/errors.test.js +0 -76
  514. package/dist/host/__tests__/errors.test.js.map +0 -1
  515. package/dist/host/__tests__/pattern-comprehensive.test.d.ts +0 -2
  516. package/dist/host/__tests__/pattern-comprehensive.test.d.ts.map +0 -1
  517. package/dist/host/__tests__/pattern-comprehensive.test.js +0 -732
  518. package/dist/host/__tests__/pattern-comprehensive.test.js.map +0 -1
  519. package/dist/host/__tests__/pattern-matcher.test.d.ts +0 -2
  520. package/dist/host/__tests__/pattern-matcher.test.d.ts.map +0 -1
  521. package/dist/host/__tests__/pattern-matcher.test.js +0 -251
  522. package/dist/host/__tests__/pattern-matcher.test.js.map +0 -1
  523. package/dist/host/__tests__/router.test.d.ts +0 -2
  524. package/dist/host/__tests__/router.test.d.ts.map +0 -1
  525. package/dist/host/__tests__/router.test.js +0 -241
  526. package/dist/host/__tests__/router.test.js.map +0 -1
  527. package/dist/host/__tests__/testing.test.d.ts +0 -2
  528. package/dist/host/__tests__/testing.test.d.ts.map +0 -1
  529. package/dist/host/__tests__/testing.test.js +0 -64
  530. package/dist/host/__tests__/testing.test.js.map +0 -1
  531. package/dist/host/__tests__/utils.test.d.ts +0 -2
  532. package/dist/host/__tests__/utils.test.d.ts.map +0 -1
  533. package/dist/host/__tests__/utils.test.js +0 -29
  534. package/dist/host/__tests__/utils.test.js.map +0 -1
  535. package/dist/host/cookie-handler.d.ts +0 -34
  536. package/dist/host/cookie-handler.d.ts.map +0 -1
  537. package/dist/host/cookie-handler.js +0 -124
  538. package/dist/host/cookie-handler.js.map +0 -1
  539. package/dist/host/errors.d.ts +0 -56
  540. package/dist/host/errors.d.ts.map +0 -1
  541. package/dist/host/errors.js +0 -79
  542. package/dist/host/errors.js.map +0 -1
  543. package/dist/host/index.d.ts +0 -29
  544. package/dist/host/index.d.ts.map +0 -1
  545. package/dist/host/index.js +0 -32
  546. package/dist/host/index.js.map +0 -1
  547. package/dist/host/pattern-matcher.d.ts +0 -36
  548. package/dist/host/pattern-matcher.d.ts.map +0 -1
  549. package/dist/host/pattern-matcher.js +0 -172
  550. package/dist/host/pattern-matcher.js.map +0 -1
  551. package/dist/host/router.d.ts +0 -26
  552. package/dist/host/router.d.ts.map +0 -1
  553. package/dist/host/router.js +0 -218
  554. package/dist/host/router.js.map +0 -1
  555. package/dist/host/testing.d.ts +0 -36
  556. package/dist/host/testing.d.ts.map +0 -1
  557. package/dist/host/testing.js +0 -55
  558. package/dist/host/testing.js.map +0 -1
  559. package/dist/host/types.d.ts +0 -115
  560. package/dist/host/types.d.ts.map +0 -1
  561. package/dist/host/types.js +0 -7
  562. package/dist/host/types.js.map +0 -1
  563. package/dist/host/utils.d.ts +0 -21
  564. package/dist/host/utils.d.ts.map +0 -1
  565. package/dist/host/utils.js +0 -23
  566. package/dist/host/utils.js.map +0 -1
  567. package/dist/href-client.d.ts +0 -131
  568. package/dist/href-client.d.ts.map +0 -1
  569. package/dist/href-client.js +0 -64
  570. package/dist/href-client.js.map +0 -1
  571. package/dist/href-context.d.ts +0 -29
  572. package/dist/href-context.d.ts.map +0 -1
  573. package/dist/href-context.js +0 -21
  574. package/dist/href-context.js.map +0 -1
  575. package/dist/index.d.ts +0 -73
  576. package/dist/index.d.ts.map +0 -1
  577. package/dist/index.js +0 -91
  578. package/dist/index.js.map +0 -1
  579. package/dist/index.rsc.d.ts +0 -32
  580. package/dist/index.rsc.d.ts.map +0 -1
  581. package/dist/index.rsc.js +0 -40
  582. package/dist/index.rsc.js.map +0 -1
  583. package/dist/internal-debug.d.ts +0 -2
  584. package/dist/internal-debug.d.ts.map +0 -1
  585. package/dist/internal-debug.js +0 -5
  586. package/dist/internal-debug.js.map +0 -1
  587. package/dist/loader.d.ts +0 -14
  588. package/dist/loader.d.ts.map +0 -1
  589. package/dist/loader.js +0 -20
  590. package/dist/loader.js.map +0 -1
  591. package/dist/loader.rsc.d.ts +0 -19
  592. package/dist/loader.rsc.d.ts.map +0 -1
  593. package/dist/loader.rsc.js +0 -99
  594. package/dist/loader.rsc.js.map +0 -1
  595. package/dist/network-error-thrower.d.ts +0 -17
  596. package/dist/network-error-thrower.d.ts.map +0 -1
  597. package/dist/network-error-thrower.js +0 -14
  598. package/dist/network-error-thrower.js.map +0 -1
  599. package/dist/outlet-context.d.ts +0 -13
  600. package/dist/outlet-context.d.ts.map +0 -1
  601. package/dist/outlet-context.js +0 -3
  602. package/dist/outlet-context.js.map +0 -1
  603. package/dist/prerender/__tests__/param-hash.test.d.ts +0 -2
  604. package/dist/prerender/__tests__/param-hash.test.d.ts.map +0 -1
  605. package/dist/prerender/__tests__/param-hash.test.js +0 -148
  606. package/dist/prerender/__tests__/param-hash.test.js.map +0 -1
  607. package/dist/prerender/param-hash.d.ts +0 -16
  608. package/dist/prerender/param-hash.d.ts.map +0 -1
  609. package/dist/prerender/param-hash.js +0 -36
  610. package/dist/prerender/param-hash.js.map +0 -1
  611. package/dist/prerender/store.d.ts +0 -38
  612. package/dist/prerender/store.d.ts.map +0 -1
  613. package/dist/prerender/store.js +0 -61
  614. package/dist/prerender/store.js.map +0 -1
  615. package/dist/prerender.d.ts +0 -66
  616. package/dist/prerender.d.ts.map +0 -1
  617. package/dist/prerender.js +0 -57
  618. package/dist/prerender.js.map +0 -1
  619. package/dist/reverse.d.ts +0 -196
  620. package/dist/reverse.d.ts.map +0 -1
  621. package/dist/reverse.js +0 -78
  622. package/dist/reverse.js.map +0 -1
  623. package/dist/root-error-boundary.d.ts +0 -33
  624. package/dist/root-error-boundary.d.ts.map +0 -1
  625. package/dist/root-error-boundary.js +0 -165
  626. package/dist/root-error-boundary.js.map +0 -1
  627. package/dist/route-content-wrapper.d.ts +0 -46
  628. package/dist/route-content-wrapper.d.ts.map +0 -1
  629. package/dist/route-content-wrapper.js +0 -77
  630. package/dist/route-content-wrapper.js.map +0 -1
  631. package/dist/route-definition.d.ts +0 -421
  632. package/dist/route-definition.d.ts.map +0 -1
  633. package/dist/route-definition.js +0 -868
  634. package/dist/route-definition.js.map +0 -1
  635. package/dist/route-map-builder.d.ts +0 -155
  636. package/dist/route-map-builder.d.ts.map +0 -1
  637. package/dist/route-map-builder.js +0 -237
  638. package/dist/route-map-builder.js.map +0 -1
  639. package/dist/route-types.d.ts +0 -165
  640. package/dist/route-types.d.ts.map +0 -1
  641. package/dist/route-types.js +0 -7
  642. package/dist/route-types.js.map +0 -1
  643. package/dist/router/__tests__/handler-context.test.d.ts +0 -2
  644. package/dist/router/__tests__/handler-context.test.d.ts.map +0 -1
  645. package/dist/router/__tests__/handler-context.test.js +0 -65
  646. package/dist/router/__tests__/handler-context.test.js.map +0 -1
  647. package/dist/router/__tests__/loader-cycle-detection.test.d.ts +0 -2
  648. package/dist/router/__tests__/loader-cycle-detection.test.d.ts.map +0 -1
  649. package/dist/router/__tests__/loader-cycle-detection.test.js +0 -221
  650. package/dist/router/__tests__/loader-cycle-detection.test.js.map +0 -1
  651. package/dist/router/__tests__/match-context.test.d.ts +0 -2
  652. package/dist/router/__tests__/match-context.test.d.ts.map +0 -1
  653. package/dist/router/__tests__/match-context.test.js +0 -92
  654. package/dist/router/__tests__/match-context.test.js.map +0 -1
  655. package/dist/router/__tests__/match-pipelines.test.d.ts +0 -2
  656. package/dist/router/__tests__/match-pipelines.test.d.ts.map +0 -1
  657. package/dist/router/__tests__/match-pipelines.test.js +0 -417
  658. package/dist/router/__tests__/match-pipelines.test.js.map +0 -1
  659. package/dist/router/__tests__/match-result.test.d.ts +0 -2
  660. package/dist/router/__tests__/match-result.test.d.ts.map +0 -1
  661. package/dist/router/__tests__/match-result.test.js +0 -457
  662. package/dist/router/__tests__/match-result.test.js.map +0 -1
  663. package/dist/router/__tests__/on-error.test.d.ts +0 -2
  664. package/dist/router/__tests__/on-error.test.d.ts.map +0 -1
  665. package/dist/router/__tests__/on-error.test.js +0 -678
  666. package/dist/router/__tests__/on-error.test.js.map +0 -1
  667. package/dist/router/__tests__/pattern-matching.test.d.ts +0 -2
  668. package/dist/router/__tests__/pattern-matching.test.d.ts.map +0 -1
  669. package/dist/router/__tests__/pattern-matching.test.js +0 -629
  670. package/dist/router/__tests__/pattern-matching.test.js.map +0 -1
  671. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts +0 -2
  672. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts.map +0 -1
  673. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js +0 -155
  674. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js.map +0 -1
  675. package/dist/router/error-handling.d.ts +0 -77
  676. package/dist/router/error-handling.d.ts.map +0 -1
  677. package/dist/router/error-handling.js +0 -202
  678. package/dist/router/error-handling.js.map +0 -1
  679. package/dist/router/handler-context.d.ts +0 -20
  680. package/dist/router/handler-context.d.ts.map +0 -1
  681. package/dist/router/handler-context.js +0 -198
  682. package/dist/router/handler-context.js.map +0 -1
  683. package/dist/router/intercept-resolution.d.ts +0 -66
  684. package/dist/router/intercept-resolution.d.ts.map +0 -1
  685. package/dist/router/intercept-resolution.js +0 -246
  686. package/dist/router/intercept-resolution.js.map +0 -1
  687. package/dist/router/loader-resolution.d.ts +0 -64
  688. package/dist/router/loader-resolution.d.ts.map +0 -1
  689. package/dist/router/loader-resolution.js +0 -284
  690. package/dist/router/loader-resolution.js.map +0 -1
  691. package/dist/router/logging.d.ts +0 -15
  692. package/dist/router/logging.d.ts.map +0 -1
  693. package/dist/router/logging.js +0 -99
  694. package/dist/router/logging.js.map +0 -1
  695. package/dist/router/manifest.d.ts +0 -22
  696. package/dist/router/manifest.d.ts.map +0 -1
  697. package/dist/router/manifest.js +0 -181
  698. package/dist/router/manifest.js.map +0 -1
  699. package/dist/router/match-api.d.ts +0 -35
  700. package/dist/router/match-api.d.ts.map +0 -1
  701. package/dist/router/match-api.js +0 -406
  702. package/dist/router/match-api.js.map +0 -1
  703. package/dist/router/match-context.d.ts +0 -206
  704. package/dist/router/match-context.d.ts.map +0 -1
  705. package/dist/router/match-context.js +0 -17
  706. package/dist/router/match-context.js.map +0 -1
  707. package/dist/router/match-middleware/background-revalidation.d.ts +0 -127
  708. package/dist/router/match-middleware/background-revalidation.d.ts.map +0 -1
  709. package/dist/router/match-middleware/background-revalidation.js +0 -75
  710. package/dist/router/match-middleware/background-revalidation.js.map +0 -1
  711. package/dist/router/match-middleware/cache-lookup.d.ts +0 -112
  712. package/dist/router/match-middleware/cache-lookup.d.ts.map +0 -1
  713. package/dist/router/match-middleware/cache-lookup.js +0 -257
  714. package/dist/router/match-middleware/cache-lookup.js.map +0 -1
  715. package/dist/router/match-middleware/cache-store.d.ts +0 -113
  716. package/dist/router/match-middleware/cache-store.d.ts.map +0 -1
  717. package/dist/router/match-middleware/cache-store.js +0 -108
  718. package/dist/router/match-middleware/cache-store.js.map +0 -1
  719. package/dist/router/match-middleware/index.d.ts +0 -81
  720. package/dist/router/match-middleware/index.d.ts.map +0 -1
  721. package/dist/router/match-middleware/index.js +0 -80
  722. package/dist/router/match-middleware/index.js.map +0 -1
  723. package/dist/router/match-middleware/intercept-resolution.d.ts +0 -117
  724. package/dist/router/match-middleware/intercept-resolution.d.ts.map +0 -1
  725. package/dist/router/match-middleware/intercept-resolution.js +0 -134
  726. package/dist/router/match-middleware/intercept-resolution.js.map +0 -1
  727. package/dist/router/match-middleware/segment-resolution.d.ts +0 -99
  728. package/dist/router/match-middleware/segment-resolution.d.ts.map +0 -1
  729. package/dist/router/match-middleware/segment-resolution.js +0 -53
  730. package/dist/router/match-middleware/segment-resolution.js.map +0 -1
  731. package/dist/router/match-pipelines.d.ts +0 -147
  732. package/dist/router/match-pipelines.d.ts.map +0 -1
  733. package/dist/router/match-pipelines.js +0 -82
  734. package/dist/router/match-pipelines.js.map +0 -1
  735. package/dist/router/match-result.d.ts +0 -126
  736. package/dist/router/match-result.d.ts.map +0 -1
  737. package/dist/router/match-result.js +0 -93
  738. package/dist/router/match-result.js.map +0 -1
  739. package/dist/router/metrics.d.ts +0 -20
  740. package/dist/router/metrics.d.ts.map +0 -1
  741. package/dist/router/metrics.js +0 -47
  742. package/dist/router/metrics.js.map +0 -1
  743. package/dist/router/middleware.d.ts +0 -249
  744. package/dist/router/middleware.d.ts.map +0 -1
  745. package/dist/router/middleware.js +0 -434
  746. package/dist/router/middleware.js.map +0 -1
  747. package/dist/router/middleware.test.d.ts +0 -2
  748. package/dist/router/middleware.test.d.ts.map +0 -1
  749. package/dist/router/middleware.test.js +0 -816
  750. package/dist/router/middleware.test.js.map +0 -1
  751. package/dist/router/pattern-matching.d.ts +0 -149
  752. package/dist/router/pattern-matching.d.ts.map +0 -1
  753. package/dist/router/pattern-matching.js +0 -349
  754. package/dist/router/pattern-matching.js.map +0 -1
  755. package/dist/router/revalidation.d.ts +0 -44
  756. package/dist/router/revalidation.d.ts.map +0 -1
  757. package/dist/router/revalidation.js +0 -147
  758. package/dist/router/revalidation.js.map +0 -1
  759. package/dist/router/router-context.d.ts +0 -135
  760. package/dist/router/router-context.d.ts.map +0 -1
  761. package/dist/router/router-context.js +0 -36
  762. package/dist/router/router-context.js.map +0 -1
  763. package/dist/router/segment-resolution.d.ts +0 -127
  764. package/dist/router/segment-resolution.d.ts.map +0 -1
  765. package/dist/router/segment-resolution.js +0 -919
  766. package/dist/router/segment-resolution.js.map +0 -1
  767. package/dist/router/trie-matching.d.ts +0 -40
  768. package/dist/router/trie-matching.d.ts.map +0 -1
  769. package/dist/router/trie-matching.js +0 -127
  770. package/dist/router/trie-matching.js.map +0 -1
  771. package/dist/router/types.d.ts +0 -136
  772. package/dist/router/types.d.ts.map +0 -1
  773. package/dist/router/types.js +0 -7
  774. package/dist/router/types.js.map +0 -1
  775. package/dist/router.d.ts +0 -753
  776. package/dist/router.d.ts.map +0 -1
  777. package/dist/router.gen.d.ts +0 -6
  778. package/dist/router.gen.d.ts.map +0 -1
  779. package/dist/router.gen.js +0 -6
  780. package/dist/router.gen.js.map +0 -1
  781. package/dist/router.js +0 -1304
  782. package/dist/router.js.map +0 -1
  783. package/dist/rsc/__tests__/helpers.test.d.ts +0 -2
  784. package/dist/rsc/__tests__/helpers.test.d.ts.map +0 -1
  785. package/dist/rsc/__tests__/helpers.test.js +0 -140
  786. package/dist/rsc/__tests__/helpers.test.js.map +0 -1
  787. package/dist/rsc/handler.d.ts +0 -45
  788. package/dist/rsc/handler.d.ts.map +0 -1
  789. package/dist/rsc/handler.js +0 -1172
  790. package/dist/rsc/handler.js.map +0 -1
  791. package/dist/rsc/helpers.d.ts +0 -16
  792. package/dist/rsc/helpers.d.ts.map +0 -1
  793. package/dist/rsc/helpers.js +0 -55
  794. package/dist/rsc/helpers.js.map +0 -1
  795. package/dist/rsc/index.d.ts +0 -22
  796. package/dist/rsc/index.d.ts.map +0 -1
  797. package/dist/rsc/index.js +0 -23
  798. package/dist/rsc/index.js.map +0 -1
  799. package/dist/rsc/nonce.d.ts +0 -9
  800. package/dist/rsc/nonce.d.ts.map +0 -1
  801. package/dist/rsc/nonce.js +0 -18
  802. package/dist/rsc/nonce.js.map +0 -1
  803. package/dist/rsc/types.d.ts +0 -206
  804. package/dist/rsc/types.d.ts.map +0 -1
  805. package/dist/rsc/types.js +0 -8
  806. package/dist/rsc/types.js.map +0 -1
  807. package/dist/search-params.d.ts +0 -103
  808. package/dist/search-params.d.ts.map +0 -1
  809. package/dist/search-params.js +0 -74
  810. package/dist/search-params.js.map +0 -1
  811. package/dist/segment-system.d.ts +0 -75
  812. package/dist/segment-system.d.ts.map +0 -1
  813. package/dist/segment-system.js +0 -336
  814. package/dist/segment-system.js.map +0 -1
  815. package/dist/server/context.d.ts +0 -245
  816. package/dist/server/context.d.ts.map +0 -1
  817. package/dist/server/context.js +0 -197
  818. package/dist/server/context.js.map +0 -1
  819. package/dist/server/fetchable-loader-store.d.ts +0 -18
  820. package/dist/server/fetchable-loader-store.d.ts.map +0 -1
  821. package/dist/server/fetchable-loader-store.js +0 -18
  822. package/dist/server/fetchable-loader-store.js.map +0 -1
  823. package/dist/server/handle-store.d.ts +0 -85
  824. package/dist/server/handle-store.d.ts.map +0 -1
  825. package/dist/server/handle-store.js +0 -142
  826. package/dist/server/handle-store.js.map +0 -1
  827. package/dist/server/loader-registry.d.ts +0 -55
  828. package/dist/server/loader-registry.d.ts.map +0 -1
  829. package/dist/server/loader-registry.js +0 -132
  830. package/dist/server/loader-registry.js.map +0 -1
  831. package/dist/server/request-context.d.ts +0 -226
  832. package/dist/server/request-context.d.ts.map +0 -1
  833. package/dist/server/request-context.js +0 -290
  834. package/dist/server/request-context.js.map +0 -1
  835. package/dist/server/root-layout.d.ts +0 -4
  836. package/dist/server/root-layout.d.ts.map +0 -1
  837. package/dist/server/root-layout.js +0 -5
  838. package/dist/server/root-layout.js.map +0 -1
  839. package/dist/server.d.ts +0 -15
  840. package/dist/server.d.ts.map +0 -1
  841. package/dist/server.js +0 -20
  842. package/dist/server.js.map +0 -1
  843. package/dist/ssr/__tests__/ssr-handler.test.d.ts +0 -2
  844. package/dist/ssr/__tests__/ssr-handler.test.d.ts.map +0 -1
  845. package/dist/ssr/__tests__/ssr-handler.test.js +0 -132
  846. package/dist/ssr/__tests__/ssr-handler.test.js.map +0 -1
  847. package/dist/ssr/index.d.ts +0 -98
  848. package/dist/ssr/index.d.ts.map +0 -1
  849. package/dist/ssr/index.js +0 -158
  850. package/dist/ssr/index.js.map +0 -1
  851. package/dist/static-handler.d.ts +0 -50
  852. package/dist/static-handler.d.ts.map +0 -1
  853. package/dist/static-handler.gen.d.ts +0 -5
  854. package/dist/static-handler.gen.d.ts.map +0 -1
  855. package/dist/static-handler.gen.js +0 -5
  856. package/dist/static-handler.gen.js.map +0 -1
  857. package/dist/static-handler.js +0 -29
  858. package/dist/static-handler.js.map +0 -1
  859. package/dist/theme/ThemeProvider.d.ts +0 -20
  860. package/dist/theme/ThemeProvider.d.ts.map +0 -1
  861. package/dist/theme/ThemeProvider.js +0 -240
  862. package/dist/theme/ThemeProvider.js.map +0 -1
  863. package/dist/theme/ThemeScript.d.ts +0 -48
  864. package/dist/theme/ThemeScript.d.ts.map +0 -1
  865. package/dist/theme/ThemeScript.js +0 -13
  866. package/dist/theme/ThemeScript.js.map +0 -1
  867. package/dist/theme/__tests__/theme.test.d.ts +0 -2
  868. package/dist/theme/__tests__/theme.test.d.ts.map +0 -1
  869. package/dist/theme/__tests__/theme.test.js +0 -103
  870. package/dist/theme/__tests__/theme.test.js.map +0 -1
  871. package/dist/theme/constants.d.ts +0 -29
  872. package/dist/theme/constants.d.ts.map +0 -1
  873. package/dist/theme/constants.js +0 -48
  874. package/dist/theme/constants.js.map +0 -1
  875. package/dist/theme/index.d.ts +0 -31
  876. package/dist/theme/index.d.ts.map +0 -1
  877. package/dist/theme/index.js +0 -36
  878. package/dist/theme/index.js.map +0 -1
  879. package/dist/theme/theme-context.d.ts +0 -40
  880. package/dist/theme/theme-context.d.ts.map +0 -1
  881. package/dist/theme/theme-context.js +0 -60
  882. package/dist/theme/theme-context.js.map +0 -1
  883. package/dist/theme/theme-script.d.ts +0 -27
  884. package/dist/theme/theme-script.d.ts.map +0 -1
  885. package/dist/theme/theme-script.js +0 -147
  886. package/dist/theme/theme-script.js.map +0 -1
  887. package/dist/theme/types.d.ts +0 -163
  888. package/dist/theme/types.d.ts.map +0 -1
  889. package/dist/theme/types.js +0 -11
  890. package/dist/theme/types.js.map +0 -1
  891. package/dist/theme/use-theme.d.ts +0 -12
  892. package/dist/theme/use-theme.d.ts.map +0 -1
  893. package/dist/theme/use-theme.js +0 -40
  894. package/dist/theme/use-theme.js.map +0 -1
  895. package/dist/types.d.ts +0 -1479
  896. package/dist/types.d.ts.map +0 -1
  897. package/dist/types.js +0 -10
  898. package/dist/types.js.map +0 -1
  899. package/dist/urls.d.ts +0 -441
  900. package/dist/urls.d.ts.map +0 -1
  901. package/dist/urls.gen.d.ts +0 -8
  902. package/dist/urls.gen.d.ts.map +0 -1
  903. package/dist/urls.gen.js +0 -8
  904. package/dist/urls.gen.js.map +0 -1
  905. package/dist/urls.js +0 -443
  906. package/dist/urls.js.map +0 -1
  907. package/dist/use-loader.d.ts +0 -127
  908. package/dist/use-loader.d.ts.map +0 -1
  909. package/dist/use-loader.js +0 -237
  910. package/dist/use-loader.js.map +0 -1
  911. package/dist/vite/__tests__/ast-handler-extract.test.d.ts +0 -2
  912. package/dist/vite/__tests__/ast-handler-extract.test.d.ts.map +0 -1
  913. package/dist/vite/__tests__/ast-handler-extract.test.js +0 -294
  914. package/dist/vite/__tests__/ast-handler-extract.test.js.map +0 -1
  915. package/dist/vite/__tests__/expose-id-utils.test.d.ts +0 -2
  916. package/dist/vite/__tests__/expose-id-utils.test.d.ts.map +0 -1
  917. package/dist/vite/__tests__/expose-id-utils.test.js +0 -224
  918. package/dist/vite/__tests__/expose-id-utils.test.js.map +0 -1
  919. package/dist/vite/__tests__/expose-internal-ids.test.d.ts +0 -2
  920. package/dist/vite/__tests__/expose-internal-ids.test.d.ts.map +0 -1
  921. package/dist/vite/__tests__/expose-internal-ids.test.js +0 -647
  922. package/dist/vite/__tests__/expose-internal-ids.test.js.map +0 -1
  923. package/dist/vite/__tests__/expose-router-id.test.d.ts +0 -2
  924. package/dist/vite/__tests__/expose-router-id.test.d.ts.map +0 -1
  925. package/dist/vite/__tests__/expose-router-id.test.js +0 -39
  926. package/dist/vite/__tests__/expose-router-id.test.js.map +0 -1
  927. package/dist/vite/ast-handler-extract.d.ts +0 -49
  928. package/dist/vite/ast-handler-extract.d.ts.map +0 -1
  929. package/dist/vite/ast-handler-extract.js +0 -249
  930. package/dist/vite/ast-handler-extract.js.map +0 -1
  931. package/dist/vite/expose-action-id.d.ts +0 -19
  932. package/dist/vite/expose-action-id.d.ts.map +0 -1
  933. package/dist/vite/expose-action-id.js +0 -250
  934. package/dist/vite/expose-action-id.js.map +0 -1
  935. package/dist/vite/expose-id-utils.d.ts +0 -69
  936. package/dist/vite/expose-id-utils.d.ts.map +0 -1
  937. package/dist/vite/expose-id-utils.js +0 -289
  938. package/dist/vite/expose-id-utils.js.map +0 -1
  939. package/dist/vite/expose-internal-ids.d.ts +0 -22
  940. package/dist/vite/expose-internal-ids.d.ts.map +0 -1
  941. package/dist/vite/expose-internal-ids.js +0 -886
  942. package/dist/vite/expose-internal-ids.js.map +0 -1
  943. package/dist/vite/index.d.ts +0 -149
  944. package/dist/vite/index.d.ts.map +0 -1
  945. package/dist/vite/index.js.map +0 -1
  946. package/dist/vite/index.named-routes.gen.ts +0 -103
  947. package/dist/vite/package-resolution.d.ts +0 -43
  948. package/dist/vite/package-resolution.d.ts.map +0 -1
  949. package/dist/vite/package-resolution.js +0 -112
  950. package/dist/vite/package-resolution.js.map +0 -1
  951. package/dist/vite/virtual-entries.d.ts +0 -25
  952. package/dist/vite/virtual-entries.d.ts.map +0 -1
  953. package/dist/vite/virtual-entries.js +0 -110
  954. package/dist/vite/virtual-entries.js.map +0 -1
  955. package/src/browser/debug-channel.ts +0 -93
@@ -10,6 +10,8 @@ import type { Plugin } from "vite";
10
10
  import { createServer as createViteServer } from "vite";
11
11
  import { resolve } from "node:path";
12
12
  import { readFileSync } from "node:fs";
13
+ import { createRequire, register } from "node:module";
14
+ import { pathToFileURL } from "node:url";
13
15
  import {
14
16
  formatNestedRouterConflictError,
15
17
  findNestedRouterConflict,
@@ -17,6 +19,10 @@ import {
17
19
  } from "../build/generate-route-types.js";
18
20
  import { createVersionPlugin } from "./plugins/version-plugin.js";
19
21
  import { createVirtualStubPlugin } from "./plugins/virtual-stub-plugin.js";
22
+ import {
23
+ BUILD_ENV_GLOBAL_KEY,
24
+ createCloudflareProtocolStubPlugin,
25
+ } from "./plugins/cloudflare-protocol-stub.js";
20
26
  import {
21
27
  exposeInternalIds,
22
28
  exposeRouterId,
@@ -42,9 +48,58 @@ import {
42
48
  } from "./discovery/virtual-module-codegen.js";
43
49
  import { postprocessBundle } from "./discovery/bundle-postprocess.js";
44
50
  import { resetStagedBuildAssets } from "./utils/prerender-utils.js";
51
+ import { createRangoDebugger, timed, timedSync } from "./debug.js";
52
+
53
+ const debugDiscovery = createRangoDebugger("rango:discovery");
54
+ const debugRoutes = createRangoDebugger("rango:routes");
55
+ const debugBuild = createRangoDebugger("rango:build");
56
+ const debugDev = createRangoDebugger("rango:dev");
45
57
 
46
58
  export { VIRTUAL_ROUTES_MANIFEST_ID };
47
59
 
60
+ // ============================================================================
61
+ // Node ESM Loader Hook Registration
62
+ // ============================================================================
63
+
64
+ /**
65
+ * Registers a Node ESM loader hook that resolves `cloudflare:*` specifiers
66
+ * to a data: URL stub. Defense-in-depth alongside the Vite transform in
67
+ * `cloudflare-protocol-stub.ts`:
68
+ *
69
+ * - The Vite transform catches `cloudflare:*` imports in modules that flow
70
+ * through Vite's plugin pipeline. That's the vast majority of cases.
71
+ * - The Node loader catches imports in modules that Vite/Rollup externalize
72
+ * (e.g. the `partyserver` package, which has a top-level
73
+ * `import { DurableObject, env } from "cloudflare:workers"` and ships
74
+ * shapes plugin-rsc marks as external). Externalized modules are loaded
75
+ * via Node's native ESM loader, which rejects URL schemes.
76
+ *
77
+ * Registration is process-global and one-shot. The hook only intercepts
78
+ * `cloudflare:*` specifiers; everything else passes through via
79
+ * `nextResolve()`. It runs in a separate worker thread (Node ESM loader
80
+ * architecture), so it can't read the `globalThis[BUILD_ENV_GLOBAL_KEY]`
81
+ * bridge that the Vite transform uses — the stubs served here always
82
+ * return `env = {}`. That's fine because externalized libraries don't
83
+ * typically access `env` at module top level; user source (where real
84
+ * `env` matters at build time) flows through the Vite transform.
85
+ */
86
+ let loaderHookRegistered = false;
87
+ function ensureCloudflareProtocolLoaderRegistered(): void {
88
+ if (loaderHookRegistered) return;
89
+ loaderHookRegistered = true;
90
+ try {
91
+ register(
92
+ new URL("./plugins/cloudflare-protocol-loader-hook.mjs", import.meta.url),
93
+ );
94
+ } catch (err: any) {
95
+ // register() requires Node 18.19+ / 20.6+. Older Node still has the
96
+ // Vite transform as primary defense.
97
+ console.warn(
98
+ `[rsc-router] Could not register Node ESM loader hook for cloudflare:* imports (${err?.message ?? err}). Falling back to Vite transform only.`,
99
+ );
100
+ }
101
+ }
102
+
48
103
  // ============================================================================
49
104
  // Temp Server Factory
50
105
  // ============================================================================
@@ -64,6 +119,11 @@ async function createTempRscServer(
64
119
  state: DiscoveryState,
65
120
  options: { forceBuild?: boolean; cacheDir?: string } = {},
66
121
  ) {
122
+ // Install the Node ESM loader hook before any module evaluation so
123
+ // `cloudflare:*` specifiers in externalized/loader-delegated modules
124
+ // (e.g. packages plugin-rsc marks as external) resolve to stubs
125
+ // instead of crashing Node's native loader.
126
+ ensureCloudflareProtocolLoaderRegistered();
67
127
  const { default: rsc } = await import("@vitejs/plugin-rsc");
68
128
  return createViteServer({
69
129
  root: state.projectRoot,
@@ -86,6 +146,7 @@ async function createTempRscServer(
86
146
  ...(options.forceBuild ? [hashClientRefs(state.projectRoot)] : []),
87
147
  createVersionPlugin(),
88
148
  createVirtualStubPlugin(),
149
+ createCloudflareProtocolStubPlugin(),
89
150
  // Dev prerender must use dev-mode IDs (path-based) to match the workerd
90
151
  // runtime. forceBuild produces hashed IDs for production bundle consistency.
91
152
  exposeInternalIds(options.forceBuild ? { forceBuild: true } : undefined),
@@ -94,6 +155,111 @@ async function createTempRscServer(
94
155
  });
95
156
  }
96
157
 
158
+ // ============================================================================
159
+ // Build-Time Env Resolution
160
+ // ============================================================================
161
+
162
+ import type {
163
+ BuildEnvOption,
164
+ BuildEnvFactoryContext,
165
+ BuildEnvResult,
166
+ } from "./plugin-types.js";
167
+
168
+ /**
169
+ * Resolve the buildEnv option into a concrete { env, dispose? } result.
170
+ * Handles all four input shapes: false, "auto", factory, plain object.
171
+ */
172
+ async function resolveBuildEnv(
173
+ option: BuildEnvOption | undefined,
174
+ factoryCtx: BuildEnvFactoryContext,
175
+ ): Promise<BuildEnvResult | null> {
176
+ if (!option) return null;
177
+
178
+ if (option === "auto") {
179
+ if (factoryCtx.preset !== "cloudflare") {
180
+ throw new Error(
181
+ '[rsc-router] buildEnv: "auto" is only supported with preset: "cloudflare". ' +
182
+ "Use a factory function or plain object for other presets.",
183
+ );
184
+ }
185
+ try {
186
+ // Resolve wrangler from the user's project root (not the router package)
187
+ const userRequire = createRequire(
188
+ resolve(factoryCtx.root, "package.json"),
189
+ );
190
+ const wranglerPath = userRequire.resolve("wrangler");
191
+ const { getPlatformProxy } = (await import(
192
+ pathToFileURL(wranglerPath).href
193
+ )) as {
194
+ getPlatformProxy: (opts?: any) => Promise<any>;
195
+ };
196
+ const proxy = await getPlatformProxy();
197
+ return {
198
+ env: proxy.env as Record<string, unknown>,
199
+ dispose: proxy.dispose,
200
+ };
201
+ } catch (err: any) {
202
+ throw new Error(
203
+ '[rsc-router] buildEnv: "auto" requires wrangler to be installed.\n' +
204
+ `Install it with: pnpm add -D wrangler\n${err.message}`,
205
+ );
206
+ }
207
+ }
208
+
209
+ if (typeof option === "function") {
210
+ return await option(factoryCtx);
211
+ }
212
+
213
+ // Plain object
214
+ return { env: option };
215
+ }
216
+
217
+ /**
218
+ * Acquire build-time env bindings and store on discovery state.
219
+ * Returns true if env was acquired, false if buildEnv is disabled.
220
+ */
221
+ async function acquireBuildEnv(
222
+ s: DiscoveryState,
223
+ command: "serve" | "build",
224
+ mode: string,
225
+ ): Promise<boolean> {
226
+ const option = s.opts?.buildEnv;
227
+ if (!option) return false;
228
+
229
+ const result = await resolveBuildEnv(option, {
230
+ root: s.projectRoot,
231
+ mode,
232
+ command,
233
+ preset: s.opts?.preset ?? "node",
234
+ });
235
+ if (!result) return false;
236
+
237
+ s.resolvedBuildEnv = result.env;
238
+ s.buildEnvDispose = result.dispose ?? null;
239
+ // Bridge the resolved env into `cloudflare:workers`'s stubbed `env`
240
+ // export so user code that does `import { env } from "cloudflare:workers"`
241
+ // sees the real bindings proxy during discovery + prerender instead of
242
+ // an empty object. The stub reads this global at module-evaluation time.
243
+ (globalThis as Record<string, unknown>)[BUILD_ENV_GLOBAL_KEY] = result.env;
244
+ return true;
245
+ }
246
+
247
+ /**
248
+ * Release build-time env resources and clear state.
249
+ */
250
+ async function releaseBuildEnv(s: DiscoveryState): Promise<void> {
251
+ if (s.buildEnvDispose) {
252
+ try {
253
+ await s.buildEnvDispose();
254
+ } catch (err: any) {
255
+ console.warn(`[rsc-router] buildEnv dispose failed: ${err.message}`);
256
+ }
257
+ s.buildEnvDispose = null;
258
+ }
259
+ s.resolvedBuildEnv = undefined;
260
+ delete (globalThis as Record<string, unknown>)[BUILD_ENV_GLOBAL_KEY];
261
+ }
262
+
97
263
  /**
98
264
  * Plugin that discovers router instances at dev/build time via the RSC environment.
99
265
  *
@@ -111,6 +277,8 @@ export function createRouterDiscoveryPlugin(
111
277
  opts?: PluginOptions,
112
278
  ): Plugin {
113
279
  const s = createDiscoveryState(entryPath, opts);
280
+ let viteCommand: "serve" | "build" = "build";
281
+ let viteMode = "production";
114
282
 
115
283
  return {
116
284
  name: "@rangojs/router:discovery",
@@ -121,32 +289,20 @@ export function createRouterDiscoveryPlugin(
121
289
  __RANGO_DEBUG__: JSON.stringify(!!process.env.INTERNAL_RANGO_DEBUG),
122
290
  },
123
291
  };
124
- if (opts?.enableBuildPrerender) {
125
- config.environments = {
126
- rsc: {
127
- build: {
128
- rollupOptions: {
129
- output: {
130
- manualChunks(id: string) {
131
- if (s.resolvedPrerenderModules?.has(id)) {
132
- return "__prerender-handlers";
133
- }
134
- if (s.resolvedStaticModules?.has(id)) {
135
- return "__static-handlers";
136
- }
137
- },
138
- },
139
- },
140
- },
141
- },
142
- };
143
- }
292
+ // Prerender/static handler modules are bundled naturally with the
293
+ // rest of the RSC entry. A previous design forced them into dedicated
294
+ // __prerender-handlers / __static-handlers chunks via manualChunks,
295
+ // but Rollup hoisted all shared dependencies into those chunks,
296
+ // inflating them to ~1 MB with active runtime code. Handler code is
297
+ // evicted in closeBundle regardless of which chunk it lands in.
144
298
  return config;
145
299
  },
146
300
 
147
301
  configResolved(config) {
148
302
  s.projectRoot = config.root;
149
303
  s.isBuildMode = config.command === "build";
304
+ viteCommand = config.command as "serve" | "build";
305
+ viteMode = config.mode;
150
306
  // Capture user's resolve aliases for the temp server
151
307
  s.userResolveAlias = config.resolve.alias;
152
308
  // Node preset: pick up auto-discovered router path from the config() hook.
@@ -217,12 +373,13 @@ export function createRouterDiscoveryPlugin(
217
373
  let prerenderTempServer: any = null;
218
374
  let prerenderNodeRegistry: Map<string, any> | null = null;
219
375
 
220
- // Clean up the temporary server when the dev server shuts down
376
+ // Clean up the temporary server and build env when the dev server shuts down
221
377
  server.httpServer?.on("close", () => {
222
378
  if (prerenderTempServer) {
223
379
  prerenderTempServer.close().catch(() => {});
224
380
  prerenderTempServer = null;
225
381
  }
382
+ releaseBuildEnv(s).catch(() => {});
226
383
  });
227
384
 
228
385
  async function getOrCreateTempServer(): Promise<any | null> {
@@ -252,20 +409,35 @@ export function createRouterDiscoveryPlugin(
252
409
  }
253
410
 
254
411
  const discover = async () => {
412
+ const discoverStart = performance.now();
255
413
  const rscEnv = (server.environments as any)?.rsc;
256
414
  if (!rscEnv?.runner) {
257
415
  // Cloudflare dev: no module runner available (workerd-based RSC env).
258
416
  // Set devServerOrigin so the virtual module can inject __PRERENDER_DEV_URL
259
417
  // for on-demand prerender via the /__rsc_prerender endpoint.
418
+ debugDiscovery?.("dev: no rsc runner (cloudflare path)");
260
419
  s.devServerOrigin = getDevServerOrigin();
261
420
 
262
421
  // Create a temp Node.js server to run runtime discovery and generate
263
422
  // named route types (static parser can't resolve factory calls).
264
423
  try {
265
- const tempRscEnv = await getOrCreateTempServer();
424
+ // Acquire build-time env bindings for dev prerender
425
+ await timed(debugDiscovery, "acquireBuildEnv", () =>
426
+ acquireBuildEnv(s, viteCommand, viteMode),
427
+ );
428
+
429
+ const tempRscEnv = await timed(
430
+ debugDiscovery,
431
+ "getOrCreateTempServer",
432
+ () => getOrCreateTempServer(),
433
+ );
266
434
  if (tempRscEnv) {
267
- await discoverRouters(s, tempRscEnv);
268
- writeRouteTypesFiles(s);
435
+ await timed(debugDiscovery, "discoverRouters (cloudflare)", () =>
436
+ discoverRouters(s, tempRscEnv),
437
+ );
438
+ timedSync(debugDiscovery, "writeRouteTypesFiles", () =>
439
+ writeRouteTypesFiles(s),
440
+ );
269
441
  }
270
442
  } catch (err: any) {
271
443
  console.warn(
@@ -273,21 +445,35 @@ export function createRouterDiscoveryPlugin(
273
445
  );
274
446
  }
275
447
 
448
+ debugDiscovery?.(
449
+ "dev discovery done (%sms)",
450
+ (performance.now() - discoverStart).toFixed(1),
451
+ );
276
452
  resolveDiscovery!();
277
453
  return;
278
454
  }
279
455
 
280
456
  try {
457
+ // Acquire build-time env bindings for dev prerender (Node.js path)
458
+ debugDiscovery?.("dev: node path start");
459
+ await timed(debugDiscovery, "acquireBuildEnv", () =>
460
+ acquireBuildEnv(s, viteCommand, viteMode),
461
+ );
462
+
281
463
  // Set the readiness gate BEFORE discovery so early requests
282
464
  // block until manifest is populated
283
- const serverMod = await rscEnv.runner.import(
284
- "@rangojs/router/server",
465
+ const serverMod = await timed(
466
+ debugDiscovery,
467
+ "import @rangojs/router/server",
468
+ () => rscEnv.runner.import("@rangojs/router/server"),
285
469
  );
286
470
  if (serverMod?.setManifestReadyPromise) {
287
471
  serverMod.setManifestReadyPromise(discoveryPromise);
288
472
  }
289
473
 
290
- await discoverRouters(s, rscEnv);
474
+ await timed(debugDiscovery, "discoverRouters", () =>
475
+ discoverRouters(s, rscEnv),
476
+ );
291
477
 
292
478
  // Store server origin for dev prerender endpoint (virtual module injection)
293
479
  s.devServerOrigin = getDevServerOrigin();
@@ -297,15 +483,23 @@ export function createRouterDiscoveryPlugin(
297
483
  // routes (e.g. Array.from loops) that the static parser cannot see.
298
484
  // writeRouteTypesFiles() only writes when content changes, so this
299
485
  // won't cause unnecessary HMR triggers.
300
- writeRouteTypesFiles(s);
486
+ timedSync(debugDiscovery, "writeRouteTypesFiles", () =>
487
+ writeRouteTypesFiles(s),
488
+ );
301
489
 
302
490
  // Populate the route map and per-router data in the RSC env
303
- await propagateDiscoveryState(rscEnv);
491
+ await timed(debugDiscovery, "propagateDiscoveryState", () =>
492
+ propagateDiscoveryState(rscEnv),
493
+ );
304
494
  } catch (err: any) {
305
495
  console.warn(
306
496
  `[rsc-router] Router discovery failed: ${err.message}\n${err.stack}`,
307
497
  );
308
498
  } finally {
499
+ debugDiscovery?.(
500
+ "dev discovery done (%sms)",
501
+ (performance.now() - discoverStart).toFixed(1),
502
+ );
309
503
  resolveDiscovery!();
310
504
  }
311
505
  };
@@ -372,6 +566,17 @@ export function createRouterDiscoveryPlugin(
372
566
  };
373
567
 
374
568
  server.middlewares.use("/__rsc_prerender", async (req: any, res: any) => {
569
+ const reqStart = debugDev ? performance.now() : 0;
570
+ const logResult = (status: number, note: string) => {
571
+ debugDev?.(
572
+ "/__rsc_prerender %s -> %d %s (%sms)",
573
+ req.url,
574
+ status,
575
+ note,
576
+ (performance.now() - reqStart).toFixed(1),
577
+ );
578
+ };
579
+
375
580
  if (s.discoveryDone) await s.discoveryDone;
376
581
 
377
582
  const url = new URL(req.url || "/", "http://localhost");
@@ -379,12 +584,36 @@ export function createRouterDiscoveryPlugin(
379
584
  if (!pathname) {
380
585
  res.statusCode = 400;
381
586
  res.end("Missing pathname");
587
+ logResult(400, "missing pathname");
382
588
  return;
383
589
  }
384
590
 
385
- // Prefer the main server's registry (Node.js preset: module runner available).
386
- // Fall back to a temp server for Cloudflare where the main RSC env uses workerd.
387
- let registry = mainRegistry;
591
+ // Import the user's entry module to force re-evaluation of any
592
+ // HMR-invalidated modules in the chain (entry router urls handlers).
593
+ // This ensures createRouter() re-runs with updated handler code before
594
+ // we read RouterRegistry. Without this, edits to prerender handler files
595
+ // produce stale content because the old router instance remains registered.
596
+ const rscEnv = (server.environments as any)?.rsc;
597
+ let registry: Map<string, any> | null = null;
598
+ if (rscEnv?.runner && s.resolvedEntryPath) {
599
+ try {
600
+ await rscEnv.runner.import(s.resolvedEntryPath);
601
+ const serverMod = await rscEnv.runner.import(
602
+ "@rangojs/router/server",
603
+ );
604
+ registry = serverMod.RouterRegistry ?? null;
605
+ } catch (err: any) {
606
+ console.warn(
607
+ `[rsc-router] Dev prerender module refresh failed: ${err.message}`,
608
+ );
609
+ res.statusCode = 500;
610
+ res.end(`Prerender handler error: ${err.message}`);
611
+ logResult(500, "module refresh failed");
612
+ return;
613
+ }
614
+ } else {
615
+ registry = mainRegistry;
616
+ }
388
617
 
389
618
  if (!registry) {
390
619
  // No main registry: the RSC env has no module runner (Cloudflare dev).
@@ -398,6 +627,7 @@ export function createRouterDiscoveryPlugin(
398
627
  if (!registry || registry.size === 0) {
399
628
  res.statusCode = 503;
400
629
  res.end("Prerender runner not available");
630
+ logResult(503, "no registry");
401
631
  return;
402
632
  }
403
633
 
@@ -413,6 +643,8 @@ export function createRouterDiscoveryPlugin(
413
643
  {},
414
644
  undefined,
415
645
  wantPassthrough,
646
+ s.resolvedBuildEnv,
647
+ true, // devMode: check getParams for passthrough routes
416
648
  );
417
649
  if (!result) continue;
418
650
  if (result.passthrough) continue;
@@ -434,6 +666,7 @@ export function createRouterDiscoveryPlugin(
434
666
  payload = { segments: result.segments, handles: result.handles };
435
667
  }
436
668
  res.end(JSON.stringify(payload));
669
+ logResult(200, `match ${result.routeName}`);
437
670
  return;
438
671
  } catch (err: any) {
439
672
  console.warn(
@@ -444,6 +677,7 @@ export function createRouterDiscoveryPlugin(
444
677
 
445
678
  res.statusCode = 404;
446
679
  res.end("No prerender match");
680
+ logResult(404, "no match");
447
681
  });
448
682
 
449
683
  // Watch url module and router files for changes and regenerate named-routes.gen.ts.
@@ -491,15 +725,26 @@ export function createRouterDiscoveryPlugin(
491
725
  const rscEnv = (server.environments as any)?.rsc;
492
726
  if (!rscEnv?.runner || runtimeRediscoveryInProgress) return;
493
727
  runtimeRediscoveryInProgress = true;
728
+ const hmrStart = performance.now();
494
729
  try {
495
- await discoverRouters(s, rscEnv);
496
- writeRouteTypesFiles(s);
497
- await propagateDiscoveryState(rscEnv);
730
+ await timed(debugDiscovery, "hmr discoverRouters", () =>
731
+ discoverRouters(s, rscEnv),
732
+ );
733
+ timedSync(debugDiscovery, "hmr writeRouteTypesFiles", () =>
734
+ writeRouteTypesFiles(s),
735
+ );
736
+ await timed(debugDiscovery, "hmr propagateDiscoveryState", () =>
737
+ propagateDiscoveryState(rscEnv),
738
+ );
498
739
  } catch (err: any) {
499
740
  console.warn(
500
741
  `[rsc-router] Runtime re-discovery failed: ${err.message}`,
501
742
  );
502
743
  } finally {
744
+ debugDiscovery?.(
745
+ "hmr re-discovery done (%sms)",
746
+ (performance.now() - hmrStart).toFixed(1),
747
+ );
503
748
  runtimeRediscoveryInProgress = false;
504
749
  }
505
750
  };
@@ -508,6 +753,7 @@ export function createRouterDiscoveryPlugin(
508
753
  clearTimeout(routeChangeTimer);
509
754
  routeChangeTimer = setTimeout(() => {
510
755
  routeChangeTimer = undefined;
756
+ const regenStart = debugDiscovery ? performance.now() : 0;
511
757
  try {
512
758
  writeCombinedRouteTypesWithTracking(s);
513
759
  if (s.perRouterManifests.length > 0) {
@@ -518,6 +764,10 @@ export function createRouterDiscoveryPlugin(
518
764
  `[rsc-router] Route regeneration error: ${err.message}`,
519
765
  );
520
766
  }
767
+ debugDiscovery?.(
768
+ "watcher: regenerated gen files (%sms)",
769
+ (performance.now() - regenStart).toFixed(1),
770
+ );
521
771
  // Async: re-run runtime discovery to refresh factory-generated
522
772
  // routes that the static parser cannot resolve.
523
773
  if (s.perRouterManifests.length > 0) {
@@ -552,6 +802,12 @@ export function createRouterDiscoveryPlugin(
552
802
  const hasUrls = source.includes("urls(");
553
803
  const hasCreateRouter = /\bcreateRouter\s*[<(]/.test(source);
554
804
  if (!hasUrls && !hasCreateRouter) return;
805
+ debugDiscovery?.(
806
+ "watcher: %s matches (urls=%s, router=%s)",
807
+ filePath,
808
+ hasUrls,
809
+ hasCreateRouter,
810
+ );
555
811
  // Invalidate cache when a router file changes (new router added/removed)
556
812
  if (hasCreateRouter) {
557
813
  const nestedRouterConflict = findNestedRouterConflict([
@@ -596,11 +852,24 @@ export function createRouterDiscoveryPlugin(
596
852
  async buildStart() {
597
853
  if (!s.isBuildMode) return;
598
854
  // Only run once across environment builds
599
- if (s.mergedRouteManifest !== null) return;
855
+ if (s.mergedRouteManifest !== null) {
856
+ debugDiscovery?.(
857
+ "build: skip (already discovered, env=%s)",
858
+ this.environment?.name ?? "?",
859
+ );
860
+ return;
861
+ }
862
+ const buildStartTime = performance.now();
863
+ debugDiscovery?.("build: start (env=%s)", this.environment?.name ?? "?");
600
864
  resetStagedBuildAssets(s.projectRoot);
601
865
  s.prerenderManifestEntries = null;
602
866
  s.staticManifestEntries = null;
603
867
 
868
+ // Acquire build-time env bindings if configured
869
+ await timed(debugDiscovery, "build acquireBuildEnv", () =>
870
+ acquireBuildEnv(s, viteCommand, viteMode),
871
+ );
872
+
604
873
  let tempServer: any = null;
605
874
  // Signal to user-space code (e.g. reverse.ts) that build-time discovery
606
875
  // is active. Uses globalThis because the temp server's module runner
@@ -608,7 +877,11 @@ export function createRouterDiscoveryPlugin(
608
877
  // between the vite plugin and user code loaded via runner.import().
609
878
  (globalThis as any).__rscRouterDiscoveryActive = true;
610
879
  try {
611
- tempServer = await createTempRscServer(s, { forceBuild: true });
880
+ tempServer = await timed(
881
+ debugDiscovery,
882
+ "build createTempRscServer",
883
+ () => createTempRscServer(s, { forceBuild: true }),
884
+ );
612
885
 
613
886
  const rscEnv = (tempServer.environments as any)?.rsc;
614
887
  if (!rscEnv?.runner) {
@@ -628,11 +901,15 @@ export function createRouterDiscoveryPlugin(
628
901
  s.resolvedStaticModules = tempIdsPlugin.api.staticHandlerModules;
629
902
  }
630
903
 
631
- await discoverRouters(s, rscEnv);
904
+ await timed(debugDiscovery, "build discoverRouters", () =>
905
+ discoverRouters(s, rscEnv),
906
+ );
632
907
  // Update named-routes.gen.ts from runtime discovery.
633
908
  // The runtime manifest includes dynamically generated routes
634
909
  // that the static parser cannot extract from source code.
635
- writeRouteTypesFiles(s);
910
+ timedSync(debugDiscovery, "build writeRouteTypesFiles", () =>
911
+ writeRouteTypesFiles(s),
912
+ );
636
913
  } catch (err: any) {
637
914
  // Extract the user source file from the stack trace (skip internal frames)
638
915
  const sourceFile = err.stack
@@ -657,8 +934,15 @@ export function createRouterDiscoveryPlugin(
657
934
  } finally {
658
935
  delete (globalThis as any).__rscRouterDiscoveryActive;
659
936
  if (tempServer) {
660
- await tempServer.close();
937
+ await timed(debugDiscovery, "build tempServer.close", () =>
938
+ tempServer.close(),
939
+ );
661
940
  }
941
+ await releaseBuildEnv(s);
942
+ debugDiscovery?.(
943
+ "build discovery done (%sms)",
944
+ (performance.now() - buildStartTime).toFixed(1),
945
+ );
662
946
  }
663
947
  },
664
948
 
@@ -682,19 +966,34 @@ export function createRouterDiscoveryPlugin(
682
966
  // This is critical for Cloudflare dev where the worker runs in a separate
683
967
  // Miniflare process and can only receive manifest data via the virtual module.
684
968
  if (s.discoveryDone) {
685
- await s.discoveryDone;
969
+ await timed(debugRoutes, "await discoveryDone (manifest)", () =>
970
+ Promise.resolve(s.discoveryDone),
971
+ );
686
972
  }
687
- return generateRoutesManifestModule(s);
973
+ const code = await timed(
974
+ debugRoutes,
975
+ "generateRoutesManifestModule",
976
+ () => generateRoutesManifestModule(s),
977
+ );
978
+ debugRoutes?.("manifest module emitted (%d bytes)", code?.length ?? 0);
979
+ return code;
688
980
  }
689
981
  // Per-router virtual modules: pure data exports (no side effects).
690
982
  // ensureRouterManifest() imports the module and stores the data.
691
983
  const perRouterPrefix = "\0" + VIRTUAL_ROUTES_MANIFEST_ID + "/";
692
984
  if (id.startsWith(perRouterPrefix)) {
693
985
  if (s.discoveryDone) {
694
- await s.discoveryDone;
986
+ await timed(debugRoutes, "await discoveryDone (per-router)", () =>
987
+ Promise.resolve(s.discoveryDone),
988
+ );
695
989
  }
696
990
  const routerId = id.slice(perRouterPrefix.length);
697
- return generatePerRouterModule(s, routerId);
991
+ const code = await timed(
992
+ debugRoutes,
993
+ `generatePerRouterModule ${routerId}`,
994
+ () => generatePerRouterModule(s, routerId),
995
+ );
996
+ return code;
698
997
  }
699
998
  // virtual:rsc-router/prerender-paths load handler removed
700
999
  return null;
@@ -704,6 +1003,7 @@ export function createRouterDiscoveryPlugin(
704
1003
  // Used by closeBundle for handler code eviction and prerender data injection.
705
1004
  generateBundle(_options: any, bundle: any) {
706
1005
  if (this.environment?.name !== "rsc") return;
1006
+ const genStart = debugBuild ? performance.now() : 0;
707
1007
 
708
1008
  // Record RSC entry chunk filename for closeBundle injection
709
1009
  for (const [fileName, chunk] of Object.entries(bundle) as [
@@ -716,8 +1016,19 @@ export function createRouterDiscoveryPlugin(
716
1016
  }
717
1017
  }
718
1018
 
719
- if (!s.resolvedPrerenderModules?.size && !s.resolvedStaticModules?.size)
1019
+ if (!s.resolvedPrerenderModules?.size && !s.resolvedStaticModules?.size) {
1020
+ debugBuild?.(
1021
+ "generateBundle (rsc): no handlers to scan (%sms)",
1022
+ (performance.now() - genStart).toFixed(1),
1023
+ );
720
1024
  return;
1025
+ }
1026
+
1027
+ // Clear maps at the start of each RSC generateBundle pass.
1028
+ // Vite 6 multi-environment builds run RSC twice (analysis + production);
1029
+ // clearing prevents stale/duplicate records from the analysis pass.
1030
+ s.handlerChunkInfoMap.clear();
1031
+ s.staticHandlerChunkInfoMap.clear();
721
1032
 
722
1033
  for (const [fileName, chunk] of Object.entries(bundle) as [
723
1034
  string,
@@ -725,27 +1036,28 @@ export function createRouterDiscoveryPlugin(
725
1036
  ][]) {
726
1037
  if (chunk.type !== "chunk") continue;
727
1038
 
728
- // Prerender handlers chunk
729
- if (
730
- fileName.includes("__prerender-handlers") &&
731
- s.resolvedPrerenderModules?.size
732
- ) {
1039
+ // Scan all chunks for handler exports (handlers may land in any chunk)
1040
+ if (s.resolvedPrerenderModules?.size) {
733
1041
  const handlers = extractHandlerExportsFromChunk(
734
1042
  chunk.code,
735
1043
  s.resolvedPrerenderModules,
736
1044
  "Prerender",
737
- true,
1045
+ false,
738
1046
  );
739
1047
  if (handlers.length > 0) {
740
- s.handlerChunkInfo = { fileName, exports: handlers };
1048
+ const existing = s.handlerChunkInfoMap.get(fileName);
1049
+ if (existing) {
1050
+ existing.exports.push(...handlers);
1051
+ } else {
1052
+ s.handlerChunkInfoMap.set(fileName, {
1053
+ fileName,
1054
+ exports: handlers,
1055
+ });
1056
+ }
741
1057
  }
742
1058
  }
743
1059
 
744
- // Static handlers chunk
745
- if (
746
- fileName.includes("__static-handlers") &&
747
- s.resolvedStaticModules?.size
748
- ) {
1060
+ if (s.resolvedStaticModules?.size) {
749
1061
  const handlers = extractHandlerExportsFromChunk(
750
1062
  chunk.code,
751
1063
  s.resolvedStaticModules,
@@ -753,10 +1065,26 @@ export function createRouterDiscoveryPlugin(
753
1065
  false,
754
1066
  );
755
1067
  if (handlers.length > 0) {
756
- s.staticHandlerChunkInfo = { fileName, exports: handlers };
1068
+ const existing = s.staticHandlerChunkInfoMap.get(fileName);
1069
+ if (existing) {
1070
+ existing.exports.push(...handlers);
1071
+ } else {
1072
+ s.staticHandlerChunkInfoMap.set(fileName, {
1073
+ fileName,
1074
+ exports: handlers,
1075
+ });
1076
+ }
757
1077
  }
758
1078
  }
759
1079
  }
1080
+
1081
+ debugBuild?.(
1082
+ "generateBundle (rsc): scanned %d chunks, %d prerender chunk(s), %d static chunk(s) (%sms)",
1083
+ Object.keys(bundle).length,
1084
+ s.handlerChunkInfoMap.size,
1085
+ s.staticHandlerChunkInfoMap.size,
1086
+ (performance.now() - genStart).toFixed(1),
1087
+ );
760
1088
  },
761
1089
 
762
1090
  // Build-time pre-rendering: evict handler code and inject collected prerender data.
@@ -770,7 +1098,9 @@ export function createRouterDiscoveryPlugin(
770
1098
  // Only run for the RSC environment — other environments (client, ssr) have
771
1099
  // no prerender/static data to process and would just do redundant file I/O.
772
1100
  if (this.environment && this.environment.name !== "rsc") return;
773
- postprocessBundle(s);
1101
+ timedSync(debugBuild, "closeBundle postprocessBundle", () =>
1102
+ postprocessBundle(s),
1103
+ );
774
1104
  },
775
1105
  },
776
1106
  };