vinext 1.0.0-beta.8 → 1.0.0

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 (813) hide show
  1. package/README.md +158 -84
  2. package/THIRD_PARTY_LICENSES.md +25 -0
  3. package/dist/_virtual/_rolldown/runtime.js +25 -0
  4. package/dist/build/action-owner-manifest.d.ts +8 -9
  5. package/dist/build/action-owner-manifest.js +23 -5
  6. package/dist/build/assets-ignore.d.ts +3 -4
  7. package/dist/build/clean-output.d.ts +2 -3
  8. package/dist/build/client-build-config.d.ts +40 -12
  9. package/dist/build/client-build-config.js +76 -6
  10. package/dist/build/css-url-assets.d.ts +4 -5
  11. package/dist/build/css-url-assets.js +5 -2
  12. package/dist/build/google-fonts/build-url.d.ts +3 -4
  13. package/dist/build/google-fonts/fallback-metrics.d.ts +3 -4
  14. package/dist/build/google-fonts/find-font-files-in-css.d.ts +2 -3
  15. package/dist/build/google-fonts/font-metadata.d.ts +2 -3
  16. package/dist/build/google-fonts/get-axes.d.ts +2 -3
  17. package/dist/build/google-fonts/sort-variants.d.ts +2 -3
  18. package/dist/build/google-fonts/validate.d.ts +2 -3
  19. package/dist/build/google-fonts/validate.js +8 -4
  20. package/dist/build/inject-pregenerated-paths.d.ts +2 -3
  21. package/dist/build/inject-pregenerated-paths.js +16 -14
  22. package/dist/build/inline-css.d.ts +3 -4
  23. package/dist/build/layout-classification-types.d.ts +4 -5
  24. package/dist/build/layout-classification.d.ts +7 -8
  25. package/dist/build/lifecycle.d.ts +42 -0
  26. package/dist/build/lifecycle.js +253 -0
  27. package/dist/build/module-dependency-cache.d.ts +2 -3
  28. package/dist/build/next-client-runtime-manifests.d.ts +4 -5
  29. package/dist/build/nitro-route-rules.d.ts +6 -7
  30. package/dist/build/nitro-route-rules.js +1 -1
  31. package/dist/build/pages-client-assets-module.d.ts +4 -8
  32. package/dist/build/pages-client-assets-module.js +1 -13
  33. package/dist/build/precompress.d.ts +2 -3
  34. package/dist/build/prerender-cloudflare-loader.d.ts +4 -0
  35. package/dist/build/prerender-cloudflare-loader.js +49 -0
  36. package/dist/build/prerender-paths.d.ts +82 -8
  37. package/dist/build/prerender-paths.js +814 -99
  38. package/dist/build/prerender-phase.d.ts +2 -3
  39. package/dist/build/prerender-server-entry.js +11 -3
  40. package/dist/build/prerender-server-pool.d.ts +9 -6
  41. package/dist/build/prerender-server-pool.js +8 -5
  42. package/dist/build/prerender.d.ts +67 -15
  43. package/dist/build/prerender.js +177 -64
  44. package/dist/build/preview-credentials.d.ts +5 -6
  45. package/dist/build/preview-credentials.js +2 -2
  46. package/dist/build/public-dir-conflict.d.ts +5 -6
  47. package/dist/build/public-dir-conflict.js +2 -1
  48. package/dist/build/report.d.ts +38 -19
  49. package/dist/build/report.js +73 -4
  50. package/dist/build/route-classification-injector.d.ts +2 -3
  51. package/dist/build/route-classification-manifest.d.ts +5 -6
  52. package/dist/build/run-prerender.d.ts +11 -9
  53. package/dist/build/run-prerender.js +25 -16
  54. package/dist/build/server-entry.d.ts +4 -0
  55. package/dist/build/server-entry.js +28 -0
  56. package/dist/build/server-manifest.d.ts +8 -3
  57. package/dist/build/server-manifest.js +14 -2
  58. package/dist/build/ssr-manifest.d.ts +5 -6
  59. package/dist/build/standalone.d.ts +2 -3
  60. package/dist/build/standalone.js +2 -2
  61. package/dist/build/static-export.d.ts +7 -8
  62. package/dist/cache/cache-adapters-virtual.d.ts +95 -9
  63. package/dist/cache/cache-adapters-virtual.js +58 -6
  64. package/dist/check.d.ts +11 -10
  65. package/dist/check.js +467 -176
  66. package/dist/cli-args.d.ts +7 -16
  67. package/dist/cli-args.js +2 -45
  68. package/dist/cli-dev-config.d.ts +10 -7
  69. package/dist/cli-dev-config.js +160 -3
  70. package/dist/cli.js +124 -435
  71. package/dist/client/app-nav-failure-handler.d.ts +6 -7
  72. package/dist/client/client-rewrite-matcher.d.ts +2 -3
  73. package/dist/client/client-rewrites.d.ts +4 -5
  74. package/dist/client/dev-error-overlay-store.d.ts +13 -14
  75. package/dist/client/dev-error-overlay.d.ts +15 -15
  76. package/dist/client/dev-error-overlay.js +8 -5
  77. package/dist/client/instrumentation-client-inject.d.ts +3 -4
  78. package/dist/client/instrumentation-client-state.d.ts +5 -6
  79. package/dist/client/instrumentation-client.d.ts +3 -4
  80. package/dist/client/navigation-runtime.d.ts +21 -17
  81. package/dist/client/navigation-runtime.js +2 -1
  82. package/dist/client/pages-router-link-navigation.d.ts +4 -5
  83. package/dist/client/react-instance.d.ts +2 -3
  84. package/dist/client/validate-module-path.d.ts +2 -3
  85. package/dist/client/vinext-next-data.d.ts +7 -8
  86. package/dist/client/window-next.d.ts +4 -5
  87. package/dist/config/config-matchers.d.ts +16 -16
  88. package/dist/config/config-matchers.js +10 -7
  89. package/dist/config/dotenv.d.ts +3 -4
  90. package/dist/config/dotenv.js +2 -1
  91. package/dist/config/next-config.d.ts +31 -27
  92. package/dist/config/next-config.js +163 -16
  93. package/dist/config/prerender.d.ts +20 -16
  94. package/dist/config/prerender.js +10 -4
  95. package/dist/config/request-context.d.ts +5 -6
  96. package/dist/config/server-external-packages.d.ts +14 -3
  97. package/dist/config/server-external-packages.js +37 -3
  98. package/dist/config/tsconfig-paths.d.ts +3 -4
  99. package/dist/deps/.pnpm/ignore@5.3.2/deps/ignore/index.js +189 -0
  100. package/dist/deps/.pnpm/ua-parser-js@1.0.35/deps/ua-parser-js/src/ua-parser.js +1057 -0
  101. package/dist/entries/app-browser-entry.d.ts +5 -6
  102. package/dist/entries/app-browser-entry.js +3 -2
  103. package/dist/entries/app-rsc-entry.d.ts +12 -3
  104. package/dist/entries/app-rsc-entry.js +530 -55
  105. package/dist/entries/app-rsc-manifest.d.ts +4 -3
  106. package/dist/entries/app-rsc-manifest.js +27 -8
  107. package/dist/entries/app-ssr-entry.d.ts +2 -3
  108. package/dist/entries/app-ssr-entry.js +8 -1
  109. package/dist/entries/pages-client-entry.d.ts +3 -3
  110. package/dist/entries/pages-client-entry.js +17 -2
  111. package/dist/entries/pages-server-entry.d.ts +13 -3
  112. package/dist/entries/pages-server-entry.js +237 -33
  113. package/dist/entries/runtime-entry-module.d.ts +4 -5
  114. package/dist/image/image-adapters-virtual.d.ts +4 -5
  115. package/dist/index.d.ts +10 -11
  116. package/dist/index.js +832 -199
  117. package/dist/init-cloudflare.d.ts +27 -16
  118. package/dist/init-cloudflare.js +754 -113
  119. package/dist/init-platform.d.ts +26 -22
  120. package/dist/init-platform.js +85 -29
  121. package/dist/init.d.ts +19 -13
  122. package/dist/init.js +123 -41
  123. package/dist/plugins/action-owner-manifest.d.ts +3 -4
  124. package/dist/plugins/action-owner-manifest.js +10 -3
  125. package/dist/plugins/ast-scope.d.ts +10 -11
  126. package/dist/plugins/ast-scope.js +10 -22
  127. package/dist/plugins/ast-utils.d.ts +16 -29
  128. package/dist/plugins/ast-utils.js +27 -71
  129. package/dist/plugins/async-hooks-stub.d.ts +2 -3
  130. package/dist/plugins/client-reference-dedup.d.ts +4 -5
  131. package/dist/plugins/css-data-url.d.ts +2 -3
  132. package/dist/plugins/css-module-imports.d.ts +3 -4
  133. package/dist/plugins/css-module-imports.js +1 -1
  134. package/dist/plugins/dynamic-preload-metadata.d.ts +3 -4
  135. package/dist/plugins/dynamic-preload-metadata.js +55 -154
  136. package/dist/plugins/environment.d.ts +2 -3
  137. package/dist/plugins/extensionless-dynamic-import.d.ts +2 -3
  138. package/dist/plugins/extensionless-dynamic-import.js +6 -10
  139. package/dist/plugins/fonts.d.ts +10 -11
  140. package/dist/plugins/fonts.js +4 -3
  141. package/dist/plugins/ignore-dynamic-requests.d.ts +3 -4
  142. package/dist/plugins/ignore-dynamic-requests.js +60 -89
  143. package/dist/plugins/import-meta-url.d.ts +6 -7
  144. package/dist/plugins/import-meta-url.js +31 -43
  145. package/dist/plugins/instrumentation-client.d.ts +3 -3
  146. package/dist/plugins/instrumentation-client.js +46 -10
  147. package/dist/plugins/middleware-export-validation.d.ts +3 -4
  148. package/dist/plugins/middleware-export-validation.js +3 -3
  149. package/dist/plugins/middleware-server-only.d.ts +2 -3
  150. package/dist/plugins/og-asset-ownership.d.ts +3 -4
  151. package/dist/plugins/og-assets.d.ts +4 -5
  152. package/dist/plugins/og-assets.js +32 -13
  153. package/dist/plugins/og-harfbuzz.d.ts +24 -0
  154. package/dist/plugins/og-harfbuzz.js +260 -0
  155. package/dist/plugins/optimize-imports.d.ts +7 -7
  156. package/dist/plugins/optimize-imports.js +32 -44
  157. package/dist/plugins/pages-node-externals.d.ts +2 -3
  158. package/dist/plugins/pages-node-externals.js +6 -11
  159. package/dist/plugins/postcss.d.ts +8 -4
  160. package/dist/plugins/postcss.js +1 -1
  161. package/dist/plugins/remove-console.d.ts +2 -3
  162. package/dist/plugins/remove-console.js +0 -1
  163. package/dist/plugins/require-condition-resolution.d.ts +3 -4
  164. package/dist/plugins/require-condition-resolution.js +17 -18
  165. package/dist/plugins/require-context.d.ts +2 -3
  166. package/dist/plugins/require-context.js +13 -21
  167. package/dist/plugins/rsc-client-reference-loaders.d.ts +2 -3
  168. package/dist/plugins/rsc-client-shim-excludes.d.ts +4 -5
  169. package/dist/plugins/rsc-client-shim-excludes.js +1 -0
  170. package/dist/plugins/rsc-reference-validation-normalizer.d.ts +2 -3
  171. package/dist/plugins/sass.d.ts +7 -8
  172. package/dist/plugins/sass.js +7 -4
  173. package/dist/plugins/server-externals-manifest.d.ts +2 -3
  174. package/dist/plugins/strip-server-exports.d.ts +5 -6
  175. package/dist/plugins/strip-server-exports.js +1 -1
  176. package/dist/plugins/styled-jsx.d.ts +2 -3
  177. package/dist/plugins/styled-jsx.js +7 -7
  178. package/dist/plugins/transform-cache.d.ts +2 -3
  179. package/dist/plugins/transform-result.d.ts +3 -4
  180. package/dist/plugins/transitive-externals.d.ts +2 -3
  181. package/dist/plugins/typeof-window.d.ts +6 -7
  182. package/dist/plugins/typeof-window.js +30 -31
  183. package/dist/plugins/use-cache-callable.d.ts +2 -5
  184. package/dist/plugins/use-cache-callable.js +43 -22
  185. package/dist/plugins/wasm-module-import.d.ts +2 -3
  186. package/dist/plugins/worker-image-imports.d.ts +2 -3
  187. package/dist/plugins/worker-image-imports.js +6 -8
  188. package/dist/routing/app-route-graph.d.ts +19 -19
  189. package/dist/routing/app-route-graph.js +3 -2
  190. package/dist/routing/app-router.d.ts +20 -5
  191. package/dist/routing/app-router.js +28 -2
  192. package/dist/routing/file-matcher.d.ts +9 -10
  193. package/dist/routing/pages-router.d.ts +6 -6
  194. package/dist/routing/pages-router.js +1 -1
  195. package/dist/routing/route-matching.d.ts +4 -5
  196. package/dist/routing/route-matching.js +4 -2
  197. package/dist/routing/route-pattern.d.ts +13 -14
  198. package/dist/routing/route-trie.d.ts +5 -6
  199. package/dist/routing/route-validation.d.ts +3 -4
  200. package/dist/routing/route-validation.js +12 -11
  201. package/dist/routing/utils.d.ts +13 -14
  202. package/dist/server/accept-encoding.d.ts +9 -10
  203. package/dist/server/api-handler.d.ts +2 -3
  204. package/dist/server/api-handler.js +9 -6
  205. package/dist/server/app-action-forwarding.d.ts +3 -4
  206. package/dist/server/app-action-forwarding.js +1 -1
  207. package/dist/server/app-action-request.d.ts +2 -3
  208. package/dist/server/app-bfcache-id.d.ts +3 -4
  209. package/dist/server/app-bfcache-identity.d.ts +8 -9
  210. package/dist/server/app-browser-action-result.d.ts +15 -16
  211. package/dist/server/app-browser-client-reuse-manifest.d.ts +2 -3
  212. package/dist/server/app-browser-entry.js +121 -40
  213. package/dist/server/app-browser-error.d.ts +5 -6
  214. package/dist/server/app-browser-error.js +9 -3
  215. package/dist/server/app-browser-history-controller.d.ts +4 -5
  216. package/dist/server/app-browser-hydration.d.ts +16 -6
  217. package/dist/server/app-browser-hydration.js +14 -1
  218. package/dist/server/app-browser-interception-context.d.ts +3 -4
  219. package/dist/server/app-browser-mpa-navigation.d.ts +4 -5
  220. package/dist/server/app-browser-navigation-abort.d.ts +3 -4
  221. package/dist/server/app-browser-navigation-controller.d.ts +8 -8
  222. package/dist/server/app-browser-navigation-controller.js +9 -5
  223. package/dist/server/app-browser-navigation-response.d.ts +2 -3
  224. package/dist/server/app-browser-popstate.d.ts +4 -5
  225. package/dist/server/app-browser-prefetch-response.d.ts +5 -6
  226. package/dist/server/app-browser-rsc-redirect.d.ts +4 -5
  227. package/dist/server/app-browser-server-action-client.d.ts +7 -6
  228. package/dist/server/app-browser-server-action-client.js +9 -5
  229. package/dist/server/app-browser-server-action-navigation.d.ts +2 -3
  230. package/dist/server/app-browser-state.d.ts +17 -17
  231. package/dist/server/app-browser-state.js +7 -3
  232. package/dist/server/app-browser-stream.d.ts +4 -5
  233. package/dist/server/app-browser-stream.js +8 -6
  234. package/dist/server/app-browser-supplemental-refresh.d.ts +11 -12
  235. package/dist/server/app-browser-visible-commit.d.ts +6 -7
  236. package/dist/server/app-browser-visible-commit.js +1 -1
  237. package/dist/server/app-client-reference-preloader.d.ts +2 -3
  238. package/dist/server/app-elements-wire-key.d.ts +25 -0
  239. package/dist/server/app-elements-wire-key.js +69 -0
  240. package/dist/server/app-elements-wire.d.ts +34 -53
  241. package/dist/server/app-elements-wire.js +4 -75
  242. package/dist/server/app-elements.d.ts +5 -5
  243. package/dist/server/app-elements.js +1 -1
  244. package/dist/server/app-fallback-renderer.d.ts +4 -4
  245. package/dist/server/app-fallback-renderer.js +6 -6
  246. package/dist/server/app-fetch-tracing.d.ts +15 -0
  247. package/dist/server/app-fetch-tracing.js +38 -0
  248. package/dist/server/app-history-state.d.ts +26 -27
  249. package/dist/server/app-history-state.js +19 -11
  250. package/dist/server/app-hook-warning-suppression.d.ts +2 -3
  251. package/dist/server/app-hydration-cache-publication.d.ts +3 -4
  252. package/dist/server/app-inline-css-client.d.ts +3 -4
  253. package/dist/server/app-interception-context-header.d.ts +2 -3
  254. package/dist/server/app-layout-param-observation.d.ts +7 -8
  255. package/dist/server/app-metadata-tracing.d.ts +12 -0
  256. package/dist/server/app-metadata-tracing.js +17 -0
  257. package/dist/server/app-middleware.d.ts +15 -7
  258. package/dist/server/app-middleware.js +30 -5
  259. package/dist/server/app-mounted-slots-header.d.ts +2 -3
  260. package/dist/server/app-mounted-slots-header.js +2 -2
  261. package/dist/server/app-optimistic-routing.d.ts +14 -10
  262. package/dist/server/app-optimistic-routing.js +16 -3
  263. package/dist/server/app-page-boundary-render.d.ts +6 -6
  264. package/dist/server/app-page-boundary-render.js +10 -4
  265. package/dist/server/app-page-boundary.d.ts +9 -10
  266. package/dist/server/app-page-boundary.js +2 -1
  267. package/dist/server/app-page-cache-finalizer.d.ts +32 -8
  268. package/dist/server/app-page-cache-finalizer.js +118 -14
  269. package/dist/server/app-page-cache-render.d.ts +8 -5
  270. package/dist/server/app-page-cache-render.js +22 -5
  271. package/dist/server/app-page-cache.d.ts +28 -9
  272. package/dist/server/app-page-cache.js +96 -25
  273. package/dist/server/app-page-dispatch.d.ts +36 -12
  274. package/dist/server/app-page-dispatch.js +188 -63
  275. package/dist/server/app-page-element-builder.d.ts +13 -11
  276. package/dist/server/app-page-element-builder.js +104 -61
  277. package/dist/server/app-page-execution.d.ts +14 -14
  278. package/dist/server/app-page-execution.js +12 -8
  279. package/dist/server/app-page-head.d.ts +19 -16
  280. package/dist/server/app-page-head.js +25 -25
  281. package/dist/server/app-page-http-access-fallback-metadata.d.ts +6 -5
  282. package/dist/server/app-page-http-access-fallback-metadata.js +9 -2
  283. package/dist/server/app-page-method.d.ts +5 -11
  284. package/dist/server/app-page-method.js +2 -9
  285. package/dist/server/app-page-params.d.ts +5 -6
  286. package/dist/server/app-page-ppr-runtime.d.ts +2 -2
  287. package/dist/server/app-page-probe.d.ts +5 -6
  288. package/dist/server/app-page-probe.js +5 -4
  289. package/dist/server/app-page-render-identity.d.ts +4 -5
  290. package/dist/server/app-page-render-observation.d.ts +8 -9
  291. package/dist/server/app-page-render-observation.js +1 -1
  292. package/dist/server/app-page-render.d.ts +42 -6
  293. package/dist/server/app-page-render.js +192 -28
  294. package/dist/server/app-page-request.d.ts +10 -9
  295. package/dist/server/app-page-request.js +16 -12
  296. package/dist/server/app-page-response.d.ts +20 -9
  297. package/dist/server/app-page-response.js +31 -13
  298. package/dist/server/app-page-route-wiring.d.ts +15 -15
  299. package/dist/server/app-page-route-wiring.js +31 -24
  300. package/dist/server/app-page-search-params-observation.d.ts +26 -5
  301. package/dist/server/app-page-search-params-observation.js +42 -6
  302. package/dist/server/app-page-segment-plan.d.ts +2 -3
  303. package/dist/server/app-page-segment-state.d.ts +11 -12
  304. package/dist/server/app-page-stream.d.ts +27 -11
  305. package/dist/server/app-page-stream.js +35 -6
  306. package/dist/server/app-page-tracing.d.ts +33 -0
  307. package/dist/server/app-page-tracing.js +49 -0
  308. package/dist/server/app-pages-bridge.d.ts +6 -6
  309. package/dist/server/app-pages-bridge.js +19 -4
  310. package/dist/server/app-post-middleware-context.d.ts +2 -3
  311. package/dist/server/app-ppr-fallback-shell-render.d.ts +3 -4
  312. package/dist/server/app-ppr-fallback-shell-render.js +3 -2
  313. package/dist/server/app-ppr-fallback-shell.d.ts +6 -7
  314. package/dist/server/app-prerender-endpoints.d.ts +5 -5
  315. package/dist/server/app-prerender-endpoints.js +26 -12
  316. package/dist/server/app-prerender-static-params.d.ts +15 -7
  317. package/dist/server/app-prerender-static-params.js +33 -11
  318. package/dist/server/app-render-dependency.d.ts +14 -13
  319. package/dist/server/app-render-dependency.js +5 -1
  320. package/dist/server/app-request-context.d.ts +3 -4
  321. package/dist/server/app-request-stage-context.d.ts +5 -0
  322. package/dist/server/app-request-stage-context.js +11 -0
  323. package/dist/server/app-request-stage-dispatch.d.ts +25 -0
  324. package/dist/server/app-request-stage-dispatch.js +54 -0
  325. package/dist/server/app-request-stage-independent-entry.d.ts +8 -0
  326. package/dist/server/app-request-stage-independent-entry.js +115 -0
  327. package/dist/server/app-response-header-provenance.d.ts +13 -7
  328. package/dist/server/app-response-header-provenance.js +34 -1
  329. package/dist/server/app-response-stage-entry.d.ts +9 -0
  330. package/dist/server/app-response-stage-entry.js +87 -0
  331. package/dist/server/app-route-handler-cache.d.ts +2 -3
  332. package/dist/server/app-route-handler-cache.js +46 -34
  333. package/dist/server/app-route-handler-dispatch.d.ts +3 -3
  334. package/dist/server/app-route-handler-dispatch.js +75 -57
  335. package/dist/server/app-route-handler-execution.d.ts +18 -13
  336. package/dist/server/app-route-handler-execution.js +189 -25
  337. package/dist/server/app-route-handler-middleware-context.d.ts +8 -0
  338. package/dist/server/app-route-handler-middleware-context.js +15 -0
  339. package/dist/server/app-route-handler-policy.d.ts +22 -10
  340. package/dist/server/app-route-handler-policy.js +19 -4
  341. package/dist/server/app-route-handler-response.d.ts +9 -10
  342. package/dist/server/app-route-handler-response.js +2 -0
  343. package/dist/server/app-route-handler-runtime.d.ts +9 -10
  344. package/dist/server/app-route-handler-runtime.js +20 -16
  345. package/dist/server/app-route-module-loader.d.ts +6 -7
  346. package/dist/server/app-route-request-built-ins.d.ts +3 -4
  347. package/dist/server/app-route-tree-prefetch.d.ts +6 -7
  348. package/dist/server/app-route-tree-prefetch.js +2 -1
  349. package/dist/server/app-router-entry.d.ts +2 -0
  350. package/dist/server/app-router-entry.js +76 -12
  351. package/dist/server/app-rsc-cache-busting.d.ts +47 -22
  352. package/dist/server/app-rsc-cache-busting.js +80 -18
  353. package/dist/server/app-rsc-combined-handler.d.ts +9 -0
  354. package/dist/server/app-rsc-combined-handler.js +11 -0
  355. package/dist/server/app-rsc-embedded-chunks.d.ts +6 -7
  356. package/dist/server/app-rsc-error-handler.d.ts +12 -6
  357. package/dist/server/app-rsc-error-handler.js +15 -6
  358. package/dist/server/app-rsc-errors.d.ts +12 -9
  359. package/dist/server/app-rsc-errors.js +15 -13
  360. package/dist/server/app-rsc-handler.d.ts +33 -6
  361. package/dist/server/app-rsc-handler.js +498 -83
  362. package/dist/server/app-rsc-redirect-flight.d.ts +4 -5
  363. package/dist/server/app-rsc-render-mode.d.ts +8 -9
  364. package/dist/server/app-rsc-request-normalization.d.ts +3 -3
  365. package/dist/server/app-rsc-request-normalization.js +2 -1
  366. package/dist/server/app-rsc-response-finalizer.d.ts +8 -5
  367. package/dist/server/app-rsc-response-finalizer.js +24 -7
  368. package/dist/server/app-rsc-response-stage.d.ts +6 -0
  369. package/dist/server/app-rsc-response-stage.js +251 -0
  370. package/dist/server/app-rsc-route-matching.d.ts +4 -4
  371. package/dist/server/app-rsc-route-matching.js +4 -2
  372. package/dist/server/app-rsc-state-fingerprint.d.ts +3 -4
  373. package/dist/server/app-rsc-vary.d.ts +16 -0
  374. package/dist/server/app-rsc-vary.js +31 -0
  375. package/dist/server/app-segment-config.d.ts +120 -6
  376. package/dist/server/app-segment-config.js +264 -12
  377. package/dist/server/app-server-action-execution.d.ts +16 -12
  378. package/dist/server/app-server-action-execution.js +88 -35
  379. package/dist/server/app-ssr-entry.d.ts +14 -4
  380. package/dist/server/app-ssr-entry.js +64 -17
  381. package/dist/server/app-ssr-error-meta.d.ts +3 -4
  382. package/dist/server/app-ssr-error-meta.js +2 -1
  383. package/dist/server/app-ssr-router-instance.d.ts +2 -3
  384. package/dist/server/app-ssr-search-params-gate.d.ts +20 -0
  385. package/dist/server/app-ssr-search-params-gate.js +54 -0
  386. package/dist/server/app-ssr-stream.d.ts +13 -9
  387. package/dist/server/app-ssr-stream.js +33 -7
  388. package/dist/server/app-static-generation.d.ts +4 -5
  389. package/dist/server/app-visited-response-cache.d.ts +11 -12
  390. package/dist/server/app-visited-response-cache.js +2 -2
  391. package/dist/server/app-worker-stages.d.ts +112 -0
  392. package/dist/server/app-worker-stages.js +105 -0
  393. package/dist/server/artifact-compatibility.d.ts +11 -12
  394. package/dist/server/before-interactive-head.d.ts +2 -3
  395. package/dist/server/bfcache-identity.d.ts +7 -8
  396. package/dist/server/cache-control.d.ts +39 -11
  397. package/dist/server/cache-control.js +104 -7
  398. package/dist/server/cache-headers.d.ts +3 -4
  399. package/dist/server/cache-proof.d.ts +75 -70
  400. package/dist/server/cache-proof.js +9 -1
  401. package/dist/server/cacheability-limits.d.ts +8 -0
  402. package/dist/server/cacheability-limits.js +9 -0
  403. package/dist/server/cacheability-manifest.d.ts +68 -0
  404. package/dist/server/cacheability-manifest.js +241 -0
  405. package/dist/server/cacheability-request.d.ts +49 -0
  406. package/dist/server/cacheability-request.js +559 -0
  407. package/dist/server/client-reuse-manifest.d.ts +17 -18
  408. package/dist/server/client-reuse-manifest.js +2 -2
  409. package/dist/server/client-trace-metadata.d.ts +9 -6
  410. package/dist/server/client-trace-metadata.js +27 -15
  411. package/dist/server/cloudflare-workers-tracing.d.ts +1 -0
  412. package/dist/server/cloudflare-workers-tracing.js +8 -0
  413. package/dist/server/config-headers.d.ts +19 -5
  414. package/dist/server/config-headers.js +39 -5
  415. package/dist/server/cookie-utils.d.ts +2 -3
  416. package/dist/server/csp.d.ts +5 -6
  417. package/dist/server/default-global-error-module.d.ts +2 -3
  418. package/dist/server/default-global-not-found-module.d.ts +2 -3
  419. package/dist/server/default-not-found-module.d.ts +2 -3
  420. package/dist/server/defer-until-stream-consumed.d.ts +2 -3
  421. package/dist/server/defer-until-stream-consumed.js +2 -1
  422. package/dist/server/dev-initial-server-error.d.ts +3 -4
  423. package/dist/server/dev-initial-server-error.js +2 -1
  424. package/dist/server/dev-lockfile.d.ts +7 -8
  425. package/dist/server/dev-lockfile.js +4 -1
  426. package/dist/server/dev-module-runner.d.ts +2 -3
  427. package/dist/server/dev-origin-check.d.ts +5 -6
  428. package/dist/server/dev-route-files.d.ts +2 -3
  429. package/dist/server/dev-server.d.ts +4 -5
  430. package/dist/server/dev-server.js +130 -61
  431. package/dist/server/dev-stack-sourcemap.d.ts +7 -7
  432. package/dist/server/dev-stack-sourcemap.js +1 -1
  433. package/dist/server/document-initial-head.d.ts +3 -4
  434. package/dist/server/edge-api-runtime.d.ts +4 -5
  435. package/dist/server/fetch-handler.d.ts +3 -2
  436. package/dist/server/fetch-handler.js +3 -18
  437. package/dist/server/file-based-metadata.d.ts +2 -3
  438. package/dist/server/framework-tracer.d.ts +46 -0
  439. package/dist/server/framework-tracer.js +125 -0
  440. package/dist/server/fully-buffered-response.d.ts +11 -0
  441. package/dist/server/fully-buffered-response.js +19 -0
  442. package/dist/server/headers.d.ts +62 -56
  443. package/dist/server/headers.js +33 -20
  444. package/dist/server/html.d.ts +6 -27
  445. package/dist/server/html.js +16 -1
  446. package/dist/server/http-conditional.d.ts +5 -6
  447. package/dist/server/http-date.d.ts +2 -3
  448. package/dist/server/http-error-responses.d.ts +9 -10
  449. package/dist/server/http-range.d.ts +4 -5
  450. package/dist/server/hybrid-route-priority.d.ts +4 -5
  451. package/dist/server/image-optimization.d.ts +20 -21
  452. package/dist/server/implicit-tags.d.ts +3 -4
  453. package/dist/server/instrumentation-runtime.d.ts +17 -21
  454. package/dist/server/instrumentation-runtime.js +26 -8
  455. package/dist/server/instrumentation.d.ts +26 -30
  456. package/dist/server/instrumentation.js +18 -23
  457. package/dist/server/isr-cache.d.ts +28 -27
  458. package/dist/server/isr-cache.js +18 -70
  459. package/dist/server/isr-decision.d.ts +4 -4
  460. package/dist/server/metadata-route-build-data.d.ts +4 -5
  461. package/dist/server/metadata-route-cache-policy.d.ts +2 -3
  462. package/dist/server/metadata-route-response.d.ts +7 -7
  463. package/dist/server/metadata-route-response.js +68 -2
  464. package/dist/server/metadata-routes.d.ts +18 -19
  465. package/dist/server/middleware-matcher-pattern.d.ts +6 -7
  466. package/dist/server/middleware-matcher.d.ts +13 -6
  467. package/dist/server/middleware-matcher.js +22 -1
  468. package/dist/server/middleware-path-to-regexp.d.ts +6 -7
  469. package/dist/server/middleware-path-to-regexp.js +11 -9
  470. package/dist/server/middleware-response-headers.d.ts +3 -4
  471. package/dist/server/middleware-runtime.d.ts +13 -8
  472. package/dist/server/middleware-runtime.js +54 -10
  473. package/dist/server/middleware.d.ts +5 -5
  474. package/dist/server/multi-stage.d.ts +141 -0
  475. package/dist/server/multi-stage.js +8 -0
  476. package/dist/server/navigation-planner.d.ts +26 -26
  477. package/dist/server/navigation-trace.d.ts +11 -12
  478. package/dist/server/next-error-digest.d.ts +4 -5
  479. package/dist/server/normalize-path.d.ts +5 -6
  480. package/dist/server/normalize-path.js +1 -1
  481. package/dist/server/open-redirect.d.ts +2 -3
  482. package/dist/server/opentelemetry-api.d.ts +59 -0
  483. package/dist/server/opentelemetry-api.js +53 -0
  484. package/dist/server/opentelemetry-tracing.d.ts +5 -0
  485. package/dist/server/opentelemetry-tracing.js +83 -0
  486. package/dist/server/operation-token.d.ts +11 -12
  487. package/dist/server/otel-tracer-extension.d.ts +7 -9
  488. package/dist/server/otel-tracer-extension.js +37 -36
  489. package/dist/server/pages-api-route.d.ts +5 -4
  490. package/dist/server/pages-api-route.js +21 -8
  491. package/dist/server/pages-asset-tags.d.ts +6 -6
  492. package/dist/server/pages-asset-tags.js +37 -2
  493. package/dist/server/pages-body-parser-config.d.ts +4 -5
  494. package/dist/server/pages-body-parser-config.js +4 -4
  495. package/dist/server/pages-client-assets.d.ts +11 -5
  496. package/dist/server/pages-data-route.d.ts +11 -12
  497. package/dist/server/pages-data-route.js +1 -1
  498. package/dist/server/pages-default-404.d.ts +3 -4
  499. package/dist/server/pages-dev-hydration.d.ts +9 -4
  500. package/dist/server/pages-dev-hydration.js +19 -7
  501. package/dist/server/pages-dev-module-url.d.ts +3 -4
  502. package/dist/server/pages-dev-stylesheets.d.ts +5 -6
  503. package/dist/server/pages-document-asset-props.d.ts +6 -7
  504. package/dist/server/pages-document-initial-props.d.ts +5 -5
  505. package/dist/server/pages-document-initial-props.js +4 -2
  506. package/dist/server/pages-execution-tracing.d.ts +40 -0
  507. package/dist/server/pages-execution-tracing.js +80 -0
  508. package/dist/server/pages-get-initial-props.d.ts +9 -10
  509. package/dist/server/pages-i18n.d.ts +8 -8
  510. package/dist/server/pages-i18n.js +3 -2
  511. package/dist/server/pages-media-type.d.ts +4 -5
  512. package/dist/server/pages-node-compat.d.ts +11 -10
  513. package/dist/server/pages-node-compat.js +12 -4
  514. package/dist/server/pages-page-data.d.ts +18 -19
  515. package/dist/server/pages-page-data.js +11 -10
  516. package/dist/server/pages-page-handler.d.ts +7 -6
  517. package/dist/server/pages-page-handler.js +98 -47
  518. package/dist/server/pages-page-method.d.ts +2 -3
  519. package/dist/server/pages-page-response.d.ts +14 -10
  520. package/dist/server/pages-page-response.js +49 -31
  521. package/dist/server/pages-preview.d.ts +10 -11
  522. package/dist/server/pages-readiness.d.ts +2 -3
  523. package/dist/server/pages-request-pipeline.d.ts +16 -12
  524. package/dist/server/pages-request-pipeline.js +69 -28
  525. package/dist/server/pages-request-stage-entry.d.ts +23 -0
  526. package/dist/server/pages-request-stage-entry.js +314 -0
  527. package/dist/server/pages-response-stage-entry.d.ts +11 -0
  528. package/dist/server/pages-response-stage-entry.js +106 -0
  529. package/dist/server/pages-response-stage.d.ts +31 -0
  530. package/dist/server/pages-response-stage.js +49 -0
  531. package/dist/server/pages-revalidate.d.ts +3 -4
  532. package/dist/server/pages-revalidate.js +9 -4
  533. package/dist/server/pages-route-data-kind.d.ts +18 -0
  534. package/dist/server/pages-route-data-kind.js +11 -0
  535. package/dist/server/pages-router-entry.d.ts +1 -25
  536. package/dist/server/pages-router-entry.js +48 -114
  537. package/dist/server/pages-serializable-props.d.ts +3 -4
  538. package/dist/server/pregenerated-concrete-paths.d.ts +9 -7
  539. package/dist/server/pregenerated-concrete-paths.js +12 -6
  540. package/dist/server/prerender-cache-life-header.d.ts +3 -4
  541. package/dist/server/prerender-manifest.d.ts +11 -11
  542. package/dist/server/prerender-manifest.js +6 -3
  543. package/dist/server/prerender-route-params.d.ts +16 -9
  544. package/dist/server/prerender-route-params.js +18 -2
  545. package/dist/server/prerender-work-unit-setup.d.ts +4 -4
  546. package/dist/server/prerender-work-unit-setup.js +37 -14
  547. package/dist/server/prod-server.d.ts +12 -9
  548. package/dist/server/prod-server.js +129 -36
  549. package/dist/server/proxy-trust.d.ts +5 -6
  550. package/dist/server/request-log.d.ts +3 -4
  551. package/dist/server/request-pipeline.d.ts +17 -21
  552. package/dist/server/request-pipeline.js +8 -10
  553. package/dist/server/request-stage.d.ts +5 -0
  554. package/dist/server/request-stage.js +7 -0
  555. package/dist/server/request-tracing.d.ts +22 -0
  556. package/dist/server/request-tracing.js +180 -0
  557. package/dist/server/response-stage-cacheability.d.ts +37 -0
  558. package/dist/server/response-stage-cacheability.js +55 -0
  559. package/dist/server/response-stage-policy.d.ts +23 -0
  560. package/dist/server/response-stage-policy.js +89 -0
  561. package/dist/server/response-stage.d.ts +5 -0
  562. package/dist/server/response-stage.js +7 -0
  563. package/dist/server/response-start-tracing.d.ts +14 -0
  564. package/dist/server/response-start-tracing.js +80 -0
  565. package/dist/server/revalidation-host.d.ts +2 -3
  566. package/dist/server/revalidation-host.js +2 -1
  567. package/dist/server/revalidation-request.d.ts +8 -0
  568. package/dist/server/revalidation-request.js +37 -0
  569. package/dist/server/rsc-completion-metadata.d.ts +6 -7
  570. package/dist/server/rsc-stream-hints.d.ts +18 -7
  571. package/dist/server/rsc-stream-hints.js +70 -35
  572. package/dist/server/seed-cache.d.ts +2 -3
  573. package/dist/server/seed-cache.js +8 -7
  574. package/dist/server/server-action-not-found.d.ts +5 -6
  575. package/dist/server/server-globals.d.ts +2 -3
  576. package/dist/server/server-globals.js +13 -0
  577. package/dist/server/skip-cache-proof.d.ts +4 -4
  578. package/dist/server/socket-error-backstop.d.ts +5 -6
  579. package/dist/server/socket-error-backstop.js +1 -1
  580. package/dist/server/static-file-cache.d.ts +5 -6
  581. package/dist/server/static-file-cache.js +9 -7
  582. package/dist/server/static-file-signal.d.ts +16 -0
  583. package/dist/server/static-file-signal.js +82 -0
  584. package/dist/server/static-layout-client-reuse-proof.d.ts +4 -5
  585. package/dist/server/streaming-metadata.d.ts +2 -3
  586. package/dist/server/tracer.d.ts +5 -0
  587. package/dist/server/tracer.js +13 -0
  588. package/dist/server/worker-prerender-discovery.d.ts +18 -0
  589. package/dist/server/worker-prerender-discovery.js +55 -0
  590. package/dist/server/worker-revalidation-context.d.ts +2 -3
  591. package/dist/server/worker-revalidation-context.js +5 -5
  592. package/dist/server/worker-stages.d.ts +43 -0
  593. package/dist/server/worker-stages.js +25 -0
  594. package/dist/server/worker-utils.d.ts +5 -6
  595. package/dist/server/worker-utils.js +4 -4
  596. package/dist/server/workers-tracing.d.ts +17 -0
  597. package/dist/server/workers-tracing.js +27 -0
  598. package/dist/shims/amp.d.ts +3 -4
  599. package/dist/shims/app-router-scroll-state.d.ts +9 -10
  600. package/dist/shims/app-router-scroll.d.ts +4 -5
  601. package/dist/shims/app-router-scroll.js +2 -1
  602. package/dist/shims/app.d.ts +5 -6
  603. package/dist/shims/before-interactive-context.d.ts +5 -6
  604. package/dist/shims/cache-callable-runtime.d.ts +44 -4
  605. package/dist/shims/cache-callable-runtime.js +168 -8
  606. package/dist/shims/cache-for-request.d.ts +2 -3
  607. package/dist/shims/cache-handler.d.ts +33 -20
  608. package/dist/shims/cache-handler.js +61 -2
  609. package/dist/shims/cache-request-state.d.ts +28 -29
  610. package/dist/shims/cache-runtime.d.ts +23 -21
  611. package/dist/shims/cache-runtime.js +239 -121
  612. package/dist/shims/cache.d.ts +15 -15
  613. package/dist/shims/cache.js +25 -13
  614. package/dist/shims/cacheability-classification.d.ts +106 -0
  615. package/dist/shims/cacheability-classification.js +161 -0
  616. package/dist/shims/cdn-cache-state.d.ts +13 -0
  617. package/dist/shims/cdn-cache-state.js +23 -0
  618. package/dist/shims/cdn-cache.d.ts +76 -18
  619. package/dist/shims/cdn-cache.js +40 -39
  620. package/dist/shims/client-hook-error.d.ts +3 -4
  621. package/dist/shims/client-locale.d.ts +2 -3
  622. package/dist/shims/client-page-root.d.ts +24 -0
  623. package/dist/shims/client-page-root.js +121 -0
  624. package/dist/shims/compat-router.d.ts +2 -3
  625. package/dist/shims/config.d.ts +3 -4
  626. package/dist/shims/constants.d.ts +73 -74
  627. package/dist/shims/constants.js +1 -1
  628. package/dist/shims/default-not-found.d.ts +2 -3
  629. package/dist/shims/document.d.ts +9 -9
  630. package/dist/shims/dynamic-preload-chunks.d.ts +2 -3
  631. package/dist/shims/dynamic-preload-chunks.js +17 -13
  632. package/dist/shims/dynamic.d.ts +3 -3
  633. package/dist/shims/error-boundary-navigation.d.ts +3 -4
  634. package/dist/shims/error-boundary.d.ts +17 -18
  635. package/dist/shims/error-boundary.js +17 -11
  636. package/dist/shims/error.d.ts +4 -4
  637. package/dist/shims/error.js +1 -1
  638. package/dist/shims/error.react-server.d.ts +3 -4
  639. package/dist/shims/fetch-cache.d.ts +22 -22
  640. package/dist/shims/fetch-cache.js +50 -20
  641. package/dist/shims/font-google-base.d.ts +9 -9
  642. package/dist/shims/font-google-base.js +2 -1
  643. package/dist/shims/font-local.d.ts +3 -3
  644. package/dist/shims/font-local.js +1 -1
  645. package/dist/shims/font-utils.d.ts +14 -15
  646. package/dist/shims/form.d.ts +2 -2
  647. package/dist/shims/form.js +10 -7
  648. package/dist/shims/hash-scroll.d.ts +5 -6
  649. package/dist/shims/head-state.d.ts +4 -5
  650. package/dist/shims/head.d.ts +16 -16
  651. package/dist/shims/head.js +5 -4
  652. package/dist/shims/headers.d.ts +68 -32
  653. package/dist/shims/headers.js +101 -10
  654. package/dist/shims/i18n-context.d.ts +5 -6
  655. package/dist/shims/i18n-state.d.ts +4 -5
  656. package/dist/shims/image-config.d.ts +5 -6
  657. package/dist/shims/image-config.js +2 -0
  658. package/dist/shims/image.d.ts +5 -5
  659. package/dist/shims/image.js +12 -8
  660. package/dist/shims/internal/als-registry.d.ts +4 -5
  661. package/dist/shims/internal/api-utils.d.ts +3 -4
  662. package/dist/shims/internal/app-page-props-cache-key.d.ts +32 -4
  663. package/dist/shims/internal/app-page-props-cache-key.js +53 -1
  664. package/dist/shims/internal/app-prefetch-fetch-queue.d.ts +5 -6
  665. package/dist/shims/internal/app-prefetch-rsc-request.d.ts +13 -0
  666. package/dist/shims/internal/app-prefetch-rsc-request.js +12 -0
  667. package/dist/shims/internal/app-route-detection.d.ts +2 -2
  668. package/dist/shims/internal/app-route-prefetch-policy.d.ts +5 -6
  669. package/dist/shims/internal/app-route-prefetch-policy.js +1 -0
  670. package/dist/shims/internal/app-router-context.d.ts +9 -10
  671. package/dist/shims/internal/cookie-serialize.d.ts +4 -5
  672. package/dist/shims/internal/format-url-object.d.ts +7 -0
  673. package/dist/shims/internal/format-url-object.js +53 -0
  674. package/dist/shims/internal/hybrid-client-route-owner-direct.d.ts +6 -7
  675. package/dist/shims/internal/hybrid-client-route-owner-direct.js +29 -11
  676. package/dist/shims/internal/hybrid-client-route-owner.d.ts +3 -3
  677. package/dist/shims/internal/hybrid-client-route-owner.js +5 -4
  678. package/dist/shims/internal/interpolate-as.d.ts +5 -6
  679. package/dist/shims/internal/interpolate-as.js +4 -2
  680. package/dist/shims/internal/link-status-registry.d.ts +5 -6
  681. package/dist/shims/internal/make-hanging-promise.d.ts +8 -3
  682. package/dist/shims/internal/make-hanging-promise.js +13 -2
  683. package/dist/shims/internal/navigation-untracked.d.ts +2 -3
  684. package/dist/shims/internal/normalize-router-href.d.ts +15 -0
  685. package/dist/shims/internal/normalize-router-href.js +41 -0
  686. package/dist/shims/internal/pages-data-fetch-dedup.d.ts +8 -9
  687. package/dist/shims/internal/pages-data-target.d.ts +8 -6
  688. package/dist/shims/internal/pages-data-target.js +32 -36
  689. package/dist/shims/internal/pages-data-url.d.ts +4 -5
  690. package/dist/shims/internal/pages-data-url.js +2 -1
  691. package/dist/shims/internal/pages-router-accessor.d.ts +3 -4
  692. package/dist/shims/internal/pages-router-components.d.ts +3 -4
  693. package/dist/shims/internal/route-pattern-for-warning.d.ts +5 -6
  694. package/dist/shims/internal/route-pattern-for-warning.js +3 -3
  695. package/dist/shims/internal/router-context.d.ts +2 -3
  696. package/dist/shims/internal/thenable-well-known-properties.d.ts +10 -0
  697. package/dist/shims/internal/thenable-well-known-properties.js +33 -0
  698. package/dist/shims/internal/utils.d.ts +7 -8
  699. package/dist/shims/internal/work-unit-async-storage.d.ts +12 -11
  700. package/dist/shims/layout-segment-context.d.ts +3 -4
  701. package/dist/shims/link-prefetch.d.ts +9 -10
  702. package/dist/shims/link.d.ts +4 -4
  703. package/dist/shims/link.js +67 -116
  704. package/dist/shims/metadata.d.ts +15 -16
  705. package/dist/shims/metadata.js +40 -36
  706. package/dist/shims/navigation-context-accessors.d.ts +9 -0
  707. package/dist/shims/navigation-context-accessors.js +19 -0
  708. package/dist/shims/navigation-context-state.d.ts +27 -18
  709. package/dist/shims/navigation-errors.d.ts +18 -19
  710. package/dist/shims/navigation-state.d.ts +6 -7
  711. package/dist/shims/navigation.d.ts +80 -68
  712. package/dist/shims/navigation.js +45 -17
  713. package/dist/shims/navigation.react-server.d.ts +9 -9
  714. package/dist/shims/navigation.react-server.js +1 -1
  715. package/dist/shims/offline.d.ts +2 -3
  716. package/dist/shims/og.d.ts +2 -2
  717. package/dist/shims/pages-router-runtime.d.ts +4 -5
  718. package/dist/shims/ppr-fallback-shell.d.ts +13 -14
  719. package/dist/shims/readonly-url-search-params.d.ts +2 -3
  720. package/dist/shims/request-context.d.ts +7 -6
  721. package/dist/shims/root-params.d.ts +14 -15
  722. package/dist/shims/router-state.d.ts +5 -6
  723. package/dist/shims/router-state.js +1 -1
  724. package/dist/shims/router.d.ts +22 -21
  725. package/dist/shims/router.js +339 -164
  726. package/dist/shims/script-nonce-context.d.ts +8 -6
  727. package/dist/shims/script-nonce-context.js +15 -6
  728. package/dist/shims/script.d.ts +4 -4
  729. package/dist/shims/script.js +9 -7
  730. package/dist/shims/search-params-gate.d.ts +35 -0
  731. package/dist/shims/search-params-gate.js +32 -0
  732. package/dist/shims/server.d.ts +19 -51
  733. package/dist/shims/server.js +14 -28
  734. package/dist/shims/slot.d.ts +33 -15
  735. package/dist/shims/slot.js +41 -9
  736. package/dist/shims/streamed-icons.d.ts +3 -4
  737. package/dist/shims/thenable-params.d.ts +5 -7
  738. package/dist/shims/thenable-params.js +3 -24
  739. package/dist/shims/unified-request-context.d.ts +34 -31
  740. package/dist/shims/unified-request-context.js +34 -24
  741. package/dist/shims/unrecognized-action-error.d.ts +3 -4
  742. package/dist/shims/url-safety.d.ts +5 -6
  743. package/dist/shims/url-utils.d.ts +18 -12
  744. package/dist/shims/url-utils.js +10 -1
  745. package/dist/shims/use-merged-ref.d.ts +2 -3
  746. package/dist/shims/user-agent.d.ts +31 -0
  747. package/dist/shims/user-agent.js +16 -0
  748. package/dist/shims/web-vitals.d.ts +2 -2
  749. package/dist/typegen.d.ts +3 -4
  750. package/dist/utils/asset-prefix.d.ts +7 -8
  751. package/dist/utils/base-path.d.ts +5 -6
  752. package/dist/utils/built-asset-url.d.ts +2 -3
  753. package/dist/utils/built-asset-url.js +1 -1
  754. package/dist/utils/cache-control-metadata.d.ts +4 -5
  755. package/dist/utils/client-build-manifest.d.ts +6 -7
  756. package/dist/utils/client-build-manifest.js +2 -1
  757. package/dist/utils/client-entry-manifest.d.ts +6 -7
  758. package/dist/utils/client-runtime-metadata.d.ts +8 -3
  759. package/dist/utils/client-runtime-metadata.js +18 -1
  760. package/dist/utils/commonjs-loader.d.ts +4 -5
  761. package/dist/utils/compare.d.ts +2 -3
  762. package/dist/utils/deployment-id.d.ts +6 -7
  763. package/dist/utils/dev-error-recovery-event.d.ts +2 -3
  764. package/dist/utils/dev-stack-sourcemap-endpoint.d.ts +2 -3
  765. package/dist/utils/domain-locale.d.ts +7 -8
  766. package/dist/utils/encode-cache-tag.d.ts +3 -4
  767. package/dist/utils/error-cause.d.ts +2 -3
  768. package/dist/utils/external-url.d.ts +2 -3
  769. package/dist/utils/has-trailing-comma.d.ts +3 -4
  770. package/dist/utils/hash.d.ts +3 -4
  771. package/dist/utils/html-limited-bots.d.ts +3 -4
  772. package/dist/utils/lazy-chunks.d.ts +8 -9
  773. package/dist/utils/lazy-chunks.js +4 -4
  774. package/dist/utils/manifest-paths.d.ts +5 -6
  775. package/dist/utils/mdx-scan.d.ts +11 -4
  776. package/dist/utils/mdx-scan.js +27 -1
  777. package/dist/utils/middleware-request-headers.d.ts +7 -6
  778. package/dist/utils/middleware-request-headers.js +6 -1
  779. package/dist/utils/navigation-signal.d.ts +3 -3
  780. package/dist/utils/navigation-signal.js +16 -1
  781. package/dist/utils/number.d.ts +2 -3
  782. package/dist/utils/package-name.d.ts +3 -4
  783. package/dist/utils/parse-cookie.d.ts +4 -5
  784. package/dist/utils/path.d.ts +8 -9
  785. package/dist/utils/plugin-options.d.ts +2 -3
  786. package/dist/utils/precompressed-variant.d.ts +3 -4
  787. package/dist/utils/prerender-output-paths.d.ts +9 -10
  788. package/dist/utils/prerender-output-paths.js +16 -9
  789. package/dist/utils/project.d.ts +19 -30
  790. package/dist/utils/project.js +20 -29
  791. package/dist/utils/promise.d.ts +2 -3
  792. package/dist/utils/protocol-headers.d.ts +14 -15
  793. package/dist/utils/public-file-path.d.ts +2 -3
  794. package/dist/utils/public-routes.d.ts +2 -3
  795. package/dist/utils/query.d.ts +14 -9
  796. package/dist/utils/query.js +22 -1
  797. package/dist/utils/react-compiler-support.d.ts +6 -7
  798. package/dist/utils/react-version.d.ts +4 -3
  799. package/dist/utils/react-version.js +19 -1
  800. package/dist/utils/record.d.ts +2 -3
  801. package/dist/utils/redirect-digest.d.ts +3 -4
  802. package/dist/utils/regex-safety.d.ts +4 -5
  803. package/dist/utils/regex.d.ts +2 -3
  804. package/dist/utils/safe-json-file.d.ts +2 -3
  805. package/dist/utils/sorted-array.d.ts +2 -3
  806. package/dist/utils/text-stream.d.ts +3 -4
  807. package/dist/utils/vinext-root.d.ts +2 -3
  808. package/dist/utils/virtual-module.d.ts +3 -4
  809. package/dist/utils/vite-cli-invocation.d.ts +21 -0
  810. package/dist/utils/vite-cli-invocation.js +144 -0
  811. package/dist/utils/vite-version.d.ts +5 -6
  812. package/next-package.json +4 -0
  813. package/package.json +55 -6
@@ -1,21 +1,26 @@
1
1
  import { NEXTJS_CACHE_HEADER, VINEXT_CACHE_HEADER } from "./headers.js";
2
+ import { getCdnCacheAdapter } from "../shims/cdn-cache.js";
3
+ import { captureRouteCacheabilityResponsePolicy, deferRouteCacheability, isRouteCacheabilityEvaluation } from "../shims/cacheability-classification.js";
4
+ import { NO_STORE_CACHE_CONTROL, STATIC_CACHE_CONTROL, applyCdnResponseHeaders, buildRevalidateCacheControl, captureCdnResponsePolicyHeaders, hasExplicitNonCacheableResponsePolicy } from "./cache-control.js";
5
+ import { buildAppPageCacheValue, isrCacheControl, resolveRouteExpireSeconds } from "./isr-cache.js";
2
6
  import { resolveClientStaleTimeSeconds } from "../utils/cache-control-metadata.js";
3
- import { NO_STORE_CACHE_CONTROL, applyCdnResponseHeaders } from "./cache-control.js";
4
- import { buildAppPageCacheValue, isrCacheControl } from "./isr-cache.js";
5
7
  import { setCacheStateHeaders } from "./cache-headers.js";
6
8
  import { readStreamAsText } from "../utils/text-stream.js";
9
+ import { deferUntilStreamConsumed } from "./defer-until-stream-consumed.js";
7
10
  import { markFrameworkLinkHeaders } from "./app-response-header-provenance.js";
11
+ import { hasQueryInvariantRenderProof } from "./cache-proof.js";
8
12
  import { createEmptyAppPageRenderObservationState } from "./app-page-render-observation.js";
9
13
  //#region src/server/app-page-cache-finalizer.ts
10
14
  function applyPendingDynamicCdnHeaders(headers, tags, options = {}) {
15
+ const cacheable = headers.get("Cache-Control") ?? "";
11
16
  applyCdnResponseHeaders(headers, {
12
- cacheControl: headers.get("Cache-Control") ?? "",
17
+ cacheControl: cacheable,
13
18
  pendingDynamicCheck: true,
14
19
  tags
15
20
  });
16
21
  finalizePendingCacheStateHeaders(headers, options);
17
22
  }
18
- function applyUncacheableRscVariantNoStoreHeaders(headers, options = {}) {
23
+ function applyUncacheableVariantNoStoreHeaders(headers, options = {}) {
19
24
  applyCdnResponseHeaders(headers, { cacheControl: NO_STORE_CACHE_CONTROL });
20
25
  finalizePendingCacheStateHeaders(headers, {
21
26
  ...options,
@@ -33,17 +38,99 @@ function finalizePendingCacheStateHeaders(headers, options = {}) {
33
38
  }
34
39
  function resolveAppPageCacheControl(options) {
35
40
  let revalidateSeconds = options.revalidateSeconds;
36
- let expireSeconds = options.expireSeconds;
37
41
  const requestCacheLife = options.requestCacheLife;
38
42
  if (requestCacheLife?.revalidate !== void 0) revalidateSeconds = revalidateSeconds === null ? requestCacheLife.revalidate : Math.min(revalidateSeconds, requestCacheLife.revalidate);
39
- if (requestCacheLife?.expire !== void 0) expireSeconds = requestCacheLife.expire;
43
+ const expireSeconds = requestCacheLife?.expire ?? resolveRouteExpireSeconds(revalidateSeconds, options.expireSeconds);
40
44
  if (revalidateSeconds === null || Number.isNaN(revalidateSeconds) || revalidateSeconds <= 0) return null;
41
45
  return isrCacheControl(revalidateSeconds, {
42
46
  expireSeconds,
43
47
  staleSeconds: resolveClientStaleTimeSeconds(requestCacheLife)
44
48
  });
45
49
  }
50
+ function appPageCacheControlHeader(cacheControl) {
51
+ return cacheControl.revalidate === Infinity ? STATIC_CACHE_CONTROL : buildRevalidateCacheControl(cacheControl.revalidate, cacheControl.expire);
52
+ }
53
+ function finalizeEvaluatedAppPageResponse(response, options) {
54
+ if (!isRouteCacheabilityEvaluation()) return null;
55
+ const complete = deferRouteCacheability();
56
+ if (!complete) return response;
57
+ captureRouteCacheabilityResponsePolicy(captureCdnResponsePolicyHeaders(response.headers));
58
+ let completed = false;
59
+ const finish = () => {
60
+ if (completed) return;
61
+ completed = true;
62
+ const observationState = options.consumeRenderObservationState?.();
63
+ let outcome;
64
+ if (options.capturedDynamicUsageBeforeContextCleanup?.() === true || options.consumeDynamicUsage()) outcome = {
65
+ cacheable: false,
66
+ dynamicUsage: true,
67
+ reason: "dynamic API used during render"
68
+ };
69
+ else if (options.isStaticEligible === false) outcome = {
70
+ cacheable: false,
71
+ reason: "route is not statically generated"
72
+ };
73
+ else if (response.headers.has("set-cookie") || hasExplicitNonCacheableResponsePolicy(response.headers)) outcome = {
74
+ cacheable: false,
75
+ reason: "response explicitly opts out of shared caching"
76
+ };
77
+ else {
78
+ const cacheControl = resolveAppPageCacheControl({
79
+ expireSeconds: options.expireSeconds,
80
+ requestCacheLife: options.getRequestCacheLife?.(),
81
+ revalidateSeconds: options.revalidateSeconds
82
+ });
83
+ outcome = cacheControl ? {
84
+ cacheable: true,
85
+ cacheControl: appPageCacheControlHeader(cacheControl),
86
+ ...observationState && !observationState.requestApis.includes("searchParams") ? { searchParamsUnread: true } : {},
87
+ tags: options.getPageTags()
88
+ } : {
89
+ cacheable: false,
90
+ reason: "render did not produce a cache policy"
91
+ };
92
+ }
93
+ complete(outcome);
94
+ };
95
+ if (!response.body) {
96
+ finish();
97
+ return response;
98
+ }
99
+ return new Response(deferUntilStreamConsumed(response.body, finish), {
100
+ headers: response.headers,
101
+ status: response.status,
102
+ statusText: response.statusText
103
+ });
104
+ }
105
+ /**
106
+ * Complete probe/admission classification for an App Page response that does
107
+ * not enter the ISR cache-write path. Ordinary requests pass through unchanged.
108
+ */
109
+ function finalizeAppPageCacheabilityEvaluationResponse(response, options) {
110
+ return finalizeEvaluatedAppPageResponse(response, options) ?? response;
111
+ }
46
112
  function finalizeAppPageHtmlCacheResponse(response, options) {
113
+ const probeResponse = finalizeEvaluatedAppPageResponse(response, options);
114
+ if (probeResponse) {
115
+ if (options.capturedRscDataPromise) {
116
+ const adapter = getCdnCacheAdapter();
117
+ if (adapter.captureAppPageRscData) adapter.captureAppPageRscData(options.capturedRscDataPromise);
118
+ else options.capturedRscDataPromise.catch(() => {});
119
+ }
120
+ return probeResponse;
121
+ }
122
+ if (options.bypassInterceptionContextCache === true) {
123
+ options.capturedRscDataPromise?.catch(() => {});
124
+ const headers = new Headers(response.headers);
125
+ applyUncacheableVariantNoStoreHeaders(headers, { omitCacheState: options.omitPendingDynamicCacheState === true });
126
+ const clientResponse = new Response(response.body, {
127
+ status: response.status,
128
+ statusText: response.statusText,
129
+ headers
130
+ });
131
+ markFrameworkLinkHeaders(clientResponse.headers, options.linkHeader);
132
+ return clientResponse;
133
+ }
47
134
  if (!response.body) return response;
48
135
  const [streamForClient, streamForCache] = response.body.tee();
49
136
  const htmlKey = options.isrHtmlKey(options.cleanPathname);
@@ -52,7 +139,7 @@ function finalizeAppPageHtmlCacheResponse(response, options) {
52
139
  if (options.preserveClientResponseHeaders !== true) applyPendingDynamicCdnHeaders(clientHeaders, options.getPageTags(), { omitCacheState: options.omitPendingDynamicCacheState === true });
53
140
  const cachePromise = (async () => {
54
141
  try {
55
- const cachedHtml = await readStreamAsText(streamForCache);
142
+ let cachedHtml = await readStreamAsText(streamForCache);
56
143
  if (options.capturedDynamicUsageBeforeContextCleanup?.() === true || options.consumeDynamicUsage()) {
57
144
  options.isrDebug?.("HTML cache write skipped (dynamic usage during render)", htmlKey);
58
145
  return;
@@ -66,17 +153,25 @@ function finalizeAppPageHtmlCacheResponse(response, options) {
66
153
  options.isrDebug?.("HTML cache write skipped (no cache policy)", htmlKey);
67
154
  return;
68
155
  }
156
+ if (options.clientTraceMetadataMarker) {
157
+ const { stripClientTraceMetadataBlock } = await import("./client-trace-metadata.js");
158
+ cachedHtml = stripClientTraceMetadataBlock(cachedHtml, options.clientTraceMetadataMarker);
159
+ }
69
160
  const pageTags = options.getPageTags();
70
161
  const observationState = options.consumeRenderObservationState?.() ?? createEmptyAppPageRenderObservationState();
71
- const htmlRenderObservation = options.createHtmlRenderObservation?.({
162
+ const htmlRenderObservation = options.createHtmlRenderObservation({
72
163
  cacheTags: pageTags,
73
164
  state: observationState
74
165
  });
75
- const rscRenderObservation = options.createRscRenderObservation?.({
166
+ const rscRenderObservation = options.createRscRenderObservation({
76
167
  cacheTags: pageTags,
77
168
  state: observationState
78
169
  });
79
170
  const linkHeader = options.linkHeader;
171
+ if (!hasQueryInvariantRenderProof(htmlRenderObservation) || !hasQueryInvariantRenderProof(rscRenderObservation)) {
172
+ options.isrDebug?.("HTML cache write skipped (searchParams not proven unread)", htmlKey);
173
+ return;
174
+ }
80
175
  const writes = [options.isrSet(htmlKey, buildAppPageCacheValue(cachedHtml, void 0, 200, htmlRenderObservation, linkHeader ? { link: linkHeader } : void 0), {
81
176
  cacheControl,
82
177
  tags: pageTags
@@ -101,11 +196,16 @@ function finalizeAppPageHtmlCacheResponse(response, options) {
101
196
  return clientResponse;
102
197
  }
103
198
  function finalizeAppPageRscCacheResponse(response, options) {
199
+ const probeResponse = finalizeEvaluatedAppPageResponse(response, options);
200
+ if (probeResponse) {
201
+ options.capturedRscDataPromise?.catch(() => {});
202
+ return probeResponse;
203
+ }
104
204
  scheduleAppPageRscCacheWrite(options);
105
- const isUncacheableVariant = Boolean(options.mountedSlotsHeader);
205
+ const isUncacheableVariant = Boolean(options.mountedSlotsHeader) || options.bypassInterceptionContextCache === true;
106
206
  if (options.preserveClientResponseHeaders === true && !isUncacheableVariant) return response;
107
207
  const clientHeaders = new Headers(response.headers);
108
- if (isUncacheableVariant) applyUncacheableRscVariantNoStoreHeaders(clientHeaders, { omitCacheState: options.omitPendingDynamicCacheState === true });
208
+ if (isUncacheableVariant) applyUncacheableVariantNoStoreHeaders(clientHeaders, { omitCacheState: options.omitPendingDynamicCacheState === true });
109
209
  else applyPendingDynamicCdnHeaders(clientHeaders, options.getPageTags(), { omitCacheState: options.omitPendingDynamicCacheState === true });
110
210
  return new Response(response.body, {
111
211
  status: response.status,
@@ -115,7 +215,7 @@ function finalizeAppPageRscCacheResponse(response, options) {
115
215
  }
116
216
  function scheduleAppPageRscCacheWrite(options) {
117
217
  const capturedRscDataPromise = options.capturedRscDataPromise;
118
- if (!capturedRscDataPromise || options.dynamicUsedDuringBuild || options.mountedSlotsHeader) return false;
218
+ if (!capturedRscDataPromise || options.dynamicUsedDuringBuild || options.mountedSlotsHeader || options.bypassInterceptionContextCache === true) return false;
119
219
  const rscKey = options.isrRscKey(options.cleanPathname, null, options.renderMode, options.interceptionContext, options.interceptionId);
120
220
  const cachePromise = (async () => {
121
221
  try {
@@ -135,10 +235,14 @@ function scheduleAppPageRscCacheWrite(options) {
135
235
  }
136
236
  const pageTags = options.getPageTags();
137
237
  const observationState = options.consumeRenderObservationState?.() ?? createEmptyAppPageRenderObservationState();
138
- const rscRenderObservation = options.createRscRenderObservation?.({
238
+ const rscRenderObservation = options.createRscRenderObservation({
139
239
  cacheTags: pageTags,
140
240
  state: observationState
141
241
  });
242
+ if (!hasQueryInvariantRenderProof(rscRenderObservation)) {
243
+ options.isrDebug?.("RSC cache write skipped (searchParams not proven unread)", rscKey);
244
+ return;
245
+ }
142
246
  await options.isrSet(rscKey, buildAppPageCacheValue("", rscData, 200, rscRenderObservation), {
143
247
  cacheControl,
144
248
  tags: pageTags
@@ -152,4 +256,4 @@ function scheduleAppPageRscCacheWrite(options) {
152
256
  return true;
153
257
  }
154
258
  //#endregion
155
- export { finalizeAppPageHtmlCacheResponse, finalizeAppPageRscCacheResponse, scheduleAppPageRscCacheWrite };
259
+ export { finalizeAppPageCacheabilityEvaluationResponse, finalizeAppPageHtmlCacheResponse, finalizeAppPageRscCacheResponse, scheduleAppPageRscCacheWrite };
@@ -12,7 +12,7 @@ type AppPageCacheRoute = {
12
12
  pattern: string;
13
13
  routeSegments: readonly string[];
14
14
  };
15
- type RenderAppPageCacheArtifactsOptions = {
15
+ export type RenderAppPageCacheArtifactsOptions = {
16
16
  basePath?: string;
17
17
  captureRscData: boolean;
18
18
  cleanPathname: string;
@@ -25,7 +25,9 @@ type RenderAppPageCacheArtifactsOptions = {
25
25
  loadSsrHandler: () => Promise<AppPageSsrHandler>;
26
26
  mountedSlotsHeader?: string | null;
27
27
  navigationParams: Record<string, unknown>;
28
+ isCapturedRscError?: (error: unknown) => boolean;
28
29
  onError: (error: unknown, requestInfo: unknown, errorContext: unknown) => unknown;
30
+ onSsrError?: (error: unknown) => unknown;
29
31
  reactMaxHeadersLength?: number;
30
32
  renderToReadableStream: (element: AppPageRenderableElement, options: {
31
33
  onError: (error: unknown, requestInfo: unknown, errorContext: unknown) => unknown;
@@ -35,7 +37,7 @@ type RenderAppPageCacheArtifactsOptions = {
35
37
  waitForAllReady?: boolean;
36
38
  isForceStatic?: boolean;
37
39
  };
38
- type RenderAppPageCacheArtifactsResult = {
40
+ export type RenderAppPageCacheArtifactsResult = {
39
41
  cacheControl?: CacheControlMetadata;
40
42
  html: string;
41
43
  htmlRenderObservation: ReturnType<typeof createAppPageRenderObservation>;
@@ -43,6 +45,8 @@ type RenderAppPageCacheArtifactsResult = {
43
45
  rscData?: ArrayBuffer;
44
46
  rscRenderObservation?: ReturnType<typeof createAppPageRenderObservation>;
45
47
  tags: string[];
48
+ /** The render used a dynamic API, so its output must not be stored. */
49
+ usedDynamicApi: boolean;
46
50
  };
47
51
  /**
48
52
  * Render an App page element to HTML (and optionally its RSC payload) for cache
@@ -50,6 +54,5 @@ type RenderAppPageCacheArtifactsResult = {
50
54
  * cache-tag construction used by both normal ISR revalidation and PPR fallback
51
55
  * shell regeneration.
52
56
  */
53
- declare function renderAppPageCacheArtifacts(options: RenderAppPageCacheArtifactsOptions): Promise<RenderAppPageCacheArtifactsResult>;
54
- //#endregion
55
- export { RenderAppPageCacheArtifactsOptions, RenderAppPageCacheArtifactsResult, renderAppPageCacheArtifacts };
57
+ export declare function renderAppPageCacheArtifacts(options: RenderAppPageCacheArtifactsOptions): Promise<RenderAppPageCacheArtifactsResult>;
58
+ //#endregion
@@ -1,11 +1,12 @@
1
- import { consumeDynamicUsage, consumeInvalidDynamicUsageError } from "../shims/headers.js";
1
+ import { consumeDynamicUsage, consumeInvalidDynamicUsageError, isRenderDynamicLatched } from "../shims/headers.js";
2
2
  import { _consumeRequestScopedCacheLife } from "../shims/cache-request-state.js";
3
3
  import { getCollectedFetchTags } from "../shims/fetch-cache.js";
4
4
  import { readStreamAsText } from "../utils/text-stream.js";
5
5
  import { buildAppPageFontLinkHeader, teeAppPageRscStreamForCapture } from "./app-page-execution.js";
6
+ import { recordAppPageRenderError, traceAppPageRender } from "./app-page-tracing.js";
6
7
  import { buildAppPageTags } from "./implicit-tags.js";
7
8
  import { consumeAppPageRenderObservationState, createAppPageHtmlOutputScope, createAppPageRenderObservation, createAppPageRscOutputScope } from "./app-page-render-observation.js";
8
- import { buildAppPageLinkHeader, isAppSsrRenderResult } from "./app-page-stream.js";
9
+ import { buildAppPageLinkHeader, createAppPageSsrErrorHandler, isAppSsrRenderResult } from "./app-page-stream.js";
9
10
  //#region src/server/app-page-cache-render.ts
10
11
  /**
11
12
  * Render an App page element to HTML (and optionally its RSC payload) for cache
@@ -14,7 +15,14 @@ import { buildAppPageLinkHeader, isAppSsrRenderResult } from "./app-page-stream.
14
15
  * shell regeneration.
15
16
  */
16
17
  async function renderAppPageCacheArtifacts(options) {
17
- const rscCapture = teeAppPageRscStreamForCapture(options.renderToReadableStream(options.element, { onError: options.onError }), options.captureRscData);
18
+ return traceAppPageRender(options.route.pattern, "prerender", (renderSpan) => renderAppPageCacheArtifactsImpl(options, renderSpan));
19
+ }
20
+ async function renderAppPageCacheArtifactsImpl(options, renderSpan) {
21
+ const rscStream = options.renderToReadableStream(options.element, { onError(error, requestInfo, errorContext) {
22
+ recordAppPageRenderError(renderSpan, error);
23
+ return options.onError(error, requestInfo, errorContext);
24
+ } });
25
+ const rscCapture = teeAppPageRscStreamForCapture(rscStream, options.captureRscData);
18
26
  const capturedRscDataRef = { value: null };
19
27
  const fontPreloads = options.getFontPreloads();
20
28
  const htmlResult = await (await options.loadSsrHandler()).handleSsr(rscCapture.ssrStream, options.getNavigationContext(), {
@@ -29,13 +37,21 @@ async function renderAppPageCacheArtifacts(options) {
29
37
  waitForAllReady: options.waitForAllReady,
30
38
  isStaticGeneration: true,
31
39
  isForceStatic: options.isForceStatic,
40
+ onSsrError: options.onSsrError && options.isCapturedRscError ? createAppPageSsrErrorHandler((error) => {
41
+ recordAppPageRenderError(renderSpan, error);
42
+ return options.onSsrError?.(error);
43
+ }, options.isCapturedRscError) : options.onSsrError ? (error) => {
44
+ recordAppPageRenderError(renderSpan, error);
45
+ return options.onSsrError?.(error);
46
+ } : void 0,
32
47
  ...rscCapture.sideStream ? {
33
48
  sideStream: rscCapture.sideStream,
34
49
  capturedRscDataRef
35
50
  } : {}
36
51
  });
37
52
  const htmlStream = isAppSsrRenderResult(htmlResult) ? htmlResult.htmlStream : htmlResult;
38
- const linkHeader = buildAppPageLinkHeader(isAppSsrRenderResult(htmlResult) ? htmlResult.linkHeader : void 0, buildAppPageFontLinkHeader(fontPreloads), options.reactMaxHeadersLength);
53
+ const reactLinkHeader = isAppSsrRenderResult(htmlResult) ? htmlResult.linkHeader : void 0;
54
+ const linkHeader = buildAppPageLinkHeader(reactLinkHeader, buildAppPageFontLinkHeader(fontPreloads), options.reactMaxHeadersLength);
39
55
  const html = await readStreamAsText(htmlStream);
40
56
  let rscData;
41
57
  if (options.captureRscData) {
@@ -47,7 +63,7 @@ async function renderAppPageCacheArtifacts(options) {
47
63
  const tags = buildAppPageTags(options.cleanPathname, getCollectedFetchTags(), options.route.routeSegments);
48
64
  const observationState = consumeAppPageRenderObservationState();
49
65
  consumeInvalidDynamicUsageError();
50
- consumeDynamicUsage();
66
+ const usedDynamicApi = consumeDynamicUsage() || isRenderDynamicLatched();
51
67
  const result = {
52
68
  html,
53
69
  htmlRenderObservation: createAppPageRenderObservation({
@@ -67,6 +83,7 @@ async function renderAppPageCacheArtifacts(options) {
67
83
  }),
68
84
  ...linkHeader ? { linkHeader } : {},
69
85
  tags,
86
+ usedDynamicApi,
70
87
  cacheControl: typeof cacheLife?.revalidate === "number" ? {
71
88
  revalidate: cacheLife.revalidate,
72
89
  expire: cacheLife.expire,
@@ -8,7 +8,7 @@ type AppPageDebugLogger = (event: string, detail: string) => void;
8
8
  type AppPageCacheGetter = (key: string) => Promise<ISRCacheEntry | null>;
9
9
  type AppPageBackgroundRegenerator = (key: string, renderFn: () => Promise<void>) => void;
10
10
  type AppPageRscCacheKeyBuilder = (pathname: string, mountedSlotsHeader?: string | null, renderMode?: AppRscRenderMode, interceptionContext?: string | null, interceptionId?: string | null) => string;
11
- type AppPageCacheOutcomeMetric = Readonly<{
11
+ export type AppPageCacheOutcomeMetric = Readonly<{
12
12
  artifact: "html" | "rsc";
13
13
  /**
14
14
  * Internal cache lookup key for debugging and tests. Runtime telemetry sinks should hash or
@@ -22,11 +22,18 @@ type AppPageCacheOutcomeRecorder = (metric: AppPageCacheOutcomeMetric) => void;
22
22
  type AppPageCacheRenderResult = {
23
23
  cacheControl?: CacheControlMetadata;
24
24
  html: string;
25
- htmlRenderObservation?: RenderObservation;
25
+ htmlRenderObservation: RenderObservation;
26
26
  linkHeader?: string;
27
27
  rscData: ArrayBuffer;
28
- rscRenderObservation?: RenderObservation;
28
+ rscRenderObservation: RenderObservation;
29
+ /**
30
+ * The route-level revalidate of the route this render regenerated, or null
31
+ * when it has none and the render's cacheLife sets it. Undefined keeps the
32
+ * matched route's read seed, as when the render regenerated that route.
33
+ */
34
+ revalidateSeconds?: number | null;
29
35
  tags: string[];
36
+ usedDynamicApi: boolean;
30
37
  };
31
38
  type BuildAppPageCachedResponseOptions = {
32
39
  cacheControl?: CacheControlMetadata;
@@ -37,12 +44,17 @@ type BuildAppPageCachedResponseOptions = {
37
44
  middlewareHeaders?: Headers | null;
38
45
  middlewareStatus?: number | null;
39
46
  mountedSlotsHeader?: string | null;
47
+ /** The current request's route params, which the client reads on RSC responses. */
48
+ params?: Record<string, string | string[]>;
49
+ /** The current request's path and query, which the client reads on RSC responses. */
50
+ renderedPathAndSearch?: string | null;
40
51
  revalidateSeconds: number;
41
52
  };
42
53
  type ReadAppPageCacheResponseOptions = {
43
54
  cleanPathname: string;
44
55
  clearRequestContext: () => void;
45
56
  isEdgeRuntime?: boolean;
57
+ isRoutePPREnabled?: boolean;
46
58
  isRscRequest: boolean;
47
59
  isrDebug?: AppPageDebugLogger;
48
60
  isrGet: AppPageCacheGetter;
@@ -55,7 +67,14 @@ type ReadAppPageCacheResponseOptions = {
55
67
  middlewareHeaders?: Headers | null;
56
68
  middlewareStatus?: number | null;
57
69
  mountedSlotsHeader?: string | null;
70
+ /**
71
+ * Resolves the current request's route params for a cached RSC response.
72
+ * Called only once an entry can answer the request, since resolving them
73
+ * may load route modules.
74
+ */
75
+ resolveParams?: () => Promise<Record<string, string | string[]>>;
58
76
  recordCacheOutcome?: AppPageCacheOutcomeRecorder;
77
+ renderedPathAndSearch?: string | null;
59
78
  renderMode?: AppRscRenderMode;
60
79
  expireSeconds?: number;
61
80
  revalidateSeconds: number;
@@ -75,10 +94,10 @@ type ReadAppPageFallbackShellCacheResponseOptions = {
75
94
  revalidateSeconds: number;
76
95
  rewriteHtml: (html: string) => string;
77
96
  };
78
- declare function buildAppPageCacheTags(pathname: string, extraTags: readonly string[]): string[];
79
- declare function buildAppRouteCacheTags(pathname: string, extraTags: readonly string[], routeSegments: readonly string[]): string[];
80
- declare function buildAppPageCachedResponse(cachedValue: CachedAppPageValue, options: BuildAppPageCachedResponseOptions): Response | null;
81
- declare function readAppPageCacheResponse(options: ReadAppPageCacheResponseOptions): Promise<Response | null>;
82
- declare function readAppPageFallbackShellCacheResponse(options: ReadAppPageFallbackShellCacheResponseOptions): Promise<Response | null>;
97
+ export declare function buildAppPageCacheTags(pathname: string, extraTags: readonly string[]): string[];
98
+ export declare function buildAppRouteCacheTags(pathname: string, extraTags: readonly string[], routeSegments: readonly string[]): string[];
99
+ export declare function buildAppPageCachedResponse(cachedValue: CachedAppPageValue, options: BuildAppPageCachedResponseOptions): Response | null;
100
+ export declare function readAppPageCacheResponse(options: ReadAppPageCacheResponseOptions): Promise<Response | null>;
101
+ export declare function readAppPageFallbackShellCacheResponse(options: ReadAppPageFallbackShellCacheResponseOptions): Promise<Response | null>;
83
102
  //#endregion
84
- export { AppPageCacheOutcomeMetric, buildAppPageCacheTags, buildAppPageCachedResponse, buildAppRouteCacheTags, finalizeAppPageHtmlCacheResponse, finalizeAppPageRscCacheResponse, readAppPageCacheResponse, readAppPageFallbackShellCacheResponse, scheduleAppPageRscCacheWrite };
103
+ export { finalizeAppPageHtmlCacheResponse, finalizeAppPageRscCacheResponse, scheduleAppPageRscCacheWrite };
@@ -1,15 +1,16 @@
1
- import { VINEXT_MOUNTED_SLOTS_HEADER } from "./headers.js";
2
- import { resolveClientStaleTimeSeconds } from "../utils/cache-control-metadata.js";
1
+ import { VINEXT_MOUNTED_SLOTS_HEADER, VINEXT_RSC_VARY_HEADER } from "./app-rsc-vary.js";
2
+ import { VINEXT_PARAMS_HEADER, VINEXT_RENDERED_PATH_AND_SEARCH_HEADER } from "./headers.js";
3
3
  import { applyCdnResponseHeaders } from "./cache-control.js";
4
4
  import { decideIsr } from "./isr-decision.js";
5
- import { buildAppPageCacheValue, isrCacheControl } from "./isr-cache.js";
5
+ import { buildAppPageCacheValue, isrCacheControl, resolveRouteExpireSeconds } from "./isr-cache.js";
6
+ import { resolveClientStaleTimeSeconds } from "../utils/cache-control-metadata.js";
6
7
  import { encodeCacheTag } from "../utils/encode-cache-tag.js";
7
8
  import { setCacheStateHeaders } from "./cache-headers.js";
8
- import { VINEXT_RSC_CONTENT_TYPE, VINEXT_RSC_VARY_HEADER, applyRscCompatibilityIdHeader, applyRscDeploymentIdHeader } from "./app-rsc-cache-busting.js";
9
+ import { VINEXT_RSC_CONTENT_TYPE, applyRscCompatibilityIdHeader, applyRscDeploymentIdHeader } from "./app-rsc-cache-busting.js";
9
10
  import { mergeMiddlewareResponseHeaders } from "./middleware-response-headers.js";
10
11
  import { markFrameworkLinkHeaders } from "./app-response-header-provenance.js";
11
12
  import { applyClientStaleTimeHeader, applyEdgeRuntimeHeader } from "./app-page-response.js";
12
- import { hasCompleteNegativeRequestApiProof } from "./cache-proof.js";
13
+ import { hasQueryInvariantRenderProof } from "./cache-proof.js";
13
14
  import { isAppPprDynamicFallbackShellHtml } from "./app-ppr-fallback-shell.js";
14
15
  import { buildPageCacheTags } from "./implicit-tags.js";
15
16
  import { finalizeAppPageHtmlCacheResponse, finalizeAppPageRscCacheResponse, scheduleAppPageRscCacheWrite } from "./app-page-cache-finalizer.js";
@@ -49,28 +50,44 @@ function buildAppPageCachedHeaders(options) {
49
50
  applyCdnResponseHeaders(headers, { cacheControl: options.cacheControl });
50
51
  setCacheStateHeaders(headers, options.cacheState);
51
52
  applyEdgeRuntimeHeader(headers, options.isEdgeRuntime);
53
+ if (options.params && Object.keys(options.params).length > 0) headers.set(VINEXT_PARAMS_HEADER, encodeURIComponent(JSON.stringify(options.params)));
52
54
  if (options.mountedSlotsHeader) headers.set(VINEXT_MOUNTED_SLOTS_HEADER, options.mountedSlotsHeader);
53
55
  applyClientStaleTimeHeader(headers, options.staleTimeSeconds);
54
56
  mergeMiddlewareResponseHeaders(headers, options.middlewareHeaders ?? null);
55
- if (options.linkHeader) if (Array.isArray(options.linkHeader)) for (const value of options.linkHeader) headers.append("Link", value);
56
- else headers.append("Link", options.linkHeader);
57
+ if (options.linkHeader) {
58
+ if (Array.isArray(options.linkHeader)) for (const value of options.linkHeader) headers.append("Link", value);
59
+ else headers.append("Link", options.linkHeader);
60
+ }
57
61
  return headers;
58
62
  }
59
63
  function getCachedAppPageValue(entry) {
60
64
  return entry?.value.value && entry.value.value.kind === "APP_PAGE" ? entry.value.value : null;
61
65
  }
62
- function hasQueryInvariantAppPageProof(cachedValue) {
63
- return cachedValue.renderObservation !== void 0 && hasCompleteNegativeRequestApiProof(cachedValue.renderObservation, ["searchParams"]);
64
- }
65
66
  function resolveRegeneratedAppPageCacheControl(options) {
66
- let revalidateSeconds = options.routeRevalidateSeconds;
67
67
  const renderRevalidateSeconds = options.renderCacheControl?.revalidate;
68
- if (typeof renderRevalidateSeconds === "number") revalidateSeconds = revalidateSeconds > 0 ? Math.min(revalidateSeconds, renderRevalidateSeconds) : renderRevalidateSeconds;
68
+ let revalidateSeconds;
69
+ if (typeof renderRevalidateSeconds === "number") revalidateSeconds = options.routeRevalidateSeconds === null ? renderRevalidateSeconds : Math.min(options.routeRevalidateSeconds, renderRevalidateSeconds);
70
+ else revalidateSeconds = options.routeRevalidateSeconds ?? 0;
69
71
  return isrCacheControl(revalidateSeconds, {
70
- expireSeconds: options.renderCacheControl?.expire ?? options.expireSeconds,
72
+ expireSeconds: options.renderCacheControl?.expire ?? resolveRouteExpireSeconds(revalidateSeconds, options.expireSeconds),
71
73
  staleSeconds: resolveClientStaleTimeSeconds(options.renderCacheControl)
72
74
  });
73
75
  }
76
+ /**
77
+ * When a regeneration fails, Next.js re-stores the previous entry with a short
78
+ * revalidate so it isn't retried on every request
79
+ * (`server/response-cache/index.ts`). `revalidate = false`, which vinext holds
80
+ * as Infinity, retries after 3 s like Next.js's `revalidate || 3`.
81
+ */
82
+ function resolveRegenerationFailureCacheControl(previous) {
83
+ const previousRevalidate = typeof previous.revalidate === "number" && Number.isFinite(previous.revalidate) ? previous.revalidate : 0;
84
+ const revalidate = Math.min(Math.max(previousRevalidate || 3, 3), 30);
85
+ return {
86
+ revalidate,
87
+ ...previous.expire === void 0 ? {} : { expire: Math.max(revalidate + 3, previous.expire) },
88
+ ...previous.stale === void 0 ? {} : { stale: previous.stale }
89
+ };
90
+ }
74
91
  function buildAppPageCachedResponse(cachedValue, options) {
75
92
  const status = options.middlewareStatus ?? (cachedValue.status || 200);
76
93
  const { cacheControl } = decideIsr({
@@ -90,8 +107,10 @@ function buildAppPageCachedResponse(cachedValue, options) {
90
107
  isEdgeRuntime: options.isEdgeRuntime,
91
108
  middlewareHeaders: options.middlewareHeaders,
92
109
  mountedSlotsHeader: options.mountedSlotsHeader,
110
+ params: options.params,
93
111
  staleTimeSeconds
94
112
  });
113
+ if (options.renderedPathAndSearch) rscHeaders.set(VINEXT_RENDERED_PATH_AND_SEARCH_HEADER, encodeURIComponent(options.renderedPathAndSearch));
95
114
  applyRscCompatibilityIdHeader(rscHeaders);
96
115
  applyRscDeploymentIdHeader(rscHeaders);
97
116
  return new Response(cachedValue.rscData, {
@@ -150,6 +169,16 @@ async function readAppPageCacheResponse(options) {
150
169
  }
151
170
  const isrKey = options.isRscRequest ? options.isrRscKey(options.cleanPathname, null, options.renderMode, options.interceptionContext, options.interceptionId) : options.isrHtmlKey(options.cleanPathname);
152
171
  const artifact = options.isRscRequest ? "rsc" : "html";
172
+ let paramsFailure;
173
+ const resolveCachedResponseParams = async (cachedValue) => {
174
+ if (!options.isRscRequest || !cachedValue.rscData) return void 0;
175
+ try {
176
+ return await options.resolveParams?.();
177
+ } catch (error) {
178
+ paramsFailure = { error };
179
+ throw error;
180
+ }
181
+ };
153
182
  try {
154
183
  const cached = await options.isrGet(isrKey);
155
184
  const cachedValue = getCachedAppPageValue(cached);
@@ -173,7 +202,7 @@ async function readAppPageCacheResponse(options) {
173
202
  options.isrDebug?.("MISS (non app-page cache entry)", options.cleanPathname);
174
203
  return null;
175
204
  }
176
- if (cachedValue && options.hasRequestSearchParams === true && !hasQueryInvariantAppPageProof(cachedValue)) {
205
+ if (cachedValue && options.hasRequestSearchParams === true && cachedValue.prerendered !== true && !hasQueryInvariantRenderProof(cachedValue.renderObservation)) {
177
206
  recordAppPageCacheOutcome(options.recordCacheOutcome, {
178
207
  artifact,
179
208
  cacheKey: isrKey,
@@ -193,6 +222,8 @@ async function readAppPageCacheResponse(options) {
193
222
  middlewareHeaders: options.middlewareHeaders,
194
223
  middlewareStatus: options.middlewareStatus,
195
224
  mountedSlotsHeader: options.mountedSlotsHeader,
225
+ params: await resolveCachedResponseParams(cachedValue),
226
+ renderedPathAndSearch: options.renderedPathAndSearch,
196
227
  revalidateSeconds: options.revalidateSeconds
197
228
  });
198
229
  if (hitResponse) {
@@ -215,23 +246,60 @@ async function readAppPageCacheResponse(options) {
215
246
  options.isrDebug?.("MISS (empty cached entry)", options.cleanPathname);
216
247
  }
217
248
  if (cached?.isStale && cachedValue) {
218
- options.scheduleBackgroundRegeneration(isrKey, async () => {
249
+ const keepPreviousEntry = async (key, previous) => {
250
+ const previousValue = getCachedAppPageValue(previous);
251
+ const previousCacheControl = previous.value.cacheControl;
252
+ const previousTags = previousValue?.renderObservation?.cacheTags;
253
+ if (!previousValue || !previousCacheControl || !previousTags || previous.isExpired) return;
254
+ try {
255
+ const current = await options.isrGet(key);
256
+ if (!current || current.value.lastModified === previous.value.lastModified) await options.isrSet(key, previousValue, {
257
+ cacheControl: resolveRegenerationFailureCacheControl(previousCacheControl),
258
+ tags: [...previousTags]
259
+ });
260
+ } catch (storeError) {
261
+ console.error(`[vinext] Failed to keep the previous entry for ${key}:`, storeError);
262
+ }
263
+ };
264
+ const regenerate = async () => {
219
265
  const revalidatedPage = await options.renderFreshPageForCache();
220
266
  const cacheControl = resolveRegeneratedAppPageCacheControl({
221
267
  expireSeconds: options.expireSeconds,
222
268
  renderCacheControl: revalidatedPage.cacheControl,
223
- routeRevalidateSeconds: options.revalidateSeconds
269
+ routeRevalidateSeconds: revalidatedPage.revalidateSeconds === void 0 ? options.revalidateSeconds || null : revalidatedPage.revalidateSeconds
224
270
  });
225
- const writes = [options.isrSet(options.isRscRequest ? isrKey : options.isrRscKey(options.cleanPathname, null, options.renderMode, options.interceptionContext, options.interceptionId), buildAppPageCacheValue("", revalidatedPage.rscData, 200, revalidatedPage.rscRenderObservation), {
226
- cacheControl,
227
- tags: revalidatedPage.tags
228
- })];
229
- if (!options.isRscRequest) writes.push(options.isrSet(isrKey, buildAppPageCacheValue(revalidatedPage.html, void 0, 200, revalidatedPage.htmlRenderObservation, revalidatedPage.linkHeader ? { link: revalidatedPage.linkHeader } : void 0), {
230
- cacheControl,
231
- tags: revalidatedPage.tags
232
- }));
233
- await Promise.all(writes);
271
+ if (options.isRoutePPREnabled !== true && (revalidatedPage.usedDynamicApi || cacheControl.revalidate === 0)) throw new Error(`Page changed from static to dynamic at runtime ${options.cleanPathname}
272
+ see more here https://nextjs.org/docs/messages/app-static-to-dynamic-error`);
273
+ if (!hasQueryInvariantRenderProof(revalidatedPage.rscRenderObservation) || !options.isRscRequest && !hasQueryInvariantRenderProof(revalidatedPage.htmlRenderObservation)) {
274
+ options.isrDebug?.("regen write skipped (searchParams not proven unread)", isrKey);
275
+ return;
276
+ }
277
+ const rscKey = options.isRscRequest ? isrKey : options.isrRscKey(options.cleanPathname, null, options.renderMode, options.interceptionContext, options.interceptionId);
278
+ const store = async (key, value) => {
279
+ try {
280
+ await options.isrSet(key, value, {
281
+ cacheControl,
282
+ tags: revalidatedPage.tags
283
+ });
284
+ return true;
285
+ } catch (storeError) {
286
+ console.warn(`[vinext] Failed to update prerender cache for ${key}:`, storeError);
287
+ return false;
288
+ }
289
+ };
290
+ if (!await store(rscKey, buildAppPageCacheValue("", revalidatedPage.rscData, 200, revalidatedPage.rscRenderObservation))) return;
291
+ if (!options.isRscRequest) {
292
+ if (!await store(isrKey, buildAppPageCacheValue(revalidatedPage.html, void 0, 200, revalidatedPage.htmlRenderObservation, revalidatedPage.linkHeader ? { link: revalidatedPage.linkHeader } : void 0))) return;
293
+ }
234
294
  options.isrDebug?.("regen complete", options.cleanPathname);
295
+ };
296
+ options.scheduleBackgroundRegeneration(isrKey, async () => {
297
+ try {
298
+ await regenerate();
299
+ } catch (error) {
300
+ await keepPreviousEntry(isrKey, cached);
301
+ throw error;
302
+ }
235
303
  });
236
304
  const staleResponse = buildAppPageCachedResponse(cachedValue, {
237
305
  cacheState: "STALE",
@@ -242,6 +310,8 @@ async function readAppPageCacheResponse(options) {
242
310
  middlewareHeaders: options.middlewareHeaders,
243
311
  middlewareStatus: options.middlewareStatus,
244
312
  mountedSlotsHeader: options.mountedSlotsHeader,
313
+ params: await resolveCachedResponseParams(cachedValue),
314
+ renderedPathAndSearch: options.renderedPathAndSearch,
245
315
  revalidateSeconds: options.revalidateSeconds
246
316
  });
247
317
  if (staleResponse) {
@@ -273,6 +343,7 @@ async function readAppPageCacheResponse(options) {
273
343
  options.isrDebug?.("MISS (no cache entry)", options.cleanPathname);
274
344
  }
275
345
  } catch (isrReadError) {
346
+ if (paramsFailure) throw paramsFailure.error;
276
347
  recordAppPageCacheOutcome(options.recordCacheOutcome, {
277
348
  artifact,
278
349
  cacheKey: isrKey,