@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
@@ -20,15 +20,23 @@ import React from "react";
20
20
  import { bufferToBase64 } from "../cache/cf/cf-base64.js";
21
21
  import { reportCacheError } from "../cache/cache-error.js";
22
22
  import { runBackground } from "../cache/background-task.js";
23
+ import { enqueueSerializedCapture } from "./capture-queue.js";
24
+ import { SHELL_CAPTURE_MAX_WAIT_MS } from "./shell-capture-constants.js";
25
+ import { INTERNAL_RANGO_DEBUG } from "../internal-debug.js";
23
26
  import { observePhase, PHASES } from "../router/instrument.js";
24
27
  import {
25
28
  runWithRequestContext,
26
29
  setRequestContextParams,
30
+ wireRenderBarrier,
27
31
  UNTRACKED_BACKGROUND_TASK,
28
32
  type RequestContext,
29
33
  } from "../server/request-context.js";
30
34
  import { createHandleStore, type HandleStore } from "../server/handle-store.js";
31
- import { maskNestedContainerThenables } from "../router/segment-resolution/mask-nested.js";
35
+ import {
36
+ maskNestedContainerThenables,
37
+ type MaskReport,
38
+ } from "../router/segment-resolution/mask-nested.js";
39
+ import { isInsideLoaderScope } from "../server/context.js";
32
40
  import { isThenable } from "../handles/is-thenable.js";
33
41
  import type {
34
42
  ShellCacheEntry,
@@ -41,12 +49,14 @@ import {
41
49
  } from "../router/segment-resolution/loader-snapshot.js";
42
50
  import {
43
51
  RecordingShellStore,
52
+ SnapshotOnlySegmentStore,
44
53
  getRecordingStore,
45
54
  } from "../cache/shell-snapshot.js";
46
55
  import type { HandlerContext } from "./handler-context.js";
47
- import type { RscPayload, SSRModule } from "./types.js";
56
+ import type { SSRModule } from "./types.js";
48
57
  import { buildFullPayload } from "./full-payload.js";
49
58
  import { resolveDeferredHandleValues } from "../handles/deferred-resolution.js";
59
+ import { renderRscFlightStage } from "./render-pipeline.js";
50
60
 
51
61
  /**
52
62
  * Task-quantized quiesce: the number of consecutive macrotask hops with zero new
@@ -71,8 +81,13 @@ import { resolveDeferredHandleValues } from "../handles/deferred-resolution.js";
71
81
  */
72
82
  const FLIGHT_QUIET_HOPS = 2;
73
83
 
74
- /** Default upper bound on the capture prerender wait before forcing the abort. */
75
- const SHELL_CAPTURE_MAX_WAIT_MS = 5000;
84
+ /**
85
+ * Default capture budget. Canonical value, raise rationale, and ceiling math
86
+ * live on the leaf module (shell-capture-constants.ts, importable from the ssr
87
+ * graph too). Re-exported here so shell-build-manifest.ts's envelope math
88
+ * keeps its existing import site and cannot drift from the capture.
89
+ */
90
+ export { SHELL_CAPTURE_MAX_WAIT_MS };
76
91
 
77
92
  /**
78
93
  * Upper bound on waiting for the capture's DEFERRED cache writes to settle before
@@ -362,6 +377,259 @@ function warnUntaggedShellBakeOnce(key: string): void {
362
377
  );
363
378
  }
364
379
 
380
+ /**
381
+ * Default cap (serialized UTF-8 bytes) on the capture data snapshot riding
382
+ * inside a shell entry, when the route's `ppr` option does not set
383
+ * `maxSnapshotBytes`. 8 MiB: the snapshot shares the stored envelope with the
384
+ * base64 prelude and the postponed blob, and the tightest store value limit is
385
+ * Cloudflare KV's 25 MiB — 8 MiB of snapshot leaves the envelope well under it
386
+ * while still fitting any sane pinned-ring payload. Applied ONLY in
387
+ * captureAndStoreShell (the single defaulting site — resolvePprConfig passes
388
+ * the option through undefaulted), so every producer and direct caller gets
389
+ * the same policy. Over the cap the snapshot is skipped (shell still stored;
390
+ * pinned reads drift — see PartialPrerenderProps.maxSnapshotBytes).
391
+ */
392
+ export const DEFAULT_PPR_MAX_SNAPSHOT_BYTES: number = 8 * 1024 * 1024;
393
+
394
+ /** Cached encoder for the snapshot byte measurement (one per module, not per capture). */
395
+ const SNAPSHOT_BYTE_ENCODER = new TextEncoder();
396
+
397
+ /** Keys already warned about an over-cap snapshot (once per key per isolate). */
398
+ const warnedOverCapSnapshots = new Set<string>();
399
+
400
+ /**
401
+ * Warn once per key that the capture data snapshot exceeded the route's
402
+ * `maxSnapshotBytes` cap and was skipped. The shell entry is still stored and
403
+ * served — only the pinned-read replay is lost, so shell-baked cached content
404
+ * can drift from the frozen prelude between capture and HIT and hydration
405
+ * repairs it client-side (the pre-snapshot behavior). Once per key: the same
406
+ * page recaptures on every TTL roll and would otherwise re-warn forever.
407
+ */
408
+ function warnSnapshotOverCapOnce(
409
+ key: string,
410
+ snapshotBytes: number,
411
+ capBytes: number,
412
+ ): void {
413
+ if (warnedOverCapSnapshots.has(key)) return;
414
+ warnedOverCapSnapshots.add(key);
415
+ console.warn(
416
+ `[rango] Shell capture for "${key}" recorded a ${snapshotBytes}-byte data ` +
417
+ `snapshot, over the ${capBytes}-byte cap — the snapshot was skipped and ` +
418
+ "the shell was stored without it. The page keeps serving, but cached " +
419
+ "content baked into the shell is no longer pinned: if it drifts before " +
420
+ "the shell's TTL, hydration repairs the mismatch client-side. Raise the " +
421
+ "cap via the route's ppr option ({ maxSnapshotBytes }) if the entry " +
422
+ "still fits your store's value limit (Cloudflare KV: 25 MiB per value), " +
423
+ "or shrink the cache()'d data the shell bakes.",
424
+ );
425
+ }
426
+
427
+ /**
428
+ * One structured event from the background capture pipeline, mirroring the
429
+ * CFCacheReadDebugEvent pattern (cache/cf/cf-cache-types.ts): typed fields an
430
+ * operator can assert against, emitted per attempt and per skip, so the
431
+ * stored / no-shell / refused / backed-off lifecycle is observable outside
432
+ * dev console warnings. Configured via `createRouter({ debugShellCapture })`.
433
+ */
434
+ export interface ShellCaptureDebugEvent {
435
+ /** Shell cache key the event is about. */
436
+ key: string;
437
+ /**
438
+ * What happened:
439
+ * - stored / redirect / no-shell / refused: one capture ATTEMPT's outcome
440
+ * (see CaptureAttemptOutcome for the semantics of each)
441
+ * - error: the capture task failed with a genuine error (also routed through
442
+ * reportCacheError; the key is backed off)
443
+ * - skip-in-flight: scheduleShellCapture found a capture already running for
444
+ * the key (stampede guard) and scheduled nothing
445
+ * - skip-backoff: the key is inside its refused-capture backoff window and
446
+ * the capture was not attempted
447
+ * - backoff: the key entered (or escalated) backoff after a terminal
448
+ * no-shell — carries the new backoff state
449
+ */
450
+ outcome:
451
+ | "stored"
452
+ | "redirect"
453
+ | "no-shell"
454
+ | "refused"
455
+ | "error"
456
+ | "skip-in-flight"
457
+ | "skip-backoff"
458
+ | "backoff";
459
+ /** Attempt number (1 = first, 2 = in-place retry). Absent on skips. */
460
+ attempt?: number;
461
+ /** Wall-clock ms of the whole attempt (barrier + render + drain + put). */
462
+ attemptMs?: number;
463
+ /**
464
+ * Wall-clock ms the pre-render WRITE BARRIER waited on the foreground
465
+ * request's deferred cache writes (bounded by SHELL_CAPTURE_WRITE_BARRIER_MS).
466
+ */
467
+ barrierWaitMs?: number;
468
+ /**
469
+ * Wall-clock ms spent awaiting the capture's own deferred cache writes
470
+ * before the snapshot drain (bounded by SHELL_SNAPSHOT_WRITE_SETTLE_MS).
471
+ */
472
+ writeSettleMs?: number;
473
+ /** Stored prelude size in bytes (pre-base64). */
474
+ preludeBytes?: number;
475
+ /** Serialized snapshot size in UTF-8 bytes. Absent when nothing was recorded. */
476
+ snapshotBytes?: number;
477
+ /** True when the snapshot exceeded maxSnapshotBytes and was dropped. */
478
+ snapshotSkipped?: boolean;
479
+ /** Outcome reported by a store that supports shell-write acknowledgements. */
480
+ storeWrite?: "stored" | "invalidated";
481
+ /** Consecutive failure count in the key's backoff entry, when one exists. */
482
+ backoffFailures?: number;
483
+ /** Ms remaining in the key's backoff window, when one exists. */
484
+ backoffRemainingMs?: number;
485
+ }
486
+
487
+ /**
488
+ * Debug sink for the capture pipeline, mirroring {@link CFCacheDebug}: `true`
489
+ * logs each event to console (visible via `wrangler tail`), a function
490
+ * receives the events for programmatic capture. Off by default.
491
+ */
492
+ export type ShellCaptureDebug =
493
+ | boolean
494
+ | ((event: ShellCaptureDebugEvent) => void);
495
+
496
+ /**
497
+ * Compact single-line form of an event's fields, shared by the console sink
498
+ * and the dev Server-Timing mirror's `desc` (rsc-rendering). Plain
499
+ * alphanumerics/`=`/`-`/`()` only, so it needs no quoted-string escaping.
500
+ */
501
+ export function describeShellCaptureEvent(
502
+ event: ShellCaptureDebugEvent,
503
+ ): string {
504
+ const parts: string[] = [event.outcome];
505
+ if (event.attempt !== undefined) parts.push(`attempt=${event.attempt}`);
506
+ if (event.attemptMs !== undefined) parts.push(`${event.attemptMs}ms`);
507
+ if (event.barrierWaitMs !== undefined) {
508
+ parts.push(`barrier=${event.barrierWaitMs}ms`);
509
+ }
510
+ if (event.writeSettleMs !== undefined) {
511
+ parts.push(`write-settle=${event.writeSettleMs}ms`);
512
+ }
513
+ if (event.preludeBytes !== undefined) {
514
+ parts.push(`prelude=${event.preludeBytes}b`);
515
+ }
516
+ if (event.snapshotBytes !== undefined) {
517
+ parts.push(
518
+ `snapshot=${event.snapshotBytes}b${event.snapshotSkipped ? " (over cap, skipped)" : ""}`,
519
+ );
520
+ }
521
+ if (event.storeWrite !== undefined) {
522
+ parts.push(`store-write=${event.storeWrite}`);
523
+ }
524
+ if (event.backoffFailures !== undefined) {
525
+ parts.push(`backoff-failures=${event.backoffFailures}`);
526
+ }
527
+ if (event.backoffRemainingMs !== undefined) {
528
+ parts.push(`backoff-remaining=${event.backoffRemainingMs}ms`);
529
+ }
530
+ return parts.join(" ");
531
+ }
532
+
533
+ /** The `debugShellCapture: true` console sink: one compact line per event. */
534
+ function consoleCaptureDebugSink(event: ShellCaptureDebugEvent): void {
535
+ console.log(
536
+ `[ShellCache][debug] ${event.key} ${describeShellCaptureEvent(event)}`,
537
+ );
538
+ }
539
+
540
+ /**
541
+ * Resolve the `debugShellCapture` router option to a callable sink, or
542
+ * undefined when off. The INTERNAL_RANGO_DEBUG env-flag fallback lives HERE
543
+ * (not at a call site) so every producer that resolves a sink inherits it;
544
+ * an explicit `false` wins over the env flag.
545
+ */
546
+ export function resolveShellCaptureDebugSink(
547
+ option: ShellCaptureDebug | undefined,
548
+ ): ((event: ShellCaptureDebugEvent) => void) | undefined {
549
+ if (option === false) return undefined;
550
+ if (option === true) return consoleCaptureDebugSink;
551
+ if (typeof option === "function") return option;
552
+ return INTERNAL_RANGO_DEBUG ? consoleCaptureDebugSink : undefined;
553
+ }
554
+
555
+ /**
556
+ * Attempt-terminal outcomes recorded for the dev Server-Timing mirror. Skip
557
+ * events are excluded so a later request's skip cannot overwrite the
558
+ * interesting terminal event before a metrics-enabled request reads it.
559
+ */
560
+ const TIMING_RECORDED_OUTCOMES = new Set<ShellCaptureDebugEvent["outcome"]>([
561
+ "stored",
562
+ "redirect",
563
+ "no-shell",
564
+ "refused",
565
+ "error",
566
+ ]);
567
+
568
+ /**
569
+ * Dev-only last-terminal-event-per-key buffer backing the Server-Timing
570
+ * mirror: the capture runs AFTER its triggering response is committed, so its
571
+ * outcome can only ride a LATER response's header. rsc-rendering consumes this
572
+ * on the next ppr GET for the key when the metrics store is active
573
+ * (debugPerformance) and appends a `ppr:capture` Server-Timing entry. Dev-only
574
+ * (isDevMode) so production isolates never grow the map; FIFO-capped because
575
+ * with debugPerformance OFF nothing ever drains it, and a long dev session
576
+ * sweeping many URLs would otherwise accumulate one entry per shell key
577
+ * forever.
578
+ */
579
+ const lastCaptureEventsForTiming = new Map<string, ShellCaptureDebugEvent>();
580
+ const MAX_TIMING_EVENT_KEYS = 100;
581
+
582
+ /**
583
+ * Consume (read-and-clear) the buffered terminal capture event for `key`, so
584
+ * one capture reports into exactly one later response's Server-Timing.
585
+ */
586
+ export function takeCaptureDebugEventForTiming(
587
+ key: string,
588
+ ): ShellCaptureDebugEvent | undefined {
589
+ const event = lastCaptureEventsForTiming.get(key);
590
+ if (event) lastCaptureEventsForTiming.delete(key);
591
+ return event;
592
+ }
593
+
594
+ /**
595
+ * Publish one capture debug event: buffer terminal outcomes for the dev
596
+ * Server-Timing mirror, then hand the event to the configured sink. A
597
+ * throwing sink is swallowed — diagnostics must never fail a capture.
598
+ */
599
+ function publishCaptureDebugEvent(
600
+ descriptor: Pick<ShellCaptureDescriptor, "debugSink">,
601
+ event: ShellCaptureDebugEvent,
602
+ ): void {
603
+ if (isDevMode() && TIMING_RECORDED_OUTCOMES.has(event.outcome)) {
604
+ // Refresh insertion order for the FIFO cap, then evict the oldest key.
605
+ lastCaptureEventsForTiming.delete(event.key);
606
+ if (lastCaptureEventsForTiming.size >= MAX_TIMING_EVENT_KEYS) {
607
+ const oldest = lastCaptureEventsForTiming.keys().next().value;
608
+ if (oldest !== undefined) lastCaptureEventsForTiming.delete(oldest);
609
+ }
610
+ lastCaptureEventsForTiming.set(event.key, event);
611
+ }
612
+ const sink = descriptor.debugSink;
613
+ if (!sink) return;
614
+ try {
615
+ sink(event);
616
+ } catch {
617
+ // Diagnostics only: a throwing consumer sink must never fail the capture.
618
+ }
619
+ }
620
+
621
+ /** Current backoff state fields for `key` (empty when no backoff entry). */
622
+ function backoffFields(
623
+ key: string,
624
+ ): Pick<ShellCaptureDebugEvent, "backoffFailures" | "backoffRemainingMs"> {
625
+ const entry = refusedCaptures.get(key);
626
+ if (!entry) return {};
627
+ return {
628
+ backoffFailures: entry.failures,
629
+ backoffRemainingMs: Math.max(0, entry.until - Date.now()),
630
+ };
631
+ }
632
+
365
633
  export interface FlightCaptureGate {
366
634
  /** Identity passthrough of the source stream; feed this to captureShellHTML. */
367
635
  stream: ReadableStream<Uint8Array>;
@@ -541,9 +809,32 @@ export interface ShellCaptureDescriptor {
541
809
  ttl?: number;
542
810
  swr?: number;
543
811
  tags?: string[];
812
+ /**
813
+ * Per-route capture settle budget in ms (`ppr.captureTimeout`, resolved by
814
+ * resolvePprConfig). Feeds captureShellHTML's maxWaitMs — the ONE deadline
815
+ * bounding the whole capture, so it covers BOTH the fizz prerender AND the
816
+ * deferred-material settle window (the handlesBaked/loader-container
817
+ * holdUntil that keeps the gate from freezing while top-level pushes are
818
+ * pending). Undefined = SHELL_CAPTURE_MAX_WAIT_MS (15_000).
819
+ */
820
+ captureTimeout?: number;
544
821
  store?: SegmentCacheStore<any>;
545
822
  /** Gates the concise per-attempt capture breadcrumbs (INTERNAL_RANGO_DEBUG). */
546
823
  debug?: boolean;
824
+ /**
825
+ * Cap (serialized UTF-8 bytes) on the entry's capture data snapshot; over it
826
+ * the snapshot is skipped and the shell stored without it (reported once per
827
+ * key). Absent = DEFAULT_PPR_MAX_SNAPSHOT_BYTES, applied in
828
+ * captureAndStoreShell — the single defaulting site.
829
+ */
830
+ maxSnapshotBytes?: number;
831
+ /**
832
+ * Structured capture-pipeline debug sink, resolved from
833
+ * `createRouter({ debugShellCapture })` (or INTERNAL_RANGO_DEBUG) via
834
+ * {@link resolveShellCaptureDebugSink}. Receives one
835
+ * {@link ShellCaptureDebugEvent} per attempt/skip.
836
+ */
837
+ debugSink?: (event: ShellCaptureDebugEvent) => void;
547
838
  }
548
839
 
549
840
  /**
@@ -567,10 +858,20 @@ export function scheduleShellCapture(
567
858
  descriptor: ShellCaptureDescriptor,
568
859
  ): void {
569
860
  const key = descriptor.key;
570
- if (inFlightCaptures.has(key)) return;
861
+ if (inFlightCaptures.has(key)) {
862
+ publishCaptureDebugEvent(descriptor, { key, outcome: "skip-in-flight" });
863
+ return;
864
+ }
571
865
  // Refused/failed within the window → skip the doomed re-render (one probe per
572
866
  // key per window per isolate). Expired entries self-evict inside the check.
573
- if (isCaptureBackedOff(key)) return;
867
+ if (isCaptureBackedOff(key)) {
868
+ publishCaptureDebugEvent(descriptor, {
869
+ key,
870
+ outcome: "skip-backoff",
871
+ ...backoffFields(key),
872
+ });
873
+ return;
874
+ }
574
875
  inFlightCaptures.add(key);
575
876
  const captureTask = async () => {
576
877
  try {
@@ -588,25 +889,43 @@ export function scheduleShellCapture(
588
889
  // off so the next requests don't re-probe it. A `redirect` has no shell but
589
890
  // is not a doomed render — leave the backoff untouched.
590
891
  if (outcome === "stored") clearCaptureBackoff(key);
591
- else if (outcome === "no-shell") markCaptureBackoff(key);
892
+ else if (outcome === "no-shell") {
893
+ markCaptureBackoff(key);
894
+ publishCaptureDebugEvent(descriptor, {
895
+ key,
896
+ outcome: "backoff",
897
+ ...backoffFields(key),
898
+ });
899
+ }
592
900
  } catch (error) {
593
901
  // Detached background task — pass reqCtx so onError still fires when the ALS
594
902
  // context is gone. A genuine failure recurs, so back it off too (re-probe
595
903
  // once per window, not every request) and report it once.
596
904
  markCaptureBackoff(key);
905
+ publishCaptureDebugEvent(descriptor, {
906
+ key,
907
+ outcome: "error",
908
+ ...backoffFields(key),
909
+ });
597
910
  reportCacheError(error, "cache-write", "[ShellCache] capture", reqCtx);
598
911
  } finally {
599
912
  inFlightCaptures.delete(key);
600
913
  }
601
914
  };
915
+ // Serialize capture EXECUTION per isolate (capture-queue.ts): concurrent
916
+ // captures starve each other's task-quantized quiet windows — one grinding
917
+ // capture makes the sibling freeze a trivial prelude and store nothing
918
+ // (rotating eternal-MISS victims on GH runners). The stampede guard above
919
+ // stays per-key (dedupe while queued); the queue is cross-key.
920
+ const serializedTask = () => enqueueSerializedCapture(captureTask);
602
921
  // The capture's own task must NOT enter reqCtx._pendingBackgroundTasks: the
603
922
  // capture drains that list before rendering (the write-barrier ordering edge),
604
923
  // and awaiting its own still-running promise would burn the whole barrier
605
924
  // deadline on every capture.
606
- (captureTask as { [UNTRACKED_BACKGROUND_TASK]?: boolean })[
925
+ (serializedTask as { [UNTRACKED_BACKGROUND_TASK]?: boolean })[
607
926
  UNTRACKED_BACKGROUND_TASK
608
927
  ] = true;
609
- runBackground(reqCtx, captureTask);
928
+ runBackground(reqCtx, serializedTask);
610
929
  }
611
930
 
612
931
  /**
@@ -620,6 +939,23 @@ export function scheduleShellCapture(
620
939
  */
621
940
  type CaptureAttemptOutcome = "stored" | "redirect" | "no-shell" | "refused";
622
941
 
942
+ /**
943
+ * Per-attempt observability fields, filled along the capture path (barrier in
944
+ * attemptCapture, the rest in captureAndStoreShell) and folded into the
945
+ * attempt's {@link ShellCaptureDebugEvent} by runShellCapture. A plain mutable
946
+ * bag, not a return value: captureAndStoreShell's outcome type stays a string
947
+ * union its existing callers (producer B, tests) consume unchanged.
948
+ */
949
+ type CaptureAttemptStats = Pick<
950
+ ShellCaptureDebugEvent,
951
+ | "barrierWaitMs"
952
+ | "writeSettleMs"
953
+ | "preludeBytes"
954
+ | "snapshotBytes"
955
+ | "snapshotSkipped"
956
+ | "storeWrite"
957
+ >;
958
+
623
959
  /**
624
960
  * Run the shell capture with a single in-place retry, then store the result.
625
961
  *
@@ -652,15 +988,37 @@ async function runShellCapture(
652
988
  ? (message: string) => console.log(message)
653
989
  : () => {};
654
990
 
655
- const first = await attemptCapture(
656
- ctx,
657
- request,
658
- env,
659
- url,
660
- reqCtx,
661
- ssrModule,
662
- descriptor,
663
- );
991
+ // One attempt + its structured debug event: the stats object rides through
992
+ // attemptCapture/captureAndStoreShell collecting the observability fields
993
+ // (barrier wait, write-settle wait, prelude/snapshot bytes), and the event
994
+ // folds them with the outcome. A genuine render error skips the attempt
995
+ // event — scheduleShellCapture's catch publishes the terminal `error` event.
996
+ const timedAttempt = async (
997
+ attempt: number,
998
+ ): Promise<CaptureAttemptOutcome> => {
999
+ const stats: CaptureAttemptStats = {};
1000
+ const start = performance.now();
1001
+ const outcome = await attemptCapture(
1002
+ ctx,
1003
+ request,
1004
+ env,
1005
+ url,
1006
+ reqCtx,
1007
+ ssrModule,
1008
+ descriptor,
1009
+ stats,
1010
+ );
1011
+ publishCaptureDebugEvent(descriptor, {
1012
+ key: descriptor.key,
1013
+ outcome,
1014
+ attempt,
1015
+ attemptMs: Math.round(performance.now() - start),
1016
+ ...stats,
1017
+ });
1018
+ return outcome;
1019
+ };
1020
+
1021
+ const first = await timedAttempt(1);
664
1022
  // "refused" is deterministic (identity guard / rejected bake-lane loader —
665
1023
  // its own warning already fired): no retry, and the caller backs the key off
666
1024
  // exactly like a structural no-shell.
@@ -677,15 +1035,7 @@ async function runShellCapture(
677
1035
  `[ShellCache] capture attempt 1/2 for ${descriptor.key} aborted before shell completed (cold modules?) — retrying`,
678
1036
  );
679
1037
  await delay(retryDelayMs);
680
- const second = await attemptCapture(
681
- ctx,
682
- request,
683
- env,
684
- url,
685
- reqCtx,
686
- ssrModule,
687
- descriptor,
688
- );
1038
+ const second = await timedAttempt(2);
689
1039
  if (second === "refused") return "no-shell";
690
1040
  if (second !== "no-shell") return second;
691
1041
 
@@ -701,6 +1051,18 @@ async function runShellCapture(
701
1051
  return "no-shell";
702
1052
  }
703
1053
 
1054
+ /** Fold the capture's handle-liveness record into the entry flag (true | undefined). */
1055
+ function handlerLayerIsLive(
1056
+ liveness: RequestContext["_shellCaptureHandleLiveness"],
1057
+ ): true | undefined {
1058
+ if (!liveness) return undefined;
1059
+ return liveness.holes ||
1060
+ liveness.pendingPushes > 0 ||
1061
+ liveness.handlerInvokedLoader
1062
+ ? true
1063
+ : undefined;
1064
+ }
1065
+
704
1066
  /**
705
1067
  * One capture attempt in a DERIVED request context.
706
1068
  *
@@ -720,6 +1082,9 @@ async function runShellCapture(
720
1082
  * - _shellCaptureRun: true — the switch loaders/cookies/headers guards read.
721
1083
  * - _metricsStore: undefined so the capture never appends to the foreground's
722
1084
  * (already-finalized) metrics.
1085
+ * - _renderBarrier family: an own barrier wired to the fresh handle store
1086
+ * (wireRenderBarrier), plus _treeHasStreaming/deadlock-guard resets — the
1087
+ * capture's rendered() lifecycle is its own, not the foreground's.
723
1088
  *
724
1089
  * The capture is MIXED-CHAIN: its match() behaves like a normal render with
725
1090
  * respect to the segment cache — cache()'d segments replay from ring 3, UNCACHED
@@ -739,6 +1104,7 @@ async function attemptCapture(
739
1104
  reqCtx: RequestContext<any>,
740
1105
  ssrModule: SSRModule,
741
1106
  descriptor: ShellCaptureDescriptor,
1107
+ stats: CaptureAttemptStats,
742
1108
  ): Promise<CaptureAttemptOutcome> {
743
1109
  // WRITE BARRIER (ordering edge, not a narrower race): settle the foreground's
744
1110
  // already-scheduled background tasks — its deferred ring-3/ring-1 cache writes —
@@ -749,8 +1115,87 @@ async function attemptCapture(
749
1115
  // skipped, cache-store middleware's write path gated off by state.cacheHit), so
750
1116
  // prelude, snapshot, and ring-3 agree on the foreground's generation. Runs per
751
1117
  // attempt (the retry re-checks; already-settled promises are free).
1118
+ const barrierStart = performance.now();
752
1119
  await settleTrackedBackgroundTasks(reqCtx, SHELL_CAPTURE_WRITE_BARRIER_MS);
1120
+ stats.barrierWaitMs = Math.round(performance.now() - barrierStart);
1121
+
1122
+ const { derivedCtx, freshHandleStore } = deriveShellCaptureContext(
1123
+ reqCtx,
1124
+ descriptor,
1125
+ );
1126
+ const captureStartedAt = Date.now();
1127
+
1128
+ return runWithRequestContext(derivedCtx, async () => {
1129
+ const match = await ctx.router.match(request, { env });
1130
+ // A route that redirects has no shell to capture — bail (no store write, no
1131
+ // retry: a redirect is deterministic).
1132
+ if (match.redirect) return "redirect";
753
1133
 
1134
+ setRequestContextParams(match.params, match.routeName);
1135
+
1136
+ const payload = buildFullPayload(
1137
+ match,
1138
+ ctx,
1139
+ url,
1140
+ derivedCtx,
1141
+ freshHandleStore,
1142
+ );
1143
+ const flightStage = renderRscFlightStage({
1144
+ ctx,
1145
+ request,
1146
+ env,
1147
+ url,
1148
+ payload,
1149
+ tracking: {
1150
+ mode: "full",
1151
+ routeKey: derivedCtx._routeName,
1152
+ },
1153
+ });
1154
+
1155
+ // Pass the descriptor with its STATIC ppr.tags unchanged. The shell's own
1156
+ // render-recorded tags are snapshotted at the putShell WRITE BARRIER inside
1157
+ // captureAndStoreShell, not here: a tag recorded AFTER an await in async shell
1158
+ // content (and tags propagated by async cache()/"use cache" reads) lands after
1159
+ // this synchronous construction point, so snapshotting here dropped it — the
1160
+ // shell-tag snapshot must sit behind the quiesce gate (issue #676).
1161
+ return captureAndStoreShell(
1162
+ ssrModule,
1163
+ flightStage.stream,
1164
+ freshHandleStore,
1165
+ derivedCtx,
1166
+ descriptor,
1167
+ stats,
1168
+ captureStartedAt,
1169
+ );
1170
+ });
1171
+ }
1172
+
1173
+ /**
1174
+ * The derived capture context and its fresh (mask-funneled) handle store,
1175
+ * shared by BOTH shell producers: the runtime background capture
1176
+ * (attemptCapture, producer A) and the build-time prerender shell capture
1177
+ * (prerender/build-shell-capture.ts, producer B — issue #699). One
1178
+ * implementation so the capture semantics — the nested-thenable mask funnel,
1179
+ * handler-liveness bookkeeping, snapshot recording, the implicit doc-cache
1180
+ * scope — cannot drift between producers.
1181
+ */
1182
+ export interface CaptureContextDerivation {
1183
+ derivedCtx: RequestContext;
1184
+ freshHandleStore: HandleStore;
1185
+ }
1186
+
1187
+ /**
1188
+ * Derive the capture request context from a base context. Producer A passes
1189
+ * the foreground request's post-middleware context (the derived context
1190
+ * inherits its variables/env/cookie machinery through the prototype);
1191
+ * producer B passes a synthetic build-request context created by
1192
+ * createRequestContext over the build env, with a fresh MemorySegmentCacheStore
1193
+ * as `_cacheStore` so the recording/snapshot machinery arms identically.
1194
+ */
1195
+ export function deriveShellCaptureContext(
1196
+ reqCtx: RequestContext<any>,
1197
+ descriptor: Pick<ShellCaptureDescriptor, "ttl" | "swr">,
1198
+ ): CaptureContextDerivation {
754
1199
  const freshHandleStore = createHandleStore();
755
1200
  freshHandleStore.onError = reqCtx._handleStore.onError;
756
1201
  // Shape = liveness for handles, exactly as for bake-lane loader containers
@@ -764,21 +1209,83 @@ async function attemptCapture(
764
1209
  // the store exists only for this capture attempt, so every push wrapper
765
1210
  // (setupLoaderAccess, createUseFunction, prerender) inherits the policy and
766
1211
  // the foreground store is untouched.
1212
+ // Shell fast path bookkeeping on the same funnel:
1213
+ // - handleLiveness: a nested thenable in a push made OUTSIDE a DSL loader
1214
+ // scope (attribution read synchronously at push time — handler bodies,
1215
+ // handler-invoked ctx.use(loader) callbacks, defers) declares
1216
+ // handler-layer per-request data. Its mask is a hole only a handler
1217
+ // re-run can fill, so the entry must not serve handler-free
1218
+ // (ShellCacheEntry.handlerLiveHoles). Still-pending top-level handler
1219
+ // pushes at the putShell barrier count too — their liveness is unknowable.
1220
+ // - loaderScopedPushValues: DSL-loader pushes re-run fresh on every HIT, so
1221
+ // their captured values must NOT enter a segment record's handle snapshot
1222
+ // (replay would duplicate the fresh push, and their masked nested
1223
+ // promises would stall the Flight handle encode to its timeout). The set
1224
+ // rides the derived context (_shellCaptureLoaderHandleValues) and is
1225
+ // applied ONLY at the captureHandles cache-write call site — every other
1226
+ // getDataForSegment consumer (the render-barrier snapshot, prerender)
1227
+ // sees every push.
1228
+ const handleLiveness = {
1229
+ holes: false,
1230
+ pendingPushes: 0,
1231
+ handlerInvokedLoader: false,
1232
+ };
1233
+ const loaderScopedPushValues = new WeakSet<object>();
767
1234
  const rawCapturePush = freshHandleStore.push.bind(freshHandleStore);
768
1235
  freshHandleStore.push = (
769
1236
  handleName: string,
770
1237
  segmentId: string,
771
1238
  value: unknown,
772
1239
  ) => {
773
- const masked = isThenable(value)
774
- ? value.then((v: unknown) => maskNestedContainerThenables(v))
775
- : maskNestedContainerThenables(value);
1240
+ const pushedInLoaderScope = isInsideLoaderScope();
1241
+ // Single walk: the mask reports whether it masked any nested thenable
1242
+ // (the liveness declaration) while building the capture copy.
1243
+ const maskWithLiveness = (v: unknown): unknown => {
1244
+ const report: MaskReport = { thenable: false };
1245
+ const masked = maskNestedContainerThenables(v, undefined, report);
1246
+ if (!pushedInLoaderScope && report.thenable) {
1247
+ handleLiveness.holes = true;
1248
+ }
1249
+ return masked;
1250
+ };
1251
+ let masked: unknown;
1252
+ if (isThenable(value)) {
1253
+ if (!pushedInLoaderScope) {
1254
+ handleLiveness.pendingPushes++;
1255
+ const settle = () => handleLiveness.pendingPushes--;
1256
+ value.then(settle, settle);
1257
+ }
1258
+ masked = value.then(maskWithLiveness);
1259
+ } else {
1260
+ masked = maskWithLiveness(value);
1261
+ }
1262
+ if (pushedInLoaderScope && typeof masked === "object" && masked !== null) {
1263
+ loaderScopedPushValues.add(masked);
1264
+ }
776
1265
  rawCapturePush(handleName, segmentId, masked);
777
1266
  };
778
1267
 
779
1268
  const derivedCtx: RequestContext = Object.create(reqCtx);
780
1269
  derivedCtx._handleStore = freshHandleStore;
1270
+ // Own render barrier, closure-bound to the derived ctx and the fresh store
1271
+ // (issue #684, plan 009). Without this every _renderBarrier* read fell
1272
+ // through the prototype to the foreground's ALREADY-RESOLVED barrier: a
1273
+ // bake-lane loader's `await ctx.rendered()` resolved instantly and
1274
+ // ctx.use(handle) read the FOREGROUND handle snapshot — foreground
1275
+ // per-request handle data could bake into the shared shell. wireRenderBarrier
1276
+ // also resets _treeHasStreaming (recomputed for the capture's tree) and the
1277
+ // deadlock-guard fields as own properties.
1278
+ wireRenderBarrier(derivedCtx, freshHandleStore);
1279
+ derivedCtx._shellCaptureLoaderHandleValues = loaderScopedPushValues;
781
1280
  derivedCtx._requestTags = new Set<string>();
1281
+ // Own explicit-store registry: cache-store resolutions during the capture
1282
+ // (the implicit scope's SnapshotOnlySegmentStore, any per-capture explicit
1283
+ // store instance) must NOT register into the handler-lifetime
1284
+ // _explicitTaggedStores set — a capture-ephemeral store pinned there would
1285
+ // trip the partial-tag-store warning on every later updateTag() and retain
1286
+ // the whole capture snapshot in memory. Capture registrations die with this
1287
+ // context; module-singleton stores stay registered by normal renders.
1288
+ derivedCtx._explicitTaggedStores = new Set();
782
1289
  derivedCtx._transitionWhen = [];
783
1290
  derivedCtx._shellCaptureRun = true;
784
1291
  derivedCtx._metricsStore = undefined;
@@ -812,6 +1319,7 @@ async function attemptCapture(
812
1319
  // forwarding to the parent so the write persists and the worker stays alive),
813
1320
  // then captureAndStoreShell awaits them before draining. Reads that HIT are
814
1321
  // recorded synchronously during the render and need none of this.
1322
+ derivedCtx._shellCaptureHandleLiveness = handleLiveness;
815
1323
  if (reqCtx._cacheStore) {
816
1324
  const recordingStore = new RecordingShellStore(reqCtx._cacheStore);
817
1325
  derivedCtx._cacheStore = recordingStore;
@@ -820,43 +1328,21 @@ async function attemptCapture(
820
1328
  recordingStore.trackWrite(p);
821
1329
  reqCtx.waitUntil(() => p);
822
1330
  };
1331
+ // Shell fast path (capture side): the implicit doc-cache scope makes the
1332
+ // capture's match write ALL matched non-loader segments as one doc-keyed
1333
+ // segment record — into the snapshot only (SnapshotOnlySegmentStore), so
1334
+ // the record dies with the shell entry and the next capture's lookup
1335
+ // still misses (handlers re-run on recapture). Routes deriving their own
1336
+ // cache scope are untouched (resolveShellImplicitCacheScope).
1337
+ derivedCtx._shellImplicitCache = {
1338
+ ttl: descriptor.ttl,
1339
+ swr: descriptor.swr,
1340
+ store: new SnapshotOnlySegmentStore(recordingStore),
1341
+ keyPrefix: "doc",
1342
+ };
823
1343
  }
824
1344
 
825
- return runWithRequestContext(derivedCtx, async () => {
826
- const match = await ctx.router.match(request, { env });
827
- // A route that redirects has no shell to capture — bail (no store write, no
828
- // retry: a redirect is deterministic).
829
- if (match.redirect) return "redirect";
830
-
831
- setRequestContextParams(match.params, match.routeName);
832
-
833
- const payload = buildFullPayload(
834
- match,
835
- ctx,
836
- url,
837
- derivedCtx,
838
- freshHandleStore,
839
- );
840
- const rscStream = ctx.renderToReadableStream<RscPayload>(payload, {
841
- onError: (error: unknown) => {
842
- ctx.callOnError(error, "rendering", { request, url, env });
843
- },
844
- });
845
-
846
- // Pass the descriptor with its STATIC ppr.tags unchanged. The shell's own
847
- // render-recorded tags are snapshotted at the putShell WRITE BARRIER inside
848
- // captureAndStoreShell, not here: a tag recorded AFTER an await in async shell
849
- // content (and tags propagated by async cache()/"use cache" reads) lands after
850
- // this synchronous construction point, so snapshotting here dropped it — the
851
- // shell-tag snapshot must sit behind the quiesce gate (issue #676).
852
- return captureAndStoreShell(
853
- ssrModule,
854
- rscStream,
855
- freshHandleStore,
856
- derivedCtx,
857
- descriptor,
858
- );
859
- });
1345
+ return { derivedCtx, freshHandleStore };
860
1346
  }
861
1347
 
862
1348
  /**
@@ -878,6 +1364,8 @@ async function captureAndStoreShell(
878
1364
  handleStore: HandleStore,
879
1365
  reqCtx: RequestContext<any>,
880
1366
  capture: ShellCaptureDescriptor,
1367
+ stats?: CaptureAttemptStats,
1368
+ captureStartedAt: number = Date.now(),
881
1369
  ): Promise<Exclude<CaptureAttemptOutcome, "redirect">> {
882
1370
  const captureShellHTML = ssrModule.captureShellHTML!;
883
1371
 
@@ -966,10 +1454,12 @@ async function captureAndStoreShell(
966
1454
  // captureShellHTML CONSUMES the (gated) stream — it is not also SSR'd.
967
1455
  let result: Awaited<ReturnType<typeof captureShellHTML>>;
968
1456
  try {
1457
+ // One deadline for the whole capture — semantics spec'd on the option
1458
+ // (PartialPrerenderProps.captureTimeout, urls/pattern-types.ts).
969
1459
  result = await observePhase(PHASES.ssr, () =>
970
1460
  captureShellHTML(gate.stream, {
971
1461
  quiesce,
972
- maxWaitMs: SHELL_CAPTURE_MAX_WAIT_MS,
1462
+ maxWaitMs: capture.captureTimeout ?? SHELL_CAPTURE_MAX_WAIT_MS,
973
1463
  }),
974
1464
  );
975
1465
  } catch (error) {
@@ -1005,6 +1495,7 @@ async function captureAndStoreShell(
1005
1495
  if (result === null) {
1006
1496
  return "no-shell";
1007
1497
  }
1498
+ if (stats) stats.preludeBytes = result.prelude.length;
1008
1499
 
1009
1500
  // Store per the flag's key/ttl/swr/tags, into the flag's store: the middleware
1010
1501
  // threads the SAME store it resolved for its getShell read (options.store ??
@@ -1044,7 +1535,11 @@ async function captureAndStoreShell(
1044
1535
  const recording = getRecordingStore(reqCtx._cacheStore);
1045
1536
  let snapshot: ShellSnapshotRecord[] | undefined;
1046
1537
  if (recording) {
1538
+ const settleStart = performance.now();
1047
1539
  await recording.settleWrites(SHELL_SNAPSHOT_WRITE_SETTLE_MS);
1540
+ if (stats) {
1541
+ stats.writeSettleMs = Math.round(performance.now() - settleStart);
1542
+ }
1048
1543
  snapshot = recording.drainSnapshot();
1049
1544
  }
1050
1545
 
@@ -1093,7 +1588,11 @@ async function captureAndStoreShell(
1093
1588
  (snapshot ??= []).push({
1094
1589
  family: "loader",
1095
1590
  key: segmentKey,
1096
- value: { value: serialized },
1591
+ // The hole bit rides with the record so the HIT overlay knows
1592
+ // without rescanning whether the pin can resolve immediately
1593
+ // (holes: 0) or must wait for the fresh run's live promises
1594
+ // (holes: 1). See ShellSnapshotLoaderValue.
1595
+ value: { value: serialized, holes: elided.hasHole ? 1 : 0 },
1097
1596
  });
1098
1597
  }
1099
1598
  } catch {
@@ -1103,6 +1602,29 @@ async function captureAndStoreShell(
1103
1602
  }
1104
1603
  }
1105
1604
 
1605
+ // Snapshot size guard (issue #651): the snapshot duplicates every pinned
1606
+ // cache value inside the shell entry, so a page over a large cache()
1607
+ // segment can push the stored envelope toward store value limits (KV caps
1608
+ // a value at 25 MiB) with no signal — the kv.put rejects deep inside
1609
+ // waitUntil. Measure the serialized snapshot (UTF-8 bytes of the JSON that
1610
+ // rides in the envelope) AFTER the loader family is appended, and over the
1611
+ // cap store the shell WITHOUT it: pinned reads then fall back to the live
1612
+ // store on a HIT (documented drift — hydration repairs a mismatch
1613
+ // client-side, the pre-snapshot behavior), which beats losing the whole
1614
+ // entry to a store-side write rejection. Reported once per key.
1615
+ if (snapshot && snapshot.length > 0) {
1616
+ const snapshotBytes = SNAPSHOT_BYTE_ENCODER.encode(
1617
+ JSON.stringify(snapshot),
1618
+ ).length;
1619
+ if (stats) stats.snapshotBytes = snapshotBytes;
1620
+ const cap = capture.maxSnapshotBytes ?? DEFAULT_PPR_MAX_SNAPSHOT_BYTES;
1621
+ if (snapshotBytes > cap) {
1622
+ warnSnapshotOverCapOnce(capture.key, snapshotBytes, cap);
1623
+ snapshot = undefined;
1624
+ if (stats) stats.snapshotSkipped = true;
1625
+ }
1626
+ }
1627
+
1106
1628
  // Shell tags snapshot at the WRITE BARRIER, not at stream construction: by
1107
1629
  // here the capture has quiesced and the deferred cache writes were awaited, so
1108
1630
  // tags recorded AFTER an await in async shell content (and by async
@@ -1142,15 +1664,34 @@ async function captureAndStoreShell(
1142
1664
  // ShellCacheEntry.initialTheme.
1143
1665
  initialTheme: reqCtx.theme,
1144
1666
  snapshot,
1145
- createdAt: Date.now(),
1667
+ // Handler-layer liveness folded at the barrier: nested thenables in
1668
+ // handler-scoped pushes, handler pushes still pending (liveness
1669
+ // unknowable), or a handler-invoked loader execution — any of them
1670
+ // refuses the FAST PATH, not the capture. See
1671
+ // _shellCaptureHandleLiveness.
1672
+ handlerLiveHoles: handlerLayerIsLive(
1673
+ reqCtx._shellCaptureHandleLiveness,
1674
+ ),
1675
+ transitionWhen: reqCtx._transitionWhen?.length ? true : undefined,
1676
+ createdAt: captureStartedAt,
1146
1677
  };
1147
- await store.putShell(
1678
+ const storeWrite = await store.putShell(
1148
1679
  capture.key,
1149
1680
  entry,
1150
1681
  capture.ttl,
1151
1682
  capture.swr,
1152
1683
  shellTags,
1153
1684
  );
1685
+ if (stats && storeWrite) stats.storeWrite = storeWrite;
1686
+ if (storeWrite === "invalidated") {
1687
+ warnCaptureRefusedOnce(
1688
+ capture.key,
1689
+ "one of the shell's tags was invalidated after this capture generation started, so the store rejected the write. " +
1690
+ "If capture code deterministically calls updateTag() on its own shell tag, move that mutation out of the render; " +
1691
+ "otherwise every generation is invalidated before it can be served.",
1692
+ );
1693
+ return "refused";
1694
+ }
1154
1695
  } catch (error) {
1155
1696
  // Best-effort: a failed put must never throw out of the background task.
1156
1697
  reportCacheError(
@@ -1161,8 +1702,9 @@ async function captureAndStoreShell(
1161
1702
  );
1162
1703
  }
1163
1704
  }
1164
- // A shell was captured (the store I/O may have failed, but that is reported,
1165
- // not retried) so this attempt is `stored` and the caller does not retry.
1705
+ // A shell was captured (ordinary store I/O failure is reported, not retried).
1706
+ // An acknowledged invalidation rejection returned `refused` above so the
1707
+ // scheduler backs the key off instead of recapturing on every request.
1166
1708
  return "stored";
1167
1709
  } finally {
1168
1710
  // Stop the hop loop for the pathological never-quiets path (quiesce never
@@ -1172,8 +1714,15 @@ async function captureAndStoreShell(
1172
1714
  }
1173
1715
  }
1174
1716
 
1175
- // Exported for unit tests that drive the capture core directly.
1176
- export { runShellCapture, captureAndStoreShell };
1717
+ // Exported for unit tests that drive the capture core directly, and — with the
1718
+ // cold-graph retry pieces — for producer B (prerender/build-shell-capture.ts),
1719
+ // which mirrors the runtime capture's retry-in-place with the same delay.
1720
+ export {
1721
+ runShellCapture,
1722
+ captureAndStoreShell,
1723
+ delay,
1724
+ SHELL_CAPTURE_RETRY_DELAY_MS,
1725
+ };
1177
1726
 
1178
1727
  // Exported for unit tests that pin the refused-capture backoff policy directly
1179
1728
  // (dev cap vs production exponential growth, stored-clears, cold-start re-probe).