@rangojs/router 0.0.0-experimental.tapabs3 → 0.1.1

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 (1350) hide show
  1. package/dist/bin/rango.js +19 -41
  2. package/dist/types/__internal.d.ts +127 -0
  3. package/dist/types/bin/rango.d.ts +1 -0
  4. package/dist/types/browser/action-coordinator.d.ts +57 -0
  5. package/dist/types/browser/action-fence.d.ts +33 -0
  6. package/dist/types/browser/app-shell.d.ts +34 -0
  7. package/dist/types/browser/app-version.d.ts +6 -0
  8. package/dist/types/browser/connection-warmup.d.ts +31 -0
  9. package/dist/types/browser/cookie-name.d.ts +66 -0
  10. package/dist/types/browser/dev-discovery.d.ts +11 -0
  11. package/dist/types/browser/event-controller.d.ts +221 -0
  12. package/dist/types/browser/history-state.d.ts +26 -0
  13. package/dist/types/browser/index.d.ts +1 -0
  14. package/dist/types/browser/intercept-utils.d.ts +30 -0
  15. package/dist/types/browser/invalidate-client-cache.d.ts +17 -0
  16. package/dist/types/browser/link-interceptor.d.ts +43 -0
  17. package/dist/types/browser/logging.d.ts +33 -0
  18. package/dist/types/browser/merge-segment-loaders.d.ts +38 -0
  19. package/dist/types/browser/navigation-bridge.d.ts +27 -0
  20. package/dist/types/browser/navigation-client.d.ts +17 -0
  21. package/dist/types/browser/navigation-store-handle.d.ts +25 -0
  22. package/dist/types/browser/navigation-store.d.ts +85 -0
  23. package/dist/types/browser/navigation-transaction.d.ts +75 -0
  24. package/dist/types/browser/network-error-handler.d.ts +35 -0
  25. package/dist/types/browser/partial-update.d.ts +61 -0
  26. package/dist/types/browser/prefetch/cache.d.ts +183 -0
  27. package/dist/types/browser/prefetch/fetch.d.ts +52 -0
  28. package/dist/types/browser/prefetch/loader.d.ts +10 -0
  29. package/dist/types/browser/prefetch/observer.d.ts +27 -0
  30. package/dist/types/browser/prefetch/policy.d.ts +13 -0
  31. package/dist/types/browser/prefetch/queue.d.ts +48 -0
  32. package/dist/types/browser/prefetch/resource-ready.d.ts +28 -0
  33. package/dist/types/browser/prefetch/runtime.d.ts +3 -0
  34. package/dist/types/browser/rango-state.d.ts +52 -0
  35. package/dist/types/browser/react/Link.d.ts +140 -0
  36. package/dist/types/browser/react/NavigationProvider.d.ts +88 -0
  37. package/dist/types/browser/react/ScrollRestoration.d.ts +78 -0
  38. package/dist/types/browser/react/context.d.ts +54 -0
  39. package/dist/types/browser/react/filter-segment-order.d.ts +35 -0
  40. package/dist/types/browser/react/index.d.ts +1 -0
  41. package/dist/types/browser/react/location-state-shared.d.ts +162 -0
  42. package/dist/types/browser/react/location-state.d.ts +29 -0
  43. package/dist/types/browser/react/mount-context.d.ts +23 -0
  44. package/dist/types/browser/react/nonce-context.d.ts +14 -0
  45. package/dist/types/browser/react/shallow-equal.d.ts +5 -0
  46. package/dist/types/browser/react/use-action.d.ts +61 -0
  47. package/dist/types/browser/react/use-handle.d.ts +21 -0
  48. package/dist/types/browser/react/use-href.d.ts +32 -0
  49. package/dist/types/browser/react/use-link-status.d.ts +36 -0
  50. package/dist/types/browser/react/use-mount.d.ts +24 -0
  51. package/dist/types/browser/react/use-navigation.d.ts +15 -0
  52. package/dist/types/browser/react/use-params.d.ts +21 -0
  53. package/dist/types/browser/react/use-pathname.d.ts +13 -0
  54. package/dist/types/browser/react/use-reverse.d.ts +40 -0
  55. package/dist/types/browser/react/use-router.d.ts +23 -0
  56. package/dist/types/browser/react/use-search-params.d.ts +19 -0
  57. package/dist/types/browser/react/use-segments.d.ts +29 -0
  58. package/dist/types/browser/response-adapter.d.ts +58 -0
  59. package/dist/types/browser/rsc-router.d.ts +141 -0
  60. package/dist/types/browser/scroll-restoration.d.ts +103 -0
  61. package/dist/types/browser/segment-reconciler.d.ts +74 -0
  62. package/dist/types/browser/segment-structure-assert.d.ts +16 -0
  63. package/dist/types/browser/server-action-bridge.d.ts +29 -0
  64. package/dist/types/browser/types.d.ts +518 -0
  65. package/dist/types/browser/validate-redirect-origin.d.ts +28 -0
  66. package/dist/types/build/collect-fallback-refs.d.ts +5 -0
  67. package/dist/types/build/generate-manifest.d.ts +106 -0
  68. package/dist/types/build/generate-route-types.d.ts +8 -0
  69. package/dist/types/build/index.d.ts +21 -0
  70. package/dist/types/build/prefix-tree-utils.d.ts +56 -0
  71. package/dist/types/build/route-trie.d.ts +89 -0
  72. package/dist/types/build/route-types/ast-helpers.d.ts +3 -0
  73. package/dist/types/build/route-types/ast-route-extraction.d.ts +13 -0
  74. package/dist/types/build/route-types/codegen.d.ts +16 -0
  75. package/dist/types/build/route-types/include-resolution.d.ts +74 -0
  76. package/dist/types/build/route-types/param-extraction.d.ts +13 -0
  77. package/dist/types/build/route-types/per-module-writer.d.ts +18 -0
  78. package/dist/types/build/route-types/router-processing.d.ts +82 -0
  79. package/dist/types/build/route-types/scan-filter.d.ts +17 -0
  80. package/dist/types/build/route-types/source-scan.d.ts +13 -0
  81. package/dist/types/build/runtime-discovery.d.ts +24 -0
  82. package/dist/types/cache/background-task.d.ts +21 -0
  83. package/dist/types/cache/cache-error.d.ts +71 -0
  84. package/dist/types/cache/cache-key-utils.d.ts +35 -0
  85. package/dist/types/cache/cache-policy.d.ts +59 -0
  86. package/dist/types/cache/cache-runtime.d.ts +51 -0
  87. package/dist/types/cache/cache-scope.d.ts +136 -0
  88. package/dist/types/cache/cache-tag.d.ts +79 -0
  89. package/dist/types/cache/cf/cf-base64.d.ts +4 -0
  90. package/dist/types/cache/cf/cf-cache-constants.d.ts +105 -0
  91. package/dist/types/cache/cf/cf-cache-store.d.ts +589 -0
  92. package/dist/types/cache/cf/cf-cache-types.d.ts +363 -0
  93. package/dist/types/cache/cf/cf-kv-utils.d.ts +22 -0
  94. package/dist/types/cache/cf/cf-tag-marker-memo.d.ts +15 -0
  95. package/dist/types/cache/cf/cf-zone-purge.d.ts +31 -0
  96. package/dist/types/cache/cf/index.d.ts +4 -0
  97. package/dist/types/cache/document-cache.d.ts +69 -0
  98. package/dist/types/cache/handle-capture.d.ts +23 -0
  99. package/dist/types/cache/handle-snapshot.d.ts +39 -0
  100. package/dist/types/cache/index.d.ts +7 -0
  101. package/dist/types/cache/memory-segment-store.d.ts +163 -0
  102. package/dist/types/cache/profile-registry.d.ts +40 -0
  103. package/dist/types/cache/read-through-swr.d.ts +60 -0
  104. package/dist/types/cache/segment-codec.d.ts +78 -0
  105. package/dist/types/cache/shell-snapshot.d.ts +186 -0
  106. package/dist/types/cache/tag-invalidation.d.ts +74 -0
  107. package/dist/types/cache/taint.d.ts +71 -0
  108. package/dist/types/cache/types.d.ts +435 -0
  109. package/dist/types/cache/vercel/index.d.ts +1 -0
  110. package/dist/types/cache/vercel/vercel-cache-store.d.ts +268 -0
  111. package/dist/types/client.d.ts +184 -0
  112. package/dist/types/client.rsc.d.ts +39 -0
  113. package/dist/types/cloudflare/index.d.ts +7 -0
  114. package/dist/types/cloudflare/tracing.d.ts +53 -0
  115. package/dist/types/component-utils.d.ts +46 -0
  116. package/dist/types/components/DefaultDocument.d.ts +13 -0
  117. package/dist/types/context-var.d.ts +84 -0
  118. package/dist/types/debug.d.ts +57 -0
  119. package/dist/types/decode-loader-results.d.ts +5 -0
  120. package/dist/types/default-error-boundary.d.ts +10 -0
  121. package/dist/types/defer.d.ts +89 -0
  122. package/dist/types/deps/browser.d.ts +1 -0
  123. package/dist/types/deps/html-stream-client.d.ts +1 -0
  124. package/dist/types/deps/html-stream-server.d.ts +1 -0
  125. package/dist/types/deps/rsc.d.ts +1 -0
  126. package/dist/types/deps/ssr.d.ts +1 -0
  127. package/dist/types/dev-discovery-protocol.d.ts +5 -0
  128. package/dist/types/encode-kv.d.ts +35 -0
  129. package/dist/types/errors.d.ts +226 -0
  130. package/dist/types/escape-script.d.ts +44 -0
  131. package/dist/types/handle.d.ts +93 -0
  132. package/dist/types/handles/MetaTags.d.ts +17 -0
  133. package/dist/types/handles/Scripts.d.ts +38 -0
  134. package/dist/types/handles/breadcrumbs.d.ts +43 -0
  135. package/dist/types/handles/deferred-resolution.d.ts +53 -0
  136. package/dist/types/handles/is-thenable.d.ts +12 -0
  137. package/dist/types/handles/meta.d.ts +43 -0
  138. package/dist/types/handles/script.d.ts +139 -0
  139. package/dist/types/host/cookie-handler.d.ts +8 -0
  140. package/dist/types/host/errors.d.ts +40 -0
  141. package/dist/types/host/index.d.ts +33 -0
  142. package/dist/types/host/pattern-matcher.d.ts +30 -0
  143. package/dist/types/host/router.d.ts +12 -0
  144. package/dist/types/host/testing.d.ts +41 -0
  145. package/dist/types/host/types.d.ts +148 -0
  146. package/dist/types/host/utils.d.ts +20 -0
  147. package/dist/types/href-client.d.ts +214 -0
  148. package/dist/types/index.d.ts +112 -0
  149. package/dist/types/index.rsc.d.ts +51 -0
  150. package/dist/types/internal-debug.d.ts +1 -0
  151. package/dist/types/loader-store.d.ts +193 -0
  152. package/dist/types/loader.d.ts +18 -0
  153. package/dist/types/loader.rsc.d.ts +18 -0
  154. package/dist/types/missing-id-error.d.ts +1 -0
  155. package/dist/types/outlet-context.d.ts +12 -0
  156. package/dist/types/outlet-provider.d.ts +12 -0
  157. package/dist/types/prerender/build-shell-capture.d.ts +104 -0
  158. package/dist/types/prerender/param-hash.d.ts +6 -0
  159. package/dist/types/prerender/shell-manifest-key.d.ts +18 -0
  160. package/dist/types/prerender/store.d.ts +63 -0
  161. package/dist/types/prerender.d.ts +292 -0
  162. package/dist/types/redirect-origin.d.ts +67 -0
  163. package/dist/types/regex-escape.d.ts +6 -0
  164. package/dist/types/render-error-thrower.d.ts +13 -0
  165. package/dist/types/response-utils.d.ts +35 -0
  166. package/dist/types/reverse.d.ts +206 -0
  167. package/dist/types/root-error-boundary.d.ts +32 -0
  168. package/dist/types/route-content-wrapper.d.ts +40 -0
  169. package/dist/types/route-definition/dsl-helpers.d.ts +130 -0
  170. package/dist/types/route-definition/helper-factories.d.ts +22 -0
  171. package/dist/types/route-definition/helpers-types.d.ts +392 -0
  172. package/dist/types/route-definition/index.d.ts +7 -0
  173. package/dist/types/route-definition/redirect.d.ts +48 -0
  174. package/dist/types/route-definition/resolve-handler-use.d.ts +19 -0
  175. package/dist/types/route-definition/use-item-types.d.ts +1 -0
  176. package/dist/types/route-definition.d.ts +1 -0
  177. package/dist/types/route-map-builder.d.ts +102 -0
  178. package/dist/types/route-name.d.ts +27 -0
  179. package/dist/types/route-types.d.ts +172 -0
  180. package/dist/types/router/basename.d.ts +10 -0
  181. package/dist/types/router/content-negotiation.d.ts +91 -0
  182. package/dist/types/router/debug-manifest.d.ts +7 -0
  183. package/dist/types/router/error-handling.d.ts +76 -0
  184. package/dist/types/router/find-match.d.ts +19 -0
  185. package/dist/types/router/handler-context.d.ts +41 -0
  186. package/dist/types/router/instrument.d.ts +161 -0
  187. package/dist/types/router/intercept-resolution.d.ts +79 -0
  188. package/dist/types/router/lazy-includes.d.ts +26 -0
  189. package/dist/types/router/loader-resolution.d.ts +63 -0
  190. package/dist/types/router/logging.d.ts +41 -0
  191. package/dist/types/router/manifest.d.ts +8 -0
  192. package/dist/types/router/match-api.d.ts +19 -0
  193. package/dist/types/router/match-context.d.ts +184 -0
  194. package/dist/types/router/match-handlers.d.ts +49 -0
  195. package/dist/types/router/match-middleware/background-revalidation.d.ts +113 -0
  196. package/dist/types/router/match-middleware/cache-lookup.d.ts +113 -0
  197. package/dist/types/router/match-middleware/cache-store.d.ts +112 -0
  198. package/dist/types/router/match-middleware/index.d.ts +80 -0
  199. package/dist/types/router/match-middleware/intercept-resolution.d.ts +116 -0
  200. package/dist/types/router/match-middleware/segment-resolution.d.ts +94 -0
  201. package/dist/types/router/match-pipelines.d.ts +103 -0
  202. package/dist/types/router/match-result.d.ts +114 -0
  203. package/dist/types/router/metrics.d.ts +6 -0
  204. package/dist/types/router/middleware-types.d.ts +74 -0
  205. package/dist/types/router/middleware.d.ts +116 -0
  206. package/dist/types/router/navigation-snapshot.d.ts +22 -0
  207. package/dist/types/router/params-util.d.ts +8 -0
  208. package/dist/types/router/parse-pattern.d.ts +38 -0
  209. package/dist/types/router/pattern-matching.d.ts +169 -0
  210. package/dist/types/router/prefetch-cache-ttl.d.ts +27 -0
  211. package/dist/types/router/prefetch-limits.d.ts +20 -0
  212. package/dist/types/router/prerender-match.d.ts +53 -0
  213. package/dist/types/router/preview-match.d.ts +22 -0
  214. package/dist/types/router/request-classification.d.ts +104 -0
  215. package/dist/types/router/revalidation.d.ts +57 -0
  216. package/dist/types/router/route-snapshot.d.ts +112 -0
  217. package/dist/types/router/router-context.d.ts +137 -0
  218. package/dist/types/router/router-interfaces.d.ts +434 -0
  219. package/dist/types/router/router-options.d.ts +738 -0
  220. package/dist/types/router/router-registry.d.ts +15 -0
  221. package/dist/types/router/segment-resolution/fresh.d.ts +55 -0
  222. package/dist/types/router/segment-resolution/helpers.d.ts +93 -0
  223. package/dist/types/router/segment-resolution/loader-cache.d.ts +33 -0
  224. package/dist/types/router/segment-resolution/loader-mask.d.ts +44 -0
  225. package/dist/types/router/segment-resolution/loader-snapshot.d.ts +90 -0
  226. package/dist/types/router/segment-resolution/mask-nested.d.ts +53 -0
  227. package/dist/types/router/segment-resolution/revalidation.d.ts +85 -0
  228. package/dist/types/router/segment-resolution/static-store.d.ts +17 -0
  229. package/dist/types/router/segment-resolution/streamed-handler-telemetry.d.ts +16 -0
  230. package/dist/types/router/segment-resolution/view-transition-default.d.ts +28 -0
  231. package/dist/types/router/segment-resolution.d.ts +3 -0
  232. package/dist/types/router/segment-wrappers.d.ts +53 -0
  233. package/dist/types/router/state-cookie-name.d.ts +1 -0
  234. package/dist/types/router/substitute-pattern-params.d.ts +23 -0
  235. package/dist/types/router/telemetry-otel.d.ts +113 -0
  236. package/dist/types/router/telemetry.d.ts +216 -0
  237. package/dist/types/router/timeout.d.ts +96 -0
  238. package/dist/types/router/tracing.d.ts +125 -0
  239. package/dist/types/router/trie-matching.d.ts +32 -0
  240. package/dist/types/router/types.d.ts +98 -0
  241. package/dist/types/router/url-params.d.ts +26 -0
  242. package/dist/types/router.d.ts +7 -0
  243. package/dist/types/rsc/capture-queue.d.ts +6 -0
  244. package/dist/types/rsc/full-payload.d.ts +22 -0
  245. package/dist/types/rsc/handler-context.d.ts +32 -0
  246. package/dist/types/rsc/handler.d.ts +9 -0
  247. package/dist/types/rsc/helpers.d.ts +124 -0
  248. package/dist/types/rsc/index.d.ts +17 -0
  249. package/dist/types/rsc/json-route-result.d.ts +20 -0
  250. package/dist/types/rsc/loader-fetch.d.ts +14 -0
  251. package/dist/types/rsc/manifest-init.d.ts +18 -0
  252. package/dist/types/rsc/nonce.d.ts +28 -0
  253. package/dist/types/rsc/origin-guard.d.ts +50 -0
  254. package/dist/types/rsc/progressive-enhancement.d.ts +19 -0
  255. package/dist/types/rsc/redirect-guard.d.ts +37 -0
  256. package/dist/types/rsc/render-pipeline.d.ts +139 -0
  257. package/dist/types/rsc/response-cache-serve.d.ts +46 -0
  258. package/dist/types/rsc/response-error.d.ts +19 -0
  259. package/dist/types/rsc/response-route-handler.d.ts +29 -0
  260. package/dist/types/rsc/rsc-rendering.d.ts +18 -0
  261. package/dist/types/rsc/runtime-warnings.d.ts +22 -0
  262. package/dist/types/rsc/server-action.d.ts +68 -0
  263. package/dist/types/rsc/shell-build-manifest.d.ts +84 -0
  264. package/dist/types/rsc/shell-capture-constants.d.ts +27 -0
  265. package/dist/types/rsc/shell-capture.d.ts +370 -0
  266. package/dist/types/rsc/shell-serve.d.ts +174 -0
  267. package/dist/types/rsc/ssr-setup.d.ts +73 -0
  268. package/dist/types/rsc/transition-gate.d.ts +27 -0
  269. package/dist/types/rsc/types.d.ts +292 -0
  270. package/dist/types/runtime-env.d.ts +1 -0
  271. package/dist/types/search-params.d.ts +125 -0
  272. package/dist/types/segment-content-promise.d.ts +13 -0
  273. package/dist/types/segment-fragments.d.ts +56 -0
  274. package/dist/types/segment-loader-promise.d.ts +22 -0
  275. package/dist/types/segment-system.d.ts +84 -0
  276. package/dist/types/serialize.d.ts +164 -0
  277. package/dist/types/server/context.d.ts +510 -0
  278. package/dist/types/server/cookie-parse.d.ts +10 -0
  279. package/dist/types/server/cookie-store.d.ts +107 -0
  280. package/dist/types/server/fetchable-loader-store.d.ts +20 -0
  281. package/dist/types/server/handle-store.d.ts +100 -0
  282. package/dist/types/server/loader-registry.d.ts +32 -0
  283. package/dist/types/server/request-context.d.ts +628 -0
  284. package/dist/types/server/root-layout.d.ts +3 -0
  285. package/dist/types/server.d.ts +15 -0
  286. package/dist/types/ssr/index.d.ts +233 -0
  287. package/dist/types/ssr/inject-rsc-eager.d.ts +3 -0
  288. package/dist/types/ssr/preinit-client-references.d.ts +71 -0
  289. package/dist/types/ssr/ssr-root.d.ts +69 -0
  290. package/dist/types/static-handler.d.ts +57 -0
  291. package/dist/types/testing/cache-status.d.ts +63 -0
  292. package/dist/types/testing/collect-handle.d.ts +20 -0
  293. package/dist/types/testing/dispatch.d.ts +127 -0
  294. package/dist/types/testing/dom.entry.d.ts +15 -0
  295. package/dist/types/testing/e2e/fixture.d.ts +37 -0
  296. package/dist/types/testing/e2e/index.d.ts +31 -0
  297. package/dist/types/testing/e2e/matchers.d.ts +17 -0
  298. package/dist/types/testing/e2e/page-helpers.d.ts +62 -0
  299. package/dist/types/testing/e2e/parity.d.ts +111 -0
  300. package/dist/types/testing/e2e/server.d.ts +35 -0
  301. package/dist/types/testing/flight-matchers.d.ts +55 -0
  302. package/dist/types/testing/flight-normalize.d.ts +1 -0
  303. package/dist/types/testing/flight-tree.d.ts +192 -0
  304. package/dist/types/testing/flight.d.ts +115 -0
  305. package/dist/types/testing/flight.entry.d.ts +27 -0
  306. package/dist/types/testing/generated-routes.d.ts +66 -0
  307. package/dist/types/testing/index.d.ts +54 -0
  308. package/dist/types/testing/internal/context.d.ts +225 -0
  309. package/dist/types/testing/internal/flight-client-globals.d.ts +1 -0
  310. package/dist/types/testing/internal/seed-vars.d.ts +30 -0
  311. package/dist/types/testing/render-handler.d.ts +160 -0
  312. package/dist/types/testing/render-route.d.ts +246 -0
  313. package/dist/types/testing/run-loader.d.ts +186 -0
  314. package/dist/types/testing/run-middleware.d.ts +132 -0
  315. package/dist/types/testing/run-transition-when.d.ts +77 -0
  316. package/dist/types/testing/shell-status.d.ts +58 -0
  317. package/dist/types/testing/vitest-stubs/cloudflare-email.d.ts +6 -0
  318. package/dist/types/testing/vitest-stubs/cloudflare-workers.d.ts +13 -0
  319. package/dist/types/testing/vitest-stubs/plugin-rsc.d.ts +7 -0
  320. package/dist/types/testing/vitest-stubs/version.d.ts +1 -0
  321. package/dist/types/testing/vitest.d.ts +205 -0
  322. package/dist/types/theme/ThemeProvider.d.ts +13 -0
  323. package/dist/types/theme/ThemeScript.d.ts +45 -0
  324. package/dist/types/theme/constants.d.ts +39 -0
  325. package/dist/types/theme/index.d.ts +29 -0
  326. package/dist/types/theme/theme-context.d.ts +21 -0
  327. package/dist/types/theme/theme-script.d.ts +26 -0
  328. package/dist/types/theme/types.d.ts +162 -0
  329. package/dist/types/theme/use-theme.d.ts +8 -0
  330. package/dist/types/types/boundaries.d.ts +93 -0
  331. package/dist/types/types/cache-types.d.ts +191 -0
  332. package/dist/types/types/error-types.d.ts +114 -0
  333. package/dist/types/types/global-namespace.d.ts +90 -0
  334. package/dist/types/types/handler-context.d.ts +658 -0
  335. package/dist/types/types/index.d.ts +11 -0
  336. package/dist/types/types/loader-types.d.ts +182 -0
  337. package/dist/types/types/request-scope.d.ts +93 -0
  338. package/dist/types/types/route-config.d.ts +105 -0
  339. package/dist/types/types/route-entry.d.ts +98 -0
  340. package/dist/types/types/segments.d.ts +234 -0
  341. package/dist/types/types.d.ts +1 -0
  342. package/dist/types/urls/include-helper.d.ts +17 -0
  343. package/dist/types/urls/include-provider.d.ts +27 -0
  344. package/dist/types/urls/index.d.ts +6 -0
  345. package/dist/types/urls/path-helper-types.d.ts +197 -0
  346. package/dist/types/urls/path-helper.d.ts +12 -0
  347. package/dist/types/urls/pattern-types.d.ts +166 -0
  348. package/dist/types/urls/response-types.d.ts +67 -0
  349. package/dist/types/urls/type-extraction.d.ts +157 -0
  350. package/dist/types/urls/urls-function.d.ts +24 -0
  351. package/dist/types/urls.d.ts +1 -0
  352. package/dist/types/use-loader.d.ts +150 -0
  353. package/dist/types/vercel/index.d.ts +10 -0
  354. package/dist/types/vercel/tracing.d.ts +70 -0
  355. package/dist/types/vite/debug.d.ts +80 -0
  356. package/dist/types/vite/discovery/bundle-postprocess.d.ts +12 -0
  357. package/dist/types/vite/discovery/dev-prerender-cache.d.ts +65 -0
  358. package/dist/types/vite/discovery/discover-routers.d.ts +17 -0
  359. package/dist/types/vite/discovery/discovery-errors.d.ts +113 -0
  360. package/dist/types/vite/discovery/gate-state.d.ts +79 -0
  361. package/dist/types/vite/discovery/prerender-collection.d.ts +24 -0
  362. package/dist/types/vite/discovery/route-types-writer.d.ts +32 -0
  363. package/dist/types/vite/discovery/self-gen-tracking.d.ts +22 -0
  364. package/dist/types/vite/discovery/shell-prerender-phase.d.ts +40 -0
  365. package/dist/types/vite/discovery/state.d.ts +163 -0
  366. package/dist/types/vite/discovery/virtual-module-codegen.d.ts +15 -0
  367. package/dist/types/vite/index.d.ts +11 -0
  368. package/dist/types/vite/inject-client-debug.d.ts +56 -0
  369. package/dist/types/vite/plugin-types.d.ts +298 -0
  370. package/dist/types/vite/plugins/cjs-to-esm.d.ts +6 -0
  371. package/dist/types/vite/plugins/client-ref-dedup.d.ts +40 -0
  372. package/dist/types/vite/plugins/client-ref-hashing.d.ts +35 -0
  373. package/dist/types/vite/plugins/cloudflare-protocol-stub.d.ts +64 -0
  374. package/dist/types/vite/plugins/expose-action-id.d.ts +18 -0
  375. package/dist/types/vite/plugins/expose-id-utils.d.ts +37 -0
  376. package/dist/types/vite/plugins/expose-ids/export-analysis.d.ts +19 -0
  377. package/dist/types/vite/plugins/expose-ids/handler-transform.d.ts +10 -0
  378. package/dist/types/vite/plugins/expose-ids/loader-transform.d.ts +8 -0
  379. package/dist/types/vite/plugins/expose-ids/router-transform.d.ts +13 -0
  380. package/dist/types/vite/plugins/expose-ids/types.d.ts +29 -0
  381. package/dist/types/vite/plugins/expose-internal-ids.d.ts +6 -0
  382. package/dist/types/vite/plugins/performance-tracks.d.ts +25 -0
  383. package/dist/types/vite/plugins/refresh-cmd.d.ts +20 -0
  384. package/dist/types/vite/plugins/use-cache-transform.d.ts +20 -0
  385. package/dist/types/vite/plugins/vercel-output.d.ts +85 -0
  386. package/dist/types/vite/plugins/version-injector.d.ts +21 -0
  387. package/dist/types/vite/plugins/version-plugin.d.ts +19 -0
  388. package/dist/types/vite/plugins/virtual-entries.d.ts +36 -0
  389. package/dist/types/vite/plugins/virtual-stub-plugin.d.ts +7 -0
  390. package/dist/types/vite/rango.d.ts +29 -0
  391. package/dist/types/vite/router-discovery.d.ts +23 -0
  392. package/dist/types/vite/utils/ast-handler-extract.d.ts +64 -0
  393. package/dist/types/vite/utils/banner.d.ts +2 -0
  394. package/dist/types/vite/utils/bundle-analysis.d.ts +28 -0
  395. package/dist/types/vite/utils/client-chunks.d.ts +55 -0
  396. package/dist/types/vite/utils/directive-prologue.d.ts +16 -0
  397. package/dist/types/vite/utils/forward-user-plugins.d.ts +37 -0
  398. package/dist/types/vite/utils/manifest-utils.d.ts +7 -0
  399. package/dist/types/vite/utils/package-resolution.d.ts +6 -0
  400. package/dist/types/vite/utils/prerender-utils.d.ts +32 -0
  401. package/dist/types/vite/utils/shared-utils.d.ts +55 -0
  402. package/dist/vite/index.js +1208 -431
  403. package/package.json +45 -34
  404. package/skills/caching/SKILL.md +1 -1
  405. package/skills/catalog.json +6 -0
  406. package/skills/cloudflare/SKILL.md +149 -0
  407. package/skills/cloudflare/agents/openai.yaml +4 -0
  408. package/skills/cloudflare/references/d1-and-local-dev.md +131 -0
  409. package/skills/cloudflare/references/streaming-and-deploy.md +107 -0
  410. package/skills/cloudflare/references/webhooks-and-crypto.md +147 -0
  411. package/skills/composability/SKILL.md +14 -0
  412. package/skills/debug-manifest/SKILL.md +2 -10
  413. package/skills/links/SKILL.md +12 -0
  414. package/skills/middleware/SKILL.md +33 -0
  415. package/skills/migrate-nextjs/SKILL.md +65 -16
  416. package/skills/migrate-nextjs/backend-host-swap.md +120 -0
  417. package/skills/migrate-react-router/SKILL.md +6 -6
  418. package/skills/mime-routes/SKILL.md +25 -17
  419. package/skills/ppr/SKILL.md +148 -19
  420. package/skills/prerender/SKILL.md +44 -1
  421. package/skills/rango/SKILL.md +10 -10
  422. package/skills/response-routes/SKILL.md +41 -4
  423. package/skills/route/SKILL.md +6 -0
  424. package/skills/testing/SKILL.md +1 -0
  425. package/skills/testing/cache-prerender.md +43 -2
  426. package/skills/testing/response-routes.md +2 -2
  427. package/src/browser/dev-discovery.ts +66 -0
  428. package/src/browser/event-controller.ts +16 -2
  429. package/src/browser/navigation-client.ts +6 -0
  430. package/src/browser/navigation-store.ts +4 -271
  431. package/src/browser/partial-update.ts +7 -14
  432. package/src/browser/prefetch/cache.ts +1 -1
  433. package/src/browser/prefetch/loader.ts +110 -0
  434. package/src/browser/prefetch/runtime.ts +7 -0
  435. package/src/browser/react/Link.tsx +7 -10
  436. package/src/browser/react/NavigationProvider.tsx +1 -1
  437. package/src/browser/react/use-router.ts +1 -1
  438. package/src/browser/rsc-router.tsx +15 -2
  439. package/src/browser/types.ts +4 -27
  440. package/src/build/generate-manifest.ts +16 -36
  441. package/src/build/route-trie.ts +5 -50
  442. package/src/cache/cache-key-utils.ts +0 -1
  443. package/src/cache/cache-scope.ts +54 -5
  444. package/src/cache/cf/cf-cache-store.ts +522 -89
  445. package/src/cache/cf/cf-cache-types.ts +66 -0
  446. package/src/cache/cf/cf-tag-marker-memo.ts +5 -2
  447. package/src/cache/cf/cf-zone-purge.ts +101 -0
  448. package/src/cache/cf/index.ts +5 -0
  449. package/src/cache/handle-snapshot.ts +22 -1
  450. package/src/cache/index.ts +2 -0
  451. package/src/cache/memory-segment-store.ts +44 -1
  452. package/src/cache/segment-codec.ts +47 -0
  453. package/src/cache/shell-snapshot.ts +124 -29
  454. package/src/cache/types.ts +57 -2
  455. package/src/cache/vercel/vercel-cache-store.ts +113 -14
  456. package/src/deps/ssr.ts +4 -1
  457. package/src/dev-discovery-protocol.ts +11 -0
  458. package/src/index.rsc.ts +7 -0
  459. package/src/index.ts +1 -0
  460. package/src/prerender/build-shell-capture.ts +453 -0
  461. package/src/prerender/shell-manifest-key.ts +20 -0
  462. package/src/prerender/store.ts +15 -1
  463. package/src/prerender.ts +3 -3
  464. package/src/redirect-origin.ts +37 -8
  465. package/src/route-definition/dsl-helpers.ts +7 -2
  466. package/src/route-map-builder.ts +61 -54
  467. package/src/router/content-negotiation.ts +47 -5
  468. package/src/router/handler-context.ts +31 -15
  469. package/src/router/intercept-resolution.ts +30 -1
  470. package/src/router/lazy-includes.ts +1 -0
  471. package/src/router/loader-resolution.ts +16 -0
  472. package/src/router/match-api.ts +14 -3
  473. package/src/router/match-middleware/cache-lookup.ts +12 -1
  474. package/src/router/metrics.ts +17 -2
  475. package/src/router/middleware-types.ts +17 -0
  476. package/src/router/middleware.ts +4 -0
  477. package/src/router/prerender-match.ts +47 -2
  478. package/src/router/router-interfaces.ts +11 -6
  479. package/src/router/router-options.ts +13 -8
  480. package/src/router/segment-resolution/fresh.ts +21 -2
  481. package/src/router/segment-resolution/helpers.ts +1 -1
  482. package/src/router/segment-resolution/loader-cache.ts +38 -7
  483. package/src/router/segment-resolution/mask-nested.ts +19 -3
  484. package/src/router/segment-resolution/revalidation.ts +9 -0
  485. package/src/router/segment-resolution/static-store.ts +36 -10
  486. package/src/router/telemetry-otel.ts +11 -0
  487. package/src/router/telemetry.ts +1 -0
  488. package/src/router/timeout.ts +41 -1
  489. package/src/router.ts +39 -7
  490. package/src/rsc/capture-queue.ts +67 -0
  491. package/src/rsc/handler-context.ts +1 -0
  492. package/src/rsc/handler.ts +153 -77
  493. package/src/rsc/helpers.ts +67 -4
  494. package/src/rsc/loader-fetch.ts +2 -2
  495. package/src/rsc/manifest-init.ts +4 -11
  496. package/src/rsc/progressive-enhancement.ts +66 -54
  497. package/src/rsc/redirect-guard.ts +3 -1
  498. package/src/rsc/render-pipeline.ts +567 -0
  499. package/src/rsc/response-cache-serve.ts +39 -18
  500. package/src/rsc/response-route-handler.ts +9 -45
  501. package/src/rsc/rsc-rendering.ts +455 -194
  502. package/src/rsc/server-action.ts +50 -42
  503. package/src/rsc/shell-build-manifest.ts +316 -0
  504. package/src/rsc/shell-capture-constants.ts +27 -0
  505. package/src/rsc/shell-capture.ts +622 -73
  506. package/src/rsc/shell-serve.ts +133 -3
  507. package/src/rsc/ssr-setup.ts +102 -23
  508. package/src/rsc/types.ts +2 -0
  509. package/src/segment-fragments.ts +124 -0
  510. package/src/server/context.ts +212 -8
  511. package/src/server/request-context.ts +322 -48
  512. package/src/server.ts +0 -2
  513. package/src/ssr/index.tsx +167 -32
  514. package/src/ssr/preinit-client-references.ts +106 -0
  515. package/src/ssr/ssr-root.tsx +35 -2
  516. package/src/testing/dispatch.ts +133 -67
  517. package/src/testing/e2e/index.ts +8 -0
  518. package/src/testing/index.ts +9 -1
  519. package/src/testing/internal/context.ts +9 -0
  520. package/src/testing/render-handler.ts +15 -1
  521. package/src/testing/run-middleware.ts +14 -0
  522. package/src/testing/shell-status.ts +100 -0
  523. package/src/types/handler-context.ts +13 -2
  524. package/src/types/route-entry.ts +3 -0
  525. package/src/urls/include-helper.ts +1 -0
  526. package/src/urls/path-helper-types.ts +1 -1
  527. package/src/urls/path-helper.ts +8 -4
  528. package/src/urls/pattern-types.ts +29 -0
  529. package/src/vite/discovery/bundle-postprocess.ts +10 -7
  530. package/src/vite/discovery/discover-routers.ts +39 -79
  531. package/src/vite/discovery/prerender-collection.ts +29 -2
  532. package/src/vite/discovery/shell-prerender-phase.ts +397 -0
  533. package/src/vite/discovery/state.ts +48 -4
  534. package/src/vite/discovery/virtual-module-codegen.ts +201 -62
  535. package/src/vite/index.ts +1 -0
  536. package/src/vite/plugin-types.ts +33 -0
  537. package/src/vite/plugins/version-injector.ts +0 -1
  538. package/src/vite/plugins/version-plugin.ts +8 -0
  539. package/src/vite/plugins/virtual-entries.ts +48 -5
  540. package/src/vite/rango.ts +42 -2
  541. package/src/vite/router-discovery.ts +564 -43
  542. package/src/vite/utils/manifest-utils.ts +1 -4
  543. package/src/vite/utils/package-resolution.ts +1 -0
  544. package/src/vite/utils/prerender-utils.ts +25 -6
  545. package/src/vite/utils/shared-utils.ts +11 -2
  546. package/dist/__internal.d.ts +0 -83
  547. package/dist/__internal.d.ts.map +0 -1
  548. package/dist/__internal.js +0 -19
  549. package/dist/__internal.js.map +0 -1
  550. package/dist/__mocks__/version.d.ts +0 -7
  551. package/dist/__mocks__/version.d.ts.map +0 -1
  552. package/dist/__mocks__/version.js +0 -7
  553. package/dist/__mocks__/version.js.map +0 -1
  554. package/dist/__tests__/client-href.test.d.ts +0 -2
  555. package/dist/__tests__/client-href.test.d.ts.map +0 -1
  556. package/dist/__tests__/client-href.test.js +0 -74
  557. package/dist/__tests__/client-href.test.js.map +0 -1
  558. package/dist/__tests__/component-utils.test.d.ts +0 -2
  559. package/dist/__tests__/component-utils.test.d.ts.map +0 -1
  560. package/dist/__tests__/component-utils.test.js +0 -51
  561. package/dist/__tests__/component-utils.test.js.map +0 -1
  562. package/dist/__tests__/event-controller.test.d.ts +0 -2
  563. package/dist/__tests__/event-controller.test.d.ts.map +0 -1
  564. package/dist/__tests__/event-controller.test.js +0 -538
  565. package/dist/__tests__/event-controller.test.js.map +0 -1
  566. package/dist/__tests__/helpers/route-tree.d.ts +0 -118
  567. package/dist/__tests__/helpers/route-tree.d.ts.map +0 -1
  568. package/dist/__tests__/helpers/route-tree.js +0 -374
  569. package/dist/__tests__/helpers/route-tree.js.map +0 -1
  570. package/dist/__tests__/match-result.test.d.ts +0 -2
  571. package/dist/__tests__/match-result.test.d.ts.map +0 -1
  572. package/dist/__tests__/match-result.test.js +0 -154
  573. package/dist/__tests__/match-result.test.js.map +0 -1
  574. package/dist/__tests__/navigation-store.test.d.ts +0 -2
  575. package/dist/__tests__/navigation-store.test.d.ts.map +0 -1
  576. package/dist/__tests__/navigation-store.test.js +0 -440
  577. package/dist/__tests__/navigation-store.test.js.map +0 -1
  578. package/dist/__tests__/partial-update.test.d.ts +0 -2
  579. package/dist/__tests__/partial-update.test.d.ts.map +0 -1
  580. package/dist/__tests__/partial-update.test.js +0 -1009
  581. package/dist/__tests__/partial-update.test.js.map +0 -1
  582. package/dist/__tests__/reverse-types.test.d.ts +0 -8
  583. package/dist/__tests__/reverse-types.test.d.ts.map +0 -1
  584. package/dist/__tests__/reverse-types.test.js +0 -656
  585. package/dist/__tests__/reverse-types.test.js.map +0 -1
  586. package/dist/__tests__/route-definition.test.d.ts +0 -2
  587. package/dist/__tests__/route-definition.test.d.ts.map +0 -1
  588. package/dist/__tests__/route-definition.test.js +0 -55
  589. package/dist/__tests__/route-definition.test.js.map +0 -1
  590. package/dist/__tests__/router-helpers.test.d.ts +0 -2
  591. package/dist/__tests__/router-helpers.test.d.ts.map +0 -1
  592. package/dist/__tests__/router-helpers.test.js +0 -377
  593. package/dist/__tests__/router-helpers.test.js.map +0 -1
  594. package/dist/__tests__/router-integration-2.test.d.ts +0 -2
  595. package/dist/__tests__/router-integration-2.test.d.ts.map +0 -1
  596. package/dist/__tests__/router-integration-2.test.js +0 -426
  597. package/dist/__tests__/router-integration-2.test.js.map +0 -1
  598. package/dist/__tests__/router-integration.test.d.ts +0 -2
  599. package/dist/__tests__/router-integration.test.d.ts.map +0 -1
  600. package/dist/__tests__/router-integration.test.js +0 -1051
  601. package/dist/__tests__/router-integration.test.js.map +0 -1
  602. package/dist/__tests__/search-params.test.d.ts +0 -5
  603. package/dist/__tests__/search-params.test.d.ts.map +0 -1
  604. package/dist/__tests__/search-params.test.js +0 -306
  605. package/dist/__tests__/search-params.test.js.map +0 -1
  606. package/dist/__tests__/segment-system.test.d.ts +0 -2
  607. package/dist/__tests__/segment-system.test.d.ts.map +0 -1
  608. package/dist/__tests__/segment-system.test.js +0 -627
  609. package/dist/__tests__/segment-system.test.js.map +0 -1
  610. package/dist/__tests__/static-handler-types.test.d.ts +0 -8
  611. package/dist/__tests__/static-handler-types.test.d.ts.map +0 -1
  612. package/dist/__tests__/static-handler-types.test.js +0 -63
  613. package/dist/__tests__/static-handler-types.test.js.map +0 -1
  614. package/dist/__tests__/urls.test.d.ts +0 -2
  615. package/dist/__tests__/urls.test.d.ts.map +0 -1
  616. package/dist/__tests__/urls.test.js +0 -421
  617. package/dist/__tests__/urls.test.js.map +0 -1
  618. package/dist/__tests__/use-mount.test.d.ts +0 -2
  619. package/dist/__tests__/use-mount.test.d.ts.map +0 -1
  620. package/dist/__tests__/use-mount.test.js +0 -35
  621. package/dist/__tests__/use-mount.test.js.map +0 -1
  622. package/dist/bin/rango.d.ts +0 -2
  623. package/dist/bin/rango.d.ts.map +0 -1
  624. package/dist/bin/rango.js.map +0 -1
  625. package/dist/browser/event-controller.d.ts +0 -191
  626. package/dist/browser/event-controller.d.ts.map +0 -1
  627. package/dist/browser/event-controller.js +0 -559
  628. package/dist/browser/event-controller.js.map +0 -1
  629. package/dist/browser/index.d.ts +0 -2
  630. package/dist/browser/index.d.ts.map +0 -1
  631. package/dist/browser/index.js +0 -14
  632. package/dist/browser/index.js.map +0 -1
  633. package/dist/browser/link-interceptor.d.ts +0 -38
  634. package/dist/browser/link-interceptor.d.ts.map +0 -1
  635. package/dist/browser/link-interceptor.js +0 -99
  636. package/dist/browser/link-interceptor.js.map +0 -1
  637. package/dist/browser/logging.d.ts +0 -10
  638. package/dist/browser/logging.d.ts.map +0 -1
  639. package/dist/browser/logging.js +0 -29
  640. package/dist/browser/logging.js.map +0 -1
  641. package/dist/browser/lru-cache.d.ts +0 -17
  642. package/dist/browser/lru-cache.d.ts.map +0 -1
  643. package/dist/browser/lru-cache.js +0 -50
  644. package/dist/browser/lru-cache.js.map +0 -1
  645. package/dist/browser/merge-segment-loaders.d.ts +0 -39
  646. package/dist/browser/merge-segment-loaders.d.ts.map +0 -1
  647. package/dist/browser/merge-segment-loaders.js +0 -102
  648. package/dist/browser/merge-segment-loaders.js.map +0 -1
  649. package/dist/browser/navigation-bridge.d.ts +0 -102
  650. package/dist/browser/navigation-bridge.d.ts.map +0 -1
  651. package/dist/browser/navigation-bridge.js +0 -708
  652. package/dist/browser/navigation-bridge.js.map +0 -1
  653. package/dist/browser/navigation-client.d.ts +0 -25
  654. package/dist/browser/navigation-client.d.ts.map +0 -1
  655. package/dist/browser/navigation-client.js +0 -157
  656. package/dist/browser/navigation-client.js.map +0 -1
  657. package/dist/browser/navigation-store.d.ts +0 -101
  658. package/dist/browser/navigation-store.d.ts.map +0 -1
  659. package/dist/browser/navigation-store.js +0 -625
  660. package/dist/browser/navigation-store.js.map +0 -1
  661. package/dist/browser/partial-update.d.ts +0 -75
  662. package/dist/browser/partial-update.d.ts.map +0 -1
  663. package/dist/browser/partial-update.js +0 -426
  664. package/dist/browser/partial-update.js.map +0 -1
  665. package/dist/browser/react/Link.d.ts +0 -86
  666. package/dist/browser/react/Link.d.ts.map +0 -1
  667. package/dist/browser/react/Link.js +0 -128
  668. package/dist/browser/react/Link.js.map +0 -1
  669. package/dist/browser/react/NavigationProvider.d.ts +0 -63
  670. package/dist/browser/react/NavigationProvider.d.ts.map +0 -1
  671. package/dist/browser/react/NavigationProvider.js +0 -216
  672. package/dist/browser/react/NavigationProvider.js.map +0 -1
  673. package/dist/browser/react/ScrollRestoration.d.ts +0 -75
  674. package/dist/browser/react/ScrollRestoration.d.ts.map +0 -1
  675. package/dist/browser/react/ScrollRestoration.js +0 -57
  676. package/dist/browser/react/ScrollRestoration.js.map +0 -1
  677. package/dist/browser/react/context.d.ts +0 -46
  678. package/dist/browser/react/context.d.ts.map +0 -1
  679. package/dist/browser/react/context.js +0 -10
  680. package/dist/browser/react/context.js.map +0 -1
  681. package/dist/browser/react/index.d.ts +0 -11
  682. package/dist/browser/react/index.d.ts.map +0 -1
  683. package/dist/browser/react/index.js +0 -22
  684. package/dist/browser/react/index.js.map +0 -1
  685. package/dist/browser/react/location-state-shared.d.ts +0 -63
  686. package/dist/browser/react/location-state-shared.d.ts.map +0 -1
  687. package/dist/browser/react/location-state-shared.js +0 -81
  688. package/dist/browser/react/location-state-shared.js.map +0 -1
  689. package/dist/browser/react/location-state.d.ts +0 -23
  690. package/dist/browser/react/location-state.d.ts.map +0 -1
  691. package/dist/browser/react/location-state.js +0 -29
  692. package/dist/browser/react/location-state.js.map +0 -1
  693. package/dist/browser/react/mount-context.d.ts +0 -24
  694. package/dist/browser/react/mount-context.d.ts.map +0 -1
  695. package/dist/browser/react/mount-context.js +0 -24
  696. package/dist/browser/react/mount-context.js.map +0 -1
  697. package/dist/browser/react/use-action.d.ts +0 -64
  698. package/dist/browser/react/use-action.d.ts.map +0 -1
  699. package/dist/browser/react/use-action.js +0 -134
  700. package/dist/browser/react/use-action.js.map +0 -1
  701. package/dist/browser/react/use-client-cache.d.ts +0 -41
  702. package/dist/browser/react/use-client-cache.d.ts.map +0 -1
  703. package/dist/browser/react/use-client-cache.js +0 -39
  704. package/dist/browser/react/use-client-cache.js.map +0 -1
  705. package/dist/browser/react/use-handle.d.ts +0 -31
  706. package/dist/browser/react/use-handle.d.ts.map +0 -1
  707. package/dist/browser/react/use-handle.js +0 -144
  708. package/dist/browser/react/use-handle.js.map +0 -1
  709. package/dist/browser/react/use-href.d.ts +0 -33
  710. package/dist/browser/react/use-href.d.ts.map +0 -1
  711. package/dist/browser/react/use-href.js +0 -39
  712. package/dist/browser/react/use-href.js.map +0 -1
  713. package/dist/browser/react/use-link-status.d.ts +0 -37
  714. package/dist/browser/react/use-link-status.d.ts.map +0 -1
  715. package/dist/browser/react/use-link-status.js +0 -99
  716. package/dist/browser/react/use-link-status.js.map +0 -1
  717. package/dist/browser/react/use-mount.d.ts +0 -25
  718. package/dist/browser/react/use-mount.d.ts.map +0 -1
  719. package/dist/browser/react/use-mount.js +0 -30
  720. package/dist/browser/react/use-mount.js.map +0 -1
  721. package/dist/browser/react/use-navigation.d.ts +0 -27
  722. package/dist/browser/react/use-navigation.d.ts.map +0 -1
  723. package/dist/browser/react/use-navigation.js +0 -87
  724. package/dist/browser/react/use-navigation.js.map +0 -1
  725. package/dist/browser/react/use-segments.d.ts +0 -38
  726. package/dist/browser/react/use-segments.d.ts.map +0 -1
  727. package/dist/browser/react/use-segments.js +0 -130
  728. package/dist/browser/react/use-segments.js.map +0 -1
  729. package/dist/browser/request-controller.d.ts +0 -26
  730. package/dist/browser/request-controller.d.ts.map +0 -1
  731. package/dist/browser/request-controller.js +0 -147
  732. package/dist/browser/request-controller.js.map +0 -1
  733. package/dist/browser/rsc-router.d.ts +0 -129
  734. package/dist/browser/rsc-router.d.ts.map +0 -1
  735. package/dist/browser/rsc-router.js +0 -195
  736. package/dist/browser/rsc-router.js.map +0 -1
  737. package/dist/browser/scroll-restoration.d.ts +0 -93
  738. package/dist/browser/scroll-restoration.d.ts.map +0 -1
  739. package/dist/browser/scroll-restoration.js +0 -321
  740. package/dist/browser/scroll-restoration.js.map +0 -1
  741. package/dist/browser/segment-structure-assert.d.ts +0 -17
  742. package/dist/browser/segment-structure-assert.d.ts.map +0 -1
  743. package/dist/browser/segment-structure-assert.js +0 -59
  744. package/dist/browser/segment-structure-assert.js.map +0 -1
  745. package/dist/browser/server-action-bridge.d.ts +0 -26
  746. package/dist/browser/server-action-bridge.d.ts.map +0 -1
  747. package/dist/browser/server-action-bridge.js +0 -668
  748. package/dist/browser/server-action-bridge.js.map +0 -1
  749. package/dist/browser/shallow.d.ts +0 -12
  750. package/dist/browser/shallow.d.ts.map +0 -1
  751. package/dist/browser/shallow.js +0 -34
  752. package/dist/browser/shallow.js.map +0 -1
  753. package/dist/browser/types.d.ts +0 -369
  754. package/dist/browser/types.d.ts.map +0 -1
  755. package/dist/browser/types.js +0 -2
  756. package/dist/browser/types.js.map +0 -1
  757. package/dist/build/__tests__/generate-cli.test.d.ts +0 -2
  758. package/dist/build/__tests__/generate-cli.test.d.ts.map +0 -1
  759. package/dist/build/__tests__/generate-cli.test.js +0 -237
  760. package/dist/build/__tests__/generate-cli.test.js.map +0 -1
  761. package/dist/build/__tests__/generate-manifest.test.d.ts +0 -2
  762. package/dist/build/__tests__/generate-manifest.test.d.ts.map +0 -1
  763. package/dist/build/__tests__/generate-manifest.test.js +0 -119
  764. package/dist/build/__tests__/generate-manifest.test.js.map +0 -1
  765. package/dist/build/__tests__/generate-route-types.test.d.ts +0 -2
  766. package/dist/build/__tests__/generate-route-types.test.d.ts.map +0 -1
  767. package/dist/build/__tests__/generate-route-types.test.js +0 -620
  768. package/dist/build/__tests__/generate-route-types.test.js.map +0 -1
  769. package/dist/build/__tests__/per-router-manifest.test.d.ts +0 -2
  770. package/dist/build/__tests__/per-router-manifest.test.d.ts.map +0 -1
  771. package/dist/build/__tests__/per-router-manifest.test.js +0 -308
  772. package/dist/build/__tests__/per-router-manifest.test.js.map +0 -1
  773. package/dist/build/generate-manifest.d.ts +0 -81
  774. package/dist/build/generate-manifest.d.ts.map +0 -1
  775. package/dist/build/generate-manifest.js +0 -276
  776. package/dist/build/generate-manifest.js.map +0 -1
  777. package/dist/build/generate-route-types.d.ts +0 -115
  778. package/dist/build/generate-route-types.d.ts.map +0 -1
  779. package/dist/build/generate-route-types.js +0 -740
  780. package/dist/build/generate-route-types.js.map +0 -1
  781. package/dist/build/index.d.ts +0 -21
  782. package/dist/build/index.d.ts.map +0 -1
  783. package/dist/build/index.js +0 -21
  784. package/dist/build/index.js.map +0 -1
  785. package/dist/build/route-trie.d.ts +0 -71
  786. package/dist/build/route-trie.d.ts.map +0 -1
  787. package/dist/build/route-trie.js +0 -175
  788. package/dist/build/route-trie.js.map +0 -1
  789. package/dist/cache/__tests__/cache-scope.test.d.ts +0 -2
  790. package/dist/cache/__tests__/cache-scope.test.d.ts.map +0 -1
  791. package/dist/cache/__tests__/cache-scope.test.js +0 -208
  792. package/dist/cache/__tests__/cache-scope.test.js.map +0 -1
  793. package/dist/cache/__tests__/document-cache.test.d.ts +0 -2
  794. package/dist/cache/__tests__/document-cache.test.d.ts.map +0 -1
  795. package/dist/cache/__tests__/document-cache.test.js +0 -345
  796. package/dist/cache/__tests__/document-cache.test.js.map +0 -1
  797. package/dist/cache/__tests__/memory-segment-store.test.d.ts +0 -2
  798. package/dist/cache/__tests__/memory-segment-store.test.d.ts.map +0 -1
  799. package/dist/cache/__tests__/memory-segment-store.test.js +0 -425
  800. package/dist/cache/__tests__/memory-segment-store.test.js.map +0 -1
  801. package/dist/cache/__tests__/memory-store.test.d.ts +0 -2
  802. package/dist/cache/__tests__/memory-store.test.d.ts.map +0 -1
  803. package/dist/cache/__tests__/memory-store.test.js +0 -367
  804. package/dist/cache/__tests__/memory-store.test.js.map +0 -1
  805. package/dist/cache/cache-scope.d.ts +0 -102
  806. package/dist/cache/cache-scope.d.ts.map +0 -1
  807. package/dist/cache/cache-scope.js +0 -440
  808. package/dist/cache/cache-scope.js.map +0 -1
  809. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts +0 -2
  810. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts.map +0 -1
  811. package/dist/cache/cf/__tests__/cf-cache-store.test.js +0 -330
  812. package/dist/cache/cf/__tests__/cf-cache-store.test.js.map +0 -1
  813. package/dist/cache/cf/cf-cache-store.d.ts +0 -165
  814. package/dist/cache/cf/cf-cache-store.d.ts.map +0 -1
  815. package/dist/cache/cf/cf-cache-store.js +0 -242
  816. package/dist/cache/cf/cf-cache-store.js.map +0 -1
  817. package/dist/cache/cf/index.d.ts +0 -14
  818. package/dist/cache/cf/index.d.ts.map +0 -1
  819. package/dist/cache/cf/index.js +0 -17
  820. package/dist/cache/cf/index.js.map +0 -1
  821. package/dist/cache/document-cache.d.ts +0 -64
  822. package/dist/cache/document-cache.d.ts.map +0 -1
  823. package/dist/cache/document-cache.js +0 -228
  824. package/dist/cache/document-cache.js.map +0 -1
  825. package/dist/cache/index.d.ts +0 -19
  826. package/dist/cache/index.d.ts.map +0 -1
  827. package/dist/cache/index.js +0 -21
  828. package/dist/cache/index.js.map +0 -1
  829. package/dist/cache/memory-segment-store.d.ts +0 -110
  830. package/dist/cache/memory-segment-store.d.ts.map +0 -1
  831. package/dist/cache/memory-segment-store.js +0 -117
  832. package/dist/cache/memory-segment-store.js.map +0 -1
  833. package/dist/cache/memory-store.d.ts +0 -41
  834. package/dist/cache/memory-store.d.ts.map +0 -1
  835. package/dist/cache/memory-store.js +0 -191
  836. package/dist/cache/memory-store.js.map +0 -1
  837. package/dist/cache/types.d.ts +0 -317
  838. package/dist/cache/types.d.ts.map +0 -1
  839. package/dist/cache/types.js +0 -12
  840. package/dist/cache/types.js.map +0 -1
  841. package/dist/client.d.ts +0 -248
  842. package/dist/client.d.ts.map +0 -1
  843. package/dist/client.js +0 -367
  844. package/dist/client.js.map +0 -1
  845. package/dist/client.rsc.d.ts +0 -26
  846. package/dist/client.rsc.d.ts.map +0 -1
  847. package/dist/client.rsc.js +0 -46
  848. package/dist/client.rsc.js.map +0 -1
  849. package/dist/component-utils.d.ts +0 -36
  850. package/dist/component-utils.d.ts.map +0 -1
  851. package/dist/component-utils.js +0 -61
  852. package/dist/component-utils.js.map +0 -1
  853. package/dist/components/DefaultDocument.d.ts +0 -13
  854. package/dist/components/DefaultDocument.d.ts.map +0 -1
  855. package/dist/components/DefaultDocument.js +0 -15
  856. package/dist/components/DefaultDocument.js.map +0 -1
  857. package/dist/debug.d.ts +0 -58
  858. package/dist/debug.d.ts.map +0 -1
  859. package/dist/debug.js +0 -157
  860. package/dist/debug.js.map +0 -1
  861. package/dist/default-error-boundary.d.ts +0 -11
  862. package/dist/default-error-boundary.d.ts.map +0 -1
  863. package/dist/default-error-boundary.js +0 -45
  864. package/dist/default-error-boundary.js.map +0 -1
  865. package/dist/deps/browser.d.ts +0 -2
  866. package/dist/deps/browser.d.ts.map +0 -1
  867. package/dist/deps/browser.js +0 -3
  868. package/dist/deps/browser.js.map +0 -1
  869. package/dist/deps/html-stream-client.d.ts +0 -2
  870. package/dist/deps/html-stream-client.d.ts.map +0 -1
  871. package/dist/deps/html-stream-client.js +0 -3
  872. package/dist/deps/html-stream-client.js.map +0 -1
  873. package/dist/deps/html-stream-server.d.ts +0 -2
  874. package/dist/deps/html-stream-server.d.ts.map +0 -1
  875. package/dist/deps/html-stream-server.js +0 -3
  876. package/dist/deps/html-stream-server.js.map +0 -1
  877. package/dist/deps/rsc.d.ts +0 -2
  878. package/dist/deps/rsc.d.ts.map +0 -1
  879. package/dist/deps/rsc.js +0 -4
  880. package/dist/deps/rsc.js.map +0 -1
  881. package/dist/deps/ssr.d.ts +0 -2
  882. package/dist/deps/ssr.d.ts.map +0 -1
  883. package/dist/deps/ssr.js +0 -3
  884. package/dist/deps/ssr.js.map +0 -1
  885. package/dist/errors.d.ts +0 -174
  886. package/dist/errors.d.ts.map +0 -1
  887. package/dist/errors.js +0 -241
  888. package/dist/errors.js.map +0 -1
  889. package/dist/handle.d.ts +0 -78
  890. package/dist/handle.d.ts.map +0 -1
  891. package/dist/handle.js +0 -82
  892. package/dist/handle.js.map +0 -1
  893. package/dist/handles/MetaTags.d.ts +0 -14
  894. package/dist/handles/MetaTags.d.ts.map +0 -1
  895. package/dist/handles/MetaTags.js +0 -136
  896. package/dist/handles/MetaTags.js.map +0 -1
  897. package/dist/handles/index.d.ts +0 -6
  898. package/dist/handles/index.d.ts.map +0 -1
  899. package/dist/handles/index.js +0 -6
  900. package/dist/handles/index.js.map +0 -1
  901. package/dist/handles/meta.d.ts +0 -39
  902. package/dist/handles/meta.d.ts.map +0 -1
  903. package/dist/handles/meta.js +0 -202
  904. package/dist/handles/meta.js.map +0 -1
  905. package/dist/host/__tests__/errors.test.d.ts +0 -2
  906. package/dist/host/__tests__/errors.test.d.ts.map +0 -1
  907. package/dist/host/__tests__/errors.test.js +0 -76
  908. package/dist/host/__tests__/errors.test.js.map +0 -1
  909. package/dist/host/__tests__/pattern-comprehensive.test.d.ts +0 -2
  910. package/dist/host/__tests__/pattern-comprehensive.test.d.ts.map +0 -1
  911. package/dist/host/__tests__/pattern-comprehensive.test.js +0 -732
  912. package/dist/host/__tests__/pattern-comprehensive.test.js.map +0 -1
  913. package/dist/host/__tests__/pattern-matcher.test.d.ts +0 -2
  914. package/dist/host/__tests__/pattern-matcher.test.d.ts.map +0 -1
  915. package/dist/host/__tests__/pattern-matcher.test.js +0 -251
  916. package/dist/host/__tests__/pattern-matcher.test.js.map +0 -1
  917. package/dist/host/__tests__/router.test.d.ts +0 -2
  918. package/dist/host/__tests__/router.test.d.ts.map +0 -1
  919. package/dist/host/__tests__/router.test.js +0 -241
  920. package/dist/host/__tests__/router.test.js.map +0 -1
  921. package/dist/host/__tests__/testing.test.d.ts +0 -2
  922. package/dist/host/__tests__/testing.test.d.ts.map +0 -1
  923. package/dist/host/__tests__/testing.test.js +0 -64
  924. package/dist/host/__tests__/testing.test.js.map +0 -1
  925. package/dist/host/__tests__/utils.test.d.ts +0 -2
  926. package/dist/host/__tests__/utils.test.d.ts.map +0 -1
  927. package/dist/host/__tests__/utils.test.js +0 -29
  928. package/dist/host/__tests__/utils.test.js.map +0 -1
  929. package/dist/host/cookie-handler.d.ts +0 -34
  930. package/dist/host/cookie-handler.d.ts.map +0 -1
  931. package/dist/host/cookie-handler.js +0 -124
  932. package/dist/host/cookie-handler.js.map +0 -1
  933. package/dist/host/errors.d.ts +0 -56
  934. package/dist/host/errors.d.ts.map +0 -1
  935. package/dist/host/errors.js +0 -79
  936. package/dist/host/errors.js.map +0 -1
  937. package/dist/host/index.d.ts +0 -29
  938. package/dist/host/index.d.ts.map +0 -1
  939. package/dist/host/index.js +0 -32
  940. package/dist/host/index.js.map +0 -1
  941. package/dist/host/pattern-matcher.d.ts +0 -36
  942. package/dist/host/pattern-matcher.d.ts.map +0 -1
  943. package/dist/host/pattern-matcher.js +0 -172
  944. package/dist/host/pattern-matcher.js.map +0 -1
  945. package/dist/host/router.d.ts +0 -26
  946. package/dist/host/router.d.ts.map +0 -1
  947. package/dist/host/router.js +0 -218
  948. package/dist/host/router.js.map +0 -1
  949. package/dist/host/testing.d.ts +0 -36
  950. package/dist/host/testing.d.ts.map +0 -1
  951. package/dist/host/testing.js +0 -55
  952. package/dist/host/testing.js.map +0 -1
  953. package/dist/host/types.d.ts +0 -115
  954. package/dist/host/types.d.ts.map +0 -1
  955. package/dist/host/types.js +0 -7
  956. package/dist/host/types.js.map +0 -1
  957. package/dist/host/utils.d.ts +0 -21
  958. package/dist/host/utils.d.ts.map +0 -1
  959. package/dist/host/utils.js +0 -23
  960. package/dist/host/utils.js.map +0 -1
  961. package/dist/href-client.d.ts +0 -131
  962. package/dist/href-client.d.ts.map +0 -1
  963. package/dist/href-client.js +0 -64
  964. package/dist/href-client.js.map +0 -1
  965. package/dist/href-context.d.ts +0 -29
  966. package/dist/href-context.d.ts.map +0 -1
  967. package/dist/href-context.js +0 -21
  968. package/dist/href-context.js.map +0 -1
  969. package/dist/index.d.ts +0 -73
  970. package/dist/index.d.ts.map +0 -1
  971. package/dist/index.js +0 -91
  972. package/dist/index.js.map +0 -1
  973. package/dist/index.rsc.d.ts +0 -32
  974. package/dist/index.rsc.d.ts.map +0 -1
  975. package/dist/index.rsc.js +0 -40
  976. package/dist/index.rsc.js.map +0 -1
  977. package/dist/internal-debug.d.ts +0 -2
  978. package/dist/internal-debug.d.ts.map +0 -1
  979. package/dist/internal-debug.js +0 -5
  980. package/dist/internal-debug.js.map +0 -1
  981. package/dist/loader.d.ts +0 -14
  982. package/dist/loader.d.ts.map +0 -1
  983. package/dist/loader.js +0 -20
  984. package/dist/loader.js.map +0 -1
  985. package/dist/loader.rsc.d.ts +0 -19
  986. package/dist/loader.rsc.d.ts.map +0 -1
  987. package/dist/loader.rsc.js +0 -99
  988. package/dist/loader.rsc.js.map +0 -1
  989. package/dist/network-error-thrower.d.ts +0 -17
  990. package/dist/network-error-thrower.d.ts.map +0 -1
  991. package/dist/network-error-thrower.js +0 -14
  992. package/dist/network-error-thrower.js.map +0 -1
  993. package/dist/outlet-context.d.ts +0 -13
  994. package/dist/outlet-context.d.ts.map +0 -1
  995. package/dist/outlet-context.js +0 -3
  996. package/dist/outlet-context.js.map +0 -1
  997. package/dist/prerender/__tests__/param-hash.test.d.ts +0 -2
  998. package/dist/prerender/__tests__/param-hash.test.d.ts.map +0 -1
  999. package/dist/prerender/__tests__/param-hash.test.js +0 -148
  1000. package/dist/prerender/__tests__/param-hash.test.js.map +0 -1
  1001. package/dist/prerender/param-hash.d.ts +0 -16
  1002. package/dist/prerender/param-hash.d.ts.map +0 -1
  1003. package/dist/prerender/param-hash.js +0 -36
  1004. package/dist/prerender/param-hash.js.map +0 -1
  1005. package/dist/prerender/store.d.ts +0 -38
  1006. package/dist/prerender/store.d.ts.map +0 -1
  1007. package/dist/prerender/store.js +0 -61
  1008. package/dist/prerender/store.js.map +0 -1
  1009. package/dist/prerender.d.ts +0 -66
  1010. package/dist/prerender.d.ts.map +0 -1
  1011. package/dist/prerender.js +0 -57
  1012. package/dist/prerender.js.map +0 -1
  1013. package/dist/reverse.d.ts +0 -196
  1014. package/dist/reverse.d.ts.map +0 -1
  1015. package/dist/reverse.js +0 -78
  1016. package/dist/reverse.js.map +0 -1
  1017. package/dist/root-error-boundary.d.ts +0 -33
  1018. package/dist/root-error-boundary.d.ts.map +0 -1
  1019. package/dist/root-error-boundary.js +0 -165
  1020. package/dist/root-error-boundary.js.map +0 -1
  1021. package/dist/route-content-wrapper.d.ts +0 -46
  1022. package/dist/route-content-wrapper.d.ts.map +0 -1
  1023. package/dist/route-content-wrapper.js +0 -77
  1024. package/dist/route-content-wrapper.js.map +0 -1
  1025. package/dist/route-definition.d.ts +0 -421
  1026. package/dist/route-definition.d.ts.map +0 -1
  1027. package/dist/route-definition.js +0 -868
  1028. package/dist/route-definition.js.map +0 -1
  1029. package/dist/route-map-builder.d.ts +0 -155
  1030. package/dist/route-map-builder.d.ts.map +0 -1
  1031. package/dist/route-map-builder.js +0 -237
  1032. package/dist/route-map-builder.js.map +0 -1
  1033. package/dist/route-types.d.ts +0 -165
  1034. package/dist/route-types.d.ts.map +0 -1
  1035. package/dist/route-types.js +0 -7
  1036. package/dist/route-types.js.map +0 -1
  1037. package/dist/router/__tests__/handler-context.test.d.ts +0 -2
  1038. package/dist/router/__tests__/handler-context.test.d.ts.map +0 -1
  1039. package/dist/router/__tests__/handler-context.test.js +0 -65
  1040. package/dist/router/__tests__/handler-context.test.js.map +0 -1
  1041. package/dist/router/__tests__/loader-cycle-detection.test.d.ts +0 -2
  1042. package/dist/router/__tests__/loader-cycle-detection.test.d.ts.map +0 -1
  1043. package/dist/router/__tests__/loader-cycle-detection.test.js +0 -221
  1044. package/dist/router/__tests__/loader-cycle-detection.test.js.map +0 -1
  1045. package/dist/router/__tests__/match-context.test.d.ts +0 -2
  1046. package/dist/router/__tests__/match-context.test.d.ts.map +0 -1
  1047. package/dist/router/__tests__/match-context.test.js +0 -92
  1048. package/dist/router/__tests__/match-context.test.js.map +0 -1
  1049. package/dist/router/__tests__/match-pipelines.test.d.ts +0 -2
  1050. package/dist/router/__tests__/match-pipelines.test.d.ts.map +0 -1
  1051. package/dist/router/__tests__/match-pipelines.test.js +0 -417
  1052. package/dist/router/__tests__/match-pipelines.test.js.map +0 -1
  1053. package/dist/router/__tests__/match-result.test.d.ts +0 -2
  1054. package/dist/router/__tests__/match-result.test.d.ts.map +0 -1
  1055. package/dist/router/__tests__/match-result.test.js +0 -457
  1056. package/dist/router/__tests__/match-result.test.js.map +0 -1
  1057. package/dist/router/__tests__/on-error.test.d.ts +0 -2
  1058. package/dist/router/__tests__/on-error.test.d.ts.map +0 -1
  1059. package/dist/router/__tests__/on-error.test.js +0 -678
  1060. package/dist/router/__tests__/on-error.test.js.map +0 -1
  1061. package/dist/router/__tests__/pattern-matching.test.d.ts +0 -2
  1062. package/dist/router/__tests__/pattern-matching.test.d.ts.map +0 -1
  1063. package/dist/router/__tests__/pattern-matching.test.js +0 -629
  1064. package/dist/router/__tests__/pattern-matching.test.js.map +0 -1
  1065. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts +0 -2
  1066. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts.map +0 -1
  1067. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js +0 -155
  1068. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js.map +0 -1
  1069. package/dist/router/error-handling.d.ts +0 -77
  1070. package/dist/router/error-handling.d.ts.map +0 -1
  1071. package/dist/router/error-handling.js +0 -202
  1072. package/dist/router/error-handling.js.map +0 -1
  1073. package/dist/router/handler-context.d.ts +0 -20
  1074. package/dist/router/handler-context.d.ts.map +0 -1
  1075. package/dist/router/handler-context.js +0 -198
  1076. package/dist/router/handler-context.js.map +0 -1
  1077. package/dist/router/intercept-resolution.d.ts +0 -66
  1078. package/dist/router/intercept-resolution.d.ts.map +0 -1
  1079. package/dist/router/intercept-resolution.js +0 -246
  1080. package/dist/router/intercept-resolution.js.map +0 -1
  1081. package/dist/router/loader-resolution.d.ts +0 -64
  1082. package/dist/router/loader-resolution.d.ts.map +0 -1
  1083. package/dist/router/loader-resolution.js +0 -284
  1084. package/dist/router/loader-resolution.js.map +0 -1
  1085. package/dist/router/logging.d.ts +0 -15
  1086. package/dist/router/logging.d.ts.map +0 -1
  1087. package/dist/router/logging.js +0 -99
  1088. package/dist/router/logging.js.map +0 -1
  1089. package/dist/router/manifest.d.ts +0 -22
  1090. package/dist/router/manifest.d.ts.map +0 -1
  1091. package/dist/router/manifest.js +0 -181
  1092. package/dist/router/manifest.js.map +0 -1
  1093. package/dist/router/match-api.d.ts +0 -35
  1094. package/dist/router/match-api.d.ts.map +0 -1
  1095. package/dist/router/match-api.js +0 -406
  1096. package/dist/router/match-api.js.map +0 -1
  1097. package/dist/router/match-context.d.ts +0 -206
  1098. package/dist/router/match-context.d.ts.map +0 -1
  1099. package/dist/router/match-context.js +0 -17
  1100. package/dist/router/match-context.js.map +0 -1
  1101. package/dist/router/match-middleware/background-revalidation.d.ts +0 -127
  1102. package/dist/router/match-middleware/background-revalidation.d.ts.map +0 -1
  1103. package/dist/router/match-middleware/background-revalidation.js +0 -75
  1104. package/dist/router/match-middleware/background-revalidation.js.map +0 -1
  1105. package/dist/router/match-middleware/cache-lookup.d.ts +0 -112
  1106. package/dist/router/match-middleware/cache-lookup.d.ts.map +0 -1
  1107. package/dist/router/match-middleware/cache-lookup.js +0 -257
  1108. package/dist/router/match-middleware/cache-lookup.js.map +0 -1
  1109. package/dist/router/match-middleware/cache-store.d.ts +0 -113
  1110. package/dist/router/match-middleware/cache-store.d.ts.map +0 -1
  1111. package/dist/router/match-middleware/cache-store.js +0 -108
  1112. package/dist/router/match-middleware/cache-store.js.map +0 -1
  1113. package/dist/router/match-middleware/index.d.ts +0 -81
  1114. package/dist/router/match-middleware/index.d.ts.map +0 -1
  1115. package/dist/router/match-middleware/index.js +0 -80
  1116. package/dist/router/match-middleware/index.js.map +0 -1
  1117. package/dist/router/match-middleware/intercept-resolution.d.ts +0 -117
  1118. package/dist/router/match-middleware/intercept-resolution.d.ts.map +0 -1
  1119. package/dist/router/match-middleware/intercept-resolution.js +0 -134
  1120. package/dist/router/match-middleware/intercept-resolution.js.map +0 -1
  1121. package/dist/router/match-middleware/segment-resolution.d.ts +0 -99
  1122. package/dist/router/match-middleware/segment-resolution.d.ts.map +0 -1
  1123. package/dist/router/match-middleware/segment-resolution.js +0 -53
  1124. package/dist/router/match-middleware/segment-resolution.js.map +0 -1
  1125. package/dist/router/match-pipelines.d.ts +0 -147
  1126. package/dist/router/match-pipelines.d.ts.map +0 -1
  1127. package/dist/router/match-pipelines.js +0 -82
  1128. package/dist/router/match-pipelines.js.map +0 -1
  1129. package/dist/router/match-result.d.ts +0 -126
  1130. package/dist/router/match-result.d.ts.map +0 -1
  1131. package/dist/router/match-result.js +0 -93
  1132. package/dist/router/match-result.js.map +0 -1
  1133. package/dist/router/metrics.d.ts +0 -20
  1134. package/dist/router/metrics.d.ts.map +0 -1
  1135. package/dist/router/metrics.js +0 -47
  1136. package/dist/router/metrics.js.map +0 -1
  1137. package/dist/router/middleware.d.ts +0 -249
  1138. package/dist/router/middleware.d.ts.map +0 -1
  1139. package/dist/router/middleware.js +0 -434
  1140. package/dist/router/middleware.js.map +0 -1
  1141. package/dist/router/middleware.test.d.ts +0 -2
  1142. package/dist/router/middleware.test.d.ts.map +0 -1
  1143. package/dist/router/middleware.test.js +0 -816
  1144. package/dist/router/middleware.test.js.map +0 -1
  1145. package/dist/router/pattern-matching.d.ts +0 -149
  1146. package/dist/router/pattern-matching.d.ts.map +0 -1
  1147. package/dist/router/pattern-matching.js +0 -349
  1148. package/dist/router/pattern-matching.js.map +0 -1
  1149. package/dist/router/revalidation.d.ts +0 -44
  1150. package/dist/router/revalidation.d.ts.map +0 -1
  1151. package/dist/router/revalidation.js +0 -147
  1152. package/dist/router/revalidation.js.map +0 -1
  1153. package/dist/router/router-context.d.ts +0 -135
  1154. package/dist/router/router-context.d.ts.map +0 -1
  1155. package/dist/router/router-context.js +0 -36
  1156. package/dist/router/router-context.js.map +0 -1
  1157. package/dist/router/segment-resolution.d.ts +0 -127
  1158. package/dist/router/segment-resolution.d.ts.map +0 -1
  1159. package/dist/router/segment-resolution.js +0 -919
  1160. package/dist/router/segment-resolution.js.map +0 -1
  1161. package/dist/router/trie-matching.d.ts +0 -40
  1162. package/dist/router/trie-matching.d.ts.map +0 -1
  1163. package/dist/router/trie-matching.js +0 -127
  1164. package/dist/router/trie-matching.js.map +0 -1
  1165. package/dist/router/types.d.ts +0 -136
  1166. package/dist/router/types.d.ts.map +0 -1
  1167. package/dist/router/types.js +0 -7
  1168. package/dist/router/types.js.map +0 -1
  1169. package/dist/router.d.ts +0 -753
  1170. package/dist/router.d.ts.map +0 -1
  1171. package/dist/router.gen.d.ts +0 -6
  1172. package/dist/router.gen.d.ts.map +0 -1
  1173. package/dist/router.gen.js +0 -6
  1174. package/dist/router.gen.js.map +0 -1
  1175. package/dist/router.js +0 -1304
  1176. package/dist/router.js.map +0 -1
  1177. package/dist/rsc/__tests__/helpers.test.d.ts +0 -2
  1178. package/dist/rsc/__tests__/helpers.test.d.ts.map +0 -1
  1179. package/dist/rsc/__tests__/helpers.test.js +0 -140
  1180. package/dist/rsc/__tests__/helpers.test.js.map +0 -1
  1181. package/dist/rsc/handler.d.ts +0 -45
  1182. package/dist/rsc/handler.d.ts.map +0 -1
  1183. package/dist/rsc/handler.js +0 -1172
  1184. package/dist/rsc/handler.js.map +0 -1
  1185. package/dist/rsc/helpers.d.ts +0 -16
  1186. package/dist/rsc/helpers.d.ts.map +0 -1
  1187. package/dist/rsc/helpers.js +0 -55
  1188. package/dist/rsc/helpers.js.map +0 -1
  1189. package/dist/rsc/index.d.ts +0 -22
  1190. package/dist/rsc/index.d.ts.map +0 -1
  1191. package/dist/rsc/index.js +0 -23
  1192. package/dist/rsc/index.js.map +0 -1
  1193. package/dist/rsc/nonce.d.ts +0 -9
  1194. package/dist/rsc/nonce.d.ts.map +0 -1
  1195. package/dist/rsc/nonce.js +0 -18
  1196. package/dist/rsc/nonce.js.map +0 -1
  1197. package/dist/rsc/types.d.ts +0 -206
  1198. package/dist/rsc/types.d.ts.map +0 -1
  1199. package/dist/rsc/types.js +0 -8
  1200. package/dist/rsc/types.js.map +0 -1
  1201. package/dist/search-params.d.ts +0 -103
  1202. package/dist/search-params.d.ts.map +0 -1
  1203. package/dist/search-params.js +0 -74
  1204. package/dist/search-params.js.map +0 -1
  1205. package/dist/segment-system.d.ts +0 -75
  1206. package/dist/segment-system.d.ts.map +0 -1
  1207. package/dist/segment-system.js +0 -336
  1208. package/dist/segment-system.js.map +0 -1
  1209. package/dist/server/context.d.ts +0 -245
  1210. package/dist/server/context.d.ts.map +0 -1
  1211. package/dist/server/context.js +0 -197
  1212. package/dist/server/context.js.map +0 -1
  1213. package/dist/server/fetchable-loader-store.d.ts +0 -18
  1214. package/dist/server/fetchable-loader-store.d.ts.map +0 -1
  1215. package/dist/server/fetchable-loader-store.js +0 -18
  1216. package/dist/server/fetchable-loader-store.js.map +0 -1
  1217. package/dist/server/handle-store.d.ts +0 -85
  1218. package/dist/server/handle-store.d.ts.map +0 -1
  1219. package/dist/server/handle-store.js +0 -142
  1220. package/dist/server/handle-store.js.map +0 -1
  1221. package/dist/server/loader-registry.d.ts +0 -55
  1222. package/dist/server/loader-registry.d.ts.map +0 -1
  1223. package/dist/server/loader-registry.js +0 -132
  1224. package/dist/server/loader-registry.js.map +0 -1
  1225. package/dist/server/request-context.d.ts +0 -226
  1226. package/dist/server/request-context.d.ts.map +0 -1
  1227. package/dist/server/request-context.js +0 -290
  1228. package/dist/server/request-context.js.map +0 -1
  1229. package/dist/server/root-layout.d.ts +0 -4
  1230. package/dist/server/root-layout.d.ts.map +0 -1
  1231. package/dist/server/root-layout.js +0 -5
  1232. package/dist/server/root-layout.js.map +0 -1
  1233. package/dist/server.d.ts +0 -15
  1234. package/dist/server.d.ts.map +0 -1
  1235. package/dist/server.js +0 -20
  1236. package/dist/server.js.map +0 -1
  1237. package/dist/ssr/__tests__/ssr-handler.test.d.ts +0 -2
  1238. package/dist/ssr/__tests__/ssr-handler.test.d.ts.map +0 -1
  1239. package/dist/ssr/__tests__/ssr-handler.test.js +0 -132
  1240. package/dist/ssr/__tests__/ssr-handler.test.js.map +0 -1
  1241. package/dist/ssr/index.d.ts +0 -98
  1242. package/dist/ssr/index.d.ts.map +0 -1
  1243. package/dist/ssr/index.js +0 -158
  1244. package/dist/ssr/index.js.map +0 -1
  1245. package/dist/static-handler.d.ts +0 -50
  1246. package/dist/static-handler.d.ts.map +0 -1
  1247. package/dist/static-handler.gen.d.ts +0 -5
  1248. package/dist/static-handler.gen.d.ts.map +0 -1
  1249. package/dist/static-handler.gen.js +0 -5
  1250. package/dist/static-handler.gen.js.map +0 -1
  1251. package/dist/static-handler.js +0 -29
  1252. package/dist/static-handler.js.map +0 -1
  1253. package/dist/theme/ThemeProvider.d.ts +0 -20
  1254. package/dist/theme/ThemeProvider.d.ts.map +0 -1
  1255. package/dist/theme/ThemeProvider.js +0 -240
  1256. package/dist/theme/ThemeProvider.js.map +0 -1
  1257. package/dist/theme/ThemeScript.d.ts +0 -48
  1258. package/dist/theme/ThemeScript.d.ts.map +0 -1
  1259. package/dist/theme/ThemeScript.js +0 -13
  1260. package/dist/theme/ThemeScript.js.map +0 -1
  1261. package/dist/theme/__tests__/theme.test.d.ts +0 -2
  1262. package/dist/theme/__tests__/theme.test.d.ts.map +0 -1
  1263. package/dist/theme/__tests__/theme.test.js +0 -103
  1264. package/dist/theme/__tests__/theme.test.js.map +0 -1
  1265. package/dist/theme/constants.d.ts +0 -29
  1266. package/dist/theme/constants.d.ts.map +0 -1
  1267. package/dist/theme/constants.js +0 -48
  1268. package/dist/theme/constants.js.map +0 -1
  1269. package/dist/theme/index.d.ts +0 -31
  1270. package/dist/theme/index.d.ts.map +0 -1
  1271. package/dist/theme/index.js +0 -36
  1272. package/dist/theme/index.js.map +0 -1
  1273. package/dist/theme/theme-context.d.ts +0 -40
  1274. package/dist/theme/theme-context.d.ts.map +0 -1
  1275. package/dist/theme/theme-context.js +0 -60
  1276. package/dist/theme/theme-context.js.map +0 -1
  1277. package/dist/theme/theme-script.d.ts +0 -27
  1278. package/dist/theme/theme-script.d.ts.map +0 -1
  1279. package/dist/theme/theme-script.js +0 -147
  1280. package/dist/theme/theme-script.js.map +0 -1
  1281. package/dist/theme/types.d.ts +0 -163
  1282. package/dist/theme/types.d.ts.map +0 -1
  1283. package/dist/theme/types.js +0 -11
  1284. package/dist/theme/types.js.map +0 -1
  1285. package/dist/theme/use-theme.d.ts +0 -12
  1286. package/dist/theme/use-theme.d.ts.map +0 -1
  1287. package/dist/theme/use-theme.js +0 -40
  1288. package/dist/theme/use-theme.js.map +0 -1
  1289. package/dist/types.d.ts +0 -1479
  1290. package/dist/types.d.ts.map +0 -1
  1291. package/dist/types.js +0 -10
  1292. package/dist/types.js.map +0 -1
  1293. package/dist/urls.d.ts +0 -441
  1294. package/dist/urls.d.ts.map +0 -1
  1295. package/dist/urls.gen.d.ts +0 -8
  1296. package/dist/urls.gen.d.ts.map +0 -1
  1297. package/dist/urls.gen.js +0 -8
  1298. package/dist/urls.gen.js.map +0 -1
  1299. package/dist/urls.js +0 -443
  1300. package/dist/urls.js.map +0 -1
  1301. package/dist/use-loader.d.ts +0 -127
  1302. package/dist/use-loader.d.ts.map +0 -1
  1303. package/dist/use-loader.js +0 -237
  1304. package/dist/use-loader.js.map +0 -1
  1305. package/dist/vite/__tests__/ast-handler-extract.test.d.ts +0 -2
  1306. package/dist/vite/__tests__/ast-handler-extract.test.d.ts.map +0 -1
  1307. package/dist/vite/__tests__/ast-handler-extract.test.js +0 -294
  1308. package/dist/vite/__tests__/ast-handler-extract.test.js.map +0 -1
  1309. package/dist/vite/__tests__/expose-id-utils.test.d.ts +0 -2
  1310. package/dist/vite/__tests__/expose-id-utils.test.d.ts.map +0 -1
  1311. package/dist/vite/__tests__/expose-id-utils.test.js +0 -224
  1312. package/dist/vite/__tests__/expose-id-utils.test.js.map +0 -1
  1313. package/dist/vite/__tests__/expose-internal-ids.test.d.ts +0 -2
  1314. package/dist/vite/__tests__/expose-internal-ids.test.d.ts.map +0 -1
  1315. package/dist/vite/__tests__/expose-internal-ids.test.js +0 -647
  1316. package/dist/vite/__tests__/expose-internal-ids.test.js.map +0 -1
  1317. package/dist/vite/__tests__/expose-router-id.test.d.ts +0 -2
  1318. package/dist/vite/__tests__/expose-router-id.test.d.ts.map +0 -1
  1319. package/dist/vite/__tests__/expose-router-id.test.js +0 -39
  1320. package/dist/vite/__tests__/expose-router-id.test.js.map +0 -1
  1321. package/dist/vite/ast-handler-extract.d.ts +0 -49
  1322. package/dist/vite/ast-handler-extract.d.ts.map +0 -1
  1323. package/dist/vite/ast-handler-extract.js +0 -249
  1324. package/dist/vite/ast-handler-extract.js.map +0 -1
  1325. package/dist/vite/expose-action-id.d.ts +0 -19
  1326. package/dist/vite/expose-action-id.d.ts.map +0 -1
  1327. package/dist/vite/expose-action-id.js +0 -250
  1328. package/dist/vite/expose-action-id.js.map +0 -1
  1329. package/dist/vite/expose-id-utils.d.ts +0 -69
  1330. package/dist/vite/expose-id-utils.d.ts.map +0 -1
  1331. package/dist/vite/expose-id-utils.js +0 -289
  1332. package/dist/vite/expose-id-utils.js.map +0 -1
  1333. package/dist/vite/expose-internal-ids.d.ts +0 -22
  1334. package/dist/vite/expose-internal-ids.d.ts.map +0 -1
  1335. package/dist/vite/expose-internal-ids.js +0 -886
  1336. package/dist/vite/expose-internal-ids.js.map +0 -1
  1337. package/dist/vite/index.d.ts +0 -149
  1338. package/dist/vite/index.d.ts.map +0 -1
  1339. package/dist/vite/index.js.bak +0 -5448
  1340. package/dist/vite/index.js.map +0 -1
  1341. package/dist/vite/index.named-routes.gen.ts +0 -103
  1342. package/dist/vite/package-resolution.d.ts +0 -43
  1343. package/dist/vite/package-resolution.d.ts.map +0 -1
  1344. package/dist/vite/package-resolution.js +0 -112
  1345. package/dist/vite/package-resolution.js.map +0 -1
  1346. package/dist/vite/virtual-entries.d.ts +0 -25
  1347. package/dist/vite/virtual-entries.d.ts.map +0 -1
  1348. package/dist/vite/virtual-entries.js +0 -110
  1349. package/dist/vite/virtual-entries.js.map +0 -1
  1350. package/skills/migrate-react-router/cloudflare-workers.md +0 -129
@@ -1,6 +1,201 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropNames = Object.getOwnPropertyNames;
3
+ var __esm = (fn, res, err) => function __init() {
4
+ if (err) throw err[0];
5
+ try {
6
+ return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
7
+ } catch (e) {
8
+ throw err = [e], e;
9
+ }
10
+ };
11
+ var __export = (target, all) => {
12
+ for (var name in all)
13
+ __defProp(target, name, { get: all[name], enumerable: true });
14
+ };
15
+
16
+ // src/vite/debug.ts
17
+ import debugFactory from "debug";
18
+ function createRangoDebugger(namespace) {
19
+ const primary = debugFactory(namespace);
20
+ const shadow = debugFactory(`vite:${namespace}`);
21
+ if (primary.enabled) return primary;
22
+ if (shadow.enabled) return shadow;
23
+ return void 0;
24
+ }
25
+ async function timed(debug12, label, fn) {
26
+ if (!debug12) return await fn();
27
+ const start = performance.now();
28
+ try {
29
+ return await fn();
30
+ } finally {
31
+ debug12("%s (%sms)", label, (performance.now() - start).toFixed(1));
32
+ }
33
+ }
34
+ function timedSync(debug12, label, fn) {
35
+ if (!debug12) return fn();
36
+ const start = performance.now();
37
+ try {
38
+ return fn();
39
+ } finally {
40
+ debug12("%s (%sms)", label, (performance.now() - start).toFixed(1));
41
+ }
42
+ }
43
+ function createCounter(debug12, label) {
44
+ if (!debug12) return void 0;
45
+ let n = 0;
46
+ let totalMs = 0;
47
+ let slowestMs = 0;
48
+ let slowestFile = "";
49
+ const record = (file, ms) => {
50
+ n++;
51
+ totalMs += ms;
52
+ if (ms > slowestMs) {
53
+ slowestMs = ms;
54
+ slowestFile = file;
55
+ }
56
+ };
57
+ return {
58
+ record,
59
+ time(file, fn) {
60
+ const start = performance.now();
61
+ let out;
62
+ try {
63
+ out = fn();
64
+ } catch (err) {
65
+ record(file, performance.now() - start);
66
+ throw err;
67
+ }
68
+ if (out && typeof out.then === "function") {
69
+ return out.finally(
70
+ () => record(file, performance.now() - start)
71
+ );
72
+ }
73
+ record(file, performance.now() - start);
74
+ return out;
75
+ },
76
+ flush() {
77
+ if (n === 0) return;
78
+ debug12(
79
+ "%s: %d files, %sms total, slowest %sms %s",
80
+ label,
81
+ n,
82
+ totalMs.toFixed(1),
83
+ slowestMs.toFixed(1),
84
+ slowestFile
85
+ );
86
+ n = 0;
87
+ totalMs = 0;
88
+ slowestMs = 0;
89
+ slowestFile = "";
90
+ }
91
+ };
92
+ }
93
+ var NS;
94
+ var init_debug = __esm({
95
+ "src/vite/debug.ts"() {
96
+ "use strict";
97
+ NS = {
98
+ config: "rango:config",
99
+ discovery: "rango:discovery",
100
+ routes: "rango:routes",
101
+ prerender: "rango:prerender",
102
+ build: "rango:build",
103
+ dev: "rango:dev",
104
+ transform: "rango:transform",
105
+ chunks: "rango:chunks"
106
+ };
107
+ if (process.env.INTERNAL_RANGO_DEBUG) {
108
+ const existing = debugFactory.disable();
109
+ debugFactory.enable(existing ? `${existing},rango:*` : "rango:*");
110
+ }
111
+ }
112
+ });
113
+
114
+ // src/vite/plugins/client-ref-hashing.ts
115
+ var client_ref_hashing_exports = {};
116
+ __export(client_ref_hashing_exports, {
117
+ computeProductionHash: () => computeProductionHash,
118
+ hashClientRefs: () => hashClientRefs,
119
+ hashRefKey: () => hashRefKey,
120
+ transformClientRefs: () => transformClientRefs
121
+ });
122
+ import { relative as relative2 } from "node:path";
123
+ import { createHash as createHash2 } from "node:crypto";
124
+ function hashRefKey(relativeId) {
125
+ return createHash2("sha256").update(relativeId).digest("hex").slice(0, 12);
126
+ }
127
+ function computeProductionHash(projectRoot, refKey) {
128
+ let toHash;
129
+ if (refKey.startsWith(CLIENT_PKG_PROXY_PREFIX)) {
130
+ toHash = refKey.slice(CLIENT_PKG_PROXY_PREFIX.length);
131
+ } else if (refKey.startsWith(CLIENT_IN_SERVER_PKG_PROXY_PREFIX)) {
132
+ const absPath = decodeURIComponent(
133
+ refKey.slice(CLIENT_IN_SERVER_PKG_PROXY_PREFIX.length)
134
+ );
135
+ toHash = relative2(projectRoot, absPath).replaceAll("\\", "/");
136
+ } else if (refKey.startsWith(FS_PREFIX)) {
137
+ const absPath = refKey.slice(FS_PREFIX.length - 1);
138
+ toHash = relative2(projectRoot, absPath).replaceAll("\\", "/");
139
+ } else if (refKey.startsWith("/")) {
140
+ toHash = refKey.slice(1);
141
+ } else {
142
+ return refKey;
143
+ }
144
+ return hashRefKey(toHash);
145
+ }
146
+ function transformClientRefs(code, projectRoot) {
147
+ if (!code.includes("registerClientReference")) return null;
148
+ let hasReplacement = false;
149
+ const result = code.replace(
150
+ REGISTER_CLIENT_REF_RE,
151
+ (match, refKey) => {
152
+ const hash = computeProductionHash(projectRoot, refKey);
153
+ if (hash === refKey) return match;
154
+ hasReplacement = true;
155
+ return match.replace(`"${refKey}"`, `"${hash}"`);
156
+ }
157
+ );
158
+ return hasReplacement ? result : null;
159
+ }
160
+ function hashClientRefs(projectRoot) {
161
+ const counter = createCounter(debug7, "hash-client-refs");
162
+ return {
163
+ name: "@rangojs/router:hash-client-refs",
164
+ enforce: "post",
165
+ applyToEnvironment(env) {
166
+ return env.name === "rsc";
167
+ },
168
+ buildEnd() {
169
+ counter?.flush();
170
+ },
171
+ transform(code, id) {
172
+ const start = counter ? performance.now() : 0;
173
+ try {
174
+ const result = transformClientRefs(code, projectRoot);
175
+ if (result === null) return;
176
+ return { code: result, map: null };
177
+ } finally {
178
+ counter?.record(id, performance.now() - start);
179
+ }
180
+ }
181
+ };
182
+ }
183
+ var debug7, CLIENT_PKG_PROXY_PREFIX, CLIENT_IN_SERVER_PKG_PROXY_PREFIX, FS_PREFIX, REGISTER_CLIENT_REF_RE;
184
+ var init_client_ref_hashing = __esm({
185
+ "src/vite/plugins/client-ref-hashing.ts"() {
186
+ "use strict";
187
+ init_debug();
188
+ debug7 = createRangoDebugger(NS.transform);
189
+ CLIENT_PKG_PROXY_PREFIX = "/@id/__x00__virtual:vite-rsc/client-package-proxy/";
190
+ CLIENT_IN_SERVER_PKG_PROXY_PREFIX = "/@id/__x00__virtual:vite-rsc/client-in-server-package-proxy/";
191
+ FS_PREFIX = "/@fs/";
192
+ REGISTER_CLIENT_REF_RE = /registerClientReference\(\s*(?:(?:\([^)]*\))|(?:\(\)[\s\S]*?\}))\s*,\s*"([^"]+)"\s*,\s*"[^"]+"\s*\)/g;
193
+ }
194
+ });
195
+
1
196
  // src/vite/rango.ts
2
- import { readFileSync as readFileSync7, existsSync as existsSync8 } from "node:fs";
3
- import { resolve as resolve11 } from "node:path";
197
+ import { readFileSync as readFileSync8, existsSync as existsSync9 } from "node:fs";
198
+ import { resolve as resolve12 } from "node:path";
4
199
 
5
200
  // src/vite/plugins/expose-action-id.ts
6
201
  import MagicString from "magic-string";
@@ -251,99 +446,8 @@ function findCallParenAfterGenerics(code, afterCalleeIndex) {
251
446
  return -1;
252
447
  }
253
448
 
254
- // src/vite/debug.ts
255
- import debugFactory from "debug";
256
- var NS = {
257
- config: "rango:config",
258
- discovery: "rango:discovery",
259
- routes: "rango:routes",
260
- prerender: "rango:prerender",
261
- build: "rango:build",
262
- dev: "rango:dev",
263
- transform: "rango:transform",
264
- chunks: "rango:chunks"
265
- };
266
- if (process.env.INTERNAL_RANGO_DEBUG) {
267
- const existing = debugFactory.disable();
268
- debugFactory.enable(existing ? `${existing},rango:*` : "rango:*");
269
- }
270
- function createRangoDebugger(namespace) {
271
- const primary = debugFactory(namespace);
272
- const shadow = debugFactory(`vite:${namespace}`);
273
- if (primary.enabled) return primary;
274
- if (shadow.enabled) return shadow;
275
- return void 0;
276
- }
277
- async function timed(debug11, label, fn) {
278
- if (!debug11) return await fn();
279
- const start = performance.now();
280
- try {
281
- return await fn();
282
- } finally {
283
- debug11("%s (%sms)", label, (performance.now() - start).toFixed(1));
284
- }
285
- }
286
- function timedSync(debug11, label, fn) {
287
- if (!debug11) return fn();
288
- const start = performance.now();
289
- try {
290
- return fn();
291
- } finally {
292
- debug11("%s (%sms)", label, (performance.now() - start).toFixed(1));
293
- }
294
- }
295
- function createCounter(debug11, label) {
296
- if (!debug11) return void 0;
297
- let n = 0;
298
- let totalMs = 0;
299
- let slowestMs = 0;
300
- let slowestFile = "";
301
- const record = (file, ms) => {
302
- n++;
303
- totalMs += ms;
304
- if (ms > slowestMs) {
305
- slowestMs = ms;
306
- slowestFile = file;
307
- }
308
- };
309
- return {
310
- record,
311
- time(file, fn) {
312
- const start = performance.now();
313
- let out;
314
- try {
315
- out = fn();
316
- } catch (err) {
317
- record(file, performance.now() - start);
318
- throw err;
319
- }
320
- if (out && typeof out.then === "function") {
321
- return out.finally(
322
- () => record(file, performance.now() - start)
323
- );
324
- }
325
- record(file, performance.now() - start);
326
- return out;
327
- },
328
- flush() {
329
- if (n === 0) return;
330
- debug11(
331
- "%s: %d files, %sms total, slowest %sms %s",
332
- label,
333
- n,
334
- totalMs.toFixed(1),
335
- slowestMs.toFixed(1),
336
- slowestFile
337
- );
338
- n = 0;
339
- totalMs = 0;
340
- slowestMs = 0;
341
- slowestFile = "";
342
- }
343
- };
344
- }
345
-
346
449
  // src/vite/plugins/expose-action-id.ts
450
+ init_debug();
347
451
  var debug = createRangoDebugger(NS.transform);
348
452
  function getRscPluginApi(config) {
349
453
  let plugin = config.plugins.find((p) => p.name === "rsc:minimal");
@@ -1299,10 +1403,14 @@ ${binding.localName}.$$id = "${handlerId}";`;
1299
1403
  return hasChanges;
1300
1404
  }
1301
1405
 
1406
+ // src/vite/plugins/expose-internal-ids.ts
1407
+ init_debug();
1408
+
1302
1409
  // src/vite/plugins/expose-ids/router-transform.ts
1303
1410
  import MagicString2 from "magic-string";
1304
1411
  import path3 from "node:path";
1305
1412
  import { createHash } from "node:crypto";
1413
+ init_debug();
1306
1414
  var debug2 = createRangoDebugger(NS.transform);
1307
1415
  function skipLeadingTrivia(code, start, end) {
1308
1416
  let i = start;
@@ -1922,6 +2030,7 @@ ${lazyImports.join(",\n")}
1922
2030
  // src/vite/plugins/use-cache-transform.ts
1923
2031
  import path5 from "node:path";
1924
2032
  import MagicString4 from "magic-string";
2033
+ init_debug();
1925
2034
  var debug4 = createRangoDebugger(NS.transform);
1926
2035
  var CACHE_RUNTIME_IMPORT = "@rangojs/router/cache-runtime";
1927
2036
  var LAYOUT_TEMPLATE_PATTERN = /\/(layout|template)\.(tsx?|jsx?)$/;
@@ -2115,6 +2224,7 @@ function warnOnNearMissDirectives(ast, fileId, warn) {
2115
2224
  }
2116
2225
 
2117
2226
  // src/vite/plugins/client-ref-dedup.ts
2227
+ init_debug();
2118
2228
  var debug5 = createRangoDebugger(NS.transform);
2119
2229
  var CLIENT_IN_SERVER_PROXY_PREFIX = "virtual:vite-rsc/client-in-server-package-proxy/";
2120
2230
  function extractPackageName(absolutePath) {
@@ -2199,7 +2309,17 @@ async function initializeApp() {
2199
2309
  // context, including strictMode (default true) from createRouter. StrictMode
2200
2310
  // is the default; createRouter({ strictMode: false }) ships the opt-out in the
2201
2311
  // payload metadata. StrictMode emits no DOM, so toggling never changes markup.
2202
- const { strictMode } = await initBrowserApp({ rscStream, deps });
2312
+ const { strictMode, initialPayload } = await initBrowserApp({ rscStream, deps });
2313
+
2314
+ if (import.meta.hot) {
2315
+ const { startDevDiscoveryHandshake } = await import(
2316
+ "@rangojs/router/internal/browser/dev-discovery"
2317
+ );
2318
+ startDevDiscoveryHandshake(
2319
+ initialPayload.metadata?.devDiscoveryEpoch,
2320
+ import.meta.hot
2321
+ );
2322
+ }
2203
2323
 
2204
2324
  const app = createElement(Rango);
2205
2325
  hydrateRoot(
@@ -2210,21 +2330,35 @@ async function initializeApp() {
2210
2330
 
2211
2331
  initializeApp().catch(console.error);
2212
2332
  `.trim();
2213
- var VIRTUAL_ENTRY_SSR = `
2214
- import { createFromReadableStream } from "@rangojs/router/internal/deps/ssr";
2333
+ function getVirtualEntrySSR(headScripts = "preinit") {
2334
+ const preinit = headScripts !== "preload";
2335
+ const depsImportNames = preinit ? "createFromReadableStream,\n setOnClientReference," : "createFromReadableStream,";
2336
+ const ssrImportNames = preinit ? "\n installClientReferencePreinit," : "";
2337
+ const install = preinit ? `
2338
+ // Upgrade client-reference modulepreload hints to executing module scripts in
2339
+ // the document head, for every render pass (live SSR, shell capture, resume).
2340
+ // See src/ssr/preinit-client-references.ts for the full rationale.
2341
+ installClientReferencePreinit(setOnClientReference);
2342
+ ` : "";
2343
+ const hs = JSON.stringify(headScripts);
2344
+ return `
2345
+ import {
2346
+ ${depsImportNames}
2347
+ } from "@rangojs/router/internal/deps/ssr";
2215
2348
  import { renderToReadableStream, resume } from "react-dom/server.edge";
2216
2349
  import { prerender } from "react-dom/static.edge";
2217
2350
  import { injectRSCPayload } from "@rangojs/router/internal/deps/html-stream-server";
2218
2351
  import {
2219
2352
  createSSRHandler,
2220
2353
  createShellCaptureHandler,
2221
- createShellResumeHandler,
2354
+ createShellResumeHandler,${ssrImportNames}
2222
2355
  } from "@rangojs/router/ssr";
2223
-
2356
+ ${install}
2224
2357
  export const renderHTML = createSSRHandler({
2225
2358
  createFromReadableStream,
2226
2359
  renderToReadableStream,
2227
2360
  injectRSCPayload,
2361
+ headScripts: ${hs},
2228
2362
  loadBootstrapScriptContent: () =>
2229
2363
  import.meta.viteRsc.loadBootstrapScriptContent("index"),
2230
2364
  });
@@ -2235,6 +2369,7 @@ export const captureShellHTML = createShellCaptureHandler({
2235
2369
  injectRSCPayload,
2236
2370
  prerender,
2237
2371
  resume,
2372
+ headScripts: ${hs},
2238
2373
  loadBootstrapScriptContent: () =>
2239
2374
  import.meta.viteRsc.loadBootstrapScriptContent("index"),
2240
2375
  });
@@ -2245,10 +2380,12 @@ export const resumeShellHTML = createShellResumeHandler({
2245
2380
  injectRSCPayload,
2246
2381
  prerender,
2247
2382
  resume,
2383
+ headScripts: ${hs},
2248
2384
  loadBootstrapScriptContent: () =>
2249
2385
  import.meta.viteRsc.loadBootstrapScriptContent("index"),
2250
2386
  });
2251
2387
  `.trim();
2388
+ }
2252
2389
  var RSC_ENTRY_BOOTSTRAP_IMPORTS = [
2253
2390
  "virtual:rsc-router/routes-manifest",
2254
2391
  "virtual:rsc-router/loader-manifest"
@@ -2393,7 +2530,7 @@ import { resolve } from "node:path";
2393
2530
  // package.json
2394
2531
  var package_default = {
2395
2532
  name: "@rangojs/router",
2396
- version: "0.0.0-experimental.tapabs3",
2533
+ version: "0.1.1",
2397
2534
  description: "Django-inspired RSC router with composable URL patterns",
2398
2535
  keywords: [
2399
2536
  "react",
@@ -2430,144 +2567,155 @@ var package_default = {
2430
2567
  type: "module",
2431
2568
  exports: {
2432
2569
  ".": {
2433
- types: "./src/index.rsc.ts",
2570
+ types: "./dist/types/index.rsc.d.ts",
2434
2571
  "react-server": "./src/index.rsc.ts",
2435
2572
  default: "./src/index.ts"
2436
2573
  },
2437
2574
  "./server": {
2438
- types: "./src/server.ts",
2575
+ types: "./dist/types/server.d.ts",
2439
2576
  import: "./src/server.ts"
2440
2577
  },
2441
2578
  "./client": {
2442
- types: "./src/client.tsx",
2579
+ types: "./dist/types/client.d.ts",
2443
2580
  "react-server": "./src/client.rsc.tsx",
2444
2581
  default: "./src/client.tsx"
2445
2582
  },
2446
2583
  "./browser": {
2447
- types: "./src/browser/index.ts",
2584
+ types: "./dist/types/browser/index.d.ts",
2448
2585
  default: "./src/browser/index.ts"
2449
2586
  },
2450
2587
  "./ssr": {
2451
- types: "./src/ssr/index.tsx",
2588
+ types: "./dist/types/ssr/index.d.ts",
2452
2589
  default: "./src/ssr/index.tsx"
2453
2590
  },
2454
2591
  "./rsc": {
2455
- types: "./src/rsc/index.ts",
2592
+ types: "./dist/types/rsc/index.d.ts",
2456
2593
  "react-server": "./src/rsc/index.ts",
2457
2594
  default: "./src/rsc/index.ts"
2458
2595
  },
2459
2596
  "./vite": {
2460
- types: "./src/vite/index.ts",
2597
+ types: "./dist/types/vite/index.d.ts",
2461
2598
  import: "./dist/vite/index.js"
2462
2599
  },
2463
2600
  "./types": {
2464
2601
  types: "./src/vite/plugins/version.d.ts"
2465
2602
  },
2466
2603
  "./__internal": {
2467
- types: "./src/__internal.ts",
2604
+ types: "./dist/types/__internal.d.ts",
2468
2605
  default: "./src/__internal.ts"
2469
2606
  },
2470
2607
  "./internal/deps/browser": {
2471
- types: "./src/deps/browser.ts",
2608
+ types: "./dist/types/deps/browser.d.ts",
2472
2609
  default: "./src/deps/browser.ts"
2473
2610
  },
2474
2611
  "./internal/deps/ssr": {
2475
- types: "./src/deps/ssr.ts",
2612
+ types: "./dist/types/deps/ssr.d.ts",
2476
2613
  default: "./src/deps/ssr.ts"
2477
2614
  },
2478
2615
  "./internal/deps/rsc": {
2479
- types: "./src/deps/rsc.ts",
2616
+ types: "./dist/types/deps/rsc.d.ts",
2480
2617
  "react-server": "./src/deps/rsc.ts",
2481
2618
  default: "./src/deps/rsc.ts"
2482
2619
  },
2483
2620
  "./internal/deps/html-stream-client": {
2484
- types: "./src/deps/html-stream-client.ts",
2621
+ types: "./dist/types/deps/html-stream-client.d.ts",
2485
2622
  default: "./src/deps/html-stream-client.ts"
2486
2623
  },
2487
2624
  "./internal/deps/html-stream-server": {
2488
- types: "./src/deps/html-stream-server.ts",
2625
+ types: "./dist/types/deps/html-stream-server.d.ts",
2489
2626
  default: "./src/deps/html-stream-server.ts"
2490
2627
  },
2491
2628
  "./internal/rsc-handler": {
2492
- types: "./src/rsc/handler.ts",
2629
+ types: "./dist/types/rsc/handler.d.ts",
2493
2630
  "react-server": "./src/rsc/handler.ts",
2494
2631
  default: "./src/rsc/handler.ts"
2495
2632
  },
2633
+ "./internal/browser/dev-discovery": {
2634
+ types: "./dist/types/browser/dev-discovery.d.ts",
2635
+ default: "./src/browser/dev-discovery.ts"
2636
+ },
2496
2637
  "./cache": {
2497
- types: "./src/cache/index.ts",
2638
+ types: "./dist/types/cache/index.d.ts",
2498
2639
  "react-server": "./src/cache/index.ts",
2499
2640
  default: "./src/cache/index.ts"
2500
2641
  },
2501
2642
  "./cache-runtime": {
2502
- types: "./src/cache/cache-runtime.ts",
2643
+ types: "./dist/types/cache/cache-runtime.d.ts",
2503
2644
  "react-server": "./src/cache/cache-runtime.ts",
2504
2645
  default: "./src/cache/cache-runtime.ts"
2505
2646
  },
2506
2647
  "./cloudflare": {
2507
- types: "./src/cloudflare/index.ts",
2648
+ types: "./dist/types/cloudflare/index.d.ts",
2508
2649
  "react-server": "./src/cloudflare/index.ts",
2509
2650
  default: "./src/cloudflare/index.ts"
2510
2651
  },
2511
2652
  "./vercel": {
2512
- types: "./src/vercel/index.ts",
2653
+ types: "./dist/types/vercel/index.d.ts",
2513
2654
  "react-server": "./src/vercel/index.ts",
2514
2655
  default: "./src/vercel/index.ts"
2515
2656
  },
2516
2657
  "./theme": {
2517
- types: "./src/theme/index.ts",
2658
+ types: "./dist/types/theme/index.d.ts",
2518
2659
  default: "./src/theme/index.ts"
2519
2660
  },
2520
2661
  "./build": {
2521
- types: "./src/build/index.ts",
2662
+ types: "./dist/types/build/index.d.ts",
2522
2663
  import: "./src/build/index.ts"
2523
2664
  },
2665
+ "./build/shell-capture": {
2666
+ types: "./dist/types/prerender/build-shell-capture.d.ts",
2667
+ "react-server": "./src/prerender/build-shell-capture.ts",
2668
+ import: "./src/prerender/build-shell-capture.ts"
2669
+ },
2524
2670
  "./host": {
2525
- types: "./src/host/index.ts",
2671
+ types: "./dist/types/host/index.d.ts",
2526
2672
  "react-server": "./src/host/index.ts",
2527
2673
  default: "./src/host/index.ts"
2528
2674
  },
2529
2675
  "./host/testing": {
2530
- types: "./src/host/testing.ts",
2676
+ types: "./dist/types/host/testing.d.ts",
2531
2677
  default: "./src/host/testing.ts"
2532
2678
  },
2533
2679
  "./testing": {
2534
- types: "./src/testing/index.ts",
2680
+ types: "./dist/types/testing/index.d.ts",
2535
2681
  default: "./src/testing/index.ts"
2536
2682
  },
2537
2683
  "./testing/vitest": {
2538
- types: "./src/testing/vitest.ts",
2684
+ types: "./dist/types/testing/vitest.d.ts",
2539
2685
  default: "./dist/testing/vitest.js"
2540
2686
  },
2541
2687
  "./testing/dom": {
2542
- types: "./src/testing/dom.entry.ts",
2688
+ types: "./dist/types/testing/dom.entry.d.ts",
2543
2689
  default: "./src/testing/dom.entry.ts"
2544
2690
  },
2545
2691
  "./testing/e2e": {
2546
- types: "./src/testing/e2e/index.ts",
2692
+ types: "./dist/types/testing/e2e/index.d.ts",
2547
2693
  default: "./src/testing/e2e/index.ts"
2548
2694
  },
2549
2695
  "./testing/flight": {
2550
- types: "./src/testing/flight.entry.ts",
2696
+ types: "./dist/types/testing/flight.entry.d.ts",
2551
2697
  "react-server": "./src/testing/flight.entry.ts",
2552
2698
  default: "./src/testing/flight.entry.ts"
2553
2699
  },
2554
2700
  "./testing/flight-matchers": {
2555
- types: "./src/testing/flight-matchers.ts",
2701
+ types: "./dist/types/testing/flight-matchers.d.ts",
2556
2702
  default: "./src/testing/flight-matchers.ts"
2557
2703
  }
2558
2704
  },
2559
2705
  publishConfig: {
2560
2706
  access: "public",
2561
- tag: "experimental"
2707
+ tag: "latest"
2562
2708
  },
2563
2709
  scripts: {
2564
- build: "pnpm exec esbuild src/vite/index.ts --bundle --format=esm --outfile=dist/vite/index.js --platform=node --packages=external && mkdir -p dist/vite/plugins && cp src/vite/plugins/cloudflare-protocol-loader-hook.mjs dist/vite/plugins/cloudflare-protocol-loader-hook.mjs && pnpm exec esbuild src/testing/vitest.ts --bundle --format=esm --outfile=dist/testing/vitest.js --platform=node --packages=external && pnpm exec esbuild src/bin/rango.ts --bundle --format=esm --outfile=dist/bin/rango.js --platform=node --packages=external --banner:js='#!/usr/bin/env node' && chmod +x dist/bin/rango.js",
2710
+ build: "pnpm run build:types && pnpm exec esbuild src/vite/index.ts --bundle --format=esm --outfile=dist/vite/index.js --platform=node --packages=external && mkdir -p dist/vite/plugins && cp src/vite/plugins/cloudflare-protocol-loader-hook.mjs dist/vite/plugins/cloudflare-protocol-loader-hook.mjs && pnpm exec esbuild src/testing/vitest.ts --bundle --format=esm --outfile=dist/testing/vitest.js --platform=node --packages=external && pnpm exec esbuild src/bin/rango.ts --bundle --format=esm --outfile=dist/bin/rango.js --platform=node --packages=external --banner:js='#!/usr/bin/env node' && chmod +x dist/bin/rango.js",
2711
+ "build:types": "rm -rf dist/types && pnpm exec tsc -p tsconfig.types.json",
2565
2712
  prepublishOnly: "pnpm build",
2566
2713
  typecheck: "tsc --noEmit && tsc -p tsconfig.strict-check.json --noEmit && tsc -p tsconfig.augment-check.json --noEmit",
2567
2714
  test: "playwright test",
2568
2715
  "test:ui": "playwright test --ui",
2569
- "test:hmr-local": "playwright test --project=dev-warmup --project=hmr-routes --project=hmr-basename --project=hmr-prerender --no-deps --workers=1",
2570
- "test:unit": "vitest run",
2716
+ "test:hmr-local": "playwright test --project=dev-warmup --project=hmr-basename --project=hmr-prerender --no-deps --workers=1 && RANGO_E2E_ROUTE_HMR_ONLY=1 playwright test --project=hmr-routes --no-deps --workers=1",
2717
+ "test:hmr-routes-local": "RANGO_E2E_ROUTE_HMR_ONLY=1 playwright test --project=hmr-routes --no-deps --workers=1",
2718
+ "test:unit": "pnpm run build:types && vitest run",
2571
2719
  "test:unit:watch": "vitest",
2572
2720
  "test:unit:rsc": "vitest run --config vitest.rsc.config.ts"
2573
2721
  },
@@ -2636,7 +2784,7 @@ var package_default = {
2636
2784
  }
2637
2785
  },
2638
2786
  engines: {
2639
- node: "^20.19.0 || >=22.12.0"
2787
+ node: ">=24.0.0"
2640
2788
  }
2641
2789
  };
2642
2790
 
@@ -2684,6 +2832,7 @@ function getPackageAliases() {
2684
2832
  }
2685
2833
  function getVendorAliases() {
2686
2834
  const specs = [
2835
+ "@vitejs/plugin-rsc/vendor/react-server-dom/client.browser",
2687
2836
  "@vitejs/plugin-rsc/vendor/react-server-dom/client.edge",
2688
2837
  "@vitejs/plugin-rsc/vendor/react-server-dom/server.edge"
2689
2838
  ];
@@ -3832,6 +3981,13 @@ function createVersionPlugin() {
3832
3981
  return {
3833
3982
  name: "@rangojs/router:version",
3834
3983
  enforce: "pre",
3984
+ // The build-time shell capture phase (producer B, #699) stamps entries
3985
+ // with THIS instance's version — the value folded into the shipped worker
3986
+ // — never the discovery temp server's own version-plugin value (a
3987
+ // different Date.now() stamp that would fail the serve-side gate).
3988
+ api: {
3989
+ getBuildVersion: () => currentVersion
3990
+ },
3835
3991
  configResolved(config) {
3836
3992
  isDev = config.command === "serve";
3837
3993
  resolvedCacheDir = config.cacheDir ? String(config.cacheDir).replace(/\\/g, "/") : void 0;
@@ -3922,6 +4078,7 @@ import * as Vite from "vite";
3922
4078
  import { isAbsolute, resolve as resolve4 } from "node:path";
3923
4079
 
3924
4080
  // src/vite/plugins/performance-tracks.ts
4081
+ init_debug();
3925
4082
  import { readFile } from "node:fs/promises";
3926
4083
  var debug6 = createRangoDebugger(NS.transform);
3927
4084
  var RSDW_PATCH_RE = /((?:var|let|const)\s+\w+\s*=\s*root\._children\s*,\s*(\w+)\s*=\s*root\._debugInfo\s*[;,])/;
@@ -4017,13 +4174,13 @@ function normalizeHostRouterEntry(rawInput, root, exists) {
4017
4174
  }
4018
4175
  return exists(resolve4(root, raw)) ? "./" + raw : raw;
4019
4176
  }
4020
- function createVirtualEntriesPlugin(entries, routerPathRef) {
4177
+ function createVirtualEntriesPlugin(entries, routerPathRef, options) {
4021
4178
  const virtualModules = {};
4022
4179
  if (entries.client === VIRTUAL_IDS.browser) {
4023
4180
  virtualModules[VIRTUAL_IDS.browser] = VIRTUAL_ENTRY_BROWSER;
4024
4181
  }
4025
4182
  if (entries.ssr === VIRTUAL_IDS.ssr) {
4026
- virtualModules[VIRTUAL_IDS.ssr] = VIRTUAL_ENTRY_SSR;
4183
+ virtualModules[VIRTUAL_IDS.ssr] = getVirtualEntrySSR(options?.headScripts);
4027
4184
  }
4028
4185
  const knownIds = new Set(Object.keys(virtualModules));
4029
4186
  if (entries.rsc === VIRTUAL_IDS.rsc) {
@@ -4094,6 +4251,11 @@ function onwarn(warning, defaultHandler) {
4094
4251
  }
4095
4252
  function getManualChunks(id) {
4096
4253
  const normalized = Vite.normalizePath(id);
4254
+ if (/\/browser\/prefetch\/(?:runtime|fetch|queue|observer|policy|resource-ready)\.[cm]?[jt]sx?(?:[?#].*)?$/.test(
4255
+ normalized
4256
+ )) {
4257
+ return void 0;
4258
+ }
4097
4259
  if (normalized.includes("node_modules/react/") || normalized.includes("node_modules/react-dom/") || normalized.includes("node_modules/react-server-dom-webpack/") || normalized.includes("node_modules/@vitejs/plugin-rsc/")) {
4098
4260
  return "react";
4099
4261
  }
@@ -4104,80 +4266,14 @@ function getManualChunks(id) {
4104
4266
  return void 0;
4105
4267
  }
4106
4268
 
4107
- // src/vite/plugins/client-ref-hashing.ts
4108
- import { relative as relative2 } from "node:path";
4109
- import { createHash as createHash2 } from "node:crypto";
4110
- var debug7 = createRangoDebugger(NS.transform);
4111
- var CLIENT_PKG_PROXY_PREFIX = "/@id/__x00__virtual:vite-rsc/client-package-proxy/";
4112
- var CLIENT_IN_SERVER_PKG_PROXY_PREFIX = "/@id/__x00__virtual:vite-rsc/client-in-server-package-proxy/";
4113
- var FS_PREFIX = "/@fs/";
4114
- function hashRefKey(relativeId) {
4115
- return createHash2("sha256").update(relativeId).digest("hex").slice(0, 12);
4116
- }
4117
- function computeProductionHash(projectRoot, refKey) {
4118
- let toHash;
4119
- if (refKey.startsWith(CLIENT_PKG_PROXY_PREFIX)) {
4120
- toHash = refKey.slice(CLIENT_PKG_PROXY_PREFIX.length);
4121
- } else if (refKey.startsWith(CLIENT_IN_SERVER_PKG_PROXY_PREFIX)) {
4122
- const absPath = decodeURIComponent(
4123
- refKey.slice(CLIENT_IN_SERVER_PKG_PROXY_PREFIX.length)
4124
- );
4125
- toHash = relative2(projectRoot, absPath).replaceAll("\\", "/");
4126
- } else if (refKey.startsWith(FS_PREFIX)) {
4127
- const absPath = refKey.slice(FS_PREFIX.length - 1);
4128
- toHash = relative2(projectRoot, absPath).replaceAll("\\", "/");
4129
- } else if (refKey.startsWith("/")) {
4130
- toHash = refKey.slice(1);
4131
- } else {
4132
- return refKey;
4133
- }
4134
- return hashRefKey(toHash);
4135
- }
4136
- var REGISTER_CLIENT_REF_RE = /registerClientReference\(\s*(?:(?:\([^)]*\))|(?:\(\)[\s\S]*?\}))\s*,\s*"([^"]+)"\s*,\s*"[^"]+"\s*\)/g;
4137
- function transformClientRefs(code, projectRoot) {
4138
- if (!code.includes("registerClientReference")) return null;
4139
- let hasReplacement = false;
4140
- const result = code.replace(
4141
- REGISTER_CLIENT_REF_RE,
4142
- (match, refKey) => {
4143
- const hash = computeProductionHash(projectRoot, refKey);
4144
- if (hash === refKey) return match;
4145
- hasReplacement = true;
4146
- return match.replace(`"${refKey}"`, `"${hash}"`);
4147
- }
4148
- );
4149
- return hasReplacement ? result : null;
4150
- }
4151
- function hashClientRefs(projectRoot) {
4152
- const counter = createCounter(debug7, "hash-client-refs");
4153
- return {
4154
- name: "@rangojs/router:hash-client-refs",
4155
- enforce: "post",
4156
- applyToEnvironment(env) {
4157
- return env.name === "rsc";
4158
- },
4159
- buildEnd() {
4160
- counter?.flush();
4161
- },
4162
- transform(code, id) {
4163
- const start = counter ? performance.now() : 0;
4164
- try {
4165
- const result = transformClientRefs(code, projectRoot);
4166
- if (result === null) return;
4167
- return { code: result, map: null };
4168
- } finally {
4169
- counter?.record(id, performance.now() - start);
4170
- }
4171
- }
4172
- };
4173
- }
4174
-
4175
- // src/vite/utils/client-chunks.ts
4176
- var debugChunks = createRangoDebugger(NS.chunks);
4177
- function isSharedRuntime(meta) {
4178
- return [meta.id, meta.normalizedId].some(
4179
- (path6) => path6.includes("/node_modules/") || /\/@rangojs\/router\//.test(path6) || /\/packages\/(rangojs-router|rsc-router)\/(src|dist)\//.test(path6)
4180
- );
4269
+ // src/vite/utils/client-chunks.ts
4270
+ init_debug();
4271
+ init_client_ref_hashing();
4272
+ var debugChunks = createRangoDebugger(NS.chunks);
4273
+ function isSharedRuntime(meta) {
4274
+ return [meta.id, meta.normalizedId].some(
4275
+ (path6) => path6.includes("/node_modules/") || /\/@rangojs\/router\//.test(path6) || /\/packages\/(rangojs-router|rsc-router)\/(src|dist)\//.test(path6)
4276
+ );
4181
4277
  }
4182
4278
  function sanitizeGroup(name) {
4183
4279
  return name.replace(/[^a-zA-Z0-9_-]+/g, "_").replace(/^_+|_+$/g, "") || "app";
@@ -4528,6 +4624,7 @@ function createVersionInjectorPlugin(rscEntryPath) {
4528
4624
  }
4529
4625
 
4530
4626
  // src/vite/plugins/cjs-to-esm.ts
4627
+ init_debug();
4531
4628
  var debug8 = createRangoDebugger(NS.transform);
4532
4629
  function createCjsToEsmPlugin() {
4533
4630
  let isProduction = false;
@@ -4591,11 +4688,39 @@ function createCjsToEsmPlugin() {
4591
4688
 
4592
4689
  // src/vite/router-discovery.ts
4593
4690
  import { createServer as createViteServer } from "vite";
4594
- import { resolve as resolve10 } from "node:path";
4595
- import { readFileSync as readFileSync6 } from "node:fs";
4691
+ import { resolve as resolve11 } from "node:path";
4692
+ import { readFileSync as readFileSync7 } from "node:fs";
4596
4693
  import { createRequire as createRequire3, register } from "node:module";
4597
4694
  import { pathToFileURL as pathToFileURL2 } from "node:url";
4598
4695
 
4696
+ // src/dev-discovery-protocol.ts
4697
+ var DEV_DISCOVERY_READY_EVENT = "rango:dev-discovery-ready";
4698
+ var DEV_DISCOVERY_QUERY_EVENT = "rango:dev-discovery-query";
4699
+ var DEV_DISCOVERY_PROBE_HEADER = "x-rango-dev-discovery-probe";
4700
+ var DEV_DISCOVERY_EPOCH_HEADER = "x-rango-dev-discovery-epoch";
4701
+
4702
+ // src/rsc/shell-serve.ts
4703
+ import React from "react";
4704
+
4705
+ // src/server/context.ts
4706
+ import { AsyncLocalStorage } from "node:async_hooks";
4707
+ var RSC_CONTEXT_KEY = /* @__PURE__ */ Symbol.for("rangojs-router:rsc-context");
4708
+ var RangoContext = globalThis[RSC_CONTEXT_KEY] ??= new AsyncLocalStorage();
4709
+ var LOADER_SCOPE_KEY = /* @__PURE__ */ Symbol.for("rangojs-router:loader-scope");
4710
+ var loaderScopeALS = globalThis[LOADER_SCOPE_KEY] ??= new AsyncLocalStorage();
4711
+ var LOADER_BODY_SCOPE_KEY = /* @__PURE__ */ Symbol.for("rangojs-router:loader-body-scope");
4712
+ var loaderBodyScopeALS = globalThis[LOADER_BODY_SCOPE_KEY] ??= new AsyncLocalStorage();
4713
+ var PUSH_CALLBACK_SCOPE_KEY = /* @__PURE__ */ Symbol.for(
4714
+ "rangojs-router:push-callback-scope"
4715
+ );
4716
+ var pushCallbackScopeALS = globalThis[PUSH_CALLBACK_SCOPE_KEY] ??= new AsyncLocalStorage();
4717
+
4718
+ // src/rsc/shell-serve.ts
4719
+ var DEV_SHELL_PROBE_TIMEOUT_MS = 1e4;
4720
+ function normalizeCaptureTimeout(value) {
4721
+ return typeof value === "number" && Number.isFinite(value) && value >= 1 ? value : void 0;
4722
+ }
4723
+
4599
4724
  // src/vite/inject-client-debug.ts
4600
4725
  function isRouterInternalDebugId(id) {
4601
4726
  if (!id.includes("internal-debug")) return false;
@@ -4756,6 +4881,9 @@ function walk(node, visit) {
4756
4881
  }
4757
4882
  }
4758
4883
 
4884
+ // src/vite/router-discovery.ts
4885
+ init_client_ref_hashing();
4886
+
4759
4887
  // src/vite/utils/bundle-analysis.ts
4760
4888
  function findMatchingParenInBundle(code, openParenPos) {
4761
4889
  let depth = 1;
@@ -4853,19 +4981,21 @@ function createDiscoveryState(entryPath, opts) {
4853
4981
  opts,
4854
4982
  mergedRouteManifest: null,
4855
4983
  perRouterManifests: [],
4856
- mergedPrecomputedEntries: null,
4857
- mergedRouteTrie: null,
4858
4984
  perRouterTrieMap: /* @__PURE__ */ new Map(),
4859
4985
  perRouterPrecomputedMap: /* @__PURE__ */ new Map(),
4860
4986
  perRouterManifestDataMap: /* @__PURE__ */ new Map(),
4861
4987
  prerenderManifestEntries: null,
4862
4988
  staticManifestEntries: null,
4989
+ shellCandidates: null,
4990
+ prerenderPayloadValues: null,
4991
+ shellPhaseTempServer: null,
4863
4992
  handlerChunkInfoMap: /* @__PURE__ */ new Map(),
4864
4993
  staticHandlerChunkInfoMap: /* @__PURE__ */ new Map(),
4865
4994
  rscEntryFileName: null,
4866
4995
  resolvedPrerenderModules: void 0,
4867
4996
  resolvedStaticModules: void 0,
4868
4997
  discoveryDone: null,
4998
+ devDiscoveryEpoch: opts?.preset === "cloudflare" ? Date.now() : void 0,
4869
4999
  devServerOrigin: null,
4870
5000
  devServer: null,
4871
5001
  selfWrittenGenFiles: /* @__PURE__ */ new Map(),
@@ -4909,13 +5039,13 @@ function checkSelfGenWrite(state, filePath, consume) {
4909
5039
  }
4910
5040
 
4911
5041
  // src/router/logging.ts
4912
- import { AsyncLocalStorage } from "node:async_hooks";
5042
+ import { AsyncLocalStorage as AsyncLocalStorage2 } from "node:async_hooks";
4913
5043
 
4914
5044
  // src/internal-debug.ts
4915
5045
  var INTERNAL_RANGO_DEBUG = typeof process !== "undefined" && Boolean(process.env?.INTERNAL_RANGO_DEBUG);
4916
5046
 
4917
5047
  // src/router/logging.ts
4918
- var routerLogContext = new AsyncLocalStorage();
5048
+ var routerLogContext = new AsyncLocalStorage2();
4919
5049
 
4920
5050
  // src/router/url-params.ts
4921
5051
  var PATH_SAFE_ESCAPES = {
@@ -5037,10 +5167,9 @@ function buildRouteToStaticPrefix(prefixTree, result) {
5037
5167
  }
5038
5168
 
5039
5169
  // src/build/route-trie.ts
5040
- function buildRouteTrie(routeManifest, routeAncestry, routeToStaticPrefix, routeTrailingSlash, prerenderRouteNames, passthroughRouteNames, responseTypeRoutes) {
5170
+ function buildRouteTrie(routeManifest, routeToStaticPrefix, routeTrailingSlash, prerenderRouteNames, passthroughRouteNames, responseTypeRoutes) {
5041
5171
  const root = {};
5042
5172
  for (const [routeName, pattern] of Object.entries(routeManifest)) {
5043
- const ancestry = routeAncestry[routeName] || [];
5044
5173
  const staticPrefix = routeToStaticPrefix[routeName] || "";
5045
5174
  const trailingSlash = routeTrailingSlash?.[routeName];
5046
5175
  const responseType = responseTypeRoutes?.[routeName];
@@ -5050,7 +5179,6 @@ function buildRouteTrie(routeManifest, routeAncestry, routeToStaticPrefix, route
5050
5179
  insertRoute(root, segments, 0, {
5051
5180
  n: routeName,
5052
5181
  sp: staticPrefix,
5053
- a: ancestry,
5054
5182
  ...trailingSlash ? { ts: trailingSlash } : {},
5055
5183
  ...prerenderRouteNames?.has(routeName) ? { pr: true } : {},
5056
5184
  ...passthroughRouteNames?.has(routeName) ? { pt: true } : {},
@@ -5083,8 +5211,7 @@ function sortSuffixParams(node) {
5083
5211
  }
5084
5212
  }
5085
5213
  function buildPerRouterTrie(manifest) {
5086
- const ancestry = manifest._routeAncestry;
5087
- if (!ancestry || Object.keys(ancestry).length === 0) {
5214
+ if (Object.keys(manifest.routeManifest).length === 0) {
5088
5215
  return null;
5089
5216
  }
5090
5217
  const routeToStaticPrefix = {};
@@ -5096,7 +5223,6 @@ function buildPerRouterTrie(manifest) {
5096
5223
  }
5097
5224
  return buildRouteTrie(
5098
5225
  manifest.routeManifest,
5099
- ancestry,
5100
5226
  routeToStaticPrefix,
5101
5227
  manifest.routeTrailingSlash,
5102
5228
  manifest.prerenderRoutes ? new Set(manifest.prerenderRoutes) : void 0,
@@ -5442,18 +5568,24 @@ function getStagedAssetDir(projectRoot) {
5442
5568
  function resetStagedBuildAssets(projectRoot) {
5443
5569
  rmSync(getStagedAssetDir(projectRoot), { recursive: true, force: true });
5444
5570
  }
5445
- function stageBuildAssetModule(projectRoot, prefix, exportValue) {
5446
- const stagedDir = getStagedAssetDir(projectRoot);
5447
- mkdirSync(stagedDir, { recursive: true });
5571
+ function writeBuildAssetModule(dir, prefix, exportValue) {
5572
+ mkdirSync(dir, { recursive: true });
5448
5573
  const contentHash = createHash4("sha256").update(exportValue).digest("hex").slice(0, 8);
5449
5574
  const fileName = `${prefix}-${contentHash}.js`;
5450
- const filePath = resolve7(stagedDir, fileName);
5575
+ const filePath = resolve7(dir, fileName);
5451
5576
  if (!existsSync5(filePath)) {
5452
5577
  writeFileSync2(filePath, `export default ${exportValue};
5453
5578
  `);
5454
5579
  }
5455
5580
  return fileName;
5456
5581
  }
5582
+ function stageBuildAssetModule(projectRoot, prefix, exportValue) {
5583
+ return writeBuildAssetModule(
5584
+ getStagedAssetDir(projectRoot),
5585
+ prefix,
5586
+ exportValue
5587
+ );
5588
+ }
5457
5589
  function copyStagedBuildAssets(projectRoot, fileNames) {
5458
5590
  const stagedDir = getStagedAssetDir(projectRoot);
5459
5591
  const distAssetsDir = resolve7(projectRoot, "dist/rsc/assets");
@@ -5469,6 +5601,7 @@ function copyStagedBuildAssets(projectRoot, fileNames) {
5469
5601
  }
5470
5602
 
5471
5603
  // src/vite/discovery/prerender-collection.ts
5604
+ init_debug();
5472
5605
  var debug9 = createRangoDebugger(NS.prerender);
5473
5606
  async function expandPrerenderRoutes(state, rscEnv, registry, allManifests) {
5474
5607
  if (!state.opts?.enableBuildPrerender || !state.isBuildMode) return;
@@ -5676,6 +5809,18 @@ async function expandPrerenderRoutes(state, rscEnv, registry, allManifests) {
5676
5809
  "__pr",
5677
5810
  mainValue
5678
5811
  );
5812
+ if (result.ppr !== void 0 && result.ppr !== false) {
5813
+ (state.shellCandidates ??= []).push({
5814
+ urlPath: entry.urlPath,
5815
+ routeName: result.routeName,
5816
+ paramHash,
5817
+ ppr: result.ppr === true ? true : result.ppr
5818
+ });
5819
+ (state.prerenderPayloadValues ??= /* @__PURE__ */ new Map()).set(
5820
+ mainKey,
5821
+ mainValue
5822
+ );
5823
+ }
5679
5824
  if (result.interceptSegments?.length) {
5680
5825
  const interceptKey = `${result.routeName}/${paramHash}/i`;
5681
5826
  const interceptValue = JSON.stringify({
@@ -5767,15 +5912,21 @@ async function renderStaticHandlers(state, rscEnv, registry) {
5767
5912
  if (def.options?.passthrough) continue;
5768
5913
  const startHandler = performance.now();
5769
5914
  let handled = false;
5770
- for (const [, routerInstance] of registry) {
5915
+ const owner = def.$$routerId;
5916
+ const owned = owner !== void 0 ? registry.get(owner) : void 0;
5917
+ const candidates = owned ? [owned] : [...registry.values()];
5918
+ for (const routerInstance of candidates) {
5771
5919
  if (!routerInstance.renderStaticSegment) continue;
5772
5920
  try {
5773
5921
  const result = await routerInstance.renderStaticSegment(
5774
5922
  def.handler,
5775
5923
  def.$$id,
5776
- def.$$routePrefix,
5924
+ // Full route name when stamped; the historical $$routePrefix is a
5925
+ // name PREFIX (never in the root-scope registry) kept as fallback.
5926
+ def.$$routeName ?? def.$$routePrefix,
5777
5927
  state.resolvedBuildEnv,
5778
- !state.isBuildMode
5928
+ !state.isBuildMode,
5929
+ def.$$rootScoped
5779
5930
  );
5780
5931
  if (result) {
5781
5932
  const hasHandles = result.handles !== "";
@@ -5926,6 +6077,8 @@ function describeDiscoveryFailure(err, opts = {}) {
5926
6077
  }
5927
6078
 
5928
6079
  // src/vite/discovery/discover-routers.ts
6080
+ init_debug();
6081
+ init_client_ref_hashing();
5929
6082
  var debug10 = createRangoDebugger(NS.discovery);
5930
6083
  async function discoverRouters(state, rscEnv) {
5931
6084
  if (!state.resolvedEntryPath) return;
@@ -5985,13 +6138,10 @@ async function discoverRouters(state, rscEnv) {
5985
6138
  throw new Error(formatNestedRouterConflictError(nestedRouterConflict));
5986
6139
  }
5987
6140
  const newMergedRouteManifest = {};
5988
- const newMergedPrecomputedEntries = [];
5989
6141
  const newPerRouterManifests = [];
5990
6142
  const newPerRouterManifestDataMap = /* @__PURE__ */ new Map();
5991
6143
  const newPerRouterPrecomputedMap = /* @__PURE__ */ new Map();
5992
6144
  const newPerRouterTrieMap = /* @__PURE__ */ new Map();
5993
- let mergedRouteAncestry = {};
5994
- let mergedRouteTrailingSlash = {};
5995
6145
  let routerMountIndex = 0;
5996
6146
  const allManifests = [];
5997
6147
  const clientChunkCtx = state.opts?.clientChunkCtx;
@@ -6012,6 +6162,7 @@ async function discoverRouters(state, rscEnv) {
6012
6162
  router.urlpatterns,
6013
6163
  routerMountIndex,
6014
6164
  {
6165
+ routerId: id,
6015
6166
  ...router.__basename ? { urlPrefix: router.__basename } : {},
6016
6167
  ...collectClientFallbackRef ? { collectClientFallbackRef } : {}
6017
6168
  }
@@ -6049,23 +6200,17 @@ async function discoverRouters(state, rscEnv) {
6049
6200
  newPerRouterManifests.push({
6050
6201
  id,
6051
6202
  routeManifest: manifest.routeManifest,
6203
+ routeTrailingSlash: manifest.routeTrailingSlash,
6052
6204
  routeSearchSchemas: manifest.routeSearchSchemas,
6053
6205
  sourceFile: router.__sourceFile,
6054
6206
  factoryOnlyPrefixes
6055
6207
  });
6056
- if (manifest._routeAncestry) {
6057
- Object.assign(mergedRouteAncestry, manifest._routeAncestry);
6058
- }
6059
- if (manifest.routeTrailingSlash) {
6060
- Object.assign(mergedRouteTrailingSlash, manifest.routeTrailingSlash);
6061
- }
6062
6208
  const routerPrecomputed = [];
6063
6209
  flattenLeafEntries(
6064
6210
  manifest.prefixTree,
6065
6211
  manifest.routeManifest,
6066
6212
  routerPrecomputed
6067
6213
  );
6068
- newMergedPrecomputedEntries.push(...routerPrecomputed);
6069
6214
  newPerRouterManifestDataMap.set(id, manifest.routeManifest);
6070
6215
  newPerRouterPrecomputedMap.set(id, routerPrecomputed);
6071
6216
  console.log(
@@ -6087,51 +6232,12 @@ async function discoverRouters(state, rscEnv) {
6087
6232
  allManifests.length,
6088
6233
  (performance.now() - manifestGenStart).toFixed(1)
6089
6234
  );
6090
- let newMergedRouteTrie = null;
6091
6235
  const trieStart = debug10 ? performance.now() : 0;
6092
6236
  if (Object.keys(newMergedRouteManifest).length > 0) {
6093
- if (mergedRouteAncestry) {
6094
- const routeToStaticPrefix = {};
6095
- for (const { manifest } of allManifests) {
6096
- for (const name of Object.keys(manifest.routeManifest)) {
6097
- if (!(name in routeToStaticPrefix)) {
6098
- routeToStaticPrefix[name] = "";
6099
- }
6100
- }
6101
- buildRouteToStaticPrefix(manifest.prefixTree, routeToStaticPrefix);
6102
- }
6103
- const prerenderRouteNames = /* @__PURE__ */ new Set();
6104
- const passthroughRouteNames = /* @__PURE__ */ new Set();
6105
- const mergedResponseTypeRoutes = {};
6106
- for (const { manifest } of allManifests) {
6107
- if (manifest.prerenderRoutes) {
6108
- for (const name of manifest.prerenderRoutes) {
6109
- prerenderRouteNames.add(name);
6110
- }
6111
- }
6112
- if (manifest.passthroughRoutes) {
6113
- for (const name of manifest.passthroughRoutes) {
6114
- passthroughRouteNames.add(name);
6115
- }
6116
- }
6117
- if (manifest.responseTypeRoutes) {
6118
- Object.assign(mergedResponseTypeRoutes, manifest.responseTypeRoutes);
6119
- }
6120
- }
6121
- newMergedRouteTrie = buildRouteTrie(
6122
- newMergedRouteManifest,
6123
- mergedRouteAncestry,
6124
- routeToStaticPrefix,
6125
- mergedRouteTrailingSlash,
6126
- prerenderRouteNames,
6127
- passthroughRouteNames,
6128
- mergedResponseTypeRoutes
6129
- );
6130
- for (const { id, manifest } of allManifests) {
6131
- const perRouterTrie = buildPerRouterTrie(manifest);
6132
- if (perRouterTrie) {
6133
- newPerRouterTrieMap.set(id, perRouterTrie);
6134
- }
6237
+ for (const { id, manifest } of allManifests) {
6238
+ const perRouterTrie = buildPerRouterTrie(manifest);
6239
+ if (perRouterTrie) {
6240
+ newPerRouterTrieMap.set(id, perRouterTrie);
6135
6241
  }
6136
6242
  }
6137
6243
  }
@@ -6140,17 +6246,287 @@ async function discoverRouters(state, rscEnv) {
6140
6246
  (performance.now() - trieStart).toFixed(1)
6141
6247
  );
6142
6248
  state.mergedRouteManifest = newMergedRouteManifest;
6143
- state.mergedPrecomputedEntries = newMergedPrecomputedEntries;
6144
6249
  state.perRouterManifests = newPerRouterManifests;
6145
6250
  state.perRouterManifestDataMap = newPerRouterManifestDataMap;
6146
6251
  state.perRouterPrecomputedMap = newPerRouterPrecomputedMap;
6147
6252
  state.perRouterTrieMap = newPerRouterTrieMap;
6148
- state.mergedRouteTrie = newMergedRouteTrie;
6253
+ const perRouterSetters = [
6254
+ [newPerRouterManifestDataMap, "setRouterManifest"],
6255
+ [newPerRouterTrieMap, "setRouterTrie"],
6256
+ [newPerRouterPrecomputedMap, "setRouterPrecomputedEntries"]
6257
+ ];
6258
+ for (const [map, fn] of perRouterSetters) {
6259
+ const setter = serverMod[fn];
6260
+ if (typeof setter !== "function") continue;
6261
+ for (const [routerId, value] of map) setter(routerId, value);
6262
+ }
6149
6263
  await expandPrerenderRoutes(state, rscEnv, registry, allManifests);
6150
6264
  await renderStaticHandlers(state, rscEnv, registry);
6151
6265
  return serverMod;
6152
6266
  }
6153
6267
 
6268
+ // src/vite/discovery/shell-prerender-phase.ts
6269
+ import { existsSync as existsSync6, readdirSync as readdirSync2, readFileSync as readFileSync4, writeFileSync as writeFileSync3 } from "node:fs";
6270
+ import { join as join4, resolve as resolve8 } from "node:path";
6271
+
6272
+ // src/prerender/shell-manifest-key.ts
6273
+ function buildShellManifestKey(pathname) {
6274
+ return pathname;
6275
+ }
6276
+
6277
+ // src/vite/discovery/shell-prerender-phase.ts
6278
+ init_debug();
6279
+ var debug11 = createRangoDebugger(NS.prerender);
6280
+ async function runShellPrerenderPhase(s, builder) {
6281
+ const tempServer = s.shellPhaseTempServer;
6282
+ if (!s.isBuildMode || !s.shellCandidates?.length || !tempServer) return;
6283
+ const candidates = s.shellCandidates;
6284
+ const startTotal = performance.now();
6285
+ console.log(`[rango] Shell-prerendering ${candidates.length} URL(s)...`);
6286
+ let restoreClientRequire;
6287
+ try {
6288
+ const rscEnv = tempServer.environments?.rsc;
6289
+ const ssrEnv = tempServer.environments?.ssr;
6290
+ if (!rscEnv?.runner || !ssrEnv?.runner) {
6291
+ console.warn(
6292
+ `[rango] shell prerender: temp server runners unavailable (rsc=${String(!!rscEnv?.runner)}, ssr=${String(!!ssrEnv?.runner)}); skipping \u2014 routes keep runtime shell capture.`
6293
+ );
6294
+ return;
6295
+ }
6296
+ const versionPlugin = (builder?.config?.plugins ?? []).find(
6297
+ (p) => p?.name === "@rangojs/router:version"
6298
+ );
6299
+ const buildVersion = versionPlugin?.api?.getBuildVersion?.();
6300
+ if (!buildVersion) {
6301
+ console.warn(
6302
+ "[rango] shell prerender: main build version unavailable; skipping \u2014 routes keep runtime shell capture."
6303
+ );
6304
+ return;
6305
+ }
6306
+ const payloads = s.prerenderPayloadValues ?? /* @__PURE__ */ new Map();
6307
+ const fetchedKeys = /* @__PURE__ */ new Set();
6308
+ globalThis.__loadPrerenderManifestModule = async () => ({
6309
+ default: Object.fromEntries([...payloads.keys()].map((k) => [k, k])),
6310
+ loadPrerenderAsset: async (spec) => {
6311
+ fetchedKeys.add(spec);
6312
+ return { default: JSON.parse(payloads.get(spec)) };
6313
+ }
6314
+ });
6315
+ const ssrRunner = ssrEnv.runner;
6316
+ const ssrPkg = await ssrRunner.import("@rangojs/router/ssr");
6317
+ const ssrDeps = await ssrRunner.import("@rangojs/router/internal/deps/ssr");
6318
+ const reactDomServer = await ssrRunner.import("react-dom/server.edge");
6319
+ const reactDomStatic = await ssrRunner.import("react-dom/static.edge");
6320
+ const htmlStream = await ssrRunner.import(
6321
+ "@rangojs/router/internal/deps/html-stream-server"
6322
+ );
6323
+ const clientOutDir = builder?.environments?.client?.config?.build?.outDir ?? resolve8(s.projectRoot, "dist/client");
6324
+ const clientAssetsDir = join4(clientOutDir, "assets");
6325
+ const entryFile = existsSync6(clientAssetsDir) ? readdirSync2(clientAssetsDir).find((f) => /^index-.*\.js$/.test(f)) : void 0;
6326
+ if (!entryFile) {
6327
+ console.warn(
6328
+ `[rango] shell prerender: built client entry not found under ${clientAssetsDir}; skipping \u2014 routes keep runtime shell capture.`
6329
+ );
6330
+ return;
6331
+ }
6332
+ const base = builder?.config?.base ?? "/";
6333
+ const normalizedBase = base.endsWith("/") ? base : `${base}/`;
6334
+ const bootstrapContent = `import("${normalizedBase}assets/${entryFile}")`;
6335
+ debug11?.("shell prerender bootstrap: %s", bootstrapContent);
6336
+ const minimalPlugin = (tempServer.config?.plugins ?? []).find(
6337
+ (p) => p?.name === "rsc:minimal"
6338
+ );
6339
+ const rscManager = minimalPlugin?.api?.manager;
6340
+ const { computeProductionHash: computeProductionHash2 } = await Promise.resolve().then(() => (init_client_ref_hashing(), client_ref_hashing_exports));
6341
+ let hashToDevKey = /* @__PURE__ */ new Map();
6342
+ const rebuildHashMap = () => {
6343
+ hashToDevKey = /* @__PURE__ */ new Map();
6344
+ const metaMap = rscManager?.clientReferenceMetaMap ?? {};
6345
+ for (const meta of Object.values(metaMap)) {
6346
+ hashToDevKey.set(
6347
+ computeProductionHash2(s.projectRoot, meta.referenceKey),
6348
+ meta.referenceKey
6349
+ );
6350
+ }
6351
+ };
6352
+ const origClientRequire = globalThis.__vite_rsc_client_require__;
6353
+ if (typeof origClientRequire === "function") {
6354
+ restoreClientRequire = () => {
6355
+ globalThis.__vite_rsc_client_require__ = origClientRequire;
6356
+ };
6357
+ globalThis.__vite_rsc_client_require__ = (id) => {
6358
+ const base2 = id.split("$$cache=")[0];
6359
+ let mapped = hashToDevKey.get(base2);
6360
+ if (mapped === void 0) {
6361
+ rebuildHashMap();
6362
+ mapped = hashToDevKey.get(base2);
6363
+ }
6364
+ return origClientRequire(mapped ?? id);
6365
+ };
6366
+ }
6367
+ const captureShellHTML = ssrPkg.createShellCaptureHandler({
6368
+ createFromReadableStream: ssrDeps.createFromReadableStream,
6369
+ renderToReadableStream: reactDomServer.renderToReadableStream ?? reactDomServer.default?.renderToReadableStream,
6370
+ resume: reactDomServer.resume ?? reactDomServer.default?.resume,
6371
+ prerender: reactDomStatic.prerender ?? reactDomStatic.default?.prerender,
6372
+ injectRSCPayload: htmlStream.injectRSCPayload,
6373
+ headScripts: "preinit",
6374
+ loadBootstrapScriptContent: async () => bootstrapContent
6375
+ });
6376
+ const rscRunner = rscEnv.runner;
6377
+ const captureMod = await rscRunner.import(
6378
+ "@rangojs/router/build/shell-capture"
6379
+ );
6380
+ const serverMod = await rscRunner.import("@rangojs/router/server");
6381
+ const registry = serverMod.RouterRegistry;
6382
+ const staged = [];
6383
+ let skipCount = 0;
6384
+ const pathCounts = /* @__PURE__ */ new Map();
6385
+ for (const cand of candidates) {
6386
+ pathCounts.set(cand.urlPath, (pathCounts.get(cand.urlPath) ?? 0) + 1);
6387
+ }
6388
+ for (const cand of candidates) {
6389
+ if ((pathCounts.get(cand.urlPath) ?? 0) > 1) {
6390
+ console.warn(
6391
+ `[rango] SHELL SKIP ${cand.urlPath.padEnd(34)} - pathname claimed by multiple prerender routes; routes keep runtime capture`
6392
+ );
6393
+ skipCount++;
6394
+ continue;
6395
+ }
6396
+ const startUrl = performance.now();
6397
+ const policy = captureMod.resolveBuildPprConfig(cand.ppr);
6398
+ const mainKey = `${cand.routeName}/${cand.paramHash}`;
6399
+ let handled = false;
6400
+ const mismatches = [];
6401
+ for (const [, routerInstance] of registry) {
6402
+ if (typeof routerInstance.match !== "function") continue;
6403
+ try {
6404
+ const res = await captureMod.captureShellForBuild({
6405
+ router: routerInstance,
6406
+ urlPath: cand.urlPath,
6407
+ routeName: cand.routeName,
6408
+ key: `${cand.urlPath}:shell`,
6409
+ ttl: policy.ttl,
6410
+ swr: policy.swr,
6411
+ tags: policy.tags,
6412
+ maxSnapshotBytes: policy.maxSnapshotBytes,
6413
+ captureTimeout: policy.captureTimeout,
6414
+ buildEnv: s.resolvedBuildEnv,
6415
+ buildVersion,
6416
+ captureShellHTML,
6417
+ debug: !!debug11
6418
+ });
6419
+ if (res.outcome === "route-mismatch") {
6420
+ mismatches.push(res.matchedRouteName ?? "(no match)");
6421
+ continue;
6422
+ }
6423
+ handled = true;
6424
+ const elapsed = (performance.now() - startUrl).toFixed(0);
6425
+ if (res.outcome !== "stored" || !res.entry) {
6426
+ console.warn(
6427
+ `[rango] SHELL SKIP ${cand.urlPath.padEnd(34)} (${elapsed}ms) - capture ${res.outcome}; route keeps runtime capture`
6428
+ );
6429
+ skipCount++;
6430
+ break;
6431
+ }
6432
+ if (!fetchedKeys.has(mainKey)) {
6433
+ console.warn(
6434
+ `[rango] SHELL SKIP ${cand.urlPath.padEnd(34)} (${elapsed}ms) - capture did not replay the prerender store; route keeps runtime capture`
6435
+ );
6436
+ skipCount++;
6437
+ break;
6438
+ }
6439
+ const value = {
6440
+ entry: res.entry,
6441
+ ttl: policy.ttl,
6442
+ swr: policy.swr,
6443
+ tags: res.tags,
6444
+ routeName: cand.routeName
6445
+ };
6446
+ staged.push({
6447
+ key: buildShellManifestKey(cand.urlPath),
6448
+ value: JSON.stringify(value)
6449
+ });
6450
+ console.log(
6451
+ `[rango] SHELL OK ${cand.urlPath.padEnd(34)} (${elapsed}ms)`
6452
+ );
6453
+ break;
6454
+ } catch (err) {
6455
+ handled = true;
6456
+ const elapsed = (performance.now() - startUrl).toFixed(0);
6457
+ console.warn(
6458
+ `[rango] SHELL SKIP ${cand.urlPath.padEnd(34)} (${elapsed}ms) - ${err?.message ?? err}; route keeps runtime capture`
6459
+ );
6460
+ skipCount++;
6461
+ break;
6462
+ }
6463
+ }
6464
+ if (!handled) {
6465
+ console.warn(
6466
+ `[rango] SHELL SKIP ${cand.urlPath.padEnd(34)} - no router matched "${cand.routeName}"` + (mismatches.length > 0 ? ` (matched: ${mismatches.join(", ")})` : "") + "; route keeps runtime capture"
6467
+ );
6468
+ skipCount++;
6469
+ }
6470
+ }
6471
+ if (staged.length > 0) {
6472
+ const rscOutDir = builder?.environments?.rsc?.config?.build?.outDir ?? resolve8(s.projectRoot, "dist/rsc");
6473
+ writeShellManifest(s, rscOutDir, staged);
6474
+ }
6475
+ const totalElapsed = (performance.now() - startTotal).toFixed(0);
6476
+ const parts = [`${staged.length} done`];
6477
+ if (skipCount > 0) parts.push(`${skipCount} skipped`);
6478
+ console.log(
6479
+ `[rango] Shell prerender complete: ${parts.join(", ")} (${totalElapsed}ms total)`
6480
+ );
6481
+ } catch (err) {
6482
+ console.warn(
6483
+ `[rango] shell prerender phase failed: ${err?.message ?? err}; routes keep runtime shell capture.`
6484
+ );
6485
+ } finally {
6486
+ delete globalThis.__loadPrerenderManifestModule;
6487
+ restoreClientRequire?.();
6488
+ }
6489
+ }
6490
+ function writeShellManifest(s, rscOutDir, staged) {
6491
+ const rscEntryPath = resolve8(rscOutDir, s.rscEntryFileName ?? "index.js");
6492
+ if (!existsSync6(rscEntryPath)) {
6493
+ console.warn(
6494
+ `[rango] shell prerender: RSC entry not found at ${rscEntryPath}; entries not persisted \u2014 routes keep runtime capture.`
6495
+ );
6496
+ return;
6497
+ }
6498
+ const assetsDir = resolve8(rscOutDir, "assets");
6499
+ let totalBytes = 0;
6500
+ const manifestMap = {};
6501
+ const countedFiles = /* @__PURE__ */ new Set();
6502
+ for (const { key, value } of staged) {
6503
+ const fileName = writeBuildAssetModule(assetsDir, "__ps", value);
6504
+ if (!countedFiles.has(fileName)) {
6505
+ countedFiles.add(fileName);
6506
+ totalBytes += Buffer.byteLength(value) + "export default ;\n".length;
6507
+ }
6508
+ manifestMap[key] = `./assets/${fileName}`;
6509
+ }
6510
+ const manifestCode = [
6511
+ `const m=${jsonParseExpression(manifestMap)};`,
6512
+ `export function loadShellAsset(s){return import(s)}`,
6513
+ `export default m;`,
6514
+ ""
6515
+ ].join("\n");
6516
+ writeFileSync3(resolve8(rscOutDir, "__shell-manifest.js"), manifestCode);
6517
+ totalBytes += Buffer.byteLength(manifestCode);
6518
+ const rscCode = readFileSync4(rscEntryPath, "utf-8");
6519
+ if (!rscCode.includes("__shell-manifest.js")) {
6520
+ const injection = `globalThis.__loadShellManifestModule = () => import("./__shell-manifest.js");
6521
+ `;
6522
+ writeFileSync3(rscEntryPath, injection + rscCode);
6523
+ }
6524
+ const totalKB = (totalBytes / 1024).toFixed(1);
6525
+ console.log(
6526
+ `[rango] Wrote shell assets (${totalKB} KB total, ${staged.length} entries)`
6527
+ );
6528
+ }
6529
+
6154
6530
  // src/vite/discovery/dev-prerender-cache.ts
6155
6531
  function payloadBodiesFromResult(result) {
6156
6532
  const main = JSON.stringify({
@@ -6189,8 +6565,8 @@ function createDevPrerenderCache(maxEntriesPerRouter = MAX_ENTRIES_PER_ROUTER) {
6189
6565
  }
6190
6566
 
6191
6567
  // src/vite/discovery/route-types-writer.ts
6192
- import { dirname as dirname3, join as join4, resolve as resolve8 } from "node:path";
6193
- import { readFileSync as readFileSync4, writeFileSync as writeFileSync3, existsSync as existsSync6, unlinkSync as unlinkSync2 } from "node:fs";
6568
+ import { dirname as dirname3, join as join5, resolve as resolve9 } from "node:path";
6569
+ import { readFileSync as readFileSync5, writeFileSync as writeFileSync4, existsSync as existsSync7, unlinkSync as unlinkSync2 } from "node:fs";
6194
6570
  function filterUserNamedRoutes(manifest) {
6195
6571
  const filtered = {};
6196
6572
  for (const [name, pattern] of Object.entries(manifest)) {
@@ -6201,10 +6577,10 @@ function filterUserNamedRoutes(manifest) {
6201
6577
  return filtered;
6202
6578
  }
6203
6579
  function writeGenFileIfChanged(state, outPath, source, opts) {
6204
- const existing = existsSync6(outPath) ? readFileSync4(outPath, "utf-8") : null;
6580
+ const existing = existsSync7(outPath) ? readFileSync5(outPath, "utf-8") : null;
6205
6581
  if (existing === source) return;
6206
6582
  markSelfGenWrite(state, outPath, source);
6207
- writeFileSync3(outPath, source);
6583
+ writeFileSync4(outPath, source);
6208
6584
  if (opts?.log) console.log(`[rango] Generated route types -> ${outPath}`);
6209
6585
  }
6210
6586
  function writeCombinedRouteTypesWithTracking(state, opts) {
@@ -6219,10 +6595,10 @@ function writeRouteTypesFiles(state) {
6219
6595
  if (state.perRouterManifests.length === 0) return;
6220
6596
  try {
6221
6597
  const entryDir = dirname3(
6222
- resolve8(state.projectRoot, state.resolvedEntryPath)
6598
+ resolve9(state.projectRoot, state.resolvedEntryPath)
6223
6599
  );
6224
- const oldCombinedPath = join4(entryDir, "named-routes.gen.ts");
6225
- if (existsSync6(oldCombinedPath)) {
6600
+ const oldCombinedPath = join5(entryDir, "named-routes.gen.ts");
6601
+ if (existsSync7(oldCombinedPath)) {
6226
6602
  unlinkSync2(oldCombinedPath);
6227
6603
  console.log(
6228
6604
  `[rango] Removed stale combined route types: ${oldCombinedPath}`
@@ -6303,13 +6679,21 @@ function supplementGenFilesWithRuntimeRoutes(state) {
6303
6679
  }
6304
6680
 
6305
6681
  // src/vite/discovery/virtual-module-codegen.ts
6306
- import { dirname as dirname4, basename, join as join5 } from "node:path";
6682
+ import { mkdirSync as mkdirSync2, writeFileSync as writeFileSync5 } from "node:fs";
6683
+ import { dirname as dirname4, basename, join as join6 } from "node:path";
6684
+ var MANIFEST_EXTERNALIZE_THRESHOLD = 512 * 1024;
6685
+ function devDiscoveryBootstrap(state) {
6686
+ if (state.isBuildMode || state.opts?.preset !== "cloudflare" || state.devDiscoveryEpoch === void 0) {
6687
+ return [];
6688
+ }
6689
+ const epoch = state.devDiscoveryEpoch;
6690
+ return [`globalThis.__RANGO_DEV_DISCOVERY_EPOCH = ${epoch};`];
6691
+ }
6307
6692
  function generateRoutesManifestModule(state) {
6308
6693
  const hasManifest = state.mergedRouteManifest && Object.keys(state.mergedRouteManifest).length > 0;
6309
6694
  if (hasManifest) {
6310
6695
  const genFileImports = [];
6311
- const genFileVars = [];
6312
- const routersWithoutGenFile = [];
6696
+ const genFileVarByEntry = [];
6313
6697
  let varIdx = 0;
6314
6698
  for (const entry of state.perRouterManifests) {
6315
6699
  if (entry.sourceFile) {
@@ -6318,7 +6702,7 @@ function generateRoutesManifestModule(state) {
6318
6702
  /\.(tsx?|jsx?)$/,
6319
6703
  ""
6320
6704
  );
6321
- const genPath = join5(
6705
+ const genPath = join6(
6322
6706
  routerDir,
6323
6707
  `${routerBasename}.named-routes.gen.js`
6324
6708
  ).replaceAll("\\", "/");
@@ -6326,16 +6710,19 @@ function generateRoutesManifestModule(state) {
6326
6710
  genFileImports.push(
6327
6711
  `import { NamedRoutes as ${varName} } from ${JSON.stringify(genPath)};`
6328
6712
  );
6329
- genFileVars.push(varName);
6713
+ genFileVarByEntry.push(varName);
6330
6714
  } else {
6331
- routersWithoutGenFile.push({
6332
- id: entry.id,
6333
- manifest: entry.routeManifest
6334
- });
6715
+ genFileVarByEntry.push(null);
6335
6716
  }
6336
6717
  }
6337
- const lines = [
6338
- `import { setCachedManifest, setRouterManifest, registerRouterManifestLoader, clearAllRouterData } from "@rangojs/router/server";`,
6718
+ const serverImports = [
6719
+ "setCachedManifest",
6720
+ "setRouterManifest",
6721
+ ...state.isBuildMode ? ["registerRouterManifestLoader"] : [],
6722
+ "clearAllRouterData"
6723
+ ];
6724
+ const lines2 = [
6725
+ `import { ${serverImports.join(", ")} } from "@rangojs/router/server";`,
6339
6726
  ...genFileImports,
6340
6727
  // Clear stale per-router cached data (manifest, trie, precomputed entries)
6341
6728
  // before re-populating. In Cloudflare dev mode, program reloads re-evaluate
@@ -6344,99 +6731,129 @@ function generateRoutesManifestModule(state) {
6344
6731
  // handler finds stale trie data and never rebuilds from updated urlpatterns.
6345
6732
  `clearAllRouterData();`
6346
6733
  ];
6347
- if (genFileVars.length > 0) {
6348
- lines.push(
6734
+ if (varIdx > 0) {
6735
+ lines2.push(
6349
6736
  `function __flat(r) { const o = {}; for (const [k, v] of Object.entries(r)) o[k] = typeof v === "string" ? v : v.path; return o; }`
6350
6737
  );
6351
6738
  }
6352
- if (genFileVars.length === 1 && routersWithoutGenFile.length === 0) {
6353
- lines.push(`setCachedManifest(__flat(${genFileVars[0]}));`);
6739
+ const routerMapVars = [];
6740
+ for (const [i, entry] of state.perRouterManifests.entries()) {
6741
+ const mapVar = `__m${i}`;
6742
+ const genVar = genFileVarByEntry[i];
6743
+ const init = genVar ? `__flat(${genVar})` : jsonParseExpression(entry.routeManifest);
6744
+ lines2.push(`const ${mapVar} = ${init};`);
6745
+ routerMapVars.push(mapVar);
6746
+ }
6747
+ if (routerMapVars.length === 1) {
6748
+ lines2.push(`setCachedManifest(${routerMapVars[0]});`);
6354
6749
  } else {
6355
- const parts = [];
6356
- for (const v of genFileVars) parts.push(`...__flat(${v})`);
6357
- for (const { manifest } of routersWithoutGenFile)
6358
- parts.push(`...${jsonParseExpression(manifest)}`);
6359
- lines.push(`setCachedManifest({ ${parts.join(", ")} });`);
6750
+ lines2.push(
6751
+ `setCachedManifest({ ${routerMapVars.map((v) => `...${v}`).join(", ")} });`
6752
+ );
6360
6753
  }
6361
- let genVarIdx = 0;
6362
- for (const entry of state.perRouterManifests) {
6363
- if (entry.sourceFile) {
6364
- const varName = genFileVars[genVarIdx++];
6365
- lines.push(
6366
- `setRouterManifest(${JSON.stringify(entry.id)}, __flat(${varName}));`
6367
- );
6368
- } else {
6369
- lines.push(
6370
- `setRouterManifest(${JSON.stringify(entry.id)}, ${jsonParseExpression(entry.routeManifest)});`
6754
+ for (const [i, entry] of state.perRouterManifests.entries()) {
6755
+ lines2.push(
6756
+ `setRouterManifest(${JSON.stringify(entry.id)}, ${routerMapVars[i]});`
6757
+ );
6758
+ }
6759
+ if (state.isBuildMode) {
6760
+ for (const routerId of state.perRouterManifestDataMap.keys()) {
6761
+ lines2.push(
6762
+ `registerRouterManifestLoader(${JSON.stringify(routerId)}, () => import(${JSON.stringify(VIRTUAL_ROUTES_MANIFEST_ID + "/" + routerId)}));`
6371
6763
  );
6372
6764
  }
6373
6765
  }
6374
- for (const routerId of state.perRouterManifestDataMap.keys()) {
6375
- lines.push(
6376
- `registerRouterManifestLoader(${JSON.stringify(routerId)}, () => import(${JSON.stringify(VIRTUAL_ROUTES_MANIFEST_ID + "/" + routerId)}));`
6377
- );
6378
- }
6379
6766
  if (!state.isBuildMode && state.devServerOrigin) {
6380
- lines.push(
6767
+ lines2.push(
6381
6768
  `globalThis.__PRERENDER_DEV_URL = ${JSON.stringify(state.devServerOrigin)};`
6382
6769
  );
6383
6770
  }
6384
- return lines.join("\n");
6771
+ lines2.push(...devDiscoveryBootstrap(state));
6772
+ return lines2.join("\n");
6385
6773
  }
6774
+ const lines = [];
6386
6775
  if (!state.isBuildMode) {
6387
6776
  const origin = state.devServerOrigin || state.devServer?.resolvedUrls?.local?.[0]?.replace(/\/$/, "") || state.devServer && `http://localhost:${state.devServer.config.server.port || 5173}`;
6388
6777
  if (origin) {
6389
6778
  state.devServerOrigin = origin;
6390
- return `globalThis.__PRERENDER_DEV_URL = ${JSON.stringify(origin)};`;
6779
+ lines.push(`globalThis.__PRERENDER_DEV_URL = ${JSON.stringify(origin)};`);
6391
6780
  }
6392
6781
  }
6393
- return `// Route manifest will be populated at runtime`;
6782
+ lines.push(...devDiscoveryBootstrap(state));
6783
+ return lines.join("\n") || `// Route manifest will be populated at runtime`;
6784
+ }
6785
+ function shortHash(input) {
6786
+ let h = 2166136261;
6787
+ for (let i = 0; i < input.length; i++) {
6788
+ h ^= input.charCodeAt(i);
6789
+ h = Math.imul(h, 16777619);
6790
+ }
6791
+ return (h >>> 0).toString(36);
6394
6792
  }
6395
6793
  function generatePerRouterModule(state, routerId) {
6396
- const routerEntry = state.perRouterManifests.find((e) => e.id === routerId);
6794
+ const sourceFile = state.perRouterManifests.find(
6795
+ (e) => e.id === routerId
6796
+ )?.sourceFile;
6397
6797
  const trie = state.perRouterTrieMap.get(routerId);
6398
6798
  const entries = state.perRouterPrecomputedMap.get(routerId);
6399
6799
  const lines = [];
6400
- if (routerEntry?.sourceFile) {
6401
- const routerDir = dirname4(routerEntry.sourceFile);
6402
- const routerBasename = basename(routerEntry.sourceFile).replace(
6403
- /\.(tsx?|jsx?)$/,
6404
- ""
6405
- );
6406
- const genPath = join5(
6800
+ if (sourceFile) {
6801
+ const routerDir = dirname4(sourceFile);
6802
+ const routerBasename = basename(sourceFile).replace(/\.(tsx?|jsx?)$/, "");
6803
+ const genPath = join6(
6407
6804
  routerDir,
6408
6805
  `${routerBasename}.named-routes.gen.js`
6409
6806
  ).replaceAll("\\", "/");
6410
- lines.push(`import { NamedRoutes as _r } from ${JSON.stringify(genPath)};`);
6411
- lines.push(
6412
- `function __flat(r) { const o = {}; for (const [k, v] of Object.entries(r)) o[k] = typeof v === "string" ? v : v.path; return o; }`
6413
- );
6414
- lines.push(`export const manifest = __flat(_r);`);
6415
- } else {
6416
- const manifest = state.perRouterManifestDataMap.get(routerId);
6417
- if (manifest) {
6418
- lines.push(`export const manifest = ${jsonParseExpression(manifest)};`);
6419
- }
6807
+ lines.push(`import ${JSON.stringify(genPath)};`);
6808
+ }
6809
+ const hasTrie = !!trie;
6810
+ const hasEntries = !!entries && entries.length > 0;
6811
+ const preset = state.opts?.preset ?? "node";
6812
+ const override = process.env.RANGO_MANIFEST_TEXT;
6813
+ const payload = manifestPayload(trie, hasTrie, entries, hasEntries);
6814
+ const payloadJson = hasTrie || hasEntries ? JSON.stringify(payload) : "";
6815
+ const useTextModule = state.isBuildMode && preset === "cloudflare" && override !== "0" && (hasTrie || hasEntries) && (override === "1" || payloadJson.length >= MANIFEST_EXTERNALIZE_THRESHOLD);
6816
+ if (useTextModule) {
6817
+ const dir = join6(state.projectRoot, "node_modules", ".rango");
6818
+ mkdirSync2(dir, { recursive: true });
6819
+ const safeId = `${routerId.replace(/[^a-zA-Z0-9_-]/g, "_")}-${shortHash(routerId)}`;
6820
+ const filePath = join6(dir, `manifest-${safeId}.txt`).replaceAll("\\", "/");
6821
+ writeFileSync5(filePath, payloadJson);
6822
+ lines.push(`import __manifestJson from ${JSON.stringify(filePath)};`);
6823
+ lines.push(`const __manifestData = JSON.parse(__manifestJson);`);
6824
+ emitManifestExports(lines, hasTrie, hasEntries);
6825
+ return lines.join("\n");
6420
6826
  }
6421
- if (trie) {
6827
+ if (hasTrie) {
6422
6828
  lines.push(`export const trie = ${jsonParseExpression(trie)};`);
6423
6829
  }
6424
- if (entries && entries.length > 0) {
6830
+ if (hasEntries) {
6425
6831
  lines.push(
6426
6832
  `export const precomputedEntries = ${jsonParseExpression(entries)};`
6427
6833
  );
6428
6834
  }
6429
6835
  return lines.join("\n") || "";
6430
6836
  }
6837
+ function manifestPayload(trie, hasTrie, entries, hasEntries) {
6838
+ const payload = {};
6839
+ if (hasTrie) payload.t = trie;
6840
+ if (hasEntries) payload.p = entries;
6841
+ return payload;
6842
+ }
6843
+ function emitManifestExports(lines, hasTrie, hasEntries) {
6844
+ if (hasTrie) lines.push(`export const trie = __manifestData.t;`);
6845
+ if (hasEntries)
6846
+ lines.push(`export const precomputedEntries = __manifestData.p;`);
6847
+ }
6431
6848
 
6432
6849
  // src/vite/discovery/bundle-postprocess.ts
6433
- import { resolve as resolve9 } from "node:path";
6434
- import { readFileSync as readFileSync5, writeFileSync as writeFileSync4, existsSync as existsSync7 } from "node:fs";
6850
+ import { resolve as resolve10 } from "node:path";
6851
+ import { readFileSync as readFileSync6, writeFileSync as writeFileSync6, existsSync as existsSync8 } from "node:fs";
6435
6852
  function postprocessBundle(state) {
6436
6853
  const hasPrerenderData = state.prerenderManifestEntries && Object.keys(state.prerenderManifestEntries).length > 0;
6437
6854
  const hasStaticData = state.staticManifestEntries && Object.keys(state.staticManifestEntries).length > 0;
6438
6855
  if (!hasPrerenderData && !hasStaticData) return;
6439
- const rscEntryPath = resolve9(
6856
+ const rscEntryPath = resolve10(
6440
6857
  state.projectRoot,
6441
6858
  "dist/rsc",
6442
6859
  state.rscEntryFileName ?? "index.js"
@@ -6457,9 +6874,9 @@ function postprocessBundle(state) {
6457
6874
  ];
6458
6875
  for (const target of evictionTargets) {
6459
6876
  for (const info of target.infos) {
6460
- const chunkPath = resolve9(state.projectRoot, "dist/rsc", info.fileName);
6877
+ const chunkPath = resolve10(state.projectRoot, "dist/rsc", info.fileName);
6461
6878
  try {
6462
- const code = readFileSync5(chunkPath, "utf-8");
6879
+ const code = readFileSync6(chunkPath, "utf-8");
6463
6880
  const result = evictHandlerCode(
6464
6881
  code,
6465
6882
  info.exports,
@@ -6467,7 +6884,7 @@ function postprocessBundle(state) {
6467
6884
  target.brand
6468
6885
  );
6469
6886
  if (result) {
6470
- writeFileSync4(chunkPath, result.code);
6887
+ writeFileSync6(chunkPath, result.code);
6471
6888
  const savedKB = (result.savedBytes / 1024).toFixed(1);
6472
6889
  console.log(
6473
6890
  `[rango] Evicted ${target.label} (${savedKB} KB saved): ${info.fileName}`
@@ -6482,8 +6899,8 @@ function postprocessBundle(state) {
6482
6899
  }
6483
6900
  state.handlerChunkInfoMap.clear();
6484
6901
  state.staticHandlerChunkInfoMap.clear();
6485
- if (hasPrerenderData && existsSync7(rscEntryPath)) {
6486
- const rscCode = readFileSync5(rscEntryPath, "utf-8");
6902
+ if (hasPrerenderData && existsSync8(rscEntryPath)) {
6903
+ const rscCode = readFileSync6(rscEntryPath, "utf-8");
6487
6904
  if (!rscCode.includes("__prerender-manifest.js")) {
6488
6905
  try {
6489
6906
  let totalBytes = copyStagedBuildAssets(
@@ -6502,15 +6919,15 @@ function postprocessBundle(state) {
6502
6919
  `export default m;`,
6503
6920
  ""
6504
6921
  ].join("\n");
6505
- const manifestPath = resolve9(
6922
+ const manifestPath = resolve10(
6506
6923
  state.projectRoot,
6507
6924
  "dist/rsc/__prerender-manifest.js"
6508
6925
  );
6509
- writeFileSync4(manifestPath, manifestCode);
6926
+ writeFileSync6(manifestPath, manifestCode);
6510
6927
  totalBytes += Buffer.byteLength(manifestCode);
6511
6928
  const injection = `globalThis.__loadPrerenderManifestModule = () => import("./__prerender-manifest.js");
6512
6929
  `;
6513
- writeFileSync4(rscEntryPath, injection + rscCode);
6930
+ writeFileSync6(rscEntryPath, injection + rscCode);
6514
6931
  const totalKB = (totalBytes / 1024).toFixed(1);
6515
6932
  console.log(
6516
6933
  `[rango] Wrote prerender assets (${totalKB} KB total, ${Object.keys(state.prerenderManifestEntries).length} entries)`
@@ -6522,8 +6939,8 @@ function postprocessBundle(state) {
6522
6939
  }
6523
6940
  }
6524
6941
  }
6525
- if (hasStaticData && existsSync7(rscEntryPath)) {
6526
- const rscCode = readFileSync5(rscEntryPath, "utf-8");
6942
+ if (hasStaticData && existsSync8(rscEntryPath)) {
6943
+ const rscCode = readFileSync6(rscEntryPath, "utf-8");
6527
6944
  if (!rscCode.includes("__static-manifest.js")) {
6528
6945
  try {
6529
6946
  const manifestEntries = [];
@@ -6540,15 +6957,15 @@ function postprocessBundle(state) {
6540
6957
  }
6541
6958
  const manifestCode = `const m={${manifestEntries.join(",")}};globalThis.__STATIC_MANIFEST=m;export default m;
6542
6959
  `;
6543
- const manifestPath = resolve9(
6960
+ const manifestPath = resolve10(
6544
6961
  state.projectRoot,
6545
6962
  "dist/rsc/__static-manifest.js"
6546
6963
  );
6547
- writeFileSync4(manifestPath, manifestCode);
6964
+ writeFileSync6(manifestPath, manifestCode);
6548
6965
  totalBytes += Buffer.byteLength(manifestCode);
6549
- const injection = `import "./__static-manifest.js";
6966
+ const injection = `globalThis.__loadStaticManifestModule = () => import("./__static-manifest.js");
6550
6967
  `;
6551
- writeFileSync4(rscEntryPath, injection + rscCode);
6968
+ writeFileSync6(rscEntryPath, injection + rscCode);
6552
6969
  const totalKB = (totalBytes / 1024).toFixed(1);
6553
6970
  console.log(
6554
6971
  `[rango] Wrote static assets (${totalKB} KB total, ${Object.keys(state.staticManifestEntries).length} entries)`
@@ -6563,7 +6980,7 @@ function postprocessBundle(state) {
6563
6980
  }
6564
6981
 
6565
6982
  // src/vite/discovery/gate-state.ts
6566
- function createDiscoveryGate(s, debug11) {
6983
+ function createDiscoveryGate(s, debug12) {
6567
6984
  let gatePending = false;
6568
6985
  let gateResolver = () => {
6569
6986
  };
@@ -6572,15 +6989,15 @@ function createDiscoveryGate(s, debug11) {
6572
6989
  let pendingEvents = false;
6573
6990
  const beginGate = () => {
6574
6991
  if (gatePending) return;
6575
- s.discoveryDone = new Promise((resolve12) => {
6576
- gateResolver = resolve12;
6992
+ s.discoveryDone = new Promise((resolve13) => {
6993
+ gateResolver = resolve13;
6577
6994
  });
6578
6995
  gatePending = true;
6579
6996
  };
6580
6997
  const resolveGate = () => {
6581
6998
  if (!gatePending) return;
6582
6999
  if (inProgress || queued || pendingEvents) {
6583
- debug11?.(
7000
+ debug12?.(
6584
7001
  "hmr: resolveGate deferred \u2014 work in flight (inProgress=%s queued=%s pendingEvents=%s)",
6585
7002
  inProgress,
6586
7003
  queued,
@@ -6589,7 +7006,7 @@ function createDiscoveryGate(s, debug11) {
6589
7006
  return;
6590
7007
  }
6591
7008
  gatePending = false;
6592
- debug11?.("hmr: discoveryDone resolved");
7009
+ debug12?.("hmr: discoveryDone resolved");
6593
7010
  gateResolver();
6594
7011
  };
6595
7012
  const noteRouteEvent = () => {
@@ -6599,7 +7016,7 @@ function createDiscoveryGate(s, debug11) {
6599
7016
  const runRefreshCycle = async (work) => {
6600
7017
  if (inProgress) {
6601
7018
  queued = true;
6602
- debug11?.("hmr: rediscovery in flight \u2014 queued for a follow-up cycle");
7019
+ debug12?.("hmr: rediscovery in flight \u2014 queued for a follow-up cycle");
6603
7020
  return;
6604
7021
  }
6605
7022
  pendingEvents = false;
@@ -6610,16 +7027,16 @@ function createDiscoveryGate(s, debug11) {
6610
7027
  inProgress = false;
6611
7028
  if (queued) {
6612
7029
  queued = false;
6613
- debug11?.("hmr: consuming queued rediscovery");
7030
+ debug12?.("hmr: consuming queued rediscovery");
6614
7031
  runRefreshCycle(work).catch((err) => {
6615
- debug11?.(
7032
+ debug12?.(
6616
7033
  "hmr: queued cycle rejected \u2014 releasing gate (%s)",
6617
7034
  err instanceof Error ? err.message : String(err)
6618
7035
  );
6619
7036
  resolveGate();
6620
7037
  });
6621
7038
  } else if (pendingEvents) {
6622
- debug11?.(
7039
+ debug12?.(
6623
7040
  "hmr: holding gate for pending events (debounce not yet fired)"
6624
7041
  );
6625
7042
  } else {
@@ -6665,15 +7082,15 @@ function selectForwardableResolvePlugins(plugins) {
6665
7082
  }
6666
7083
  function pickForwardedRunnerConfig(config) {
6667
7084
  const r = config.resolve ?? {};
6668
- const resolve12 = {};
6669
- if (r.alias !== void 0) resolve12.alias = r.alias;
6670
- if (r.dedupe !== void 0) resolve12.dedupe = r.dedupe;
6671
- if (r.conditions !== void 0) resolve12.conditions = r.conditions;
6672
- if (r.mainFields !== void 0) resolve12.mainFields = r.mainFields;
6673
- if (r.extensions !== void 0) resolve12.extensions = r.extensions;
7085
+ const resolve13 = {};
7086
+ if (r.alias !== void 0) resolve13.alias = r.alias;
7087
+ if (r.dedupe !== void 0) resolve13.dedupe = r.dedupe;
7088
+ if (r.conditions !== void 0) resolve13.conditions = r.conditions;
7089
+ if (r.mainFields !== void 0) resolve13.mainFields = r.mainFields;
7090
+ if (r.extensions !== void 0) resolve13.extensions = r.extensions;
6674
7091
  if (r.preserveSymlinks !== void 0)
6675
- resolve12.preserveSymlinks = r.preserveSymlinks;
6676
- if (r.tsconfigPaths !== void 0) resolve12.tsconfigPaths = r.tsconfigPaths;
7092
+ resolve13.preserveSymlinks = r.preserveSymlinks;
7093
+ if (r.tsconfigPaths !== void 0) resolve13.tsconfigPaths = r.tsconfigPaths;
6677
7094
  const userOxc = config.oxc;
6678
7095
  const userJsx = userOxc && typeof userOxc === "object" && typeof userOxc.jsx === "object" && userOxc.jsx !== null ? userOxc.jsx : {};
6679
7096
  const oxc = userOxc && typeof userOxc === "object" ? {
@@ -6681,13 +7098,14 @@ function pickForwardedRunnerConfig(config) {
6681
7098
  jsx: { ...userJsx, runtime: "automatic", importSource: "react" }
6682
7099
  } : { jsx: { runtime: "automatic", importSource: "react" } };
6683
7100
  return {
6684
- resolve: resolve12,
7101
+ resolve: resolve13,
6685
7102
  define: config.define,
6686
7103
  oxc
6687
7104
  };
6688
7105
  }
6689
7106
 
6690
7107
  // src/vite/router-discovery.ts
7108
+ init_debug();
6691
7109
  var debugDiscovery = createRangoDebugger(NS.discovery);
6692
7110
  var debugRoutes = createRangoDebugger(NS.routes);
6693
7111
  var debugBuild = createRangoDebugger(NS.build);
@@ -6706,6 +7124,7 @@ function ensureCloudflareProtocolLoaderRegistered() {
6706
7124
  );
6707
7125
  }
6708
7126
  }
7127
+ var injectedShellNotReadyPaths = /* @__PURE__ */ new Set();
6709
7128
  async function createTempRscServer(state, options = {}) {
6710
7129
  ensureCloudflareProtocolLoaderRegistered();
6711
7130
  const { default: rsc } = await import("@vitejs/plugin-rsc");
@@ -6737,6 +7156,20 @@ async function createTempRscServer(state, options = {}) {
6737
7156
  // hashClientRefs only in build mode — production bundles need hashed refs
6738
7157
  ...options.forceBuild ? [hashClientRefs(state.projectRoot)] : [],
6739
7158
  createVersionPlugin(),
7159
+ // Before the stub plugin, so "virtual:entry-ssr" resolves to the real
7160
+ // SSR entry when the shell endpoint needs it (see the option doc).
7161
+ ...options.realSsrEntry ? [
7162
+ {
7163
+ name: "@rangojs/router:temp-real-ssr-entry",
7164
+ enforce: "pre",
7165
+ resolveId(id) {
7166
+ return id === "virtual:entry-ssr" ? "\0rango-temp-real-ssr-entry" : null;
7167
+ },
7168
+ load(id) {
7169
+ return id === "\0rango-temp-real-ssr-entry" ? getVirtualEntrySSR(state.opts?.headScripts) : null;
7170
+ }
7171
+ }
7172
+ ] : [],
6740
7173
  createVirtualStubPlugin(),
6741
7174
  createCloudflareProtocolStubPlugin(),
6742
7175
  // Dev prerender must use dev-mode IDs (path-based) to match the workerd
@@ -6760,7 +7193,7 @@ async function resolveBuildEnv(option, factoryCtx) {
6760
7193
  }
6761
7194
  try {
6762
7195
  const userRequire = createRequire3(
6763
- resolve10(factoryCtx.root, "package.json")
7196
+ resolve11(factoryCtx.root, "package.json")
6764
7197
  );
6765
7198
  const wranglerPath = userRequire.resolve("wrangler");
6766
7199
  const { getPlatformProxy } = await import(pathToFileURL2(wranglerPath).href);
@@ -6797,6 +7230,12 @@ async function acquireBuildEnv(s, command, mode) {
6797
7230
  globalThis[BUILD_ENV_GLOBAL_KEY] = result.env;
6798
7231
  return true;
6799
7232
  }
7233
+ function resetPrerenderCollection(s) {
7234
+ s.prerenderManifestEntries = null;
7235
+ s.staticManifestEntries = null;
7236
+ s.shellCandidates = null;
7237
+ s.prerenderPayloadValues = null;
7238
+ }
6800
7239
  async function releaseBuildEnv(s) {
6801
7240
  if (s.buildEnvDispose) {
6802
7241
  try {
@@ -6859,18 +7298,57 @@ function createRouterDiscoveryPlugin(entryPath, opts) {
6859
7298
  if (s.isBuildMode) return;
6860
7299
  if (globalThis.__rscRouterDiscoveryActive) return;
6861
7300
  s.devServer = server;
7301
+ let workerReadyEpoch;
7302
+ const publishDevDiscoveryReady = (epoch) => {
7303
+ if (epoch <= (workerReadyEpoch ?? -1)) return;
7304
+ workerReadyEpoch = epoch;
7305
+ server.environments?.client?.hot?.send({
7306
+ type: "custom",
7307
+ event: DEV_DISCOVERY_READY_EVENT,
7308
+ data: { epoch }
7309
+ });
7310
+ debugDiscovery?.("hmr: workerd ready at epoch %d", epoch);
7311
+ };
7312
+ if (opts?.preset === "cloudflare") {
7313
+ const registeredClientHotChannels = /* @__PURE__ */ new Set();
7314
+ const registerDevDiscoveryHotChannels = () => {
7315
+ const clientHot = server.environments?.client?.hot;
7316
+ if (clientHot && !registeredClientHotChannels.has(clientHot)) {
7317
+ registeredClientHotChannels.add(clientHot);
7318
+ clientHot.on(
7319
+ DEV_DISCOVERY_QUERY_EVENT,
7320
+ (_payload, client) => {
7321
+ if (workerReadyEpoch === void 0) return;
7322
+ client.send(DEV_DISCOVERY_READY_EVENT, {
7323
+ epoch: workerReadyEpoch
7324
+ });
7325
+ }
7326
+ );
7327
+ }
7328
+ debugDiscovery?.(
7329
+ "hmr: dev discovery browser channel registered (client=%s)",
7330
+ !!clientHot
7331
+ );
7332
+ };
7333
+ registerDevDiscoveryHotChannels();
7334
+ if (server.httpServer && !server.httpServer.listening) {
7335
+ server.httpServer.once("listening", registerDevDiscoveryHotChannels);
7336
+ }
7337
+ }
6862
7338
  server.middlewares.use(internalDebugNoCacheMiddleware());
6863
7339
  let resolveDiscovery;
6864
- const discoveryPromise = new Promise((resolve12) => {
6865
- resolveDiscovery = resolve12;
7340
+ const discoveryPromise = new Promise((resolve13) => {
7341
+ resolveDiscovery = resolve13;
6866
7342
  });
6867
7343
  const gate = createDiscoveryGate(s, debugDiscovery);
6868
7344
  const beginDiscoveryGate = gate.beginGate;
6869
7345
  const resolveDiscoveryGate = gate.resolveGate;
6870
7346
  const getDevServerOrigin = () => server.resolvedUrls?.local?.[0]?.replace(/\/$/, "") || `http://localhost:${server.config.server.port || 5173}`;
7347
+ let devServerClosed = false;
6871
7348
  let prerenderTempServer = null;
6872
7349
  let prerenderNodeRegistry = null;
6873
7350
  server.httpServer?.on("close", () => {
7351
+ devServerClosed = true;
6874
7352
  if (prerenderTempServer) {
6875
7353
  prerenderTempServer.close().catch(() => {
6876
7354
  });
@@ -6918,14 +7396,14 @@ function createRouterDiscoveryPlugin(entryPath, opts) {
6918
7396
  debugDiscovery?.(
6919
7397
  "getOrCreateTempServer: cached temp runner reused"
6920
7398
  );
6921
- return existingEnv;
7399
+ return { env: existingEnv, error: null };
6922
7400
  }
6923
7401
  debugDiscovery?.(
6924
7402
  "getOrCreateTempServer: server alive but registry missing \u2014 re-importing"
6925
7403
  );
6926
7404
  try {
6927
7405
  await importEntryAndRegistry(existingEnv);
6928
- return existingEnv;
7406
+ return { env: existingEnv, error: null };
6929
7407
  } catch (err) {
6930
7408
  debugDiscovery?.(
6931
7409
  "getOrCreateTempServer: reuse import failed (%s) \u2014 closing orphan and creating fresh",
@@ -6950,19 +7428,25 @@ function createRouterDiscoveryPlugin(entryPath, opts) {
6950
7428
  "getOrCreateTempServer: creating new temp server, entry=%s",
6951
7429
  s.resolvedEntryPath ?? "(unset)"
6952
7430
  );
7431
+ let createError = null;
6953
7432
  try {
6954
7433
  prerenderTempServer = await createTempRscServer(s, {
6955
- cacheDir: "node_modules/.vite_prerender"
7434
+ cacheDir: "node_modules/.vite_prerender",
7435
+ // The dev /__rsc_shell endpoint drives captureShellHTML in this
7436
+ // server's SSR realm; the entry is only imported when a shell
7437
+ // capture runs, so discovery cost is unchanged.
7438
+ realSsrEntry: true
6956
7439
  });
6957
7440
  const tempRscEnv = prerenderTempServer.environments?.rsc;
6958
7441
  if (tempRscEnv?.runner) {
6959
7442
  await importEntryAndRegistry(tempRscEnv);
6960
- return tempRscEnv;
7443
+ return { env: tempRscEnv, error: null };
6961
7444
  }
6962
7445
  debugDiscovery?.(
6963
7446
  "getOrCreateTempServer: tempRscEnv.runner unavailable"
6964
7447
  );
6965
7448
  } catch (err) {
7449
+ createError = err;
6966
7450
  debugDiscovery?.(
6967
7451
  "getOrCreateTempServer: FAILED message=%s",
6968
7452
  err.message
@@ -6973,7 +7457,7 @@ function createRouterDiscoveryPlugin(entryPath, opts) {
6973
7457
  });
6974
7458
  prerenderTempServer = null;
6975
7459
  prerenderNodeRegistry = null;
6976
- return null;
7460
+ return { env: null, error: createError };
6977
7461
  }
6978
7462
  async function clearTempRegistries(tempRscEnv) {
6979
7463
  try {
@@ -6997,7 +7481,7 @@ function createRouterDiscoveryPlugin(entryPath, opts) {
6997
7481
  }
6998
7482
  }
6999
7483
  async function refreshTempRscEnv() {
7000
- let tempRscEnv = await getOrCreateTempServer();
7484
+ const tempRscEnv = (await getOrCreateTempServer()).env;
7001
7485
  if (!tempRscEnv) return null;
7002
7486
  const envGraph = tempRscEnv.moduleGraph;
7003
7487
  const serverGraph = prerenderTempServer?.moduleGraph;
@@ -7012,7 +7496,7 @@ function createRouterDiscoveryPlugin(entryPath, opts) {
7012
7496
  prerenderTempServer = null;
7013
7497
  prerenderNodeRegistry = null;
7014
7498
  }
7015
- return await getOrCreateTempServer();
7499
+ return (await getOrCreateTempServer()).env;
7016
7500
  }
7017
7501
  debugDiscovery?.(
7018
7502
  "refreshTempRscEnv: invalidating module graph (%s)",
@@ -7050,11 +7534,11 @@ function createRouterDiscoveryPlugin(entryPath, opts) {
7050
7534
  "acquireBuildEnv",
7051
7535
  () => acquireBuildEnv(s, viteCommand, viteMode)
7052
7536
  );
7053
- tempRscEnv = await timed(
7537
+ tempRscEnv = (await timed(
7054
7538
  debugDiscovery,
7055
7539
  "getOrCreateTempServer",
7056
7540
  () => getOrCreateTempServer()
7057
- );
7541
+ )).env;
7058
7542
  if (tempRscEnv) {
7059
7543
  optimizerHashBefore2 = tempRscEnv.depsOptimizer?.metadata?.browserHash;
7060
7544
  await timed(
@@ -7140,12 +7624,6 @@ function createRouterDiscoveryPlugin(entryPath, opts) {
7140
7624
  if (s.mergedRouteManifest && serverMod.setCachedManifest) {
7141
7625
  serverMod.setCachedManifest(s.mergedRouteManifest);
7142
7626
  }
7143
- if (s.mergedPrecomputedEntries && s.mergedPrecomputedEntries.length > 0 && serverMod.setPrecomputedEntries) {
7144
- serverMod.setPrecomputedEntries(s.mergedPrecomputedEntries);
7145
- }
7146
- if (s.mergedRouteTrie && serverMod.setRouteTrie) {
7147
- serverMod.setRouteTrie(s.mergedRouteTrie);
7148
- }
7149
7627
  const perRouterSetters = [
7150
7628
  [s.perRouterManifestDataMap, "setRouterManifest"],
7151
7629
  [s.perRouterTrieMap, "setRouterTrie"],
@@ -7199,7 +7677,7 @@ function createRouterDiscoveryPlugin(entryPath, opts) {
7199
7677
  registry = mainRegistry;
7200
7678
  }
7201
7679
  if (!registry) {
7202
- const tempRscEnv = await getOrCreateTempServer();
7680
+ const tempRscEnv = (await getOrCreateTempServer()).env;
7203
7681
  if (tempRscEnv) {
7204
7682
  try {
7205
7683
  await importEntryAndRegistry(tempRscEnv);
@@ -7284,6 +7762,194 @@ function createRouterDiscoveryPlugin(entryPath, opts) {
7284
7762
  res.end("No prerender match");
7285
7763
  logResult(404, "no match");
7286
7764
  });
7765
+ server.middlewares.use("/__rsc_shell", async (req, res) => {
7766
+ await s.discoveryDone;
7767
+ const url = new URL(req.url ?? "", "http://localhost");
7768
+ const pathname = url.searchParams.get("pathname");
7769
+ const routeName = url.searchParams.get("routeName");
7770
+ const version = url.searchParams.get("version");
7771
+ const ttlRaw = url.searchParams.get("ttl");
7772
+ if (!pathname || !routeName || !version || !ttlRaw) {
7773
+ res.statusCode = 400;
7774
+ res.end("Missing pathname/routeName/version/ttl");
7775
+ return;
7776
+ }
7777
+ const sendNotReady = (detail) => {
7778
+ res.statusCode = 503;
7779
+ res.setHeader("x-rango-shell-dev", "NOT-READY");
7780
+ res.end(detail);
7781
+ };
7782
+ const isReoptimizing = (err) => err?.code === "ERR_OUTDATED_OPTIMIZED_DEP" || /Outdated Optimize Dep|optimized dependency|new dependencies optimized/i.test(
7783
+ String(err?.message ?? "")
7784
+ );
7785
+ const handledAsReoptimizing = (err) => {
7786
+ if (!isReoptimizing(err)) return false;
7787
+ sendNotReady(`Shell capture re-optimizing: ${err.message}`);
7788
+ return true;
7789
+ };
7790
+ const handleShellImportError = (err) => {
7791
+ if (handledAsReoptimizing(err)) return;
7792
+ res.statusCode = 500;
7793
+ res.end(`Shell capture module refresh failed: ${err.message}`);
7794
+ };
7795
+ if (process.env.RANGO_E2E_INJECT_SHELL_NOTREADY === "1" && !injectedShellNotReadyPaths.has(pathname)) {
7796
+ injectedShellNotReadyPaths.add(pathname);
7797
+ const injected = Object.assign(
7798
+ new Error("Outdated Optimize Dep (injected boot-race)"),
7799
+ { code: "ERR_OUTDATED_OPTIMIZED_DEP" }
7800
+ );
7801
+ if (handledAsReoptimizing(injected)) return;
7802
+ }
7803
+ const ttl = Number(ttlRaw);
7804
+ const swrRaw = url.searchParams.get("swr");
7805
+ const swr = swrRaw === null ? void 0 : Number(swrRaw);
7806
+ const tagsRaw = url.searchParams.get("tags");
7807
+ const tags = tagsRaw ? tagsRaw.split(",") : void 0;
7808
+ const maxSnapshotBytesRaw = url.searchParams.get("maxSnapshotBytes");
7809
+ const maxSnapshotBytes = maxSnapshotBytesRaw === null ? void 0 : Number(maxSnapshotBytesRaw);
7810
+ const captureTimeout = normalizeCaptureTimeout(
7811
+ Number(url.searchParams.get("captureTimeout"))
7812
+ );
7813
+ const rscEnvMain = server.environments?.rsc;
7814
+ let rscRealm = null;
7815
+ let ssrRealm = null;
7816
+ let ssrEntryId;
7817
+ let tempServerError = null;
7818
+ if (rscEnvMain?.runner && s.resolvedEntryPath) {
7819
+ try {
7820
+ await rscEnvMain.runner.import(s.resolvedEntryPath);
7821
+ } catch (err) {
7822
+ handleShellImportError(err);
7823
+ return;
7824
+ }
7825
+ rscRealm = rscEnvMain;
7826
+ ssrRealm = server.environments?.ssr;
7827
+ ssrEntryId = server.environments?.ssr?.config?.build?.rollupOptions?.input?.index ?? VIRTUAL_IDS.ssr;
7828
+ } else {
7829
+ const tempResult = await getOrCreateTempServer();
7830
+ if (tempResult.env) {
7831
+ try {
7832
+ await importEntryAndRegistry(tempResult.env);
7833
+ } catch (err) {
7834
+ handleShellImportError(err);
7835
+ return;
7836
+ }
7837
+ } else {
7838
+ tempServerError = tempResult.error;
7839
+ }
7840
+ rscRealm = tempResult.env;
7841
+ ssrRealm = prerenderTempServer?.environments?.ssr;
7842
+ ssrEntryId = "virtual:entry-ssr";
7843
+ }
7844
+ if (!rscRealm?.runner || !ssrRealm?.runner) {
7845
+ if (tempServerError && handledAsReoptimizing(tempServerError)) return;
7846
+ res.statusCode = 503;
7847
+ res.end("Shell capture runners not available");
7848
+ return;
7849
+ }
7850
+ let registry = null;
7851
+ let registryError = null;
7852
+ try {
7853
+ const serverMod = await rscRealm.runner.import(
7854
+ "@rangojs/router/server"
7855
+ );
7856
+ registry = serverMod.RouterRegistry ?? null;
7857
+ } catch (err) {
7858
+ registryError = err;
7859
+ registry = null;
7860
+ }
7861
+ if (!registry || registry.size === 0) {
7862
+ if (registryError && handledAsReoptimizing(registryError)) return;
7863
+ res.statusCode = 503;
7864
+ res.end("Shell capture registry not available");
7865
+ return;
7866
+ }
7867
+ const cacheKey = `shell|${pathname}|r=${routeName}|t=${ttl}|s=${swr ?? ""}|g=${(tags ?? []).join("+")}|c=${captureTimeout ?? ""}|v=${version}`;
7868
+ for (const [, routerInstance] of registry) {
7869
+ if (typeof routerInstance.match !== "function") continue;
7870
+ const cached = devPrerenderCache.get(routerInstance, cacheKey);
7871
+ if (cached !== void 0) {
7872
+ res.setHeader("content-type", "application/json");
7873
+ res.setHeader("x-rango-shell-dev", "HIT");
7874
+ res.end(cached);
7875
+ return;
7876
+ }
7877
+ }
7878
+ if (s.devServerOrigin) {
7879
+ try {
7880
+ const probe = await fetch(
7881
+ `${s.devServerOrigin}/__rsc_prerender?pathname=${encodeURIComponent(pathname)}&routeName=${encodeURIComponent(routeName)}`,
7882
+ { signal: AbortSignal.timeout(DEV_SHELL_PROBE_TIMEOUT_MS) }
7883
+ );
7884
+ if (!probe.ok) {
7885
+ res.statusCode = 404;
7886
+ res.end("Route is not prerenderable");
7887
+ return;
7888
+ }
7889
+ } catch {
7890
+ res.statusCode = 404;
7891
+ res.end("Prerender pre-flight failed");
7892
+ return;
7893
+ }
7894
+ }
7895
+ for (const [, routerInstance] of registry) {
7896
+ if (typeof routerInstance.match !== "function") continue;
7897
+ try {
7898
+ const ssrModule = await ssrRealm.runner.import(ssrEntryId);
7899
+ if (typeof ssrModule?.captureShellHTML !== "function") {
7900
+ res.statusCode = 404;
7901
+ res.end("SSR entry has no captureShellHTML");
7902
+ return;
7903
+ }
7904
+ const captureMod = await rscRealm.runner.import(
7905
+ "@rangojs/router/build/shell-capture"
7906
+ );
7907
+ const result = await captureMod.captureShellForBuild({
7908
+ router: routerInstance,
7909
+ urlPath: pathname,
7910
+ routeName,
7911
+ key: `${pathname}:shell`,
7912
+ ttl,
7913
+ swr,
7914
+ tags,
7915
+ maxSnapshotBytes,
7916
+ captureTimeout,
7917
+ buildEnv: s.resolvedBuildEnv,
7918
+ buildVersion: version,
7919
+ captureShellHTML: ssrModule.captureShellHTML,
7920
+ debug: !!debugDiscovery
7921
+ });
7922
+ if (result.outcome === "route-mismatch") continue;
7923
+ if (result.outcome !== "stored" || !result.entry) {
7924
+ res.statusCode = 404;
7925
+ res.end(`Shell capture ${result.outcome}`);
7926
+ return;
7927
+ }
7928
+ const body = JSON.stringify({
7929
+ entry: result.entry,
7930
+ ttl,
7931
+ swr,
7932
+ tags: result.tags,
7933
+ routeName
7934
+ });
7935
+ devPrerenderCache.set(routerInstance, cacheKey, body);
7936
+ res.setHeader("content-type", "application/json");
7937
+ res.setHeader("x-rango-shell-dev", "MISS");
7938
+ res.end(body);
7939
+ return;
7940
+ } catch (err) {
7941
+ if (handledAsReoptimizing(err)) return;
7942
+ console.warn(
7943
+ `[rango] Dev shell capture error for ${pathname} (route keeps runtime capture): ${err.message}`
7944
+ );
7945
+ res.statusCode = 404;
7946
+ res.end(`Shell capture error: ${err.message}`);
7947
+ return;
7948
+ }
7949
+ }
7950
+ res.statusCode = 404;
7951
+ res.end("No router matched");
7952
+ });
7287
7953
  if (opts?.staticRouteTypesGeneration !== false) {
7288
7954
  const isGeneratedRouteFile = (filePath) => filePath.endsWith(".gen.ts") && (filePath.includes("named-routes.gen.ts") || filePath.includes("urls.gen.ts"));
7289
7955
  const regenerateGeneratedRouteFiles = () => {
@@ -7293,6 +7959,21 @@ function createRouterDiscoveryPlugin(entryPath, opts) {
7293
7959
  writeCombinedRouteTypesWithTracking(s);
7294
7960
  }
7295
7961
  };
7962
+ const routeShapeSignature = () => JSON.stringify(
7963
+ s.perRouterManifests.map(
7964
+ ({
7965
+ id,
7966
+ routeManifest,
7967
+ routeTrailingSlash,
7968
+ routeSearchSchemas
7969
+ }) => ({
7970
+ id,
7971
+ routeManifest,
7972
+ routeTrailingSlash,
7973
+ routeSearchSchemas
7974
+ })
7975
+ )
7976
+ );
7296
7977
  const maybeHandleGeneratedRouteFileMutation = (filePath) => {
7297
7978
  if (!isGeneratedRouteFile(filePath)) return false;
7298
7979
  if (consumeSelfGenWrite(s, filePath)) return true;
@@ -7306,6 +7987,7 @@ function createRouterDiscoveryPlugin(entryPath, opts) {
7306
7987
  const rscEnv = server.environments?.rsc;
7307
7988
  const hasMainRunner = !!rscEnv?.runner;
7308
7989
  if (!hasMainRunner && s.perRouterManifests.length === 0) return;
7990
+ let previousRouteShape = routeShapeSignature();
7309
7991
  await gate.runRefreshCycle(async () => {
7310
7992
  const hmrStart = performance.now();
7311
7993
  try {
@@ -7354,7 +8036,19 @@ function createRouterDiscoveryPlugin(entryPath, opts) {
7354
8036
  );
7355
8037
  s.lastDiscoveryError = null;
7356
8038
  }
7357
- if (rscEnv && !rscEnv.runner) forceCloudflareWorkerReload(rscEnv);
8039
+ if (rscEnv && !rscEnv.runner) {
8040
+ const nextRouteShape = routeShapeSignature();
8041
+ let expectedEpoch;
8042
+ if (nextRouteShape !== previousRouteShape) {
8043
+ expectedEpoch = Math.max(
8044
+ Date.now(),
8045
+ (s.devDiscoveryEpoch ?? 0) + 1
8046
+ );
8047
+ s.devDiscoveryEpoch = expectedEpoch;
8048
+ }
8049
+ previousRouteShape = nextRouteShape;
8050
+ forceCloudflareWorkerReload(rscEnv, expectedEpoch);
8051
+ }
7358
8052
  } catch (err) {
7359
8053
  s.lastDiscoveryError = {
7360
8054
  message: err?.message ?? String(err),
@@ -7375,10 +8069,10 @@ function createRouterDiscoveryPlugin(entryPath, opts) {
7375
8069
  }
7376
8070
  });
7377
8071
  };
7378
- const forceCloudflareWorkerReload = (rscEnv) => {
8072
+ const forceCloudflareWorkerReload = (rscEnv, expectedEpoch) => {
7379
8073
  if (!rscEnv?.hot) return;
7380
- try {
7381
- const graph = rscEnv.moduleGraph;
8074
+ const graph = rscEnv.moduleGraph;
8075
+ const reloadWorkerd = () => {
7382
8076
  if (graph?.invalidateAll) {
7383
8077
  graph.invalidateAll();
7384
8078
  debugDiscovery?.("hmr: invalidated workerd rsc module graph");
@@ -7387,12 +8081,40 @@ function createRouterDiscoveryPlugin(entryPath, opts) {
7387
8081
  debugDiscovery?.(
7388
8082
  "hmr: forced workerd rsc env reload (full-reload)"
7389
8083
  );
7390
- } catch (err) {
8084
+ };
8085
+ reloadWorkerd();
8086
+ if (expectedEpoch === void 0) return;
8087
+ void (async () => {
8088
+ const deadline = Date.now() + 15e3;
8089
+ do {
8090
+ if (devServerClosed || expectedEpoch !== s.devDiscoveryEpoch) {
8091
+ return;
8092
+ }
8093
+ await new Promise((resolve13) => setTimeout(resolve13, 25));
8094
+ if (devServerClosed || expectedEpoch !== s.devDiscoveryEpoch) {
8095
+ return;
8096
+ }
8097
+ try {
8098
+ const response = await fetch(getDevServerOrigin() + "/", {
8099
+ cache: "no-store",
8100
+ headers: {
8101
+ [DEV_DISCOVERY_PROBE_HEADER]: String(expectedEpoch)
8102
+ },
8103
+ signal: AbortSignal.timeout(1e3)
8104
+ });
8105
+ if (!devServerClosed && expectedEpoch === s.devDiscoveryEpoch && response.headers.get(DEV_DISCOVERY_EPOCH_HEADER) === String(expectedEpoch)) {
8106
+ publishDevDiscoveryReady(expectedEpoch);
8107
+ return;
8108
+ }
8109
+ reloadWorkerd();
8110
+ } catch {
8111
+ }
8112
+ } while (Date.now() < deadline);
7391
8113
  debugDiscovery?.(
7392
- "hmr: workerd reload failed: %s",
7393
- err?.message ?? err
8114
+ "hmr: workerd readiness probe timed out at epoch %d",
8115
+ expectedEpoch
7394
8116
  );
7395
- }
8117
+ })();
7396
8118
  };
7397
8119
  const scheduleRouteRegeneration = () => {
7398
8120
  clearTimeout(routeChangeTimer);
@@ -7453,7 +8175,7 @@ function createRouterDiscoveryPlugin(entryPath, opts) {
7453
8175
  }
7454
8176
  const inRecoveryMode = !!s.lastDiscoveryError;
7455
8177
  try {
7456
- const source = readFileSync6(filePath, "utf-8");
8178
+ const source = readFileSync7(filePath, "utf-8");
7457
8179
  const trimmed = source.trimStart();
7458
8180
  const isUseClient = trimmed.startsWith('"use client"') || trimmed.startsWith("'use client'");
7459
8181
  if (!inRecoveryMode && isUseClient) return;
@@ -7484,7 +8206,7 @@ function createRouterDiscoveryPlugin(entryPath, opts) {
7484
8206
  if (hasCreateRouter) {
7485
8207
  const nestedRouterConflict = findNestedRouterConflict([
7486
8208
  ...s.cachedRouterFiles ?? [],
7487
- resolve10(filePath)
8209
+ resolve11(filePath)
7488
8210
  ]);
7489
8211
  if (nestedRouterConflict) {
7490
8212
  server.config.logger.error(
@@ -7534,8 +8256,7 @@ function createRouterDiscoveryPlugin(entryPath, opts) {
7534
8256
  const buildStartTime = performance.now();
7535
8257
  debugDiscovery?.("build: start (env=%s)", this.environment?.name ?? "?");
7536
8258
  resetStagedBuildAssets(s.projectRoot);
7537
- s.prerenderManifestEntries = null;
7538
- s.staticManifestEntries = null;
8259
+ resetPrerenderCollection(s);
7539
8260
  await timed(
7540
8261
  debugDiscovery,
7541
8262
  "build acquireBuildEnv",
@@ -7590,20 +8311,59 @@ ${details}`,
7590
8311
  );
7591
8312
  } finally {
7592
8313
  delete globalThis.__rscRouterDiscoveryActive;
7593
- if (tempServer) {
7594
- await timed(
7595
- debugDiscovery,
7596
- "build tempServer.close",
7597
- () => tempServer.close()
7598
- );
8314
+ if (tempServer && s.shellCandidates?.length) {
8315
+ s.shellPhaseTempServer = tempServer;
8316
+ } else {
8317
+ if (tempServer) {
8318
+ await timed(
8319
+ debugDiscovery,
8320
+ "build tempServer.close",
8321
+ () => tempServer.close()
8322
+ );
8323
+ }
8324
+ await releaseBuildEnv(s);
7599
8325
  }
7600
- await releaseBuildEnv(s);
7601
8326
  debugDiscovery?.(
7602
8327
  "build discovery done (%sms)",
7603
8328
  (performance.now() - buildStartTime).toFixed(1)
7604
8329
  );
7605
8330
  }
7606
8331
  },
8332
+ // Post-build PPR shell capture (producer B, #699): runs after EVERY
8333
+ // environment bundle is written — the shell prelude embeds built client
8334
+ // asset URLs (bootstrap entry), which do not exist at buildStart. The
8335
+ // kept temp server and the buildEnv were deferred AS A PAIR in
8336
+ // buildStart's finally; this finally is the pair's success-path owner
8337
+ // (buildEnd below owns the aborted-build path) — the phase itself is a
8338
+ // pure producer and tears down only the globals it installs.
8339
+ buildApp: {
8340
+ order: "post",
8341
+ async handler(builder) {
8342
+ try {
8343
+ await runShellPrerenderPhase(s, builder);
8344
+ } finally {
8345
+ if (s.isBuildMode) {
8346
+ const tempServer = s.shellPhaseTempServer;
8347
+ s.shellPhaseTempServer = null;
8348
+ if (tempServer) await tempServer.close();
8349
+ await releaseBuildEnv(s);
8350
+ }
8351
+ }
8352
+ }
8353
+ },
8354
+ // An environment build failure aborts the builder before the buildApp
8355
+ // post hook — never leak the kept temp server (open handles hang the CLI)
8356
+ // or the deferred buildEnv (a live miniflare proxy).
8357
+ async buildEnd(error) {
8358
+ if (!error || !s.shellPhaseTempServer) return;
8359
+ const tempServer = s.shellPhaseTempServer;
8360
+ s.shellPhaseTempServer = null;
8361
+ try {
8362
+ await tempServer.close();
8363
+ } finally {
8364
+ await releaseBuildEnv(s);
8365
+ }
8366
+ },
7607
8367
  // Suppress vite's HMR cascade for our own gen-file writes.
7608
8368
  //
7609
8369
  // After every cf HMR cycle, refreshTempRscEnv → writeRouteTypesFiles
@@ -7768,7 +8528,9 @@ ${details}`,
7768
8528
  }
7769
8529
 
7770
8530
  // src/vite/rango.ts
8531
+ init_debug();
7771
8532
  var debugConfig = createRangoDebugger(NS.config);
8533
+ var SERVER_BUILD_TARGET = "esnext";
7772
8534
  async function rango(options) {
7773
8535
  const rangoStart = performance.now();
7774
8536
  const resolvedOptions = options ?? { preset: "node" };
@@ -7893,7 +8655,11 @@ async function rango(options) {
7893
8655
  }
7894
8656
  }
7895
8657
  });
7896
- plugins.push(createVirtualEntriesPlugin(finalEntries));
8658
+ plugins.push(
8659
+ createVirtualEntriesPlugin(finalEntries, void 0, {
8660
+ headScripts: resolvedOptions.headScripts
8661
+ })
8662
+ );
7897
8663
  plugins.push(performanceTracksPlugin());
7898
8664
  plugins.push(
7899
8665
  rsc({
@@ -7908,14 +8674,14 @@ async function rango(options) {
7908
8674
  name: "@rangojs/router:auto-discover",
7909
8675
  config(userConfig) {
7910
8676
  if (routerRef.path) return;
7911
- const root = userConfig.root ? resolve11(process.cwd(), userConfig.root) : process.cwd();
8677
+ const root = userConfig.root ? resolve12(process.cwd(), userConfig.root) : process.cwd();
7912
8678
  const toRootRelative = (abs) => (abs.startsWith(root) ? "./" + abs.slice(root.length + 1) : abs).replaceAll("\\", "/");
7913
8679
  const bulletList = (files) => files.map((f) => " - " + toRootRelative(f)).join("\n");
7914
8680
  if (explicitHostRouter) {
7915
8681
  routerRef.path = normalizeHostRouterEntry(
7916
8682
  explicitHostRouter,
7917
8683
  root,
7918
- existsSync8
8684
+ existsSync9
7919
8685
  );
7920
8686
  routerRef.kind = "host";
7921
8687
  return;
@@ -8012,6 +8778,9 @@ If this is a multi-app host router, export a createHostRouter() instance and set
8012
8778
  },
8013
8779
  ssr: {
8014
8780
  ...vercelServerEnv ?? {},
8781
+ build: {
8782
+ target: SERVER_BUILD_TARGET
8783
+ },
8015
8784
  optimizeDeps: {
8016
8785
  entries: [VIRTUAL_IDS.ssr],
8017
8786
  include: [
@@ -8031,6 +8800,9 @@ If this is a multi-app host router, export a createHostRouter() instance and set
8031
8800
  },
8032
8801
  rsc: {
8033
8802
  ...vercelServerEnv ?? {},
8803
+ build: {
8804
+ target: SERVER_BUILD_TARGET
8805
+ },
8034
8806
  optimizeDeps: {
8035
8807
  entries: [VIRTUAL_IDS.rsc],
8036
8808
  include: [
@@ -8073,7 +8845,11 @@ If this is a multi-app host router, export a createHostRouter() instance and set
8073
8845
  }
8074
8846
  }
8075
8847
  });
8076
- plugins.push(createVirtualEntriesPlugin(finalEntries, routerRef));
8848
+ plugins.push(
8849
+ createVirtualEntriesPlugin(finalEntries, routerRef, {
8850
+ headScripts: resolvedOptions.headScripts
8851
+ })
8852
+ );
8077
8853
  plugins.push(performanceTracksPlugin());
8078
8854
  plugins.push(
8079
8855
  rsc({
@@ -8092,7 +8868,7 @@ If this is a multi-app host router, export a createHostRouter() instance and set
8092
8868
  if (!file.endsWith(".tsx") && !file.endsWith(".ts") && !file.endsWith(".jsx") && !file.endsWith(".js"))
8093
8869
  return;
8094
8870
  try {
8095
- const source = readFileSync7(file, "utf-8");
8871
+ const source = readFileSync8(file, "utf-8");
8096
8872
  if (hasUseClientDirective(source)) {
8097
8873
  return [];
8098
8874
  }
@@ -8119,7 +8895,8 @@ If this is a multi-app host router, export a createHostRouter() instance and set
8119
8895
  preset,
8120
8896
  prerenderOnError: options?.prerender?.onError,
8121
8897
  discovery: options?.discovery,
8122
- clientChunkCtx
8898
+ clientChunkCtx,
8899
+ headScripts: resolvedOptions.headScripts
8123
8900
  })
8124
8901
  );
8125
8902
  if (preset === "vercel") {
@@ -8143,7 +8920,7 @@ function poke() {
8143
8920
  apply: "serve",
8144
8921
  configureServer(server) {
8145
8922
  const stdin = process.stdin;
8146
- const debug11 = process.env.RANGO_POKE_DEBUG === "1";
8923
+ const debug12 = process.env.RANGO_POKE_DEBUG === "1";
8147
8924
  const triggerReload = (source) => {
8148
8925
  server.hot.send({ type: "full-reload", path: "*" });
8149
8926
  server.config.logger.info(` browser reload (${source})`, {
@@ -8176,7 +8953,7 @@ function poke() {
8176
8953
  lines.pop();
8177
8954
  return lines;
8178
8955
  };
8179
- if (debug11) {
8956
+ if (debug12) {
8180
8957
  server.config.logger.info(
8181
8958
  ` poke debug enabled (isTTY=${stdin.isTTY ? "yes" : "no"}, isRaw=${stdin.isTTY ? stdin.isRaw ? "yes" : "no" : "n/a"})`,
8182
8959
  { timestamp: true }
@@ -8189,7 +8966,7 @@ function poke() {
8189
8966
  );
8190
8967
  }
8191
8968
  const onData = (data) => {
8192
- if (debug11) {
8969
+ if (debug12) {
8193
8970
  server.config.logger.info(` poke stdin ${formatChunk(data)}`, {
8194
8971
  timestamp: true
8195
8972
  });