@rangojs/router 0.0.0-experimental.9c87b9aa → 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 (956) hide show
  1. package/README.md +126 -38
  2. package/dist/bin/rango.js +130 -47
  3. package/dist/vite/index.js +1537 -505
  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 +36 -3
  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 +87 -2
  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 -53
  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 +61 -13
  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 -6
  46. package/src/browser/types.ts +40 -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/helpers.ts +29 -24
  91. package/src/router/segment-resolution/revalidation.ts +87 -9
  92. package/src/router/trie-matching.ts +10 -4
  93. package/src/router/types.ts +1 -0
  94. package/src/router/url-params.ts +49 -0
  95. package/src/router.ts +55 -7
  96. package/src/rsc/handler.ts +478 -374
  97. package/src/rsc/helpers.ts +69 -41
  98. package/src/rsc/loader-fetch.ts +23 -3
  99. package/src/rsc/manifest-init.ts +5 -1
  100. package/src/rsc/progressive-enhancement.ts +16 -2
  101. package/src/rsc/response-route-handler.ts +14 -1
  102. package/src/rsc/rsc-rendering.ts +17 -1
  103. package/src/rsc/server-action.ts +10 -0
  104. package/src/rsc/ssr-setup.ts +2 -2
  105. package/src/rsc/types.ts +9 -1
  106. package/src/segment-content-promise.ts +67 -0
  107. package/src/segment-loader-promise.ts +122 -0
  108. package/src/segment-system.tsx +11 -61
  109. package/src/server/context.ts +65 -5
  110. package/src/server/handle-store.ts +19 -0
  111. package/src/server/loader-registry.ts +9 -8
  112. package/src/server/request-context.ts +143 -49
  113. package/src/ssr/index.tsx +3 -0
  114. package/src/static-handler.ts +18 -6
  115. package/src/types/cache-types.ts +4 -4
  116. package/src/types/handler-context.ts +20 -46
  117. package/src/types/loader-types.ts +37 -11
  118. package/src/types/request-scope.ts +126 -0
  119. package/src/types/route-entry.ts +12 -1
  120. package/src/types/segments.ts +1 -1
  121. package/src/urls/include-helper.ts +24 -14
  122. package/src/urls/path-helper-types.ts +39 -6
  123. package/src/urls/path-helper.ts +47 -12
  124. package/src/urls/pattern-types.ts +12 -0
  125. package/src/urls/response-types.ts +18 -16
  126. package/src/use-loader.tsx +77 -5
  127. package/src/vite/debug.ts +140 -0
  128. package/src/vite/discovery/bundle-postprocess.ts +30 -33
  129. package/src/vite/discovery/discover-routers.ts +36 -4
  130. package/src/vite/discovery/prerender-collection.ts +175 -74
  131. package/src/vite/discovery/state.ts +13 -4
  132. package/src/vite/index.ts +4 -0
  133. package/src/vite/plugin-types.ts +60 -5
  134. package/src/vite/plugins/cjs-to-esm.ts +11 -0
  135. package/src/vite/plugins/client-ref-dedup.ts +21 -0
  136. package/src/vite/plugins/client-ref-hashing.ts +16 -4
  137. package/src/vite/plugins/cloudflare-protocol-loader-hook.d.mts +23 -0
  138. package/src/vite/plugins/cloudflare-protocol-loader-hook.mjs +76 -0
  139. package/src/vite/plugins/cloudflare-protocol-stub.ts +214 -0
  140. package/src/vite/plugins/expose-action-id.ts +52 -28
  141. package/src/vite/plugins/expose-id-utils.ts +12 -0
  142. package/src/vite/plugins/expose-ids/handler-transform.ts +30 -0
  143. package/src/vite/plugins/expose-ids/router-transform.ts +20 -3
  144. package/src/vite/plugins/expose-internal-ids.ts +563 -316
  145. package/src/vite/plugins/performance-tracks.ts +96 -0
  146. package/src/vite/plugins/refresh-cmd.ts +88 -26
  147. package/src/vite/plugins/use-cache-transform.ts +57 -43
  148. package/src/vite/rango.ts +63 -11
  149. package/src/vite/router-discovery.ts +389 -59
  150. package/src/vite/utils/banner.ts +1 -1
  151. package/src/vite/utils/package-resolution.ts +41 -1
  152. package/src/vite/utils/prerender-utils.ts +37 -5
  153. package/src/vite/utils/shared-utils.ts +3 -2
  154. package/dist/__internal.d.ts +0 -83
  155. package/dist/__internal.d.ts.map +0 -1
  156. package/dist/__internal.js +0 -19
  157. package/dist/__internal.js.map +0 -1
  158. package/dist/__mocks__/version.d.ts +0 -7
  159. package/dist/__mocks__/version.d.ts.map +0 -1
  160. package/dist/__mocks__/version.js +0 -7
  161. package/dist/__mocks__/version.js.map +0 -1
  162. package/dist/__tests__/client-href.test.d.ts +0 -2
  163. package/dist/__tests__/client-href.test.d.ts.map +0 -1
  164. package/dist/__tests__/client-href.test.js +0 -74
  165. package/dist/__tests__/client-href.test.js.map +0 -1
  166. package/dist/__tests__/component-utils.test.d.ts +0 -2
  167. package/dist/__tests__/component-utils.test.d.ts.map +0 -1
  168. package/dist/__tests__/component-utils.test.js +0 -51
  169. package/dist/__tests__/component-utils.test.js.map +0 -1
  170. package/dist/__tests__/event-controller.test.d.ts +0 -2
  171. package/dist/__tests__/event-controller.test.d.ts.map +0 -1
  172. package/dist/__tests__/event-controller.test.js +0 -538
  173. package/dist/__tests__/event-controller.test.js.map +0 -1
  174. package/dist/__tests__/helpers/route-tree.d.ts +0 -118
  175. package/dist/__tests__/helpers/route-tree.d.ts.map +0 -1
  176. package/dist/__tests__/helpers/route-tree.js +0 -374
  177. package/dist/__tests__/helpers/route-tree.js.map +0 -1
  178. package/dist/__tests__/match-result.test.d.ts +0 -2
  179. package/dist/__tests__/match-result.test.d.ts.map +0 -1
  180. package/dist/__tests__/match-result.test.js +0 -154
  181. package/dist/__tests__/match-result.test.js.map +0 -1
  182. package/dist/__tests__/navigation-store.test.d.ts +0 -2
  183. package/dist/__tests__/navigation-store.test.d.ts.map +0 -1
  184. package/dist/__tests__/navigation-store.test.js +0 -440
  185. package/dist/__tests__/navigation-store.test.js.map +0 -1
  186. package/dist/__tests__/partial-update.test.d.ts +0 -2
  187. package/dist/__tests__/partial-update.test.d.ts.map +0 -1
  188. package/dist/__tests__/partial-update.test.js +0 -1009
  189. package/dist/__tests__/partial-update.test.js.map +0 -1
  190. package/dist/__tests__/reverse-types.test.d.ts +0 -8
  191. package/dist/__tests__/reverse-types.test.d.ts.map +0 -1
  192. package/dist/__tests__/reverse-types.test.js +0 -656
  193. package/dist/__tests__/reverse-types.test.js.map +0 -1
  194. package/dist/__tests__/route-definition.test.d.ts +0 -2
  195. package/dist/__tests__/route-definition.test.d.ts.map +0 -1
  196. package/dist/__tests__/route-definition.test.js +0 -55
  197. package/dist/__tests__/route-definition.test.js.map +0 -1
  198. package/dist/__tests__/router-helpers.test.d.ts +0 -2
  199. package/dist/__tests__/router-helpers.test.d.ts.map +0 -1
  200. package/dist/__tests__/router-helpers.test.js +0 -377
  201. package/dist/__tests__/router-helpers.test.js.map +0 -1
  202. package/dist/__tests__/router-integration-2.test.d.ts +0 -2
  203. package/dist/__tests__/router-integration-2.test.d.ts.map +0 -1
  204. package/dist/__tests__/router-integration-2.test.js +0 -426
  205. package/dist/__tests__/router-integration-2.test.js.map +0 -1
  206. package/dist/__tests__/router-integration.test.d.ts +0 -2
  207. package/dist/__tests__/router-integration.test.d.ts.map +0 -1
  208. package/dist/__tests__/router-integration.test.js +0 -1051
  209. package/dist/__tests__/router-integration.test.js.map +0 -1
  210. package/dist/__tests__/search-params.test.d.ts +0 -5
  211. package/dist/__tests__/search-params.test.d.ts.map +0 -1
  212. package/dist/__tests__/search-params.test.js +0 -306
  213. package/dist/__tests__/search-params.test.js.map +0 -1
  214. package/dist/__tests__/segment-system.test.d.ts +0 -2
  215. package/dist/__tests__/segment-system.test.d.ts.map +0 -1
  216. package/dist/__tests__/segment-system.test.js +0 -627
  217. package/dist/__tests__/segment-system.test.js.map +0 -1
  218. package/dist/__tests__/static-handler-types.test.d.ts +0 -8
  219. package/dist/__tests__/static-handler-types.test.d.ts.map +0 -1
  220. package/dist/__tests__/static-handler-types.test.js +0 -63
  221. package/dist/__tests__/static-handler-types.test.js.map +0 -1
  222. package/dist/__tests__/urls.test.d.ts +0 -2
  223. package/dist/__tests__/urls.test.d.ts.map +0 -1
  224. package/dist/__tests__/urls.test.js +0 -421
  225. package/dist/__tests__/urls.test.js.map +0 -1
  226. package/dist/__tests__/use-mount.test.d.ts +0 -2
  227. package/dist/__tests__/use-mount.test.d.ts.map +0 -1
  228. package/dist/__tests__/use-mount.test.js +0 -35
  229. package/dist/__tests__/use-mount.test.js.map +0 -1
  230. package/dist/bin/rango.d.ts +0 -2
  231. package/dist/bin/rango.d.ts.map +0 -1
  232. package/dist/bin/rango.js.map +0 -1
  233. package/dist/browser/event-controller.d.ts +0 -191
  234. package/dist/browser/event-controller.d.ts.map +0 -1
  235. package/dist/browser/event-controller.js +0 -559
  236. package/dist/browser/event-controller.js.map +0 -1
  237. package/dist/browser/index.d.ts +0 -2
  238. package/dist/browser/index.d.ts.map +0 -1
  239. package/dist/browser/index.js +0 -14
  240. package/dist/browser/index.js.map +0 -1
  241. package/dist/browser/link-interceptor.d.ts +0 -38
  242. package/dist/browser/link-interceptor.d.ts.map +0 -1
  243. package/dist/browser/link-interceptor.js +0 -99
  244. package/dist/browser/link-interceptor.js.map +0 -1
  245. package/dist/browser/logging.d.ts +0 -10
  246. package/dist/browser/logging.d.ts.map +0 -1
  247. package/dist/browser/logging.js +0 -29
  248. package/dist/browser/logging.js.map +0 -1
  249. package/dist/browser/lru-cache.d.ts +0 -17
  250. package/dist/browser/lru-cache.d.ts.map +0 -1
  251. package/dist/browser/lru-cache.js +0 -50
  252. package/dist/browser/lru-cache.js.map +0 -1
  253. package/dist/browser/merge-segment-loaders.d.ts +0 -39
  254. package/dist/browser/merge-segment-loaders.d.ts.map +0 -1
  255. package/dist/browser/merge-segment-loaders.js +0 -102
  256. package/dist/browser/merge-segment-loaders.js.map +0 -1
  257. package/dist/browser/navigation-bridge.d.ts +0 -102
  258. package/dist/browser/navigation-bridge.d.ts.map +0 -1
  259. package/dist/browser/navigation-bridge.js +0 -708
  260. package/dist/browser/navigation-bridge.js.map +0 -1
  261. package/dist/browser/navigation-client.d.ts +0 -25
  262. package/dist/browser/navigation-client.d.ts.map +0 -1
  263. package/dist/browser/navigation-client.js +0 -157
  264. package/dist/browser/navigation-client.js.map +0 -1
  265. package/dist/browser/navigation-store.d.ts +0 -101
  266. package/dist/browser/navigation-store.d.ts.map +0 -1
  267. package/dist/browser/navigation-store.js +0 -625
  268. package/dist/browser/navigation-store.js.map +0 -1
  269. package/dist/browser/partial-update.d.ts +0 -75
  270. package/dist/browser/partial-update.d.ts.map +0 -1
  271. package/dist/browser/partial-update.js +0 -426
  272. package/dist/browser/partial-update.js.map +0 -1
  273. package/dist/browser/react/Link.d.ts +0 -86
  274. package/dist/browser/react/Link.d.ts.map +0 -1
  275. package/dist/browser/react/Link.js +0 -128
  276. package/dist/browser/react/Link.js.map +0 -1
  277. package/dist/browser/react/NavigationProvider.d.ts +0 -63
  278. package/dist/browser/react/NavigationProvider.d.ts.map +0 -1
  279. package/dist/browser/react/NavigationProvider.js +0 -216
  280. package/dist/browser/react/NavigationProvider.js.map +0 -1
  281. package/dist/browser/react/ScrollRestoration.d.ts +0 -75
  282. package/dist/browser/react/ScrollRestoration.d.ts.map +0 -1
  283. package/dist/browser/react/ScrollRestoration.js +0 -57
  284. package/dist/browser/react/ScrollRestoration.js.map +0 -1
  285. package/dist/browser/react/context.d.ts +0 -46
  286. package/dist/browser/react/context.d.ts.map +0 -1
  287. package/dist/browser/react/context.js +0 -10
  288. package/dist/browser/react/context.js.map +0 -1
  289. package/dist/browser/react/index.d.ts +0 -11
  290. package/dist/browser/react/index.d.ts.map +0 -1
  291. package/dist/browser/react/index.js +0 -22
  292. package/dist/browser/react/index.js.map +0 -1
  293. package/dist/browser/react/location-state-shared.d.ts +0 -63
  294. package/dist/browser/react/location-state-shared.d.ts.map +0 -1
  295. package/dist/browser/react/location-state-shared.js +0 -81
  296. package/dist/browser/react/location-state-shared.js.map +0 -1
  297. package/dist/browser/react/location-state.d.ts +0 -23
  298. package/dist/browser/react/location-state.d.ts.map +0 -1
  299. package/dist/browser/react/location-state.js +0 -29
  300. package/dist/browser/react/location-state.js.map +0 -1
  301. package/dist/browser/react/mount-context.d.ts +0 -24
  302. package/dist/browser/react/mount-context.d.ts.map +0 -1
  303. package/dist/browser/react/mount-context.js +0 -24
  304. package/dist/browser/react/mount-context.js.map +0 -1
  305. package/dist/browser/react/use-action.d.ts +0 -64
  306. package/dist/browser/react/use-action.d.ts.map +0 -1
  307. package/dist/browser/react/use-action.js +0 -134
  308. package/dist/browser/react/use-action.js.map +0 -1
  309. package/dist/browser/react/use-client-cache.d.ts +0 -41
  310. package/dist/browser/react/use-client-cache.d.ts.map +0 -1
  311. package/dist/browser/react/use-client-cache.js +0 -39
  312. package/dist/browser/react/use-client-cache.js.map +0 -1
  313. package/dist/browser/react/use-handle.d.ts +0 -31
  314. package/dist/browser/react/use-handle.d.ts.map +0 -1
  315. package/dist/browser/react/use-handle.js +0 -144
  316. package/dist/browser/react/use-handle.js.map +0 -1
  317. package/dist/browser/react/use-href.d.ts +0 -33
  318. package/dist/browser/react/use-href.d.ts.map +0 -1
  319. package/dist/browser/react/use-href.js +0 -39
  320. package/dist/browser/react/use-href.js.map +0 -1
  321. package/dist/browser/react/use-link-status.d.ts +0 -37
  322. package/dist/browser/react/use-link-status.d.ts.map +0 -1
  323. package/dist/browser/react/use-link-status.js +0 -99
  324. package/dist/browser/react/use-link-status.js.map +0 -1
  325. package/dist/browser/react/use-mount.d.ts +0 -25
  326. package/dist/browser/react/use-mount.d.ts.map +0 -1
  327. package/dist/browser/react/use-mount.js +0 -30
  328. package/dist/browser/react/use-mount.js.map +0 -1
  329. package/dist/browser/react/use-navigation.d.ts +0 -27
  330. package/dist/browser/react/use-navigation.d.ts.map +0 -1
  331. package/dist/browser/react/use-navigation.js +0 -87
  332. package/dist/browser/react/use-navigation.js.map +0 -1
  333. package/dist/browser/react/use-segments.d.ts +0 -38
  334. package/dist/browser/react/use-segments.d.ts.map +0 -1
  335. package/dist/browser/react/use-segments.js +0 -130
  336. package/dist/browser/react/use-segments.js.map +0 -1
  337. package/dist/browser/request-controller.d.ts +0 -26
  338. package/dist/browser/request-controller.d.ts.map +0 -1
  339. package/dist/browser/request-controller.js +0 -147
  340. package/dist/browser/request-controller.js.map +0 -1
  341. package/dist/browser/rsc-router.d.ts +0 -129
  342. package/dist/browser/rsc-router.d.ts.map +0 -1
  343. package/dist/browser/rsc-router.js +0 -195
  344. package/dist/browser/rsc-router.js.map +0 -1
  345. package/dist/browser/scroll-restoration.d.ts +0 -93
  346. package/dist/browser/scroll-restoration.d.ts.map +0 -1
  347. package/dist/browser/scroll-restoration.js +0 -321
  348. package/dist/browser/scroll-restoration.js.map +0 -1
  349. package/dist/browser/segment-structure-assert.d.ts +0 -17
  350. package/dist/browser/segment-structure-assert.d.ts.map +0 -1
  351. package/dist/browser/segment-structure-assert.js +0 -59
  352. package/dist/browser/segment-structure-assert.js.map +0 -1
  353. package/dist/browser/server-action-bridge.d.ts +0 -26
  354. package/dist/browser/server-action-bridge.d.ts.map +0 -1
  355. package/dist/browser/server-action-bridge.js +0 -668
  356. package/dist/browser/server-action-bridge.js.map +0 -1
  357. package/dist/browser/shallow.d.ts +0 -12
  358. package/dist/browser/shallow.d.ts.map +0 -1
  359. package/dist/browser/shallow.js +0 -34
  360. package/dist/browser/shallow.js.map +0 -1
  361. package/dist/browser/types.d.ts +0 -369
  362. package/dist/browser/types.d.ts.map +0 -1
  363. package/dist/browser/types.js +0 -2
  364. package/dist/browser/types.js.map +0 -1
  365. package/dist/build/__tests__/generate-cli.test.d.ts +0 -2
  366. package/dist/build/__tests__/generate-cli.test.d.ts.map +0 -1
  367. package/dist/build/__tests__/generate-cli.test.js +0 -237
  368. package/dist/build/__tests__/generate-cli.test.js.map +0 -1
  369. package/dist/build/__tests__/generate-manifest.test.d.ts +0 -2
  370. package/dist/build/__tests__/generate-manifest.test.d.ts.map +0 -1
  371. package/dist/build/__tests__/generate-manifest.test.js +0 -119
  372. package/dist/build/__tests__/generate-manifest.test.js.map +0 -1
  373. package/dist/build/__tests__/generate-route-types.test.d.ts +0 -2
  374. package/dist/build/__tests__/generate-route-types.test.d.ts.map +0 -1
  375. package/dist/build/__tests__/generate-route-types.test.js +0 -620
  376. package/dist/build/__tests__/generate-route-types.test.js.map +0 -1
  377. package/dist/build/__tests__/per-router-manifest.test.d.ts +0 -2
  378. package/dist/build/__tests__/per-router-manifest.test.d.ts.map +0 -1
  379. package/dist/build/__tests__/per-router-manifest.test.js +0 -308
  380. package/dist/build/__tests__/per-router-manifest.test.js.map +0 -1
  381. package/dist/build/generate-manifest.d.ts +0 -81
  382. package/dist/build/generate-manifest.d.ts.map +0 -1
  383. package/dist/build/generate-manifest.js +0 -276
  384. package/dist/build/generate-manifest.js.map +0 -1
  385. package/dist/build/generate-route-types.d.ts +0 -115
  386. package/dist/build/generate-route-types.d.ts.map +0 -1
  387. package/dist/build/generate-route-types.js +0 -740
  388. package/dist/build/generate-route-types.js.map +0 -1
  389. package/dist/build/index.d.ts +0 -21
  390. package/dist/build/index.d.ts.map +0 -1
  391. package/dist/build/index.js +0 -21
  392. package/dist/build/index.js.map +0 -1
  393. package/dist/build/route-trie.d.ts +0 -71
  394. package/dist/build/route-trie.d.ts.map +0 -1
  395. package/dist/build/route-trie.js +0 -175
  396. package/dist/build/route-trie.js.map +0 -1
  397. package/dist/cache/__tests__/cache-scope.test.d.ts +0 -2
  398. package/dist/cache/__tests__/cache-scope.test.d.ts.map +0 -1
  399. package/dist/cache/__tests__/cache-scope.test.js +0 -208
  400. package/dist/cache/__tests__/cache-scope.test.js.map +0 -1
  401. package/dist/cache/__tests__/document-cache.test.d.ts +0 -2
  402. package/dist/cache/__tests__/document-cache.test.d.ts.map +0 -1
  403. package/dist/cache/__tests__/document-cache.test.js +0 -345
  404. package/dist/cache/__tests__/document-cache.test.js.map +0 -1
  405. package/dist/cache/__tests__/memory-segment-store.test.d.ts +0 -2
  406. package/dist/cache/__tests__/memory-segment-store.test.d.ts.map +0 -1
  407. package/dist/cache/__tests__/memory-segment-store.test.js +0 -425
  408. package/dist/cache/__tests__/memory-segment-store.test.js.map +0 -1
  409. package/dist/cache/__tests__/memory-store.test.d.ts +0 -2
  410. package/dist/cache/__tests__/memory-store.test.d.ts.map +0 -1
  411. package/dist/cache/__tests__/memory-store.test.js +0 -367
  412. package/dist/cache/__tests__/memory-store.test.js.map +0 -1
  413. package/dist/cache/cache-scope.d.ts +0 -102
  414. package/dist/cache/cache-scope.d.ts.map +0 -1
  415. package/dist/cache/cache-scope.js +0 -440
  416. package/dist/cache/cache-scope.js.map +0 -1
  417. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts +0 -2
  418. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts.map +0 -1
  419. package/dist/cache/cf/__tests__/cf-cache-store.test.js +0 -330
  420. package/dist/cache/cf/__tests__/cf-cache-store.test.js.map +0 -1
  421. package/dist/cache/cf/cf-cache-store.d.ts +0 -165
  422. package/dist/cache/cf/cf-cache-store.d.ts.map +0 -1
  423. package/dist/cache/cf/cf-cache-store.js +0 -242
  424. package/dist/cache/cf/cf-cache-store.js.map +0 -1
  425. package/dist/cache/cf/index.d.ts +0 -14
  426. package/dist/cache/cf/index.d.ts.map +0 -1
  427. package/dist/cache/cf/index.js +0 -17
  428. package/dist/cache/cf/index.js.map +0 -1
  429. package/dist/cache/document-cache.d.ts +0 -64
  430. package/dist/cache/document-cache.d.ts.map +0 -1
  431. package/dist/cache/document-cache.js +0 -228
  432. package/dist/cache/document-cache.js.map +0 -1
  433. package/dist/cache/index.d.ts +0 -19
  434. package/dist/cache/index.d.ts.map +0 -1
  435. package/dist/cache/index.js +0 -21
  436. package/dist/cache/index.js.map +0 -1
  437. package/dist/cache/memory-segment-store.d.ts +0 -110
  438. package/dist/cache/memory-segment-store.d.ts.map +0 -1
  439. package/dist/cache/memory-segment-store.js +0 -117
  440. package/dist/cache/memory-segment-store.js.map +0 -1
  441. package/dist/cache/memory-store.d.ts +0 -41
  442. package/dist/cache/memory-store.d.ts.map +0 -1
  443. package/dist/cache/memory-store.js +0 -191
  444. package/dist/cache/memory-store.js.map +0 -1
  445. package/dist/cache/types.d.ts +0 -317
  446. package/dist/cache/types.d.ts.map +0 -1
  447. package/dist/cache/types.js +0 -12
  448. package/dist/cache/types.js.map +0 -1
  449. package/dist/client.d.ts +0 -248
  450. package/dist/client.d.ts.map +0 -1
  451. package/dist/client.js +0 -367
  452. package/dist/client.js.map +0 -1
  453. package/dist/client.rsc.d.ts +0 -26
  454. package/dist/client.rsc.d.ts.map +0 -1
  455. package/dist/client.rsc.js +0 -46
  456. package/dist/client.rsc.js.map +0 -1
  457. package/dist/component-utils.d.ts +0 -36
  458. package/dist/component-utils.d.ts.map +0 -1
  459. package/dist/component-utils.js +0 -61
  460. package/dist/component-utils.js.map +0 -1
  461. package/dist/components/DefaultDocument.d.ts +0 -13
  462. package/dist/components/DefaultDocument.d.ts.map +0 -1
  463. package/dist/components/DefaultDocument.js +0 -15
  464. package/dist/components/DefaultDocument.js.map +0 -1
  465. package/dist/debug.d.ts +0 -58
  466. package/dist/debug.d.ts.map +0 -1
  467. package/dist/debug.js +0 -157
  468. package/dist/debug.js.map +0 -1
  469. package/dist/default-error-boundary.d.ts +0 -11
  470. package/dist/default-error-boundary.d.ts.map +0 -1
  471. package/dist/default-error-boundary.js +0 -45
  472. package/dist/default-error-boundary.js.map +0 -1
  473. package/dist/deps/browser.d.ts +0 -2
  474. package/dist/deps/browser.d.ts.map +0 -1
  475. package/dist/deps/browser.js +0 -3
  476. package/dist/deps/browser.js.map +0 -1
  477. package/dist/deps/html-stream-client.d.ts +0 -2
  478. package/dist/deps/html-stream-client.d.ts.map +0 -1
  479. package/dist/deps/html-stream-client.js +0 -3
  480. package/dist/deps/html-stream-client.js.map +0 -1
  481. package/dist/deps/html-stream-server.d.ts +0 -2
  482. package/dist/deps/html-stream-server.d.ts.map +0 -1
  483. package/dist/deps/html-stream-server.js +0 -3
  484. package/dist/deps/html-stream-server.js.map +0 -1
  485. package/dist/deps/rsc.d.ts +0 -2
  486. package/dist/deps/rsc.d.ts.map +0 -1
  487. package/dist/deps/rsc.js +0 -4
  488. package/dist/deps/rsc.js.map +0 -1
  489. package/dist/deps/ssr.d.ts +0 -2
  490. package/dist/deps/ssr.d.ts.map +0 -1
  491. package/dist/deps/ssr.js +0 -3
  492. package/dist/deps/ssr.js.map +0 -1
  493. package/dist/errors.d.ts +0 -174
  494. package/dist/errors.d.ts.map +0 -1
  495. package/dist/errors.js +0 -241
  496. package/dist/errors.js.map +0 -1
  497. package/dist/handle.d.ts +0 -78
  498. package/dist/handle.d.ts.map +0 -1
  499. package/dist/handle.js +0 -82
  500. package/dist/handle.js.map +0 -1
  501. package/dist/handles/MetaTags.d.ts +0 -14
  502. package/dist/handles/MetaTags.d.ts.map +0 -1
  503. package/dist/handles/MetaTags.js +0 -136
  504. package/dist/handles/MetaTags.js.map +0 -1
  505. package/dist/handles/index.d.ts +0 -6
  506. package/dist/handles/index.d.ts.map +0 -1
  507. package/dist/handles/index.js +0 -6
  508. package/dist/handles/index.js.map +0 -1
  509. package/dist/handles/meta.d.ts +0 -39
  510. package/dist/handles/meta.d.ts.map +0 -1
  511. package/dist/handles/meta.js +0 -202
  512. package/dist/handles/meta.js.map +0 -1
  513. package/dist/host/__tests__/errors.test.d.ts +0 -2
  514. package/dist/host/__tests__/errors.test.d.ts.map +0 -1
  515. package/dist/host/__tests__/errors.test.js +0 -76
  516. package/dist/host/__tests__/errors.test.js.map +0 -1
  517. package/dist/host/__tests__/pattern-comprehensive.test.d.ts +0 -2
  518. package/dist/host/__tests__/pattern-comprehensive.test.d.ts.map +0 -1
  519. package/dist/host/__tests__/pattern-comprehensive.test.js +0 -732
  520. package/dist/host/__tests__/pattern-comprehensive.test.js.map +0 -1
  521. package/dist/host/__tests__/pattern-matcher.test.d.ts +0 -2
  522. package/dist/host/__tests__/pattern-matcher.test.d.ts.map +0 -1
  523. package/dist/host/__tests__/pattern-matcher.test.js +0 -251
  524. package/dist/host/__tests__/pattern-matcher.test.js.map +0 -1
  525. package/dist/host/__tests__/router.test.d.ts +0 -2
  526. package/dist/host/__tests__/router.test.d.ts.map +0 -1
  527. package/dist/host/__tests__/router.test.js +0 -241
  528. package/dist/host/__tests__/router.test.js.map +0 -1
  529. package/dist/host/__tests__/testing.test.d.ts +0 -2
  530. package/dist/host/__tests__/testing.test.d.ts.map +0 -1
  531. package/dist/host/__tests__/testing.test.js +0 -64
  532. package/dist/host/__tests__/testing.test.js.map +0 -1
  533. package/dist/host/__tests__/utils.test.d.ts +0 -2
  534. package/dist/host/__tests__/utils.test.d.ts.map +0 -1
  535. package/dist/host/__tests__/utils.test.js +0 -29
  536. package/dist/host/__tests__/utils.test.js.map +0 -1
  537. package/dist/host/cookie-handler.d.ts +0 -34
  538. package/dist/host/cookie-handler.d.ts.map +0 -1
  539. package/dist/host/cookie-handler.js +0 -124
  540. package/dist/host/cookie-handler.js.map +0 -1
  541. package/dist/host/errors.d.ts +0 -56
  542. package/dist/host/errors.d.ts.map +0 -1
  543. package/dist/host/errors.js +0 -79
  544. package/dist/host/errors.js.map +0 -1
  545. package/dist/host/index.d.ts +0 -29
  546. package/dist/host/index.d.ts.map +0 -1
  547. package/dist/host/index.js +0 -32
  548. package/dist/host/index.js.map +0 -1
  549. package/dist/host/pattern-matcher.d.ts +0 -36
  550. package/dist/host/pattern-matcher.d.ts.map +0 -1
  551. package/dist/host/pattern-matcher.js +0 -172
  552. package/dist/host/pattern-matcher.js.map +0 -1
  553. package/dist/host/router.d.ts +0 -26
  554. package/dist/host/router.d.ts.map +0 -1
  555. package/dist/host/router.js +0 -218
  556. package/dist/host/router.js.map +0 -1
  557. package/dist/host/testing.d.ts +0 -36
  558. package/dist/host/testing.d.ts.map +0 -1
  559. package/dist/host/testing.js +0 -55
  560. package/dist/host/testing.js.map +0 -1
  561. package/dist/host/types.d.ts +0 -115
  562. package/dist/host/types.d.ts.map +0 -1
  563. package/dist/host/types.js +0 -7
  564. package/dist/host/types.js.map +0 -1
  565. package/dist/host/utils.d.ts +0 -21
  566. package/dist/host/utils.d.ts.map +0 -1
  567. package/dist/host/utils.js +0 -23
  568. package/dist/host/utils.js.map +0 -1
  569. package/dist/href-client.d.ts +0 -131
  570. package/dist/href-client.d.ts.map +0 -1
  571. package/dist/href-client.js +0 -64
  572. package/dist/href-client.js.map +0 -1
  573. package/dist/href-context.d.ts +0 -29
  574. package/dist/href-context.d.ts.map +0 -1
  575. package/dist/href-context.js +0 -21
  576. package/dist/href-context.js.map +0 -1
  577. package/dist/index.d.ts +0 -73
  578. package/dist/index.d.ts.map +0 -1
  579. package/dist/index.js +0 -91
  580. package/dist/index.js.map +0 -1
  581. package/dist/index.rsc.d.ts +0 -32
  582. package/dist/index.rsc.d.ts.map +0 -1
  583. package/dist/index.rsc.js +0 -40
  584. package/dist/index.rsc.js.map +0 -1
  585. package/dist/internal-debug.d.ts +0 -2
  586. package/dist/internal-debug.d.ts.map +0 -1
  587. package/dist/internal-debug.js +0 -5
  588. package/dist/internal-debug.js.map +0 -1
  589. package/dist/loader.d.ts +0 -14
  590. package/dist/loader.d.ts.map +0 -1
  591. package/dist/loader.js +0 -20
  592. package/dist/loader.js.map +0 -1
  593. package/dist/loader.rsc.d.ts +0 -19
  594. package/dist/loader.rsc.d.ts.map +0 -1
  595. package/dist/loader.rsc.js +0 -99
  596. package/dist/loader.rsc.js.map +0 -1
  597. package/dist/network-error-thrower.d.ts +0 -17
  598. package/dist/network-error-thrower.d.ts.map +0 -1
  599. package/dist/network-error-thrower.js +0 -14
  600. package/dist/network-error-thrower.js.map +0 -1
  601. package/dist/outlet-context.d.ts +0 -13
  602. package/dist/outlet-context.d.ts.map +0 -1
  603. package/dist/outlet-context.js +0 -3
  604. package/dist/outlet-context.js.map +0 -1
  605. package/dist/prerender/__tests__/param-hash.test.d.ts +0 -2
  606. package/dist/prerender/__tests__/param-hash.test.d.ts.map +0 -1
  607. package/dist/prerender/__tests__/param-hash.test.js +0 -148
  608. package/dist/prerender/__tests__/param-hash.test.js.map +0 -1
  609. package/dist/prerender/param-hash.d.ts +0 -16
  610. package/dist/prerender/param-hash.d.ts.map +0 -1
  611. package/dist/prerender/param-hash.js +0 -36
  612. package/dist/prerender/param-hash.js.map +0 -1
  613. package/dist/prerender/store.d.ts +0 -38
  614. package/dist/prerender/store.d.ts.map +0 -1
  615. package/dist/prerender/store.js +0 -61
  616. package/dist/prerender/store.js.map +0 -1
  617. package/dist/prerender.d.ts +0 -66
  618. package/dist/prerender.d.ts.map +0 -1
  619. package/dist/prerender.js +0 -57
  620. package/dist/prerender.js.map +0 -1
  621. package/dist/reverse.d.ts +0 -196
  622. package/dist/reverse.d.ts.map +0 -1
  623. package/dist/reverse.js +0 -78
  624. package/dist/reverse.js.map +0 -1
  625. package/dist/root-error-boundary.d.ts +0 -33
  626. package/dist/root-error-boundary.d.ts.map +0 -1
  627. package/dist/root-error-boundary.js +0 -165
  628. package/dist/root-error-boundary.js.map +0 -1
  629. package/dist/route-content-wrapper.d.ts +0 -46
  630. package/dist/route-content-wrapper.d.ts.map +0 -1
  631. package/dist/route-content-wrapper.js +0 -77
  632. package/dist/route-content-wrapper.js.map +0 -1
  633. package/dist/route-definition.d.ts +0 -421
  634. package/dist/route-definition.d.ts.map +0 -1
  635. package/dist/route-definition.js +0 -868
  636. package/dist/route-definition.js.map +0 -1
  637. package/dist/route-map-builder.d.ts +0 -155
  638. package/dist/route-map-builder.d.ts.map +0 -1
  639. package/dist/route-map-builder.js +0 -237
  640. package/dist/route-map-builder.js.map +0 -1
  641. package/dist/route-types.d.ts +0 -165
  642. package/dist/route-types.d.ts.map +0 -1
  643. package/dist/route-types.js +0 -7
  644. package/dist/route-types.js.map +0 -1
  645. package/dist/router/__tests__/handler-context.test.d.ts +0 -2
  646. package/dist/router/__tests__/handler-context.test.d.ts.map +0 -1
  647. package/dist/router/__tests__/handler-context.test.js +0 -65
  648. package/dist/router/__tests__/handler-context.test.js.map +0 -1
  649. package/dist/router/__tests__/loader-cycle-detection.test.d.ts +0 -2
  650. package/dist/router/__tests__/loader-cycle-detection.test.d.ts.map +0 -1
  651. package/dist/router/__tests__/loader-cycle-detection.test.js +0 -221
  652. package/dist/router/__tests__/loader-cycle-detection.test.js.map +0 -1
  653. package/dist/router/__tests__/match-context.test.d.ts +0 -2
  654. package/dist/router/__tests__/match-context.test.d.ts.map +0 -1
  655. package/dist/router/__tests__/match-context.test.js +0 -92
  656. package/dist/router/__tests__/match-context.test.js.map +0 -1
  657. package/dist/router/__tests__/match-pipelines.test.d.ts +0 -2
  658. package/dist/router/__tests__/match-pipelines.test.d.ts.map +0 -1
  659. package/dist/router/__tests__/match-pipelines.test.js +0 -417
  660. package/dist/router/__tests__/match-pipelines.test.js.map +0 -1
  661. package/dist/router/__tests__/match-result.test.d.ts +0 -2
  662. package/dist/router/__tests__/match-result.test.d.ts.map +0 -1
  663. package/dist/router/__tests__/match-result.test.js +0 -457
  664. package/dist/router/__tests__/match-result.test.js.map +0 -1
  665. package/dist/router/__tests__/on-error.test.d.ts +0 -2
  666. package/dist/router/__tests__/on-error.test.d.ts.map +0 -1
  667. package/dist/router/__tests__/on-error.test.js +0 -678
  668. package/dist/router/__tests__/on-error.test.js.map +0 -1
  669. package/dist/router/__tests__/pattern-matching.test.d.ts +0 -2
  670. package/dist/router/__tests__/pattern-matching.test.d.ts.map +0 -1
  671. package/dist/router/__tests__/pattern-matching.test.js +0 -629
  672. package/dist/router/__tests__/pattern-matching.test.js.map +0 -1
  673. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts +0 -2
  674. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts.map +0 -1
  675. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js +0 -155
  676. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js.map +0 -1
  677. package/dist/router/error-handling.d.ts +0 -77
  678. package/dist/router/error-handling.d.ts.map +0 -1
  679. package/dist/router/error-handling.js +0 -202
  680. package/dist/router/error-handling.js.map +0 -1
  681. package/dist/router/handler-context.d.ts +0 -20
  682. package/dist/router/handler-context.d.ts.map +0 -1
  683. package/dist/router/handler-context.js +0 -198
  684. package/dist/router/handler-context.js.map +0 -1
  685. package/dist/router/intercept-resolution.d.ts +0 -66
  686. package/dist/router/intercept-resolution.d.ts.map +0 -1
  687. package/dist/router/intercept-resolution.js +0 -246
  688. package/dist/router/intercept-resolution.js.map +0 -1
  689. package/dist/router/loader-resolution.d.ts +0 -64
  690. package/dist/router/loader-resolution.d.ts.map +0 -1
  691. package/dist/router/loader-resolution.js +0 -284
  692. package/dist/router/loader-resolution.js.map +0 -1
  693. package/dist/router/logging.d.ts +0 -15
  694. package/dist/router/logging.d.ts.map +0 -1
  695. package/dist/router/logging.js +0 -99
  696. package/dist/router/logging.js.map +0 -1
  697. package/dist/router/manifest.d.ts +0 -22
  698. package/dist/router/manifest.d.ts.map +0 -1
  699. package/dist/router/manifest.js +0 -181
  700. package/dist/router/manifest.js.map +0 -1
  701. package/dist/router/match-api.d.ts +0 -35
  702. package/dist/router/match-api.d.ts.map +0 -1
  703. package/dist/router/match-api.js +0 -406
  704. package/dist/router/match-api.js.map +0 -1
  705. package/dist/router/match-context.d.ts +0 -206
  706. package/dist/router/match-context.d.ts.map +0 -1
  707. package/dist/router/match-context.js +0 -17
  708. package/dist/router/match-context.js.map +0 -1
  709. package/dist/router/match-middleware/background-revalidation.d.ts +0 -127
  710. package/dist/router/match-middleware/background-revalidation.d.ts.map +0 -1
  711. package/dist/router/match-middleware/background-revalidation.js +0 -75
  712. package/dist/router/match-middleware/background-revalidation.js.map +0 -1
  713. package/dist/router/match-middleware/cache-lookup.d.ts +0 -112
  714. package/dist/router/match-middleware/cache-lookup.d.ts.map +0 -1
  715. package/dist/router/match-middleware/cache-lookup.js +0 -257
  716. package/dist/router/match-middleware/cache-lookup.js.map +0 -1
  717. package/dist/router/match-middleware/cache-store.d.ts +0 -113
  718. package/dist/router/match-middleware/cache-store.d.ts.map +0 -1
  719. package/dist/router/match-middleware/cache-store.js +0 -108
  720. package/dist/router/match-middleware/cache-store.js.map +0 -1
  721. package/dist/router/match-middleware/index.d.ts +0 -81
  722. package/dist/router/match-middleware/index.d.ts.map +0 -1
  723. package/dist/router/match-middleware/index.js +0 -80
  724. package/dist/router/match-middleware/index.js.map +0 -1
  725. package/dist/router/match-middleware/intercept-resolution.d.ts +0 -117
  726. package/dist/router/match-middleware/intercept-resolution.d.ts.map +0 -1
  727. package/dist/router/match-middleware/intercept-resolution.js +0 -134
  728. package/dist/router/match-middleware/intercept-resolution.js.map +0 -1
  729. package/dist/router/match-middleware/segment-resolution.d.ts +0 -99
  730. package/dist/router/match-middleware/segment-resolution.d.ts.map +0 -1
  731. package/dist/router/match-middleware/segment-resolution.js +0 -53
  732. package/dist/router/match-middleware/segment-resolution.js.map +0 -1
  733. package/dist/router/match-pipelines.d.ts +0 -147
  734. package/dist/router/match-pipelines.d.ts.map +0 -1
  735. package/dist/router/match-pipelines.js +0 -82
  736. package/dist/router/match-pipelines.js.map +0 -1
  737. package/dist/router/match-result.d.ts +0 -126
  738. package/dist/router/match-result.d.ts.map +0 -1
  739. package/dist/router/match-result.js +0 -93
  740. package/dist/router/match-result.js.map +0 -1
  741. package/dist/router/metrics.d.ts +0 -20
  742. package/dist/router/metrics.d.ts.map +0 -1
  743. package/dist/router/metrics.js +0 -47
  744. package/dist/router/metrics.js.map +0 -1
  745. package/dist/router/middleware.d.ts +0 -249
  746. package/dist/router/middleware.d.ts.map +0 -1
  747. package/dist/router/middleware.js +0 -434
  748. package/dist/router/middleware.js.map +0 -1
  749. package/dist/router/middleware.test.d.ts +0 -2
  750. package/dist/router/middleware.test.d.ts.map +0 -1
  751. package/dist/router/middleware.test.js +0 -816
  752. package/dist/router/middleware.test.js.map +0 -1
  753. package/dist/router/pattern-matching.d.ts +0 -149
  754. package/dist/router/pattern-matching.d.ts.map +0 -1
  755. package/dist/router/pattern-matching.js +0 -349
  756. package/dist/router/pattern-matching.js.map +0 -1
  757. package/dist/router/revalidation.d.ts +0 -44
  758. package/dist/router/revalidation.d.ts.map +0 -1
  759. package/dist/router/revalidation.js +0 -147
  760. package/dist/router/revalidation.js.map +0 -1
  761. package/dist/router/router-context.d.ts +0 -135
  762. package/dist/router/router-context.d.ts.map +0 -1
  763. package/dist/router/router-context.js +0 -36
  764. package/dist/router/router-context.js.map +0 -1
  765. package/dist/router/segment-resolution.d.ts +0 -127
  766. package/dist/router/segment-resolution.d.ts.map +0 -1
  767. package/dist/router/segment-resolution.js +0 -919
  768. package/dist/router/segment-resolution.js.map +0 -1
  769. package/dist/router/trie-matching.d.ts +0 -40
  770. package/dist/router/trie-matching.d.ts.map +0 -1
  771. package/dist/router/trie-matching.js +0 -127
  772. package/dist/router/trie-matching.js.map +0 -1
  773. package/dist/router/types.d.ts +0 -136
  774. package/dist/router/types.d.ts.map +0 -1
  775. package/dist/router/types.js +0 -7
  776. package/dist/router/types.js.map +0 -1
  777. package/dist/router.d.ts +0 -753
  778. package/dist/router.d.ts.map +0 -1
  779. package/dist/router.gen.d.ts +0 -6
  780. package/dist/router.gen.d.ts.map +0 -1
  781. package/dist/router.gen.js +0 -6
  782. package/dist/router.gen.js.map +0 -1
  783. package/dist/router.js +0 -1304
  784. package/dist/router.js.map +0 -1
  785. package/dist/rsc/__tests__/helpers.test.d.ts +0 -2
  786. package/dist/rsc/__tests__/helpers.test.d.ts.map +0 -1
  787. package/dist/rsc/__tests__/helpers.test.js +0 -140
  788. package/dist/rsc/__tests__/helpers.test.js.map +0 -1
  789. package/dist/rsc/handler.d.ts +0 -45
  790. package/dist/rsc/handler.d.ts.map +0 -1
  791. package/dist/rsc/handler.js +0 -1172
  792. package/dist/rsc/handler.js.map +0 -1
  793. package/dist/rsc/helpers.d.ts +0 -16
  794. package/dist/rsc/helpers.d.ts.map +0 -1
  795. package/dist/rsc/helpers.js +0 -55
  796. package/dist/rsc/helpers.js.map +0 -1
  797. package/dist/rsc/index.d.ts +0 -22
  798. package/dist/rsc/index.d.ts.map +0 -1
  799. package/dist/rsc/index.js +0 -23
  800. package/dist/rsc/index.js.map +0 -1
  801. package/dist/rsc/nonce.d.ts +0 -9
  802. package/dist/rsc/nonce.d.ts.map +0 -1
  803. package/dist/rsc/nonce.js +0 -18
  804. package/dist/rsc/nonce.js.map +0 -1
  805. package/dist/rsc/types.d.ts +0 -206
  806. package/dist/rsc/types.d.ts.map +0 -1
  807. package/dist/rsc/types.js +0 -8
  808. package/dist/rsc/types.js.map +0 -1
  809. package/dist/search-params.d.ts +0 -103
  810. package/dist/search-params.d.ts.map +0 -1
  811. package/dist/search-params.js +0 -74
  812. package/dist/search-params.js.map +0 -1
  813. package/dist/segment-system.d.ts +0 -75
  814. package/dist/segment-system.d.ts.map +0 -1
  815. package/dist/segment-system.js +0 -336
  816. package/dist/segment-system.js.map +0 -1
  817. package/dist/server/context.d.ts +0 -245
  818. package/dist/server/context.d.ts.map +0 -1
  819. package/dist/server/context.js +0 -197
  820. package/dist/server/context.js.map +0 -1
  821. package/dist/server/fetchable-loader-store.d.ts +0 -18
  822. package/dist/server/fetchable-loader-store.d.ts.map +0 -1
  823. package/dist/server/fetchable-loader-store.js +0 -18
  824. package/dist/server/fetchable-loader-store.js.map +0 -1
  825. package/dist/server/handle-store.d.ts +0 -85
  826. package/dist/server/handle-store.d.ts.map +0 -1
  827. package/dist/server/handle-store.js +0 -142
  828. package/dist/server/handle-store.js.map +0 -1
  829. package/dist/server/loader-registry.d.ts +0 -55
  830. package/dist/server/loader-registry.d.ts.map +0 -1
  831. package/dist/server/loader-registry.js +0 -132
  832. package/dist/server/loader-registry.js.map +0 -1
  833. package/dist/server/request-context.d.ts +0 -226
  834. package/dist/server/request-context.d.ts.map +0 -1
  835. package/dist/server/request-context.js +0 -290
  836. package/dist/server/request-context.js.map +0 -1
  837. package/dist/server/root-layout.d.ts +0 -4
  838. package/dist/server/root-layout.d.ts.map +0 -1
  839. package/dist/server/root-layout.js +0 -5
  840. package/dist/server/root-layout.js.map +0 -1
  841. package/dist/server.d.ts +0 -15
  842. package/dist/server.d.ts.map +0 -1
  843. package/dist/server.js +0 -20
  844. package/dist/server.js.map +0 -1
  845. package/dist/ssr/__tests__/ssr-handler.test.d.ts +0 -2
  846. package/dist/ssr/__tests__/ssr-handler.test.d.ts.map +0 -1
  847. package/dist/ssr/__tests__/ssr-handler.test.js +0 -132
  848. package/dist/ssr/__tests__/ssr-handler.test.js.map +0 -1
  849. package/dist/ssr/index.d.ts +0 -98
  850. package/dist/ssr/index.d.ts.map +0 -1
  851. package/dist/ssr/index.js +0 -158
  852. package/dist/ssr/index.js.map +0 -1
  853. package/dist/static-handler.d.ts +0 -50
  854. package/dist/static-handler.d.ts.map +0 -1
  855. package/dist/static-handler.gen.d.ts +0 -5
  856. package/dist/static-handler.gen.d.ts.map +0 -1
  857. package/dist/static-handler.gen.js +0 -5
  858. package/dist/static-handler.gen.js.map +0 -1
  859. package/dist/static-handler.js +0 -29
  860. package/dist/static-handler.js.map +0 -1
  861. package/dist/theme/ThemeProvider.d.ts +0 -20
  862. package/dist/theme/ThemeProvider.d.ts.map +0 -1
  863. package/dist/theme/ThemeProvider.js +0 -240
  864. package/dist/theme/ThemeProvider.js.map +0 -1
  865. package/dist/theme/ThemeScript.d.ts +0 -48
  866. package/dist/theme/ThemeScript.d.ts.map +0 -1
  867. package/dist/theme/ThemeScript.js +0 -13
  868. package/dist/theme/ThemeScript.js.map +0 -1
  869. package/dist/theme/__tests__/theme.test.d.ts +0 -2
  870. package/dist/theme/__tests__/theme.test.d.ts.map +0 -1
  871. package/dist/theme/__tests__/theme.test.js +0 -103
  872. package/dist/theme/__tests__/theme.test.js.map +0 -1
  873. package/dist/theme/constants.d.ts +0 -29
  874. package/dist/theme/constants.d.ts.map +0 -1
  875. package/dist/theme/constants.js +0 -48
  876. package/dist/theme/constants.js.map +0 -1
  877. package/dist/theme/index.d.ts +0 -31
  878. package/dist/theme/index.d.ts.map +0 -1
  879. package/dist/theme/index.js +0 -36
  880. package/dist/theme/index.js.map +0 -1
  881. package/dist/theme/theme-context.d.ts +0 -40
  882. package/dist/theme/theme-context.d.ts.map +0 -1
  883. package/dist/theme/theme-context.js +0 -60
  884. package/dist/theme/theme-context.js.map +0 -1
  885. package/dist/theme/theme-script.d.ts +0 -27
  886. package/dist/theme/theme-script.d.ts.map +0 -1
  887. package/dist/theme/theme-script.js +0 -147
  888. package/dist/theme/theme-script.js.map +0 -1
  889. package/dist/theme/types.d.ts +0 -163
  890. package/dist/theme/types.d.ts.map +0 -1
  891. package/dist/theme/types.js +0 -11
  892. package/dist/theme/types.js.map +0 -1
  893. package/dist/theme/use-theme.d.ts +0 -12
  894. package/dist/theme/use-theme.d.ts.map +0 -1
  895. package/dist/theme/use-theme.js +0 -40
  896. package/dist/theme/use-theme.js.map +0 -1
  897. package/dist/types.d.ts +0 -1479
  898. package/dist/types.d.ts.map +0 -1
  899. package/dist/types.js +0 -10
  900. package/dist/types.js.map +0 -1
  901. package/dist/urls.d.ts +0 -441
  902. package/dist/urls.d.ts.map +0 -1
  903. package/dist/urls.gen.d.ts +0 -8
  904. package/dist/urls.gen.d.ts.map +0 -1
  905. package/dist/urls.gen.js +0 -8
  906. package/dist/urls.gen.js.map +0 -1
  907. package/dist/urls.js +0 -443
  908. package/dist/urls.js.map +0 -1
  909. package/dist/use-loader.d.ts +0 -127
  910. package/dist/use-loader.d.ts.map +0 -1
  911. package/dist/use-loader.js +0 -237
  912. package/dist/use-loader.js.map +0 -1
  913. package/dist/vite/__tests__/ast-handler-extract.test.d.ts +0 -2
  914. package/dist/vite/__tests__/ast-handler-extract.test.d.ts.map +0 -1
  915. package/dist/vite/__tests__/ast-handler-extract.test.js +0 -294
  916. package/dist/vite/__tests__/ast-handler-extract.test.js.map +0 -1
  917. package/dist/vite/__tests__/expose-id-utils.test.d.ts +0 -2
  918. package/dist/vite/__tests__/expose-id-utils.test.d.ts.map +0 -1
  919. package/dist/vite/__tests__/expose-id-utils.test.js +0 -224
  920. package/dist/vite/__tests__/expose-id-utils.test.js.map +0 -1
  921. package/dist/vite/__tests__/expose-internal-ids.test.d.ts +0 -2
  922. package/dist/vite/__tests__/expose-internal-ids.test.d.ts.map +0 -1
  923. package/dist/vite/__tests__/expose-internal-ids.test.js +0 -647
  924. package/dist/vite/__tests__/expose-internal-ids.test.js.map +0 -1
  925. package/dist/vite/__tests__/expose-router-id.test.d.ts +0 -2
  926. package/dist/vite/__tests__/expose-router-id.test.d.ts.map +0 -1
  927. package/dist/vite/__tests__/expose-router-id.test.js +0 -39
  928. package/dist/vite/__tests__/expose-router-id.test.js.map +0 -1
  929. package/dist/vite/ast-handler-extract.d.ts +0 -49
  930. package/dist/vite/ast-handler-extract.d.ts.map +0 -1
  931. package/dist/vite/ast-handler-extract.js +0 -249
  932. package/dist/vite/ast-handler-extract.js.map +0 -1
  933. package/dist/vite/expose-action-id.d.ts +0 -19
  934. package/dist/vite/expose-action-id.d.ts.map +0 -1
  935. package/dist/vite/expose-action-id.js +0 -250
  936. package/dist/vite/expose-action-id.js.map +0 -1
  937. package/dist/vite/expose-id-utils.d.ts +0 -69
  938. package/dist/vite/expose-id-utils.d.ts.map +0 -1
  939. package/dist/vite/expose-id-utils.js +0 -289
  940. package/dist/vite/expose-id-utils.js.map +0 -1
  941. package/dist/vite/expose-internal-ids.d.ts +0 -22
  942. package/dist/vite/expose-internal-ids.d.ts.map +0 -1
  943. package/dist/vite/expose-internal-ids.js +0 -886
  944. package/dist/vite/expose-internal-ids.js.map +0 -1
  945. package/dist/vite/index.d.ts +0 -149
  946. package/dist/vite/index.d.ts.map +0 -1
  947. package/dist/vite/index.js.map +0 -1
  948. package/dist/vite/index.named-routes.gen.ts +0 -103
  949. package/dist/vite/package-resolution.d.ts +0 -43
  950. package/dist/vite/package-resolution.d.ts.map +0 -1
  951. package/dist/vite/package-resolution.js +0 -112
  952. package/dist/vite/package-resolution.js.map +0 -1
  953. package/dist/vite/virtual-entries.d.ts +0 -25
  954. package/dist/vite/virtual-entries.d.ts.map +0 -1
  955. package/dist/vite/virtual-entries.js +0 -110
  956. package/dist/vite/virtual-entries.js.map +0 -1
@@ -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
  };