@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
@@ -19,11 +19,22 @@ import {
19
19
  createScanFilter,
20
20
  } from "../build/generate-route-types.js";
21
21
  import { firstCodeMatchIndex } from "../build/route-types/source-scan.js";
22
+ import {
23
+ DEV_DISCOVERY_EPOCH_HEADER,
24
+ DEV_DISCOVERY_PROBE_HEADER,
25
+ DEV_DISCOVERY_QUERY_EVENT,
26
+ DEV_DISCOVERY_READY_EVENT,
27
+ } from "../dev-discovery-protocol.js";
28
+ import {
29
+ DEV_SHELL_PROBE_TIMEOUT_MS,
30
+ normalizeCaptureTimeout,
31
+ } from "../rsc/shell-serve.js";
22
32
  import {
23
33
  injectClientDebugFlag,
24
34
  internalDebugNoCacheMiddleware,
25
35
  } from "./inject-client-debug.js";
26
36
  import { createVersionPlugin } from "./plugins/version-plugin.js";
37
+ import { getVirtualEntrySSR, VIRTUAL_IDS } from "./plugins/virtual-entries.js";
27
38
  import { createVirtualStubPlugin } from "./plugins/virtual-stub-plugin.js";
28
39
  import {
29
40
  BUILD_ENV_GLOBAL_KEY,
@@ -46,6 +57,7 @@ import {
46
57
  peekSelfGenWrite,
47
58
  } from "./discovery/self-gen-tracking.js";
48
59
  import { discoverRouters } from "./discovery/discover-routers.js";
60
+ import { runShellPrerenderPhase } from "./discovery/shell-prerender-phase.js";
49
61
  import { describeDiscoveryFailure } from "./discovery/discovery-errors.js";
50
62
  import {
51
63
  createDevPrerenderCache,
@@ -125,6 +137,30 @@ function ensureCloudflareProtocolLoaderRegistered(): void {
125
137
  // Temp Server Factory
126
138
  // ============================================================================
127
139
 
140
+ /**
141
+ * Outcome of getOrCreateTempServer. `env` is the temp RSC environment on
142
+ * success, else null with `error` carrying WHY the create/import failed — or
143
+ * null when createServer resolved cleanly but attached no runner (terminal, but
144
+ * not an exception). The dev /__rsc_shell endpoint runs `error` through the
145
+ * SAME reoptimization classifier the import sites use: only a transient Vite
146
+ * re-optimization is signalled NOT-READY (client re-polls); every terminal
147
+ * failure fails fast so the read-through MISSes immediately instead of
148
+ * re-polling a permanently-broken realm for the full readiness deadline
149
+ * (issue #719 P2).
150
+ */
151
+ type TempServerResult = { env: any; error: unknown };
152
+
153
+ /**
154
+ * Test-only one-shot boot-race injection (issue #719 P3). When
155
+ * RANGO_E2E_INJECT_SHELL_NOTREADY=1, the dev /__rsc_shell endpoint emits a
156
+ * single reoptimization-class NOT-READY per pathname before serving, so an e2e
157
+ * can drive the REAL endpoint + real client re-poll deterministically — a
158
+ * natural cold race settles too fast on quick machines to guard the regression.
159
+ * Keyed per pathname so the read-through's re-poll finds it already fired and
160
+ * gets the HIT. Never engaged without the env flag.
161
+ */
162
+ const injectedShellNotReadyPaths = new Set<string>();
163
+
128
164
  /**
129
165
  * Create a minimal Vite server for router discovery.
130
166
  *
@@ -138,7 +174,21 @@ function ensureCloudflareProtocolLoaderRegistered(): void {
138
174
  */
139
175
  async function createTempRscServer(
140
176
  state: DiscoveryState,
141
- options: { forceBuild?: boolean; cacheDir?: string } = {},
177
+ options: {
178
+ forceBuild?: boolean;
179
+ cacheDir?: string;
180
+ /**
181
+ * Serve the REAL rango SSR entry (getVirtualEntrySSR) for
182
+ * "virtual:entry-ssr" instead of the discovery stub, so the dev
183
+ * /__rsc_shell endpoint can drive captureShellHTML in this server's SSR
184
+ * realm. Dev-correct by construction: the entry's bootstrap resolves to
185
+ * plugin-rsc's stable virtual browser-entry URL, which the MAIN dev
186
+ * server serves to the browser. Loaded lazily — discovery never imports
187
+ * the SSR entry, so the temp server stays as light as before until a
188
+ * shell capture actually runs.
189
+ */
190
+ realSsrEntry?: boolean;
191
+ } = {},
142
192
  ) {
143
193
  // Install the Node ESM loader hook before any module evaluation so
144
194
  // `cloudflare:*` specifiers in externalized/loader-delegated modules
@@ -178,6 +228,26 @@ async function createTempRscServer(
178
228
  // hashClientRefs only in build mode — production bundles need hashed refs
179
229
  ...(options.forceBuild ? [hashClientRefs(state.projectRoot)] : []),
180
230
  createVersionPlugin(),
231
+ // Before the stub plugin, so "virtual:entry-ssr" resolves to the real
232
+ // SSR entry when the shell endpoint needs it (see the option doc).
233
+ ...(options.realSsrEntry
234
+ ? [
235
+ {
236
+ name: "@rangojs/router:temp-real-ssr-entry",
237
+ enforce: "pre" as const,
238
+ resolveId(id: string) {
239
+ return id === "virtual:entry-ssr"
240
+ ? "\0rango-temp-real-ssr-entry"
241
+ : null;
242
+ },
243
+ load(id: string) {
244
+ return id === "\0rango-temp-real-ssr-entry"
245
+ ? getVirtualEntrySSR(state.opts?.headScripts)
246
+ : null;
247
+ },
248
+ } satisfies import("vite").Plugin,
249
+ ]
250
+ : []),
181
251
  createVirtualStubPlugin(),
182
252
  createCloudflareProtocolStubPlugin(),
183
253
  // Dev prerender must use dev-mode IDs (path-based) to match the workerd
@@ -281,6 +351,19 @@ async function acquireBuildEnv(
281
351
  return true;
282
352
  }
283
353
 
354
+ /**
355
+ * Reset the per-build prerender collection state. A helper (not inline
356
+ * assignments in buildStart) so TS's property narrowing does not pin
357
+ * `s.shellCandidates` to `null` across the discovery call that repopulates
358
+ * it — the finally block re-reads it to decide the temp-server keep-alive.
359
+ */
360
+ function resetPrerenderCollection(s: DiscoveryState): void {
361
+ s.prerenderManifestEntries = null;
362
+ s.staticManifestEntries = null;
363
+ s.shellCandidates = null;
364
+ s.prerenderPayloadValues = null;
365
+ }
366
+
284
367
  /**
285
368
  * Release build-time env resources and clear state.
286
369
  */
@@ -395,6 +478,45 @@ export function createRouterDiscoveryPlugin(
395
478
  if ((globalThis as any).__rscRouterDiscoveryActive) return;
396
479
  s.devServer = server;
397
480
 
481
+ let workerReadyEpoch: number | undefined;
482
+ const publishDevDiscoveryReady = (epoch: number) => {
483
+ if (epoch <= (workerReadyEpoch ?? -1)) return;
484
+ workerReadyEpoch = epoch;
485
+ (server.environments as any)?.client?.hot?.send({
486
+ type: "custom",
487
+ event: DEV_DISCOVERY_READY_EVENT,
488
+ data: { epoch },
489
+ });
490
+ debugDiscovery?.("hmr: workerd ready at epoch %d", epoch);
491
+ };
492
+ if (opts?.preset === "cloudflare") {
493
+ const registeredClientHotChannels = new Set<any>();
494
+ const registerDevDiscoveryHotChannels = () => {
495
+ const clientHot = (server.environments as any)?.client?.hot;
496
+ if (clientHot && !registeredClientHotChannels.has(clientHot)) {
497
+ registeredClientHotChannels.add(clientHot);
498
+ clientHot.on(
499
+ DEV_DISCOVERY_QUERY_EVENT,
500
+ (_payload: unknown, client: any) => {
501
+ if (workerReadyEpoch === undefined) return;
502
+ client.send(DEV_DISCOVERY_READY_EVENT, {
503
+ epoch: workerReadyEpoch,
504
+ });
505
+ },
506
+ );
507
+ }
508
+ debugDiscovery?.(
509
+ "hmr: dev discovery browser channel registered (client=%s)",
510
+ !!clientHot,
511
+ );
512
+ };
513
+
514
+ registerDevDiscoveryHotChannels();
515
+ if (server.httpServer && !server.httpServer.listening) {
516
+ server.httpServer.once("listening", registerDevDiscoveryHotChannels);
517
+ }
518
+ }
519
+
398
520
  // Serve the internal-debug module no-cache: consumers resolve it into
399
521
  // node_modules, where dev's immutable `?v=` caching pinned browsers to a
400
522
  // stale baked INTERNAL_RANGO_DEBUG. See internalDebugNoCacheMiddleware.
@@ -423,6 +545,7 @@ export function createRouterDiscoveryPlugin(
423
545
  const getDevServerOrigin = () =>
424
546
  server.resolvedUrls?.local?.[0]?.replace(/\/$/, "") ||
425
547
  `http://localhost:${server.config.server.port || 5173}`;
548
+ let devServerClosed = false;
426
549
 
427
550
  // Shared temp server for Cloudflare dev (no module runner in workerd).
428
551
  // Used by both discover() (route type generation) and the prerender
@@ -433,6 +556,7 @@ export function createRouterDiscoveryPlugin(
433
556
 
434
557
  // Clean up the temporary server and build env when the dev server shuts down
435
558
  server.httpServer?.on("close", () => {
559
+ devServerClosed = true;
436
560
  if (prerenderTempServer) {
437
561
  prerenderTempServer.close().catch(() => {});
438
562
  prerenderTempServer = null;
@@ -480,7 +604,7 @@ export function createRouterDiscoveryPlugin(
480
604
  }
481
605
  }
482
606
 
483
- async function getOrCreateTempServer(): Promise<any | null> {
607
+ async function getOrCreateTempServer(): Promise<TempServerResult> {
484
608
  // Reuse path: if a temp server is already alive, prefer reusing
485
609
  // it over orphaning the existing instance and spinning up a new
486
610
  // one. This handles two cases:
@@ -501,7 +625,7 @@ export function createRouterDiscoveryPlugin(
501
625
  debugDiscovery?.(
502
626
  "getOrCreateTempServer: cached temp runner reused",
503
627
  );
504
- return existingEnv;
628
+ return { env: existingEnv, error: null };
505
629
  }
506
630
  // Server alive but registry missing — likely after a prior
507
631
  // refresh's invalidate + import threw. Try to re-import.
@@ -510,7 +634,7 @@ export function createRouterDiscoveryPlugin(
510
634
  );
511
635
  try {
512
636
  await importEntryAndRegistry(existingEnv);
513
- return existingEnv;
637
+ return { env: existingEnv, error: null };
514
638
  } catch (err: any) {
515
639
  debugDiscovery?.(
516
640
  "getOrCreateTempServer: reuse import failed (%s) — closing orphan and creating fresh",
@@ -538,20 +662,30 @@ export function createRouterDiscoveryPlugin(
538
662
  "getOrCreateTempServer: creating new temp server, entry=%s",
539
663
  s.resolvedEntryPath ?? "(unset)",
540
664
  );
665
+ // Surface the create/import cause to the caller (issue #719 P2): a
666
+ // transient re-optimization is re-pollable, a terminal fault is not. A
667
+ // clean createServer that yields no runner leaves this null — terminal,
668
+ // but not an exception.
669
+ let createError: unknown = null;
541
670
  try {
542
671
  prerenderTempServer = await createTempRscServer(s, {
543
672
  cacheDir: "node_modules/.vite_prerender",
673
+ // The dev /__rsc_shell endpoint drives captureShellHTML in this
674
+ // server's SSR realm; the entry is only imported when a shell
675
+ // capture runs, so discovery cost is unchanged.
676
+ realSsrEntry: true,
544
677
  });
545
678
 
546
679
  const tempRscEnv = (prerenderTempServer.environments as any)?.rsc;
547
680
  if (tempRscEnv?.runner) {
548
681
  await importEntryAndRegistry(tempRscEnv);
549
- return tempRscEnv;
682
+ return { env: tempRscEnv, error: null };
550
683
  }
551
684
  debugDiscovery?.(
552
685
  "getOrCreateTempServer: tempRscEnv.runner unavailable",
553
686
  );
554
687
  } catch (err: any) {
688
+ createError = err;
555
689
  debugDiscovery?.(
556
690
  "getOrCreateTempServer: FAILED message=%s",
557
691
  err.message,
@@ -566,7 +700,7 @@ export function createRouterDiscoveryPlugin(
566
700
  await prerenderTempServer?.close().catch(() => {});
567
701
  prerenderTempServer = null;
568
702
  prerenderNodeRegistry = null;
569
- return null;
703
+ return { env: null, error: createError };
570
704
  }
571
705
 
572
706
  // Clear the package-level singleton registries that survive a Vite
@@ -619,7 +753,7 @@ export function createRouterDiscoveryPlugin(
619
753
  // versions / preset configurations may differ in which graph carries
620
754
  // the module-runner cache).
621
755
  async function refreshTempRscEnv(): Promise<any | null> {
622
- let tempRscEnv = await getOrCreateTempServer();
756
+ const tempRscEnv = (await getOrCreateTempServer()).env;
623
757
  if (!tempRscEnv) return null;
624
758
 
625
759
  // Module-runner cache is on the per-environment graph in Vite 6+;
@@ -645,7 +779,7 @@ export function createRouterDiscoveryPlugin(
645
779
  prerenderTempServer = null;
646
780
  prerenderNodeRegistry = null;
647
781
  }
648
- return await getOrCreateTempServer();
782
+ return (await getOrCreateTempServer()).env;
649
783
  }
650
784
 
651
785
  debugDiscovery?.(
@@ -718,11 +852,11 @@ export function createRouterDiscoveryPlugin(
718
852
  acquireBuildEnv(s, viteCommand, viteMode),
719
853
  );
720
854
 
721
- tempRscEnv = await timed(
722
- debugDiscovery,
723
- "getOrCreateTempServer",
724
- () => getOrCreateTempServer(),
725
- );
855
+ tempRscEnv = (
856
+ await timed(debugDiscovery, "getOrCreateTempServer", () =>
857
+ getOrCreateTempServer(),
858
+ )
859
+ ).env;
726
860
  if (tempRscEnv) {
727
861
  optimizerHashBefore =
728
862
  tempRscEnv.depsOptimizer?.metadata?.browserHash;
@@ -866,16 +1000,6 @@ export function createRouterDiscoveryPlugin(
866
1000
  if (s.mergedRouteManifest && serverMod.setCachedManifest) {
867
1001
  serverMod.setCachedManifest(s.mergedRouteManifest);
868
1002
  }
869
- if (
870
- s.mergedPrecomputedEntries &&
871
- s.mergedPrecomputedEntries.length > 0 &&
872
- serverMod.setPrecomputedEntries
873
- ) {
874
- serverMod.setPrecomputedEntries(s.mergedPrecomputedEntries);
875
- }
876
- if (s.mergedRouteTrie && serverMod.setRouteTrie) {
877
- serverMod.setRouteTrie(s.mergedRouteTrie);
878
- }
879
1003
  const perRouterSetters: Array<[Map<string, any>, string]> = [
880
1004
  [s.perRouterManifestDataMap, "setRouterManifest"],
881
1005
  [s.perRouterTrieMap, "setRouterTrie"],
@@ -949,7 +1073,7 @@ export function createRouterDiscoveryPlugin(
949
1073
  // instances. Before #654 the cached registry was only refreshed on
950
1074
  // route-file edits, so handler-only edits served stale prerender
951
1075
  // content on this path. Warm-cache re-imports are module-cache hits.
952
- const tempRscEnv = await getOrCreateTempServer();
1076
+ const tempRscEnv = (await getOrCreateTempServer()).env;
953
1077
  if (tempRscEnv) {
954
1078
  try {
955
1079
  await importEntryAndRegistry(tempRscEnv);
@@ -1057,6 +1181,283 @@ export function createRouterDiscoveryPlugin(
1057
1181
  logResult(404, "no match");
1058
1182
  });
1059
1183
 
1184
+ // Dev on-demand PPR shell production (producer B, #699). There is no
1185
+ // build manifest in dev, so the serve path's read-through
1186
+ // (rsc/shell-build-manifest.ts) fetches the shell entry from here on a
1187
+ // Prerender+ppr route's first request — dev serves x-rango-shell: HIT
1188
+ // from request one, mirroring production. Memoized per router HMR
1189
+ // generation AND per caller version (a client-module edit bumps the
1190
+ // version without rotating the router instance; the stale entry would
1191
+ // fail the serve gate forever). The endpoint is policy-free: the caller
1192
+ // (the serve gate, which resolved the route's ppr option) sends
1193
+ // ttl/swr/tags/version. Only prerender-backed routes produce entries —
1194
+ // the /__rsc_prerender pre-flight below both warms the payload memo the
1195
+ // capture's dev store fetch will hit AND refuses non-prerenderable
1196
+ // routes (a live-handler render must never be served as a baked shell).
1197
+ server.middlewares.use("/__rsc_shell", async (req: any, res: any) => {
1198
+ await s.discoveryDone;
1199
+ const url = new URL(req.url ?? "", "http://localhost");
1200
+ const pathname = url.searchParams.get("pathname");
1201
+ const routeName = url.searchParams.get("routeName");
1202
+ const version = url.searchParams.get("version");
1203
+ // ttl is required like the identifiers: the endpoint is policy-free
1204
+ // (the serve gate resolved the route's ppr option and always sends
1205
+ // it), so there is deliberately no default to drift from
1206
+ // resolvePprConfig's.
1207
+ const ttlRaw = url.searchParams.get("ttl");
1208
+ if (!pathname || !routeName || !version || !ttlRaw) {
1209
+ res.statusCode = 400;
1210
+ res.end("Missing pathname/routeName/version/ttl");
1211
+ return;
1212
+ }
1213
+
1214
+ // Boot-race readiness signal (issue #719): the capture realm is stood
1215
+ // up lazily on the first hit (temp server, registry import, and a Vite
1216
+ // dep re-optimization the first shell-capture import can trigger). All
1217
+ // are TRANSIENT — a retry seconds later succeeds. Tagging them 503 +
1218
+ // x-rango-shell-dev: NOT-READY lets the read-through re-poll ONLY these
1219
+ // (a bounded await of readiness) instead of mapping the boot window to
1220
+ // a hard first-request MISS. Genuine negatives (404) stay untagged so a
1221
+ // non-baked route never stalls the foreground.
1222
+ const sendNotReady = (detail: string): void => {
1223
+ res.statusCode = 503;
1224
+ res.setHeader("x-rango-shell-dev", "NOT-READY");
1225
+ res.end(detail);
1226
+ };
1227
+ // A Vite dependency re-optimization surfaces as ERR_OUTDATED_OPTIMIZED_DEP
1228
+ // (import throws once, then re-imports clean) — retryable, unlike a real
1229
+ // module fault (syntax error, missing export), which stays a hard 500.
1230
+ // The message-regex fallback is NOT gratuitous: err.code is stripped when
1231
+ // the error serializes across the module-runner/workerd RPC boundary (the
1232
+ // message survives), so under the Cloudflare preset .code alone misses it.
1233
+ const isReoptimizing = (err: any): boolean =>
1234
+ err?.code === "ERR_OUTDATED_OPTIMIZED_DEP" ||
1235
+ /Outdated Optimize Dep|optimized dependency|new dependencies optimized/i.test(
1236
+ String(err?.message ?? ""),
1237
+ );
1238
+ // Fold the reoptimize-guard pasted at all three import/capture catch
1239
+ // sites: emit NOT-READY + report handled for a transient re-optimization,
1240
+ // else leave the caller to send its own terminal (500 for an entry
1241
+ // import, 404 for a mid-capture failure that keeps runtime capture).
1242
+ const handledAsReoptimizing = (err: any): boolean => {
1243
+ if (!isReoptimizing(err)) return false;
1244
+ sendNotReady(`Shell capture re-optimizing: ${err.message}`);
1245
+ return true;
1246
+ };
1247
+ // Both entry-import sites (main-server rsc env, temp Node server) fail
1248
+ // identically: reoptimize → NOT-READY, else → hard 500.
1249
+ const handleShellImportError = (err: any): void => {
1250
+ if (handledAsReoptimizing(err)) return;
1251
+ res.statusCode = 500;
1252
+ res.end(`Shell capture module refresh failed: ${err.message}`);
1253
+ };
1254
+ // Deterministic boot-race injection for e2e (issue #719 P3): fire ONE
1255
+ // reopt-class NOT-READY per pathname through the REAL classifier so the
1256
+ // read-through's re-poll path is exercised end-to-end (not just the
1257
+ // unit-mocked fetch), then serve normally on the re-poll. Env-gated —
1258
+ // inert in every non-test run.
1259
+ if (
1260
+ process.env.RANGO_E2E_INJECT_SHELL_NOTREADY === "1" &&
1261
+ !injectedShellNotReadyPaths.has(pathname)
1262
+ ) {
1263
+ injectedShellNotReadyPaths.add(pathname);
1264
+ const injected = Object.assign(
1265
+ new Error("Outdated Optimize Dep (injected boot-race)"),
1266
+ { code: "ERR_OUTDATED_OPTIMIZED_DEP" },
1267
+ );
1268
+ if (handledAsReoptimizing(injected)) return;
1269
+ }
1270
+ const ttl = Number(ttlRaw);
1271
+ const swrRaw = url.searchParams.get("swr");
1272
+ const swr = swrRaw === null ? undefined : Number(swrRaw);
1273
+ const tagsRaw = url.searchParams.get("tags");
1274
+ const tags = tagsRaw ? tagsRaw.split(",") : undefined;
1275
+ const maxSnapshotBytesRaw = url.searchParams.get("maxSnapshotBytes");
1276
+ const maxSnapshotBytes =
1277
+ maxSnapshotBytesRaw === null
1278
+ ? undefined
1279
+ : Number(maxSnapshotBytesRaw);
1280
+ // Boundary revalidation via the SHARED normalizer (shell-serve.ts):
1281
+ // the param crossed an HTTP query string, and a garbage value must
1282
+ // fall back to the capture default, never reach setTimeout as NaN
1283
+ // (which Node clamps to ~1ms — an instant abort).
1284
+ const captureTimeout = normalizeCaptureTimeout(
1285
+ Number(url.searchParams.get("captureTimeout")),
1286
+ );
1287
+
1288
+ // Resolve the capture realms: main-server envs (Node preset) or the
1289
+ // shared temp Node server (Cloudflare preset — no main RSC runner).
1290
+ // Entry re-import per request picks up HMR edits, exactly like the
1291
+ // prerender endpoint above.
1292
+ const rscEnvMain = (server.environments as any)?.rsc;
1293
+ let rscRealm: any = null;
1294
+ let ssrRealm: any = null;
1295
+ let ssrEntryId: string;
1296
+ // Why the temp-server path returned no runner, if it did: a transient
1297
+ // re-optimization is re-pollable (NOT-READY), a terminal create/import
1298
+ // fault is not. Carried from getOrCreateTempServer to the readiness
1299
+ // check below so only reopt re-polls (issue #719 P2).
1300
+ let tempServerError: unknown = null;
1301
+ if (rscEnvMain?.runner && s.resolvedEntryPath) {
1302
+ try {
1303
+ await rscEnvMain.runner.import(s.resolvedEntryPath);
1304
+ } catch (err: any) {
1305
+ handleShellImportError(err);
1306
+ return;
1307
+ }
1308
+ rscRealm = rscEnvMain;
1309
+ ssrRealm = (server.environments as any)?.ssr;
1310
+ ssrEntryId =
1311
+ (server.environments as any)?.ssr?.config?.build?.rollupOptions
1312
+ ?.input?.index ?? VIRTUAL_IDS.ssr;
1313
+ } else {
1314
+ const tempResult = await getOrCreateTempServer();
1315
+ if (tempResult.env) {
1316
+ try {
1317
+ await importEntryAndRegistry(tempResult.env);
1318
+ } catch (err: any) {
1319
+ handleShellImportError(err);
1320
+ return;
1321
+ }
1322
+ } else {
1323
+ tempServerError = tempResult.error;
1324
+ }
1325
+ rscRealm = tempResult.env;
1326
+ ssrRealm = (prerenderTempServer?.environments as any)?.ssr;
1327
+ ssrEntryId = "virtual:entry-ssr";
1328
+ }
1329
+ if (!rscRealm?.runner || !ssrRealm?.runner) {
1330
+ // Reoptimization is the ONLY transient class: re-poll it (NOT-READY).
1331
+ // A terminal temp-server create/import fault, or an SSR runner absent
1332
+ // after a clean createServer, fails fast with a plain 503 (no
1333
+ // NOT-READY header) so the read-through MISSes on its first attempt
1334
+ // instead of re-polling a permanently-broken realm for the full
1335
+ // readiness deadline (issue #719 P2).
1336
+ if (tempServerError && handledAsReoptimizing(tempServerError)) return;
1337
+ res.statusCode = 503;
1338
+ res.end("Shell capture runners not available");
1339
+ return;
1340
+ }
1341
+ let registry: Map<string, any> | null = null;
1342
+ let registryError: unknown = null;
1343
+ try {
1344
+ const serverMod = await rscRealm.runner.import(
1345
+ "@rangojs/router/server",
1346
+ );
1347
+ registry = serverMod.RouterRegistry ?? null;
1348
+ } catch (err: any) {
1349
+ registryError = err;
1350
+ registry = null;
1351
+ }
1352
+ if (!registry || registry.size === 0) {
1353
+ // Same rule as the runner check: a re-optimization mid-import is
1354
+ // re-pollable (NOT-READY); a terminal import fault or a genuinely
1355
+ // empty registry (no routers registered) fails fast (issue #719 P2).
1356
+ if (registryError && handledAsReoptimizing(registryError)) return;
1357
+ res.statusCode = 503;
1358
+ res.end("Shell capture registry not available");
1359
+ return;
1360
+ }
1361
+
1362
+ // Memo sweep FIRST: after request one the common case is a memo HIT
1363
+ // (this fetch blocks a foreground document request), and the memoized
1364
+ // body needs neither the pre-flight round-trip nor a capture. Keyed
1365
+ // per router instance (= HMR generation) like the prerender memo.
1366
+ const cacheKey = `shell|${pathname}|r=${routeName}|t=${ttl}|s=${swr ?? ""}|g=${(tags ?? []).join("+")}|c=${captureTimeout ?? ""}|v=${version}`;
1367
+ for (const [, routerInstance] of registry) {
1368
+ if (typeof routerInstance.match !== "function") continue;
1369
+ const cached = devPrerenderCache.get(routerInstance, cacheKey);
1370
+ if (cached !== undefined) {
1371
+ res.setHeader("content-type", "application/json");
1372
+ res.setHeader("x-rango-shell-dev", "HIT");
1373
+ res.end(cached);
1374
+ return;
1375
+ }
1376
+ }
1377
+
1378
+ // Pre-flight: the route must be prerender-backed. Warms the payload
1379
+ // memo the capture's dev prerender store will fetch, and closes the
1380
+ // live-handler-bake hole (a non-pr route 404s here).
1381
+ if (s.devServerOrigin) {
1382
+ try {
1383
+ const probe = await fetch(
1384
+ `${s.devServerOrigin}/__rsc_prerender?pathname=${encodeURIComponent(pathname)}&routeName=${encodeURIComponent(routeName)}`,
1385
+ { signal: AbortSignal.timeout(DEV_SHELL_PROBE_TIMEOUT_MS) },
1386
+ );
1387
+ if (!probe.ok) {
1388
+ res.statusCode = 404;
1389
+ res.end("Route is not prerenderable");
1390
+ return;
1391
+ }
1392
+ } catch {
1393
+ res.statusCode = 404;
1394
+ res.end("Prerender pre-flight failed");
1395
+ return;
1396
+ }
1397
+ }
1398
+
1399
+ for (const [, routerInstance] of registry) {
1400
+ if (typeof routerInstance.match !== "function") continue;
1401
+ try {
1402
+ const ssrModule = await ssrRealm.runner.import(ssrEntryId);
1403
+ if (typeof ssrModule?.captureShellHTML !== "function") {
1404
+ res.statusCode = 404;
1405
+ res.end("SSR entry has no captureShellHTML");
1406
+ return;
1407
+ }
1408
+ const captureMod = await rscRealm.runner.import(
1409
+ "@rangojs/router/build/shell-capture",
1410
+ );
1411
+ const result = await captureMod.captureShellForBuild({
1412
+ router: routerInstance,
1413
+ urlPath: pathname,
1414
+ routeName,
1415
+ key: `${pathname}:shell`,
1416
+ ttl,
1417
+ swr,
1418
+ tags,
1419
+ maxSnapshotBytes,
1420
+ captureTimeout,
1421
+ buildEnv: s.resolvedBuildEnv,
1422
+ buildVersion: version,
1423
+ captureShellHTML: ssrModule.captureShellHTML,
1424
+ debug: !!debugDiscovery,
1425
+ });
1426
+ if (result.outcome === "route-mismatch") continue;
1427
+ if (result.outcome !== "stored" || !result.entry) {
1428
+ res.statusCode = 404;
1429
+ res.end(`Shell capture ${result.outcome}`);
1430
+ return;
1431
+ }
1432
+ const body = JSON.stringify({
1433
+ entry: result.entry,
1434
+ ttl,
1435
+ swr,
1436
+ tags: result.tags,
1437
+ routeName,
1438
+ });
1439
+ devPrerenderCache.set(routerInstance, cacheKey, body);
1440
+ res.setHeader("content-type", "application/json");
1441
+ res.setHeader("x-rango-shell-dev", "MISS");
1442
+ res.end(body);
1443
+ return;
1444
+ } catch (err: any) {
1445
+ // A dep re-optimization mid-capture is a boot-race, not a capture
1446
+ // failure: signal NOT-READY so the read-through re-polls instead of
1447
+ // conceding a first-request MISS (issue #719).
1448
+ if (handledAsReoptimizing(err)) return;
1449
+ console.warn(
1450
+ `[rango] Dev shell capture error for ${pathname} (route keeps runtime capture): ${err.message}`,
1451
+ );
1452
+ res.statusCode = 404;
1453
+ res.end(`Shell capture error: ${err.message}`);
1454
+ return;
1455
+ }
1456
+ }
1457
+ res.statusCode = 404;
1458
+ res.end("No router matched");
1459
+ });
1460
+
1060
1461
  // Watch url module and router files for changes and regenerate named-routes.gen.ts.
1061
1462
  // Process files containing urls( or createRouter( to update the combined route map.
1062
1463
  if (opts?.staticRouteTypesGeneration !== false) {
@@ -1072,6 +1473,22 @@ export function createRouterDiscoveryPlugin(
1072
1473
  writeCombinedRouteTypesWithTracking(s);
1073
1474
  }
1074
1475
  };
1476
+ const routeShapeSignature = () =>
1477
+ JSON.stringify(
1478
+ s.perRouterManifests.map(
1479
+ ({
1480
+ id,
1481
+ routeManifest,
1482
+ routeTrailingSlash,
1483
+ routeSearchSchemas,
1484
+ }) => ({
1485
+ id,
1486
+ routeManifest,
1487
+ routeTrailingSlash,
1488
+ routeSearchSchemas,
1489
+ }),
1490
+ ),
1491
+ );
1075
1492
 
1076
1493
  const maybeHandleGeneratedRouteFileMutation = (
1077
1494
  filePath: string,
@@ -1110,6 +1527,7 @@ export function createRouterDiscoveryPlugin(
1110
1527
  // populated manifest there's nothing useful to do, so bail
1111
1528
  // before involving the gate machine at all.
1112
1529
  if (!hasMainRunner && s.perRouterManifests.length === 0) return;
1530
+ let previousRouteShape = routeShapeSignature();
1113
1531
  await gate.runRefreshCycle(async () => {
1114
1532
  const hmrStart = performance.now();
1115
1533
  try {
@@ -1164,7 +1582,19 @@ export function createRouterDiscoveryPlugin(
1164
1582
  // original call already resolved on the failed cycle. A failed
1165
1583
  // cycle throws above and never reaches here, so a broken edit
1166
1584
  // never reloads the worker onto bad source.
1167
- if (rscEnv && !rscEnv.runner) forceCloudflareWorkerReload(rscEnv);
1585
+ if (rscEnv && !rscEnv.runner) {
1586
+ const nextRouteShape = routeShapeSignature();
1587
+ let expectedEpoch: number | undefined;
1588
+ if (nextRouteShape !== previousRouteShape) {
1589
+ expectedEpoch = Math.max(
1590
+ Date.now(),
1591
+ (s.devDiscoveryEpoch ?? 0) + 1,
1592
+ );
1593
+ s.devDiscoveryEpoch = expectedEpoch;
1594
+ }
1595
+ previousRouteShape = nextRouteShape;
1596
+ forceCloudflareWorkerReload(rscEnv, expectedEpoch);
1597
+ }
1168
1598
  } catch (err: any) {
1169
1599
  s.lastDiscoveryError = {
1170
1600
  message: err?.message ?? String(err),
@@ -1198,7 +1628,8 @@ export function createRouterDiscoveryPlugin(
1198
1628
  // HMR update for them and the entry chain is never evicted.
1199
1629
  //
1200
1630
  // Fix: after discovery completes, (1) invalidate the worker env's
1201
- // Node-side module graph, then (2) send a full-reload to the worker.
1631
+ // Node-side module graph, (2) send a full-reload to the worker, then
1632
+ // (3) probe until the active router reports the new discovery epoch.
1202
1633
  // Step (2) alone is insufficient: the full-reload handler clears the
1203
1634
  // runner's evaluatedModules and re-imports entrypoints, but each
1204
1635
  // re-import fetches the module back through this Node-side graph, which
@@ -1206,13 +1637,19 @@ export function createRouterDiscoveryPlugin(
1206
1637
  // rebuilds the stale route table and the new route 404s/hits the
1207
1638
  // catch-all. Invalidating the graph forces a fresh transform on
1208
1639
  // re-fetch (the same mechanism refreshTempRscEnv uses for discovery),
1209
- // so the re-import re-runs createRouter() with the new routes. This is
1210
- // the programmatic equivalent of the dev-server "r + enter" restart,
1211
- // scoped to the worker environment instead of tearing down the server.
1212
- const forceCloudflareWorkerReload = (rscEnv: any) => {
1640
+ // so the re-import re-runs createRouter() with the new routes. The probe
1641
+ // is detached because the refresh callback still holds the discovery
1642
+ // gate; awaiting it here would deadlock the request that proves the new
1643
+ // router is active. Once it succeeds, the client hot channel broadcasts
1644
+ // readiness to open and newly-booted stale documents.
1645
+ const forceCloudflareWorkerReload = (
1646
+ rscEnv: any,
1647
+ expectedEpoch: number | undefined,
1648
+ ) => {
1213
1649
  if (!rscEnv?.hot) return;
1214
- try {
1215
- const graph = rscEnv.moduleGraph;
1650
+
1651
+ const graph = rscEnv.moduleGraph;
1652
+ const reloadWorkerd = () => {
1216
1653
  if (graph?.invalidateAll) {
1217
1654
  graph.invalidateAll();
1218
1655
  debugDiscovery?.("hmr: invalidated workerd rsc module graph");
@@ -1221,12 +1658,49 @@ export function createRouterDiscoveryPlugin(
1221
1658
  debugDiscovery?.(
1222
1659
  "hmr: forced workerd rsc env reload (full-reload)",
1223
1660
  );
1224
- } catch (err: any) {
1661
+ };
1662
+ reloadWorkerd();
1663
+
1664
+ if (expectedEpoch === undefined) return;
1665
+ void (async () => {
1666
+ const deadline = Date.now() + 15_000;
1667
+ do {
1668
+ if (devServerClosed || expectedEpoch !== s.devDiscoveryEpoch) {
1669
+ return;
1670
+ }
1671
+ await new Promise<void>((resolve) => setTimeout(resolve, 25));
1672
+ if (devServerClosed || expectedEpoch !== s.devDiscoveryEpoch) {
1673
+ return;
1674
+ }
1675
+ try {
1676
+ const response = await fetch(getDevServerOrigin() + "/", {
1677
+ cache: "no-store",
1678
+ headers: {
1679
+ [DEV_DISCOVERY_PROBE_HEADER]: String(expectedEpoch),
1680
+ },
1681
+ signal: AbortSignal.timeout(1_000),
1682
+ });
1683
+ if (
1684
+ !devServerClosed &&
1685
+ expectedEpoch === s.devDiscoveryEpoch &&
1686
+ response.headers.get(DEV_DISCOVERY_EPOCH_HEADER) ===
1687
+ String(expectedEpoch)
1688
+ ) {
1689
+ publishDevDiscoveryReady(expectedEpoch);
1690
+ return;
1691
+ }
1692
+ // A response without the expected epoch proves an older worker
1693
+ // evaluation won the race after the initial invalidation. Clear
1694
+ // that completed evaluation and retry the reload.
1695
+ reloadWorkerd();
1696
+ } catch {}
1697
+ } while (Date.now() < deadline);
1698
+
1225
1699
  debugDiscovery?.(
1226
- "hmr: workerd reload failed: %s",
1227
- err?.message ?? err,
1700
+ "hmr: workerd readiness probe timed out at epoch %d",
1701
+ expectedEpoch,
1228
1702
  );
1229
- }
1703
+ })();
1230
1704
  };
1231
1705
 
1232
1706
  const scheduleRouteRegeneration = () => {
@@ -1430,8 +1904,7 @@ export function createRouterDiscoveryPlugin(
1430
1904
  const buildStartTime = performance.now();
1431
1905
  debugDiscovery?.("build: start (env=%s)", this.environment?.name ?? "?");
1432
1906
  resetStagedBuildAssets(s.projectRoot);
1433
- s.prerenderManifestEntries = null;
1434
- s.staticManifestEntries = null;
1907
+ resetPrerenderCollection(s);
1435
1908
 
1436
1909
  // Acquire build-time env bindings if configured
1437
1910
  await timed(debugDiscovery, "build acquireBuildEnv", () =>
@@ -1502,12 +1975,23 @@ export function createRouterDiscoveryPlugin(
1502
1975
  );
1503
1976
  } finally {
1504
1977
  delete (globalThis as any).__rscRouterDiscoveryActive;
1505
- if (tempServer) {
1506
- await timed(debugDiscovery, "build tempServer.close", () =>
1507
- tempServer.close(),
1508
- );
1978
+ if (tempServer && s.shellCandidates?.length) {
1979
+ // Prerender+ppr candidates exist: keep the temp server (and its
1980
+ // realm — tries installed, registry populated) alive for the
1981
+ // post-build shell capture phase (buildApp post, producer B #699).
1982
+ // The prelude embeds built client asset URLs, so the capture can
1983
+ // only run after the client build; that phase closes the server.
1984
+ // buildEnv release is deferred with it — a bake-lane loader
1985
+ // executing during the capture may read ctx.env.
1986
+ s.shellPhaseTempServer = tempServer;
1987
+ } else {
1988
+ if (tempServer) {
1989
+ await timed(debugDiscovery, "build tempServer.close", () =>
1990
+ tempServer.close(),
1991
+ );
1992
+ }
1993
+ await releaseBuildEnv(s);
1509
1994
  }
1510
- await releaseBuildEnv(s);
1511
1995
  debugDiscovery?.(
1512
1996
  "build discovery done (%sms)",
1513
1997
  (performance.now() - buildStartTime).toFixed(1),
@@ -1515,6 +1999,43 @@ export function createRouterDiscoveryPlugin(
1515
1999
  }
1516
2000
  },
1517
2001
 
2002
+ // Post-build PPR shell capture (producer B, #699): runs after EVERY
2003
+ // environment bundle is written — the shell prelude embeds built client
2004
+ // asset URLs (bootstrap entry), which do not exist at buildStart. The
2005
+ // kept temp server and the buildEnv were deferred AS A PAIR in
2006
+ // buildStart's finally; this finally is the pair's success-path owner
2007
+ // (buildEnd below owns the aborted-build path) — the phase itself is a
2008
+ // pure producer and tears down only the globals it installs.
2009
+ buildApp: {
2010
+ order: "post",
2011
+ async handler(builder) {
2012
+ try {
2013
+ await runShellPrerenderPhase(s, builder as any);
2014
+ } finally {
2015
+ if (s.isBuildMode) {
2016
+ const tempServer = s.shellPhaseTempServer;
2017
+ s.shellPhaseTempServer = null;
2018
+ if (tempServer) await tempServer.close();
2019
+ await releaseBuildEnv(s);
2020
+ }
2021
+ }
2022
+ },
2023
+ },
2024
+
2025
+ // An environment build failure aborts the builder before the buildApp
2026
+ // post hook — never leak the kept temp server (open handles hang the CLI)
2027
+ // or the deferred buildEnv (a live miniflare proxy).
2028
+ async buildEnd(error) {
2029
+ if (!error || !s.shellPhaseTempServer) return;
2030
+ const tempServer = s.shellPhaseTempServer;
2031
+ s.shellPhaseTempServer = null;
2032
+ try {
2033
+ await tempServer.close();
2034
+ } finally {
2035
+ await releaseBuildEnv(s);
2036
+ }
2037
+ },
2038
+
1518
2039
  // Suppress vite's HMR cascade for our own gen-file writes.
1519
2040
  //
1520
2041
  // After every cf HMR cycle, refreshTempRscEnv → writeRouteTypesFiles