vinext 1.0.0-beta.9 → 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 (800) hide show
  1. package/README.md +150 -92
  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 +36 -11
  37. package/dist/build/prerender-paths.js +273 -97
  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 +65 -15
  43. package/dist/build/prerender.js +139 -43
  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 +24 -20
  49. package/dist/build/report.js +10 -2
  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 +6 -7
  62. package/dist/cache/cache-adapters-virtual.d.ts +60 -20
  63. package/dist/cache/cache-adapters-virtual.js +50 -7
  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 -442
  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 -10
  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 +2 -4
  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 +4 -5
  102. package/dist/entries/app-browser-entry.js +1 -3
  103. package/dist/entries/app-rsc-entry.d.ts +10 -3
  104. package/dist/entries/app-rsc-entry.js +502 -51
  105. package/dist/entries/app-rsc-manifest.d.ts +4 -3
  106. package/dist/entries/app-rsc-manifest.js +26 -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 +234 -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 +711 -189
  117. package/dist/init-cloudflare.d.ts +26 -17
  118. package/dist/init-cloudflare.js +710 -102
  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 +19 -6
  191. package/dist/routing/app-router.js +24 -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 +87 -34
  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 +8 -4
  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 +6 -2
  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-client-reference-preloader.d.ts +2 -3
  237. package/dist/server/app-elements-wire-key.d.ts +25 -0
  238. package/dist/server/app-elements-wire-key.js +69 -0
  239. package/dist/server/app-elements-wire.d.ts +34 -53
  240. package/dist/server/app-elements-wire.js +4 -75
  241. package/dist/server/app-elements.d.ts +5 -5
  242. package/dist/server/app-elements.js +1 -1
  243. package/dist/server/app-fallback-renderer.d.ts +4 -4
  244. package/dist/server/app-fallback-renderer.js +6 -6
  245. package/dist/server/app-fetch-tracing.d.ts +15 -0
  246. package/dist/server/app-fetch-tracing.js +38 -0
  247. package/dist/server/app-history-state.d.ts +26 -27
  248. package/dist/server/app-history-state.js +19 -11
  249. package/dist/server/app-hook-warning-suppression.d.ts +2 -3
  250. package/dist/server/app-hydration-cache-publication.d.ts +3 -4
  251. package/dist/server/app-inline-css-client.d.ts +3 -4
  252. package/dist/server/app-interception-context-header.d.ts +2 -3
  253. package/dist/server/app-layout-param-observation.d.ts +7 -8
  254. package/dist/server/app-metadata-tracing.d.ts +12 -0
  255. package/dist/server/app-metadata-tracing.js +17 -0
  256. package/dist/server/app-middleware.d.ts +7 -7
  257. package/dist/server/app-middleware.js +2 -3
  258. package/dist/server/app-mounted-slots-header.d.ts +2 -3
  259. package/dist/server/app-mounted-slots-header.js +2 -2
  260. package/dist/server/app-optimistic-routing.d.ts +10 -11
  261. package/dist/server/app-optimistic-routing.js +3 -2
  262. package/dist/server/app-page-boundary-render.d.ts +6 -6
  263. package/dist/server/app-page-boundary-render.js +10 -4
  264. package/dist/server/app-page-boundary.d.ts +9 -10
  265. package/dist/server/app-page-boundary.js +1 -1
  266. package/dist/server/app-page-cache-finalizer.d.ts +18 -9
  267. package/dist/server/app-page-cache-finalizer.js +51 -16
  268. package/dist/server/app-page-cache-render.d.ts +8 -5
  269. package/dist/server/app-page-cache-render.js +22 -5
  270. package/dist/server/app-page-cache.d.ts +28 -9
  271. package/dist/server/app-page-cache.js +95 -24
  272. package/dist/server/app-page-dispatch.d.ts +34 -12
  273. package/dist/server/app-page-dispatch.js +181 -64
  274. package/dist/server/app-page-element-builder.d.ts +13 -11
  275. package/dist/server/app-page-element-builder.js +104 -61
  276. package/dist/server/app-page-execution.d.ts +14 -14
  277. package/dist/server/app-page-execution.js +11 -7
  278. package/dist/server/app-page-head.d.ts +19 -16
  279. package/dist/server/app-page-head.js +25 -25
  280. package/dist/server/app-page-http-access-fallback-metadata.d.ts +6 -5
  281. package/dist/server/app-page-http-access-fallback-metadata.js +9 -2
  282. package/dist/server/app-page-method.d.ts +5 -11
  283. package/dist/server/app-page-method.js +2 -9
  284. package/dist/server/app-page-params.d.ts +5 -6
  285. package/dist/server/app-page-ppr-runtime.d.ts +2 -2
  286. package/dist/server/app-page-probe.d.ts +5 -6
  287. package/dist/server/app-page-probe.js +5 -4
  288. package/dist/server/app-page-render-identity.d.ts +4 -5
  289. package/dist/server/app-page-render-observation.d.ts +8 -9
  290. package/dist/server/app-page-render-observation.js +1 -1
  291. package/dist/server/app-page-render.d.ts +41 -6
  292. package/dist/server/app-page-render.js +171 -25
  293. package/dist/server/app-page-request.d.ts +10 -9
  294. package/dist/server/app-page-request.js +16 -12
  295. package/dist/server/app-page-response.d.ts +20 -9
  296. package/dist/server/app-page-response.js +30 -12
  297. package/dist/server/app-page-route-wiring.d.ts +15 -15
  298. package/dist/server/app-page-route-wiring.js +31 -24
  299. package/dist/server/app-page-search-params-observation.d.ts +26 -5
  300. package/dist/server/app-page-search-params-observation.js +42 -6
  301. package/dist/server/app-page-segment-plan.d.ts +2 -3
  302. package/dist/server/app-page-segment-state.d.ts +11 -12
  303. package/dist/server/app-page-stream.d.ts +27 -11
  304. package/dist/server/app-page-stream.js +34 -6
  305. package/dist/server/app-page-tracing.d.ts +33 -0
  306. package/dist/server/app-page-tracing.js +49 -0
  307. package/dist/server/app-pages-bridge.d.ts +6 -6
  308. package/dist/server/app-pages-bridge.js +17 -4
  309. package/dist/server/app-post-middleware-context.d.ts +2 -3
  310. package/dist/server/app-ppr-fallback-shell-render.d.ts +3 -4
  311. package/dist/server/app-ppr-fallback-shell-render.js +3 -2
  312. package/dist/server/app-ppr-fallback-shell.d.ts +6 -7
  313. package/dist/server/app-prerender-endpoints.d.ts +5 -5
  314. package/dist/server/app-prerender-endpoints.js +3 -1
  315. package/dist/server/app-prerender-static-params.d.ts +15 -7
  316. package/dist/server/app-prerender-static-params.js +24 -9
  317. package/dist/server/app-render-dependency.d.ts +14 -13
  318. package/dist/server/app-render-dependency.js +5 -1
  319. package/dist/server/app-request-context.d.ts +3 -4
  320. package/dist/server/app-request-stage-context.d.ts +5 -0
  321. package/dist/server/app-request-stage-context.js +11 -0
  322. package/dist/server/app-request-stage-dispatch.d.ts +25 -0
  323. package/dist/server/app-request-stage-dispatch.js +54 -0
  324. package/dist/server/app-request-stage-independent-entry.d.ts +8 -0
  325. package/dist/server/app-request-stage-independent-entry.js +115 -0
  326. package/dist/server/app-response-header-provenance.d.ts +13 -7
  327. package/dist/server/app-response-header-provenance.js +34 -1
  328. package/dist/server/app-response-stage-entry.d.ts +9 -0
  329. package/dist/server/app-response-stage-entry.js +87 -0
  330. package/dist/server/app-route-handler-cache.d.ts +2 -3
  331. package/dist/server/app-route-handler-cache.js +46 -34
  332. package/dist/server/app-route-handler-dispatch.d.ts +3 -3
  333. package/dist/server/app-route-handler-dispatch.js +68 -54
  334. package/dist/server/app-route-handler-execution.d.ts +17 -13
  335. package/dist/server/app-route-handler-execution.js +69 -18
  336. package/dist/server/app-route-handler-middleware-context.d.ts +8 -0
  337. package/dist/server/app-route-handler-middleware-context.js +15 -0
  338. package/dist/server/app-route-handler-policy.d.ts +11 -11
  339. package/dist/server/app-route-handler-response.d.ts +9 -10
  340. package/dist/server/app-route-handler-response.js +2 -0
  341. package/dist/server/app-route-handler-runtime.d.ts +9 -10
  342. package/dist/server/app-route-handler-runtime.js +20 -16
  343. package/dist/server/app-route-module-loader.d.ts +6 -7
  344. package/dist/server/app-route-request-built-ins.d.ts +3 -4
  345. package/dist/server/app-route-tree-prefetch.d.ts +6 -7
  346. package/dist/server/app-route-tree-prefetch.js +2 -1
  347. package/dist/server/app-router-entry.d.ts +2 -0
  348. package/dist/server/app-router-entry.js +28 -8
  349. package/dist/server/app-rsc-cache-busting.d.ts +34 -27
  350. package/dist/server/app-rsc-cache-busting.js +14 -2
  351. package/dist/server/app-rsc-combined-handler.d.ts +9 -0
  352. package/dist/server/app-rsc-combined-handler.js +11 -0
  353. package/dist/server/app-rsc-embedded-chunks.d.ts +6 -7
  354. package/dist/server/app-rsc-error-handler.d.ts +12 -6
  355. package/dist/server/app-rsc-error-handler.js +15 -6
  356. package/dist/server/app-rsc-errors.d.ts +12 -9
  357. package/dist/server/app-rsc-errors.js +15 -13
  358. package/dist/server/app-rsc-handler.d.ts +31 -6
  359. package/dist/server/app-rsc-handler.js +411 -61
  360. package/dist/server/app-rsc-redirect-flight.d.ts +4 -5
  361. package/dist/server/app-rsc-render-mode.d.ts +8 -9
  362. package/dist/server/app-rsc-request-normalization.d.ts +3 -3
  363. package/dist/server/app-rsc-request-normalization.js +2 -1
  364. package/dist/server/app-rsc-response-finalizer.d.ts +8 -5
  365. package/dist/server/app-rsc-response-finalizer.js +6 -6
  366. package/dist/server/app-rsc-response-stage.d.ts +6 -0
  367. package/dist/server/app-rsc-response-stage.js +251 -0
  368. package/dist/server/app-rsc-route-matching.d.ts +3 -4
  369. package/dist/server/app-rsc-route-matching.js +3 -2
  370. package/dist/server/app-rsc-state-fingerprint.d.ts +3 -4
  371. package/dist/server/app-rsc-vary.d.ts +16 -0
  372. package/dist/server/app-rsc-vary.js +31 -0
  373. package/dist/server/app-segment-config.d.ts +119 -7
  374. package/dist/server/app-segment-config.js +242 -2
  375. package/dist/server/app-server-action-execution.d.ts +16 -12
  376. package/dist/server/app-server-action-execution.js +86 -33
  377. package/dist/server/app-ssr-entry.d.ts +14 -4
  378. package/dist/server/app-ssr-entry.js +61 -14
  379. package/dist/server/app-ssr-error-meta.d.ts +3 -4
  380. package/dist/server/app-ssr-error-meta.js +2 -1
  381. package/dist/server/app-ssr-router-instance.d.ts +2 -3
  382. package/dist/server/app-ssr-search-params-gate.d.ts +20 -0
  383. package/dist/server/app-ssr-search-params-gate.js +54 -0
  384. package/dist/server/app-ssr-stream.d.ts +13 -9
  385. package/dist/server/app-ssr-stream.js +33 -7
  386. package/dist/server/app-static-generation.d.ts +4 -5
  387. package/dist/server/app-visited-response-cache.d.ts +11 -12
  388. package/dist/server/app-visited-response-cache.js +2 -2
  389. package/dist/server/app-worker-stages.d.ts +112 -0
  390. package/dist/server/app-worker-stages.js +105 -0
  391. package/dist/server/artifact-compatibility.d.ts +11 -12
  392. package/dist/server/before-interactive-head.d.ts +2 -3
  393. package/dist/server/bfcache-identity.d.ts +7 -8
  394. package/dist/server/cache-control.d.ts +35 -13
  395. package/dist/server/cache-control.js +71 -5
  396. package/dist/server/cache-headers.d.ts +3 -4
  397. package/dist/server/cache-proof.d.ts +75 -70
  398. package/dist/server/cache-proof.js +9 -1
  399. package/dist/server/cacheability-limits.d.ts +4 -5
  400. package/dist/server/cacheability-limits.js +2 -2
  401. package/dist/server/cacheability-manifest.d.ts +42 -16
  402. package/dist/server/cacheability-manifest.js +60 -10
  403. package/dist/server/cacheability-request.d.ts +37 -8
  404. package/dist/server/cacheability-request.js +159 -57
  405. package/dist/server/client-reuse-manifest.d.ts +17 -18
  406. package/dist/server/client-reuse-manifest.js +2 -2
  407. package/dist/server/client-trace-metadata.d.ts +9 -6
  408. package/dist/server/client-trace-metadata.js +27 -15
  409. package/dist/server/cloudflare-workers-tracing.d.ts +1 -0
  410. package/dist/server/cloudflare-workers-tracing.js +8 -0
  411. package/dist/server/config-headers.d.ts +19 -5
  412. package/dist/server/config-headers.js +25 -11
  413. package/dist/server/cookie-utils.d.ts +2 -3
  414. package/dist/server/csp.d.ts +5 -6
  415. package/dist/server/default-global-error-module.d.ts +2 -3
  416. package/dist/server/default-global-not-found-module.d.ts +2 -3
  417. package/dist/server/default-not-found-module.d.ts +2 -3
  418. package/dist/server/defer-until-stream-consumed.d.ts +2 -3
  419. package/dist/server/defer-until-stream-consumed.js +2 -1
  420. package/dist/server/dev-initial-server-error.d.ts +3 -4
  421. package/dist/server/dev-initial-server-error.js +2 -1
  422. package/dist/server/dev-lockfile.d.ts +7 -8
  423. package/dist/server/dev-lockfile.js +4 -1
  424. package/dist/server/dev-module-runner.d.ts +2 -3
  425. package/dist/server/dev-origin-check.d.ts +5 -6
  426. package/dist/server/dev-route-files.d.ts +2 -3
  427. package/dist/server/dev-server.d.ts +4 -5
  428. package/dist/server/dev-server.js +130 -61
  429. package/dist/server/dev-stack-sourcemap.d.ts +7 -7
  430. package/dist/server/dev-stack-sourcemap.js +1 -1
  431. package/dist/server/document-initial-head.d.ts +3 -4
  432. package/dist/server/edge-api-runtime.d.ts +4 -5
  433. package/dist/server/fetch-handler.d.ts +3 -2
  434. package/dist/server/fetch-handler.js +3 -18
  435. package/dist/server/file-based-metadata.d.ts +2 -3
  436. package/dist/server/framework-tracer.d.ts +46 -0
  437. package/dist/server/framework-tracer.js +125 -0
  438. package/dist/server/fully-buffered-response.d.ts +11 -0
  439. package/dist/server/fully-buffered-response.js +19 -0
  440. package/dist/server/headers.d.ts +54 -61
  441. package/dist/server/headers.js +18 -31
  442. package/dist/server/html.d.ts +6 -27
  443. package/dist/server/html.js +16 -1
  444. package/dist/server/http-conditional.d.ts +5 -6
  445. package/dist/server/http-date.d.ts +2 -3
  446. package/dist/server/http-error-responses.d.ts +9 -10
  447. package/dist/server/http-range.d.ts +4 -5
  448. package/dist/server/hybrid-route-priority.d.ts +4 -5
  449. package/dist/server/image-optimization.d.ts +20 -21
  450. package/dist/server/implicit-tags.d.ts +3 -4
  451. package/dist/server/instrumentation-runtime.d.ts +17 -21
  452. package/dist/server/instrumentation-runtime.js +26 -8
  453. package/dist/server/instrumentation.d.ts +26 -30
  454. package/dist/server/instrumentation.js +18 -23
  455. package/dist/server/isr-cache.d.ts +28 -27
  456. package/dist/server/isr-cache.js +18 -70
  457. package/dist/server/isr-decision.d.ts +4 -4
  458. package/dist/server/metadata-route-build-data.d.ts +4 -5
  459. package/dist/server/metadata-route-cache-policy.d.ts +2 -3
  460. package/dist/server/metadata-route-response.d.ts +7 -7
  461. package/dist/server/metadata-route-response.js +68 -2
  462. package/dist/server/metadata-routes.d.ts +18 -19
  463. package/dist/server/middleware-matcher-pattern.d.ts +6 -7
  464. package/dist/server/middleware-matcher.d.ts +6 -7
  465. package/dist/server/middleware-path-to-regexp.d.ts +6 -7
  466. package/dist/server/middleware-path-to-regexp.js +11 -9
  467. package/dist/server/middleware-response-headers.d.ts +3 -4
  468. package/dist/server/middleware-runtime.d.ts +7 -8
  469. package/dist/server/middleware-runtime.js +36 -7
  470. package/dist/server/middleware.d.ts +5 -5
  471. package/dist/server/multi-stage.d.ts +141 -0
  472. package/dist/server/multi-stage.js +8 -0
  473. package/dist/server/navigation-planner.d.ts +26 -26
  474. package/dist/server/navigation-trace.d.ts +11 -12
  475. package/dist/server/next-error-digest.d.ts +4 -5
  476. package/dist/server/normalize-path.d.ts +5 -6
  477. package/dist/server/open-redirect.d.ts +2 -3
  478. package/dist/server/opentelemetry-api.d.ts +59 -0
  479. package/dist/server/opentelemetry-api.js +53 -0
  480. package/dist/server/opentelemetry-tracing.d.ts +5 -0
  481. package/dist/server/opentelemetry-tracing.js +83 -0
  482. package/dist/server/operation-token.d.ts +11 -12
  483. package/dist/server/otel-tracer-extension.d.ts +7 -9
  484. package/dist/server/otel-tracer-extension.js +37 -36
  485. package/dist/server/pages-api-route.d.ts +5 -4
  486. package/dist/server/pages-api-route.js +20 -7
  487. package/dist/server/pages-asset-tags.d.ts +6 -6
  488. package/dist/server/pages-asset-tags.js +37 -2
  489. package/dist/server/pages-body-parser-config.d.ts +4 -5
  490. package/dist/server/pages-body-parser-config.js +4 -4
  491. package/dist/server/pages-client-assets.d.ts +11 -5
  492. package/dist/server/pages-data-route.d.ts +11 -12
  493. package/dist/server/pages-data-route.js +1 -1
  494. package/dist/server/pages-default-404.d.ts +3 -4
  495. package/dist/server/pages-dev-hydration.d.ts +9 -4
  496. package/dist/server/pages-dev-hydration.js +19 -7
  497. package/dist/server/pages-dev-module-url.d.ts +3 -4
  498. package/dist/server/pages-dev-stylesheets.d.ts +5 -6
  499. package/dist/server/pages-document-asset-props.d.ts +6 -7
  500. package/dist/server/pages-document-initial-props.d.ts +5 -5
  501. package/dist/server/pages-document-initial-props.js +4 -2
  502. package/dist/server/pages-execution-tracing.d.ts +40 -0
  503. package/dist/server/pages-execution-tracing.js +80 -0
  504. package/dist/server/pages-get-initial-props.d.ts +9 -10
  505. package/dist/server/pages-i18n.d.ts +8 -8
  506. package/dist/server/pages-media-type.d.ts +4 -5
  507. package/dist/server/pages-node-compat.d.ts +11 -10
  508. package/dist/server/pages-node-compat.js +12 -4
  509. package/dist/server/pages-page-data.d.ts +18 -19
  510. package/dist/server/pages-page-data.js +11 -10
  511. package/dist/server/pages-page-handler.d.ts +7 -6
  512. package/dist/server/pages-page-handler.js +77 -39
  513. package/dist/server/pages-page-method.d.ts +2 -3
  514. package/dist/server/pages-page-response.d.ts +14 -10
  515. package/dist/server/pages-page-response.js +49 -31
  516. package/dist/server/pages-preview.d.ts +10 -11
  517. package/dist/server/pages-readiness.d.ts +2 -3
  518. package/dist/server/pages-request-pipeline.d.ts +14 -12
  519. package/dist/server/pages-request-pipeline.js +60 -30
  520. package/dist/server/pages-request-stage-entry.d.ts +23 -0
  521. package/dist/server/pages-request-stage-entry.js +314 -0
  522. package/dist/server/pages-response-stage-entry.d.ts +11 -0
  523. package/dist/server/pages-response-stage-entry.js +106 -0
  524. package/dist/server/pages-response-stage.d.ts +31 -0
  525. package/dist/server/pages-response-stage.js +49 -0
  526. package/dist/server/pages-revalidate.d.ts +3 -4
  527. package/dist/server/pages-revalidate.js +9 -4
  528. package/dist/server/pages-route-data-kind.d.ts +18 -0
  529. package/dist/server/pages-route-data-kind.js +11 -0
  530. package/dist/server/pages-router-entry.d.ts +1 -25
  531. package/dist/server/pages-router-entry.js +35 -148
  532. package/dist/server/pages-serializable-props.d.ts +3 -4
  533. package/dist/server/pregenerated-concrete-paths.d.ts +9 -7
  534. package/dist/server/pregenerated-concrete-paths.js +12 -6
  535. package/dist/server/prerender-cache-life-header.d.ts +3 -4
  536. package/dist/server/prerender-manifest.d.ts +11 -11
  537. package/dist/server/prerender-manifest.js +6 -3
  538. package/dist/server/prerender-route-params.d.ts +16 -9
  539. package/dist/server/prerender-route-params.js +18 -3
  540. package/dist/server/prerender-work-unit-setup.d.ts +2 -3
  541. package/dist/server/prerender-work-unit-setup.js +5 -5
  542. package/dist/server/prod-server.d.ts +12 -9
  543. package/dist/server/prod-server.js +124 -31
  544. package/dist/server/proxy-trust.d.ts +5 -6
  545. package/dist/server/request-log.d.ts +3 -4
  546. package/dist/server/request-pipeline.d.ts +16 -16
  547. package/dist/server/request-pipeline.js +7 -2
  548. package/dist/server/request-stage.d.ts +5 -0
  549. package/dist/server/request-stage.js +7 -0
  550. package/dist/server/request-tracing.d.ts +22 -0
  551. package/dist/server/request-tracing.js +180 -0
  552. package/dist/server/response-stage-cacheability.d.ts +37 -0
  553. package/dist/server/response-stage-cacheability.js +55 -0
  554. package/dist/server/response-stage-policy.d.ts +23 -0
  555. package/dist/server/response-stage-policy.js +89 -0
  556. package/dist/server/response-stage.d.ts +5 -0
  557. package/dist/server/response-stage.js +7 -0
  558. package/dist/server/response-start-tracing.d.ts +14 -0
  559. package/dist/server/response-start-tracing.js +80 -0
  560. package/dist/server/revalidation-host.d.ts +2 -3
  561. package/dist/server/revalidation-host.js +1 -1
  562. package/dist/server/revalidation-request.d.ts +8 -0
  563. package/dist/server/revalidation-request.js +37 -0
  564. package/dist/server/rsc-completion-metadata.d.ts +6 -7
  565. package/dist/server/rsc-stream-hints.d.ts +18 -7
  566. package/dist/server/rsc-stream-hints.js +70 -35
  567. package/dist/server/seed-cache.d.ts +2 -3
  568. package/dist/server/seed-cache.js +8 -7
  569. package/dist/server/server-action-not-found.d.ts +5 -6
  570. package/dist/server/server-globals.d.ts +2 -3
  571. package/dist/server/skip-cache-proof.d.ts +4 -4
  572. package/dist/server/socket-error-backstop.d.ts +5 -6
  573. package/dist/server/socket-error-backstop.js +1 -1
  574. package/dist/server/static-file-cache.d.ts +5 -6
  575. package/dist/server/static-file-cache.js +9 -7
  576. package/dist/server/static-file-signal.d.ts +9 -6
  577. package/dist/server/static-file-signal.js +51 -2
  578. package/dist/server/static-layout-client-reuse-proof.d.ts +4 -5
  579. package/dist/server/streaming-metadata.d.ts +2 -3
  580. package/dist/server/tracer.d.ts +5 -0
  581. package/dist/server/tracer.js +13 -0
  582. package/dist/server/worker-prerender-discovery.d.ts +5 -6
  583. package/dist/server/worker-revalidation-context.d.ts +2 -3
  584. package/dist/server/worker-revalidation-context.js +5 -5
  585. package/dist/server/worker-stages.d.ts +43 -0
  586. package/dist/server/worker-stages.js +25 -0
  587. package/dist/server/worker-utils.d.ts +5 -6
  588. package/dist/server/worker-utils.js +2 -1
  589. package/dist/server/workers-tracing.d.ts +17 -0
  590. package/dist/server/workers-tracing.js +27 -0
  591. package/dist/shims/amp.d.ts +3 -4
  592. package/dist/shims/app-router-scroll-state.d.ts +9 -10
  593. package/dist/shims/app-router-scroll.d.ts +4 -5
  594. package/dist/shims/app-router-scroll.js +2 -1
  595. package/dist/shims/app.d.ts +5 -6
  596. package/dist/shims/before-interactive-context.d.ts +5 -6
  597. package/dist/shims/cache-callable-runtime.d.ts +44 -4
  598. package/dist/shims/cache-callable-runtime.js +168 -8
  599. package/dist/shims/cache-for-request.d.ts +2 -3
  600. package/dist/shims/cache-handler.d.ts +33 -20
  601. package/dist/shims/cache-handler.js +61 -2
  602. package/dist/shims/cache-request-state.d.ts +28 -29
  603. package/dist/shims/cache-runtime.d.ts +23 -21
  604. package/dist/shims/cache-runtime.js +107 -27
  605. package/dist/shims/cache.d.ts +15 -15
  606. package/dist/shims/cache.js +15 -13
  607. package/dist/shims/cacheability-classification.d.ts +49 -28
  608. package/dist/shims/cacheability-classification.js +27 -12
  609. package/dist/shims/cdn-cache-state.d.ts +13 -0
  610. package/dist/shims/cdn-cache-state.js +23 -0
  611. package/dist/shims/cdn-cache.d.ts +50 -21
  612. package/dist/shims/cdn-cache.js +15 -38
  613. package/dist/shims/client-hook-error.d.ts +3 -4
  614. package/dist/shims/client-locale.d.ts +2 -3
  615. package/dist/shims/client-page-root.d.ts +24 -0
  616. package/dist/shims/client-page-root.js +121 -0
  617. package/dist/shims/compat-router.d.ts +2 -3
  618. package/dist/shims/config.d.ts +3 -4
  619. package/dist/shims/constants.d.ts +73 -74
  620. package/dist/shims/constants.js +1 -1
  621. package/dist/shims/default-not-found.d.ts +2 -3
  622. package/dist/shims/document.d.ts +9 -9
  623. package/dist/shims/dynamic-preload-chunks.d.ts +2 -3
  624. package/dist/shims/dynamic-preload-chunks.js +17 -13
  625. package/dist/shims/dynamic.d.ts +3 -3
  626. package/dist/shims/error-boundary-navigation.d.ts +3 -4
  627. package/dist/shims/error-boundary.d.ts +17 -18
  628. package/dist/shims/error-boundary.js +17 -11
  629. package/dist/shims/error.d.ts +4 -4
  630. package/dist/shims/error.react-server.d.ts +3 -4
  631. package/dist/shims/fetch-cache.d.ts +22 -22
  632. package/dist/shims/fetch-cache.js +42 -17
  633. package/dist/shims/font-google-base.d.ts +9 -9
  634. package/dist/shims/font-google-base.js +2 -1
  635. package/dist/shims/font-local.d.ts +3 -3
  636. package/dist/shims/font-local.js +1 -1
  637. package/dist/shims/font-utils.d.ts +14 -15
  638. package/dist/shims/form.d.ts +2 -2
  639. package/dist/shims/form.js +10 -7
  640. package/dist/shims/hash-scroll.d.ts +5 -6
  641. package/dist/shims/head-state.d.ts +4 -5
  642. package/dist/shims/head.d.ts +16 -16
  643. package/dist/shims/head.js +5 -4
  644. package/dist/shims/headers.d.ts +67 -33
  645. package/dist/shims/headers.js +93 -6
  646. package/dist/shims/i18n-context.d.ts +5 -6
  647. package/dist/shims/i18n-state.d.ts +4 -5
  648. package/dist/shims/image-config.d.ts +5 -6
  649. package/dist/shims/image-config.js +2 -0
  650. package/dist/shims/image.d.ts +5 -5
  651. package/dist/shims/image.js +12 -8
  652. package/dist/shims/internal/als-registry.d.ts +4 -5
  653. package/dist/shims/internal/api-utils.d.ts +3 -4
  654. package/dist/shims/internal/app-page-props-cache-key.d.ts +32 -4
  655. package/dist/shims/internal/app-page-props-cache-key.js +53 -1
  656. package/dist/shims/internal/app-prefetch-fetch-queue.d.ts +5 -6
  657. package/dist/shims/internal/app-prefetch-rsc-request.d.ts +5 -17
  658. package/dist/shims/internal/app-prefetch-rsc-request.js +5 -14
  659. package/dist/shims/internal/app-route-detection.d.ts +2 -2
  660. package/dist/shims/internal/app-route-prefetch-policy.d.ts +5 -8
  661. package/dist/shims/internal/app-route-prefetch-policy.js +0 -1
  662. package/dist/shims/internal/app-router-context.d.ts +9 -10
  663. package/dist/shims/internal/cookie-serialize.d.ts +4 -5
  664. package/dist/shims/internal/format-url-object.d.ts +7 -0
  665. package/dist/shims/internal/format-url-object.js +53 -0
  666. package/dist/shims/internal/hybrid-client-route-owner-direct.d.ts +6 -7
  667. package/dist/shims/internal/hybrid-client-route-owner.d.ts +3 -3
  668. package/dist/shims/internal/hybrid-client-route-owner.js +3 -2
  669. package/dist/shims/internal/interpolate-as.d.ts +5 -6
  670. package/dist/shims/internal/interpolate-as.js +4 -2
  671. package/dist/shims/internal/link-status-registry.d.ts +5 -6
  672. package/dist/shims/internal/make-hanging-promise.d.ts +3 -4
  673. package/dist/shims/internal/navigation-untracked.d.ts +2 -3
  674. package/dist/shims/internal/normalize-router-href.d.ts +15 -0
  675. package/dist/shims/internal/normalize-router-href.js +41 -0
  676. package/dist/shims/internal/pages-data-fetch-dedup.d.ts +8 -9
  677. package/dist/shims/internal/pages-data-target.d.ts +8 -6
  678. package/dist/shims/internal/pages-data-target.js +32 -36
  679. package/dist/shims/internal/pages-data-url.d.ts +4 -5
  680. package/dist/shims/internal/pages-data-url.js +2 -1
  681. package/dist/shims/internal/pages-router-accessor.d.ts +3 -4
  682. package/dist/shims/internal/pages-router-components.d.ts +3 -4
  683. package/dist/shims/internal/route-pattern-for-warning.d.ts +5 -6
  684. package/dist/shims/internal/route-pattern-for-warning.js +3 -3
  685. package/dist/shims/internal/router-context.d.ts +2 -3
  686. package/dist/shims/internal/thenable-well-known-properties.d.ts +10 -0
  687. package/dist/shims/internal/thenable-well-known-properties.js +33 -0
  688. package/dist/shims/internal/utils.d.ts +7 -8
  689. package/dist/shims/internal/work-unit-async-storage.d.ts +10 -11
  690. package/dist/shims/layout-segment-context.d.ts +3 -4
  691. package/dist/shims/link-prefetch.d.ts +9 -10
  692. package/dist/shims/link.d.ts +4 -4
  693. package/dist/shims/link.js +56 -116
  694. package/dist/shims/metadata.d.ts +15 -16
  695. package/dist/shims/metadata.js +40 -36
  696. package/dist/shims/navigation-context-accessors.d.ts +9 -0
  697. package/dist/shims/navigation-context-accessors.js +19 -0
  698. package/dist/shims/navigation-context-state.d.ts +27 -18
  699. package/dist/shims/navigation-errors.d.ts +18 -19
  700. package/dist/shims/navigation-state.d.ts +6 -7
  701. package/dist/shims/navigation.d.ts +80 -68
  702. package/dist/shims/navigation.js +24 -16
  703. package/dist/shims/navigation.react-server.d.ts +9 -9
  704. package/dist/shims/offline.d.ts +2 -3
  705. package/dist/shims/og.d.ts +2 -2
  706. package/dist/shims/pages-router-runtime.d.ts +4 -5
  707. package/dist/shims/ppr-fallback-shell.d.ts +13 -14
  708. package/dist/shims/readonly-url-search-params.d.ts +2 -3
  709. package/dist/shims/request-context.d.ts +5 -6
  710. package/dist/shims/root-params.d.ts +14 -15
  711. package/dist/shims/router-state.d.ts +5 -6
  712. package/dist/shims/router-state.js +1 -1
  713. package/dist/shims/router.d.ts +22 -21
  714. package/dist/shims/router.js +339 -164
  715. package/dist/shims/script-nonce-context.d.ts +8 -6
  716. package/dist/shims/script-nonce-context.js +15 -6
  717. package/dist/shims/script.d.ts +4 -4
  718. package/dist/shims/script.js +9 -7
  719. package/dist/shims/search-params-gate.d.ts +35 -0
  720. package/dist/shims/search-params-gate.js +32 -0
  721. package/dist/shims/server.d.ts +19 -51
  722. package/dist/shims/server.js +14 -28
  723. package/dist/shims/slot.d.ts +33 -15
  724. package/dist/shims/slot.js +41 -9
  725. package/dist/shims/streamed-icons.d.ts +3 -4
  726. package/dist/shims/thenable-params.d.ts +5 -7
  727. package/dist/shims/thenable-params.js +3 -24
  728. package/dist/shims/unified-request-context.d.ts +34 -31
  729. package/dist/shims/unified-request-context.js +34 -24
  730. package/dist/shims/unrecognized-action-error.d.ts +3 -4
  731. package/dist/shims/url-safety.d.ts +5 -6
  732. package/dist/shims/url-utils.d.ts +12 -13
  733. package/dist/shims/use-merged-ref.d.ts +2 -3
  734. package/dist/shims/user-agent.d.ts +31 -0
  735. package/dist/shims/user-agent.js +16 -0
  736. package/dist/shims/web-vitals.d.ts +2 -2
  737. package/dist/typegen.d.ts +3 -4
  738. package/dist/utils/asset-prefix.d.ts +7 -8
  739. package/dist/utils/base-path.d.ts +5 -6
  740. package/dist/utils/built-asset-url.d.ts +2 -3
  741. package/dist/utils/built-asset-url.js +1 -1
  742. package/dist/utils/cache-control-metadata.d.ts +4 -5
  743. package/dist/utils/client-build-manifest.d.ts +6 -7
  744. package/dist/utils/client-build-manifest.js +2 -1
  745. package/dist/utils/client-entry-manifest.d.ts +6 -7
  746. package/dist/utils/client-runtime-metadata.d.ts +8 -3
  747. package/dist/utils/client-runtime-metadata.js +18 -1
  748. package/dist/utils/commonjs-loader.d.ts +4 -5
  749. package/dist/utils/compare.d.ts +2 -3
  750. package/dist/utils/deployment-id.d.ts +6 -7
  751. package/dist/utils/dev-error-recovery-event.d.ts +2 -3
  752. package/dist/utils/dev-stack-sourcemap-endpoint.d.ts +2 -3
  753. package/dist/utils/domain-locale.d.ts +7 -8
  754. package/dist/utils/encode-cache-tag.d.ts +3 -4
  755. package/dist/utils/error-cause.d.ts +2 -3
  756. package/dist/utils/external-url.d.ts +2 -3
  757. package/dist/utils/has-trailing-comma.d.ts +3 -4
  758. package/dist/utils/hash.d.ts +3 -4
  759. package/dist/utils/html-limited-bots.d.ts +3 -4
  760. package/dist/utils/lazy-chunks.d.ts +8 -9
  761. package/dist/utils/lazy-chunks.js +4 -4
  762. package/dist/utils/manifest-paths.d.ts +5 -6
  763. package/dist/utils/mdx-scan.d.ts +11 -4
  764. package/dist/utils/mdx-scan.js +27 -1
  765. package/dist/utils/middleware-request-headers.d.ts +7 -6
  766. package/dist/utils/middleware-request-headers.js +6 -1
  767. package/dist/utils/navigation-signal.d.ts +3 -3
  768. package/dist/utils/navigation-signal.js +16 -1
  769. package/dist/utils/number.d.ts +2 -3
  770. package/dist/utils/package-name.d.ts +3 -4
  771. package/dist/utils/parse-cookie.d.ts +4 -5
  772. package/dist/utils/path.d.ts +8 -9
  773. package/dist/utils/plugin-options.d.ts +2 -3
  774. package/dist/utils/precompressed-variant.d.ts +3 -4
  775. package/dist/utils/prerender-output-paths.d.ts +4 -5
  776. package/dist/utils/project.d.ts +19 -30
  777. package/dist/utils/project.js +20 -29
  778. package/dist/utils/promise.d.ts +2 -3
  779. package/dist/utils/protocol-headers.d.ts +14 -15
  780. package/dist/utils/public-file-path.d.ts +2 -3
  781. package/dist/utils/public-routes.d.ts +2 -3
  782. package/dist/utils/query.d.ts +14 -9
  783. package/dist/utils/query.js +22 -1
  784. package/dist/utils/react-compiler-support.d.ts +6 -7
  785. package/dist/utils/react-version.d.ts +4 -3
  786. package/dist/utils/react-version.js +19 -1
  787. package/dist/utils/record.d.ts +2 -3
  788. package/dist/utils/redirect-digest.d.ts +3 -4
  789. package/dist/utils/regex-safety.d.ts +4 -5
  790. package/dist/utils/regex.d.ts +2 -3
  791. package/dist/utils/safe-json-file.d.ts +2 -3
  792. package/dist/utils/sorted-array.d.ts +2 -3
  793. package/dist/utils/text-stream.d.ts +3 -4
  794. package/dist/utils/vinext-root.d.ts +2 -3
  795. package/dist/utils/virtual-module.d.ts +3 -4
  796. package/dist/utils/vite-cli-invocation.d.ts +21 -0
  797. package/dist/utils/vite-cli-invocation.js +144 -0
  798. package/dist/utils/vite-version.d.ts +5 -6
  799. package/next-package.json +4 -0
  800. package/package.json +47 -6
@@ -1,22 +1,31 @@
1
+ import { preserveFullyBufferedBodyMetadata } from "./fully-buffered-response.js";
2
+ import { bindRequestContext } from "../shims/unified-request-context.js";
1
3
  import { VINEXT_RSC_COMPLETION_METADATA_HEADER } from "./headers.js";
2
- import { resolveClientStaleTimeSeconds } from "../utils/cache-control-metadata.js";
3
- import { NEVER_CACHE_CONTROL, NO_STORE_CACHE_CONTROL, applyCdnResponseHeaders } from "./cache-control.js";
4
+ import { internalServerErrorResponse } from "./http-error-responses.js";
5
+ import { isRouteCacheabilityEvaluation, recordRouteCacheabilityClientTraceMetadataMarker } from "../shims/cacheability-classification.js";
6
+ import { NEVER_CACHE_CONTROL, NO_STORE_CACHE_CONTROL, applyCdnResponseHeaders, isCdnResponsePolicyHeader } from "./cache-control.js";
4
7
  import { createArtifactCompatibilityEnvelope, createArtifactCompatibilityGraphVersion } from "./artifact-compatibility.js";
5
8
  import { AppElementsWire, isAppElementsRecord } from "./app-elements-wire.js";
6
9
  import "./app-elements.js";
7
- import { peekDynamicUsage } from "../shims/headers.js";
10
+ import { resolveClientStaleTimeSeconds } from "../utils/cache-control-metadata.js";
11
+ import { isRenderDynamicLatched, peekDynamicUsage } from "../shims/headers.js";
8
12
  import { runWithFetchDedupe } from "../shims/fetch-cache.js";
9
- import { buildAppPageHtmlResponse, buildAppPageRscResponse, resolveAppPageHtmlResponsePolicy, resolveAppPageRscResponsePolicy } from "./app-page-response.js";
13
+ import { deferUntilStreamConsumed } from "./defer-until-stream-consumed.js";
14
+ import { isBailoutToCSRError } from "../shims/navigation-errors.js";
15
+ import { mergeMiddlewareResponseHeaders } from "./middleware-response-headers.js";
16
+ import { copyLinkHeaderProvenance } from "./app-response-header-provenance.js";
17
+ import { applyEdgeRuntimeHeader, buildAppPageHtmlResponse, buildAppPageRscResponse, resolveAppPageHtmlResponsePolicy, resolveAppPageRscResponsePolicy, resolveUncacheableCacheControl } from "./app-page-response.js";
10
18
  import { buildAppPageFontLinkHeader, readAppPageBinaryStream, resolveAppPageSpecialError, teeAppPageRscStreamForCapture } from "./app-page-execution.js";
11
19
  import { probeAppPageBeforeRender } from "./app-page-probe.js";
20
+ import { hasDigest } from "./app-rsc-errors.js";
21
+ import { recordAppPageRenderError, traceAppPageRender } from "./app-page-tracing.js";
22
+ import { traceResponseStartWithCompletion } from "./response-start-tracing.js";
12
23
  import { DEFAULT_CACHE_VARIANT_BUDGET, buildCacheVariantWithRouteBudget, buildRenderObservation, buildRenderRequestApiObservations, createStaticLayoutArtifactReuseDecision } from "./cache-proof.js";
13
24
  import { createAppPageHtmlOutputScope, createAppPageRenderObservation, createAppPageRscOutputScope } from "./app-page-render-observation.js";
14
- import { deferUntilStreamConsumed } from "./defer-until-stream-consumed.js";
15
25
  import { finalizeAppPageCacheabilityEvaluationResponse, finalizeAppPageHtmlCacheResponse, finalizeAppPageRscCacheResponse } from "./app-page-cache-finalizer.js";
16
26
  import { createStaticLayoutClientReuseArtifactCompatibility, createStaticLayoutClientReusePayloadHash, createStaticLayoutClientReuseRouteId } from "./static-layout-client-reuse-proof.js";
17
27
  import { appendRscCompletionMetadata } from "./rsc-completion-metadata.js";
18
- import { hasDigest } from "./app-rsc-errors.js";
19
- import { buildAppPageLinkHeader, createAppPageFontData, createAppPageRscErrorTracker, renderAppPageHtmlStream, renderAppPageHtmlStreamWithRecovery } from "./app-page-stream.js";
28
+ import { buildAppPageLinkHeader, createAppPageFontData, createAppPageRscErrorTracker, createAppPageSsrErrorHandler, renderAppPageHtmlStream, renderAppPageHtmlStreamWithRecovery } from "./app-page-stream.js";
20
29
  import { getStaticLayoutObservationSkipRejection } from "./app-layout-param-observation.js";
21
30
  import { createClientReuseSkipTransportPlan, crossCheckClientReuseManifestEntryWithCache } from "./skip-cache-proof.js";
22
31
  //#region src/server/app-page-render.ts
@@ -53,7 +62,34 @@ function applyRequestCacheLife(options) {
53
62
  revalidateSeconds
54
63
  };
55
64
  }
65
+ /**
66
+ * A render that is known dynamic is never cacheable: a route Next.js can't make
67
+ * static, draft mode, `force-dynamic`, `revalidate = 0`, or a dynamic API read
68
+ * before the response left the render. Responses that leave the render before
69
+ * its response policy, such as error boundaries and special errors, get the
70
+ * same header as the normal render.
71
+ */
72
+ function applyIneligibleRouteCachePolicy(response, options) {
73
+ const cacheControl = resolveEarlyResponseCacheControl(options);
74
+ if (!cacheControl) return response;
75
+ const middlewarePolicy = [...options.middlewareContext.headers ?? []].filter(([name, value]) => isCdnResponsePolicyHeader(name) && response.headers.get(name) === value);
76
+ if (middlewarePolicy.some(([name]) => name === "cache-control")) return response;
77
+ const stamped = preserveFullyBufferedBodyMetadata(response, new Response(response.body, response));
78
+ copyLinkHeaderProvenance(response.headers, stamped.headers);
79
+ applyCdnResponseHeaders(stamped.headers, { cacheControl });
80
+ for (const [name, value] of middlewarePolicy) stamped.headers.set(name, value);
81
+ return stamped;
82
+ }
83
+ /** The known-dynamic branches of the RSC and HTML response policies, in their order. */
84
+ function resolveEarlyResponseCacheControl(options) {
85
+ const uncacheable = resolveUncacheableCacheControl(options.isProduction);
86
+ if (!options.isStaticEligible || options.isDraftMode || options.isForceDynamic) return uncacheable;
87
+ if (!options.isRscRequest && (options.scriptNonce || options.isProgressiveActionRender)) return NO_STORE_CACHE_CONTROL;
88
+ const ignoresDynamicUsage = (options.isForceStatic || options.isDynamicError) && (options.revalidateSeconds === null || options.revalidateSeconds === Infinity);
89
+ return options.revalidateSeconds === 0 || !ignoresDynamicUsage && (options.peekDynamicUsage?.() ?? peekDynamicUsage()) ? uncacheable : null;
90
+ }
56
91
  function resolveAppPageCacheWriteRevalidateSeconds(options) {
92
+ if (!options.isStaticEligible) return null;
57
93
  if (options.revalidateSeconds === null && (options.isForceStatic || options.isDynamicError)) return Infinity;
58
94
  return options.revalidateSeconds;
59
95
  }
@@ -266,10 +302,62 @@ function wrapRscResponseForDevErrorReporting(response, consumeInvalidDynamicUsag
266
302
  });
267
303
  }
268
304
  async function renderAppPageLifecycle(options) {
305
+ if (options.isRscRequest) {
306
+ const prepared = await prepareAppPageElement(options);
307
+ return prepared instanceof Response ? applyIneligibleRouteCachePolicy(prepared, options) : renderAppPageLifecycleImpl(prepared);
308
+ }
309
+ const operation = options.traceOperation ?? (options.isPrerender ? "prerender" : "render");
310
+ let resolveResponse;
311
+ let rejectResponse;
312
+ let renderCompletion = Promise.resolve();
313
+ const responsePromise = new Promise((resolve, reject) => {
314
+ resolveResponse = resolve;
315
+ rejectResponse = reject;
316
+ });
317
+ traceAppPageRender(options.routePattern, operation, async (renderSpan) => {
318
+ try {
319
+ const prepared = await prepareAppPageElement(options);
320
+ if (prepared instanceof Response) {
321
+ const traced = traceResponseStartWithCompletion(applyIneligibleRouteCachePolicy(prepared, options));
322
+ resolveResponse(traced.response);
323
+ await traced.started;
324
+ return;
325
+ }
326
+ const traced = traceResponseStartWithCompletion(await renderAppPageLifecycleImpl({
327
+ ...prepared,
328
+ onRenderComplete(completion) {
329
+ renderCompletion = completion;
330
+ completion.catch(() => {});
331
+ options.onRenderComplete?.(completion);
332
+ }
333
+ }, renderSpan));
334
+ resolveResponse(traced.response);
335
+ await Promise.all([renderCompletion, traced.started]);
336
+ } catch (error) {
337
+ rejectResponse(error);
338
+ throw error;
339
+ }
340
+ }).catch(() => {});
341
+ return responsePromise;
342
+ }
343
+ async function prepareAppPageElement(options) {
344
+ if (!options.prepareElement) return options;
345
+ const prepared = await options.prepareElement();
346
+ return prepared.response ?? {
347
+ ...options,
348
+ element: prepared.element
349
+ };
350
+ }
351
+ async function renderAppPageLifecycleImpl(options, renderSpan) {
269
352
  let dynamicUsageObserved = false;
270
353
  let dynamicUsageFinalized = false;
354
+ const isCacheCandidateHtmlRender = options.isCacheCandidate === true && options.isPrerender !== true && !options.isRscRequest;
355
+ const readsRenderDynamicLatch = isCacheCandidateHtmlRender || !options.isRscRequest && options.pprFallbackShellSignal === void 0 && (options.isPrerender === true || isRouteCacheabilityEvaluation());
356
+ const readDynamicUsage = bindRequestContext(() => options.consumeDynamicUsage() || readsRenderDynamicLatch && isRenderDynamicLatched());
357
+ const consumeRenderObservationState = options.consumeRenderObservationState && bindRequestContext(options.consumeRenderObservationState);
358
+ const peekRenderDynamicUsage = () => (options.peekDynamicUsage?.() ?? peekDynamicUsage()) || readsRenderDynamicLatch && isRenderDynamicLatched();
271
359
  const consumeRenderDynamicUsage = () => {
272
- if (!dynamicUsageObserved) dynamicUsageObserved = options.consumeDynamicUsage();
360
+ if (!dynamicUsageObserved) dynamicUsageObserved = readDynamicUsage();
273
361
  return dynamicUsageObserved;
274
362
  };
275
363
  const finalizeRenderDynamicUsage = () => {
@@ -304,7 +392,7 @@ async function renderAppPageLifecycle(options) {
304
392
  },
305
393
  classification: options.classification
306
394
  });
307
- if (preRenderResult.response) return preRenderResult.response;
395
+ if (preRenderResult.response) return applyIneligibleRouteCachePolicy(preRenderResult.response, options);
308
396
  const layoutFlags = preRenderResult.layoutFlags;
309
397
  const artifactCompatibility = createAppPageArtifactCompatibility(options.element, options.routePattern);
310
398
  const rootBoundaryId = artifactCompatibility?.rootBoundaryId ?? null;
@@ -341,7 +429,18 @@ async function renderAppPageLifecycle(options) {
341
429
  skipDisposition: options.isRscRequest ? skipDisposition : void 0
342
430
  });
343
431
  const compileEnd = options.isProduction ? void 0 : performance.now();
344
- const rscErrorTracker = createAppPageRscErrorTracker(options.createRscOnErrorHandler(options.cleanPathname, options.routePattern));
432
+ const errorContextOverrides = {
433
+ ...options.isProgressiveActionRender ? {
434
+ renderSource: "react-server-components-payload",
435
+ routeType: "action"
436
+ } : {},
437
+ ...options.isPrerender ? { revalidateReason: "stale" } : {}
438
+ };
439
+ const baseOnError = options.createRscOnErrorHandler(options.cleanPathname, options.routePattern, errorContextOverrides);
440
+ const rscErrorTracker = createAppPageRscErrorTracker((error, requestInfo, errorContext) => {
441
+ if (renderSpan) recordAppPageRenderError(renderSpan, error);
442
+ return baseOnError(error, requestInfo, errorContext);
443
+ });
345
444
  let rscStream = await runWithFetchDedupe(async () => {
346
445
  if (options.pprFallbackShellSignal && options.prerenderToReadableStream) {
347
446
  const reactSignal = options.pprFallbackShellReactSignal ?? options.pprFallbackShellSignal;
@@ -360,8 +459,8 @@ async function renderAppPageLifecycle(options) {
360
459
  let expireSeconds = options.expireSeconds;
361
460
  const shouldWaitForAllReady = options.isPrerender === true && options.isSpeculativePrerender !== true;
362
461
  const shouldReadRequestCacheLifeForPrerender = options.isPrerender === true;
363
- const mayResolveCacheLifeAfterHeaders = options.isProgressiveActionRender !== true && (revalidateSeconds === null || revalidateSeconds > 0 && revalidateSeconds !== Infinity) && !options.isDraftMode && !options.isForceDynamic && !shouldBypassRscCache;
364
- const shouldCaptureRscForCacheMetadata = (options.isProduction || options.isPrerender === true) && mayResolveCacheLifeAfterHeaders;
462
+ const mayResolveCacheLifeAfterHeaders = options.isProgressiveActionRender !== true && (revalidateSeconds === null || revalidateSeconds > 0) && !options.isDraftMode && !options.isForceDynamic && !shouldBypassRscCache;
463
+ const shouldCaptureRscForCacheMetadata = (options.isProduction || options.isPrerender === true) && mayResolveCacheLifeAfterHeaders && options.isStaticEligible;
365
464
  const createBufferedRscStream = (close) => new ReadableStream({ start(controller) {
366
465
  if (pprFallbackShellRsc) controller.enqueue(pprFallbackShellRsc);
367
466
  if (close) controller.close();
@@ -392,6 +491,7 @@ async function renderAppPageLifecycle(options) {
392
491
  isForceDynamic: options.isForceDynamic,
393
492
  isForceStatic: options.isForceStatic,
394
493
  isProduction: options.isProduction,
494
+ isStaticEligible: options.isStaticEligible,
395
495
  expireSeconds,
396
496
  revalidateSeconds
397
497
  });
@@ -431,12 +531,13 @@ async function renderAppPageLifecycle(options) {
431
531
  statusText: rscResponse.statusText,
432
532
  headers: completionHeaders
433
533
  }) : rscResponse;
434
- return finalizeAppPageRscCacheResponse(!options.isProduction && completionResponse.body && options.consumeInvalidDynamicUsageError ? wrapRscResponseForDevErrorReporting(completionResponse, options.consumeInvalidDynamicUsageError) : completionResponse, {
534
+ const devRscResponse = !options.isProduction && completionResponse.body && options.consumeInvalidDynamicUsageError ? wrapRscResponseForDevErrorReporting(completionResponse, options.consumeInvalidDynamicUsageError) : completionResponse;
535
+ return finalizeAppPageRscCacheResponse(devRscResponse, {
435
536
  capturedRscDataPromise: options.isProduction && shouldCaptureRscForCacheMetadata ? capturedRscDataRef.value : null,
436
537
  bypassInterceptionContextCache: options.bypassInterceptionContextCache,
437
538
  cleanPathname: options.cleanPathname,
438
539
  consumeDynamicUsage: finalizeRenderDynamicUsage,
439
- consumeRenderObservationState: options.consumeRenderObservationState,
540
+ consumeRenderObservationState,
440
541
  createRscRenderObservation(input) {
441
542
  return createAppPageRenderObservation({
442
543
  boundaryOutcome: { kind: "success" },
@@ -466,9 +567,11 @@ async function renderAppPageLifecycle(options) {
466
567
  renderMode: options.renderMode,
467
568
  preserveClientResponseHeaders: rscResponsePolicy.cacheState !== "MISS",
468
569
  expireSeconds,
570
+ isStaticEligible: options.isStaticEligible,
469
571
  revalidateSeconds: resolveAppPageCacheWriteRevalidateSeconds({
470
572
  isDynamicError: options.isDynamicError,
471
573
  isForceStatic: options.isForceStatic,
574
+ isStaticEligible: options.isStaticEligible,
472
575
  revalidateSeconds
473
576
  }),
474
577
  waitUntil(promise) {
@@ -482,6 +585,8 @@ async function renderAppPageLifecycle(options) {
482
585
  getStyles: options.getFontStyles
483
586
  });
484
587
  const fontLinkHeader = buildAppPageFontLinkHeader(fontData.preloads);
588
+ const clientTraceMetadataMarker = options.isProduction && options.isPrerender !== true && options.clientTraceMetadata && options.clientTraceMetadata.length > 0 ? crypto.randomUUID() : void 0;
589
+ if (clientTraceMetadataMarker) recordRouteCacheabilityClientTraceMetadataMarker(clientTraceMetadataMarker);
485
590
  let requestCacheLifeForPrerender = null;
486
591
  let dynamicUsedDuringHtmlRender = false;
487
592
  let renderEnd;
@@ -490,11 +595,30 @@ async function renderAppPageLifecycle(options) {
490
595
  if (!options.isProduction) renderEnd = performance.now();
491
596
  },
492
597
  renderErrorBoundaryResponse(error) {
598
+ if (isCacheCandidateHtmlRender && isBailoutToCSRError(error)) {
599
+ console.error(`${error.reason} should be wrapped in a suspense boundary at page "${options.routePattern}". Read more: https://nextjs.org/docs/messages/missing-suspense-with-csr-bailout`);
600
+ options.clearRequestContext();
601
+ const headers = new Headers();
602
+ mergeMiddlewareResponseHeaders(headers, options.middlewareContext.headers);
603
+ headers.set("Cache-Control", NEVER_CACHE_CONTROL);
604
+ applyEdgeRuntimeHeader(headers, options.isEdgeRuntime);
605
+ const response = internalServerErrorResponse(void 0, { headers });
606
+ applyCdnResponseHeaders(response.headers, { cacheControl: NEVER_CACHE_CONTROL });
607
+ return Promise.resolve(response);
608
+ }
493
609
  const capturedRscError = rscErrorTracker.getCapturedError();
494
610
  return options.renderErrorBoundaryResponse(capturedRscError ?? error, capturedRscError === null ? "ssr" : "rsc");
495
611
  },
496
612
  async renderHtmlStream() {
497
613
  const ssrHandler = await options.loadSsrHandler();
614
+ const baseOnSsrError = options.createRscOnErrorHandler(options.cleanPathname, options.routePattern, {
615
+ ...errorContextOverrides,
616
+ renderSource: "server-rendering"
617
+ });
618
+ const onSsrError = (error, requestInfo, errorContext) => {
619
+ if (renderSpan) recordAppPageRenderError(renderSpan, error);
620
+ return baseOnSsrError(error, requestInfo, errorContext);
621
+ };
498
622
  return renderAppPageHtmlStream({
499
623
  capturedRscDataRef,
500
624
  getInitialNavigationCacheMetadata: () => {
@@ -505,7 +629,8 @@ async function renderAppPageLifecycle(options) {
505
629
  const observation = options.peekRenderObservationState?.();
506
630
  kind = observation && (observation.dynamicFetches.length > 0 || observation.requestApis.length > 0) ? "dynamic" : "static";
507
631
  }
508
- const staleTimeSeconds = resolveClientStaleTimeSeconds(options.isPrerender === true ? requestCacheLifeForPrerender ?? options.peekRequestCacheLife?.() : options.peekRequestCacheLife?.());
632
+ const requestCacheLife = options.isPrerender === true ? requestCacheLifeForPrerender ?? options.peekRequestCacheLife?.() : options.peekRequestCacheLife?.();
633
+ const staleTimeSeconds = resolveClientStaleTimeSeconds(requestCacheLife);
509
634
  return {
510
635
  kind,
511
636
  ...kind === "dynamic" && dynamicStaleTimeSeconds !== void 0 && options.isPrerender !== true ? { dynamicStaleTimeSeconds } : {},
@@ -517,6 +642,7 @@ async function renderAppPageLifecycle(options) {
517
642
  navigationContext: options.getNavigationContext(),
518
643
  basePath: options.basePath,
519
644
  clientTraceMetadata: options.clientTraceMetadata,
645
+ clientTraceMetadataMarker,
520
646
  reactMaxHeadersLength: options.reactMaxHeadersLength,
521
647
  rootParams: options.rootParams,
522
648
  pprFallbackShellSignal: options.pprFallbackShellSignal,
@@ -528,7 +654,9 @@ async function renderAppPageLifecycle(options) {
528
654
  fallbackToErrorDocumentOnShellError: options.isPrerender === true && options.isSpeculativePrerender === true ? false : void 0,
529
655
  waitForAllReady: shouldWaitForAllReady,
530
656
  isStaticGeneration: options.isPrerender === true,
531
- isForceStatic: options.isForceStatic
657
+ isForceStatic: options.isForceStatic,
658
+ isCacheCandidate: isCacheCandidateHtmlRender,
659
+ onSsrError: createAppPageSsrErrorHandler(onSsrError, rscErrorTracker.isCapturedError)
532
660
  });
533
661
  },
534
662
  renderSpecialErrorResponse(specialError) {
@@ -536,7 +664,8 @@ async function renderAppPageLifecycle(options) {
536
664
  },
537
665
  resolveSpecialError: resolveAppPageSpecialError
538
666
  });
539
- if (htmlRender.response) return htmlRender.response;
667
+ options.onRenderComplete?.(htmlRender.renderComplete);
668
+ if (htmlRender.response) return applyIneligibleRouteCachePolicy(htmlRender.response, options);
540
669
  let htmlStream = htmlRender.htmlStream;
541
670
  if (!htmlStream) throw new Error("[vinext] Expected an HTML stream when no fallback response was returned");
542
671
  const linkHeader = buildAppPageLinkHeader(htmlRender.linkHeader, fontLinkHeader, options.reactMaxHeadersLength);
@@ -547,14 +676,14 @@ async function renderAppPageLifecycle(options) {
547
676
  const specialError = resolveAppPageSpecialError(captured);
548
677
  if (specialError) {
549
678
  htmlStream.cancel().catch(() => {});
550
- return options.renderPageSpecialError(specialError);
679
+ return applyIneligibleRouteCachePolicy(await options.renderPageSpecialError(specialError), options);
551
680
  }
552
681
  }
553
682
  }
554
683
  let dynamicUsedDuringRender = consumeRenderDynamicUsage();
555
684
  dynamicUsedDuringHtmlRender = dynamicUsedDuringRender;
556
685
  const stopSpeculativeMetadataWaitOnDynamicUsage = options.isSpeculativePrerender === true && shouldReadRequestCacheLifeForPrerender ? () => {
557
- if (dynamicUsedDuringRender || (options.peekDynamicUsage?.() ?? peekDynamicUsage())) {
686
+ if (dynamicUsedDuringRender || peekRenderDynamicUsage()) {
558
687
  dynamicUsedDuringRender = true;
559
688
  dynamicUsedDuringHtmlRender = true;
560
689
  return true;
@@ -562,6 +691,7 @@ async function renderAppPageLifecycle(options) {
562
691
  return false;
563
692
  } : void 0;
564
693
  if (shouldWaitForAllReady || shouldReadRequestCacheLifeForPrerender) await settleCapturedRscRenderForCacheMetadata(htmlRender.capturedRscData, stopSpeculativeMetadataWaitOnDynamicUsage);
694
+ if (stopSpeculativeMetadataWaitOnDynamicUsage) await waitUnlessDynamic(htmlRender.renderComplete, stopSpeculativeMetadataWaitOnDynamicUsage);
565
695
  if (shouldReadRequestCacheLifeForPrerender) {
566
696
  requestCacheLifeForPrerender = readRequestCacheLifeForPrerender(options);
567
697
  ({expireSeconds, revalidateSeconds} = applyRequestCacheLife({
@@ -588,6 +718,7 @@ async function renderAppPageLifecycle(options) {
588
718
  isForceDynamic: options.isForceDynamic,
589
719
  isForceStatic: options.isForceStatic,
590
720
  isProduction: options.isProduction,
721
+ isStaticEligible: options.isStaticEligible,
591
722
  expireSeconds,
592
723
  revalidateSeconds
593
724
  });
@@ -629,13 +760,15 @@ async function renderAppPageLifecycle(options) {
629
760
  });
630
761
  if (options.isPrerender === true) return isrResponse;
631
762
  return finalizeAppPageHtmlCacheResponse(isrResponse, {
763
+ bypassInterceptionContextCache: options.bypassInterceptionContextCache,
632
764
  capturedDynamicUsageBeforeContextCleanup() {
633
765
  return dynamicUsedBeforeContextCleanup;
634
766
  },
635
767
  capturedRscDataPromise: capturedRscDataRef.value,
636
768
  cleanPathname: options.cleanPathname,
769
+ clientTraceMetadataMarker,
637
770
  consumeDynamicUsage: consumeRenderDynamicUsage,
638
- consumeRenderObservationState: options.consumeRenderObservationState,
771
+ consumeRenderObservationState,
639
772
  createHtmlRenderObservation(input) {
640
773
  return createAppPageRenderObservation({
641
774
  boundaryOutcome: { kind: "success" },
@@ -675,9 +808,11 @@ async function renderAppPageLifecycle(options) {
675
808
  omitPendingDynamicCacheState: options.omitPendingDynamicCacheState,
676
809
  preserveClientResponseHeaders: !htmlResponsePolicy.shouldWriteToCache,
677
810
  expireSeconds,
811
+ isStaticEligible: options.isStaticEligible,
678
812
  revalidateSeconds: resolveAppPageCacheWriteRevalidateSeconds({
679
813
  isDynamicError: options.isDynamicError,
680
814
  isForceStatic: options.isForceStatic,
815
+ isStaticEligible: options.isStaticEligible,
681
816
  revalidateSeconds
682
817
  }),
683
818
  linkHeader: linkHeader ?? null,
@@ -686,7 +821,7 @@ async function renderAppPageLifecycle(options) {
686
821
  }
687
822
  });
688
823
  }
689
- return finalizeAppPageCacheabilityEvaluationResponse(buildAppPageHtmlResponse(safeHtmlStream, {
824
+ const response = buildAppPageHtmlResponse(safeHtmlStream, {
690
825
  cacheTags: options.isPrerender === true ? options.getPageTags() : void 0,
691
826
  draftCookie,
692
827
  linkHeader,
@@ -695,12 +830,13 @@ async function renderAppPageLifecycle(options) {
695
830
  policy: htmlResponsePolicy,
696
831
  requestCacheLife: requestCacheLifeForPrerender,
697
832
  timing: htmlResponseTiming
698
- }), {
833
+ });
834
+ return finalizeAppPageCacheabilityEvaluationResponse(response, {
699
835
  capturedDynamicUsageBeforeContextCleanup() {
700
836
  return dynamicUsedBeforeContextCleanup;
701
837
  },
702
838
  consumeDynamicUsage: consumeRenderDynamicUsage,
703
- consumeRenderObservationState: options.consumeRenderObservationState,
839
+ consumeRenderObservationState,
704
840
  getPageTags() {
705
841
  return options.getPageTags();
706
842
  },
@@ -708,9 +844,11 @@ async function renderAppPageLifecycle(options) {
708
844
  return readRequestCacheLifeForCachePolicy(options);
709
845
  },
710
846
  expireSeconds,
847
+ isStaticEligible: options.isStaticEligible,
711
848
  revalidateSeconds: resolveAppPageCacheWriteRevalidateSeconds({
712
849
  isDynamicError: options.isDynamicError,
713
850
  isForceStatic: options.isForceStatic,
851
+ isStaticEligible: options.isStaticEligible,
714
852
  revalidateSeconds
715
853
  })
716
854
  });
@@ -723,8 +861,16 @@ async function settleCapturedRscRenderForCacheMetadata(capturedRscDataPromise, s
723
861
  } catch {}
724
862
  return;
725
863
  }
864
+ await waitUnlessDynamic(capturedRscDataPromise, shouldStopWaiting);
865
+ }
866
+ /**
867
+ * Wait for `promise` to settle, or until `shouldStopWaiting` reports that the
868
+ * render turned dynamic. Rejections are ignored: the response stream and the
869
+ * cache-write path own render error propagation.
870
+ */
871
+ async function waitUnlessDynamic(promise, shouldStopWaiting) {
726
872
  let settled = false;
727
- const settledPromise = capturedRscDataPromise.catch(() => {}).then(() => {
873
+ const settledPromise = promise.catch(() => {}).then(() => {
728
874
  settled = true;
729
875
  });
730
876
  try {
@@ -732,4 +878,4 @@ async function settleCapturedRscRenderForCacheMetadata(capturedRscDataPromise, s
732
878
  } finally {}
733
879
  }
734
880
  //#endregion
735
- export { renderAppPageLifecycle };
881
+ export { applyIneligibleRouteCachePolicy, renderAppPageLifecycle };
@@ -31,11 +31,13 @@ type ParallelGenerateStaticParamsBranch = {
31
31
  patternParts?: readonly string[] | null;
32
32
  routeSegments?: readonly string[] | null;
33
33
  };
34
- type ValidateAppPageDynamicParamsOptions = {
34
+ export type ValidateAppPageDynamicParamsOptions = {
35
35
  enforceStaticParamsOnly: boolean;
36
36
  generateStaticParams?: GenerateStaticParams | GenerateStaticParamsSource | readonly (GenerateStaticParams | GenerateStaticParamsSource | null | undefined)[] | null;
37
37
  isDynamicRoute: boolean;
38
+ optionalCatchAllParamNames?: readonly string[];
38
39
  params: AppPageParams;
40
+ requiredParamNames?: readonly string[];
39
41
  };
40
42
  type ResolveAppPageGenerateStaticParamsSourcesOptions = {
41
43
  layouts?: readonly (GenerateStaticParamsModule | null | undefined)[];
@@ -133,11 +135,10 @@ type ResolveAppPageInterceptResult<TInterceptOpts> = {
133
135
  interceptOpts: TInterceptOpts | undefined;
134
136
  response: Response | null;
135
137
  };
136
- declare function resolveAppPageGenerateStaticParamsSources(options: ResolveAppPageGenerateStaticParamsSourcesOptions): GenerateStaticParamsSource[];
137
- declare function validateAppPageDynamicParams(options: ValidateAppPageDynamicParamsOptions): Promise<Response | null>;
138
- declare function resolveAppPageInterceptionRerenderTarget<TRoute, TPage, TInterceptOpts>(options: ResolveAppPageInterceptionRerenderTargetOptions<TRoute, TPage, TInterceptOpts>): Promise<ResolveAppPageInterceptionRerenderTargetResult<TRoute, TInterceptOpts>>;
139
- declare function resolveAppPageActionRerenderTarget<TRoute, TPage, TInterceptOpts>(options: ResolveAppPageActionRerenderTargetOptions<TRoute, TPage, TInterceptOpts>): Promise<ResolveAppPageActionRerenderTargetResult<TRoute, TInterceptOpts>>;
140
- declare function resolveAppPageIntercept<TRoute, TPage, TInterceptOpts, TElement>(options: ResolveAppPageInterceptOptions<TRoute, TPage, TInterceptOpts, TElement>): Promise<ResolveAppPageInterceptResult<TInterceptOpts>>;
141
- declare function buildAppPageElement<TElement>(options: BuildAppPageElementOptions<TElement>): Promise<BuildAppPageElementResult<TElement>>;
142
- //#endregion
143
- export { ValidateAppPageDynamicParamsOptions, buildAppPageElement, resolveAppPageActionRerenderTarget, resolveAppPageGenerateStaticParamsSources, resolveAppPageIntercept, resolveAppPageInterceptionRerenderTarget, validateAppPageDynamicParams };
138
+ export declare function resolveAppPageGenerateStaticParamsSources(options: ResolveAppPageGenerateStaticParamsSourcesOptions): GenerateStaticParamsSource[];
139
+ export declare function validateAppPageDynamicParams(options: ValidateAppPageDynamicParamsOptions): Promise<Response | null>;
140
+ export declare function resolveAppPageInterceptionRerenderTarget<TRoute, TPage, TInterceptOpts>(options: ResolveAppPageInterceptionRerenderTargetOptions<TRoute, TPage, TInterceptOpts>): Promise<ResolveAppPageInterceptionRerenderTargetResult<TRoute, TInterceptOpts>>;
141
+ export declare function resolveAppPageActionRerenderTarget<TRoute, TPage, TInterceptOpts>(options: ResolveAppPageActionRerenderTargetOptions<TRoute, TPage, TInterceptOpts>): Promise<ResolveAppPageActionRerenderTargetResult<TRoute, TInterceptOpts>>;
142
+ export declare function resolveAppPageIntercept<TRoute, TPage, TInterceptOpts, TElement>(options: ResolveAppPageInterceptOptions<TRoute, TPage, TInterceptOpts, TElement>): Promise<ResolveAppPageInterceptResult<TInterceptOpts>>;
143
+ export declare function buildAppPageElement<TElement>(options: BuildAppPageElementOptions<TElement>): Promise<BuildAppPageElementResult<TElement>>;
144
+ //#endregion
@@ -110,18 +110,21 @@ function resolveAppPageGenerateStaticParamsSources(options) {
110
110
  }
111
111
  return sources;
112
112
  }
113
- function areStaticParamsAllowed(params, staticParams, allowMissingValues = false) {
114
- const paramKeys = Object.keys(params);
113
+ function areStaticParamsAllowed(params, staticParams, allowMissingValues = false, paramKeys = Object.keys(params), optionalCatchAllParamNames = []) {
115
114
  const stringParamMatches = (value, staticValue) => value === encodeURIComponent(staticValue);
116
- return staticParams.some((staticParamSet) => paramKeys.every((key) => {
117
- const value = params[key];
118
- const staticValue = staticParamSet[key];
119
- if (!Object.hasOwn(staticParamSet, key)) return allowMissingValues;
120
- if (Array.isArray(value)) return Array.isArray(staticValue) && value.length === staticValue.length && value.every((part, index) => typeof staticValue[index] === "string" ? stringParamMatches(part, staticValue[index]) : part === staticValue[index]);
121
- if (typeof staticValue === "string") return stringParamMatches(value, staticValue);
122
- if (typeof staticValue === "number" || typeof staticValue === "boolean") return String(value) === String(staticValue);
123
- return JSON.stringify(value) === JSON.stringify(staticValue);
124
- }));
115
+ return staticParams.some((staticParamSet) => {
116
+ if (!staticParamSet || typeof staticParamSet !== "object" || Array.isArray(staticParamSet)) return false;
117
+ return paramKeys.every((key) => {
118
+ const value = params[key];
119
+ const staticValue = staticParamSet[key];
120
+ if (!Object.hasOwn(staticParamSet, key)) return allowMissingValues;
121
+ if (value === void 0) return optionalCatchAllParamNames.includes(key) && (staticValue === void 0 || staticValue === null || staticValue === false || Array.isArray(staticValue) && staticValue.length === 0);
122
+ if (Array.isArray(value)) return Array.isArray(staticValue) && value.length === staticValue.length && value.every((part, index) => typeof staticValue[index] === "string" ? stringParamMatches(part, staticValue[index]) : part === staticValue[index]);
123
+ if (typeof staticValue === "string") return stringParamMatches(value, staticValue);
124
+ if (typeof staticValue === "number" || typeof staticValue === "boolean") return String(value) === String(staticValue);
125
+ return JSON.stringify(value) === JSON.stringify(staticValue);
126
+ });
127
+ });
125
128
  }
126
129
  function remapStaticParamsToRouteParams(staticParams, source) {
127
130
  if (!source.paramAliases) return [...staticParams];
@@ -227,9 +230,10 @@ async function validateAppPageDynamicParams(options) {
227
230
  const result = await generateIndependentStaticParams(sources, chainedStaticParams, options.params);
228
231
  if (result.validated) {
229
232
  validatedIndependentResults = true;
230
- if (!areStaticParamsAllowed(options.params, result.staticParams, true)) return notFoundResponse();
233
+ if (!areStaticParamsAllowed(options.params, result.staticParams, options.requiredParamNames === void 0, options.requiredParamNames, options.optionalCatchAllParamNames)) return notFoundResponse();
231
234
  }
232
235
  }
236
+ if (options.requiredParamNames && !validatedIndependentResults) return notFoundResponse();
233
237
  if (chainedStaticParams && !validatedIndependentResults) {
234
238
  if (!areStaticParamsAllowed(options.params, chainedStaticParams)) return notFoundResponse();
235
239
  }
@@ -1,10 +1,10 @@
1
1
  import { mergeMiddlewareResponseHeaders } from "./middleware-response-headers.js";
2
2
  //#region src/server/app-page-response.d.ts
3
- type AppPageMiddlewareContext = {
3
+ export type AppPageMiddlewareContext = {
4
4
  headers: Headers | null;
5
5
  status: number | null;
6
6
  };
7
- type AppPageResponseTiming = {
7
+ export type AppPageResponseTiming = {
8
8
  compileEnd?: number;
9
9
  handlerStart: number;
10
10
  renderEnd?: number;
@@ -26,6 +26,11 @@ type ResolveAppPageResponsePolicyBaseOptions = {
26
26
  isForceDynamic: boolean;
27
27
  isForceStatic: boolean;
28
28
  isProduction: boolean;
29
+ /**
30
+ * `false` for routes Next.js classifies as dynamic (ƒ). Their responses are
31
+ * never cached, whatever their revalidate.
32
+ */
33
+ isStaticEligible: boolean;
29
34
  expireSeconds?: number;
30
35
  revalidateSeconds: number | null;
31
36
  };
@@ -70,9 +75,15 @@ type BuildAppPageHtmlResponseOptions = {
70
75
  * prerender seed) — `use cache` scopes keep resolving after headers commit,
71
76
  * so a streaming response can never carry it.
72
77
  */
73
- declare function applyClientStaleTimeHeader(headers: Headers, staleTimeSeconds: number | undefined): void;
74
- declare function resolveAppPageRscResponsePolicy(options: ResolveAppPageRscResponsePolicyOptions): AppPageResponsePolicy;
75
- declare function resolveAppPageHtmlResponsePolicy(options: ResolveAppPageHtmlResponsePolicyOptions): AppPageHtmlResponsePolicy;
78
+ export declare function applyClientStaleTimeHeader(headers: Headers, staleTimeSeconds: number | undefined): void;
79
+ /**
80
+ * Next.js sends `private, no-cache, no-store, max-age=0, must-revalidate` for
81
+ * an App page response it knows is dynamic. Dev responses never cache, so they
82
+ * keep vinext's dev `no-store` header.
83
+ */
84
+ export declare function resolveUncacheableCacheControl(isProduction: boolean): string;
85
+ export declare function resolveAppPageRscResponsePolicy(options: ResolveAppPageRscResponsePolicyOptions): AppPageResponsePolicy;
86
+ export declare function resolveAppPageHtmlResponsePolicy(options: ResolveAppPageHtmlResponsePolicyOptions): AppPageHtmlResponsePolicy;
76
87
  /**
77
88
  * Mirror Next.js' edge-runtime marker (set in edge-ssr-app.ts). Only routes
78
89
  * whose resolved segment config is `runtime = "edge"` should advertise it —
@@ -80,8 +91,8 @@ declare function resolveAppPageHtmlResponsePolicy(options: ResolveAppPageHtmlRes
80
91
  * the configured runtime from the response. Centralized so every response
81
92
  * construction site can opt in without re-deriving the header name.
82
93
  */
83
- declare function applyEdgeRuntimeHeader(headers: Headers, isEdgeRuntime: boolean | undefined): void;
84
- declare function buildAppPageRscResponse(body: ReadableStream, options: BuildAppPageRscResponseOptions): Response;
85
- declare function buildAppPageHtmlResponse(body: ReadableStream, options: BuildAppPageHtmlResponseOptions): Response;
94
+ export declare function applyEdgeRuntimeHeader(headers: Headers, isEdgeRuntime: boolean | undefined): void;
95
+ export declare function buildAppPageRscResponse(body: ReadableStream, options: BuildAppPageRscResponseOptions): Response;
96
+ export declare function buildAppPageHtmlResponse(body: ReadableStream, options: BuildAppPageHtmlResponseOptions): Response;
86
97
  //#endregion
87
- export { AppPageMiddlewareContext, AppPageResponseTiming, applyClientStaleTimeHeader, applyEdgeRuntimeHeader, buildAppPageHtmlResponse, buildAppPageRscResponse, mergeMiddlewareResponseHeaders, resolveAppPageHtmlResponsePolicy, resolveAppPageRscResponsePolicy };
98
+ export { mergeMiddlewareResponseHeaders };
@@ -1,5 +1,6 @@
1
- import { NEXT_CACHE_TAGS_HEADER, NEXT_ROUTER_STALE_TIME_HEADER, VINEXT_DYNAMIC_STALE_TIME_HEADER, VINEXT_MOUNTED_SLOTS_HEADER, VINEXT_PARAMS_HEADER, VINEXT_RENDERED_PATH_AND_SEARCH_HEADER, VINEXT_RSC_VARY_HEADER, VINEXT_STALE_TIME_PENDING_HEADER, VINEXT_TIMING_HEADER } from "./headers.js";
2
- import { NO_STORE_CACHE_CONTROL, STATIC_CACHE_CONTROL, buildRevalidateCacheControl } from "./cache-control.js";
1
+ import { VINEXT_MOUNTED_SLOTS_HEADER, VINEXT_RSC_VARY_HEADER } from "./app-rsc-vary.js";
2
+ import { NEXT_CACHE_TAGS_HEADER, NEXT_ROUTER_STALE_TIME_HEADER, VINEXT_DYNAMIC_STALE_TIME_HEADER, VINEXT_PARAMS_HEADER, VINEXT_RENDERED_PATH_AND_SEARCH_HEADER, VINEXT_STALE_TIME_PENDING_HEADER, VINEXT_TIMING_HEADER } from "./headers.js";
3
+ import { NEVER_CACHE_CONTROL, NO_STORE_CACHE_CONTROL, STATIC_CACHE_CONTROL, buildRevalidateCacheControl } from "./cache-control.js";
3
4
  import { setCacheStateHeaders } from "./cache-headers.js";
4
5
  import { VINEXT_RSC_CONTENT_TYPE, applyRscCompatibilityIdHeader, applyRscDeploymentIdHeader } from "./app-rsc-cache-busting.js";
5
6
  import { mergeMiddlewareResponseHeaders } from "./middleware-response-headers.js";
@@ -28,14 +29,27 @@ function applyClientStaleTimeHeader(headers, staleTimeSeconds) {
28
29
  function applyPrerenderCacheTagsHeader(headers, cacheTags) {
29
30
  if (cacheTags && cacheTags.length > 0) headers.set(NEXT_CACHE_TAGS_HEADER, cacheTags.join(","));
30
31
  }
32
+ /**
33
+ * Next.js sends `private, no-cache, no-store, max-age=0, must-revalidate` for
34
+ * an App page response it knows is dynamic. Dev responses never cache, so they
35
+ * keep vinext's dev `no-store` header.
36
+ */
37
+ function resolveUncacheableCacheControl(isProduction) {
38
+ return isProduction ? NEVER_CACHE_CONTROL : NO_STORE_CACHE_CONTROL;
39
+ }
31
40
  function resolveAppPageRscResponsePolicy(options) {
32
- if (options.isDraftMode) return { cacheControl: NO_STORE_CACHE_CONTROL };
33
- if (options.isForceDynamic || options.dynamicUsedDuringBuild) return { cacheControl: NO_STORE_CACHE_CONTROL };
34
- if (options.revalidateSeconds === 0) return { cacheControl: NO_STORE_CACHE_CONTROL };
35
- if ((options.isForceStatic || options.isDynamicError) && !options.revalidateSeconds || options.revalidateSeconds === Infinity) return {
41
+ if (options.isDraftMode) return { cacheControl: resolveUncacheableCacheControl(options.isProduction) };
42
+ if (options.isStaticEligible === false) return { cacheControl: resolveUncacheableCacheControl(options.isProduction) };
43
+ if (options.isForceDynamic || options.dynamicUsedDuringBuild) return { cacheControl: resolveUncacheableCacheControl(options.isProduction) };
44
+ if (options.revalidateSeconds === 0) return { cacheControl: resolveUncacheableCacheControl(options.isProduction) };
45
+ if ((options.isForceStatic || options.isDynamicError) && (options.revalidateSeconds === null || options.revalidateSeconds === Infinity)) return {
36
46
  cacheControl: STATIC_CACHE_CONTROL,
37
47
  cacheState: "STATIC"
38
48
  };
49
+ if (options.revalidateSeconds === Infinity) return {
50
+ cacheControl: STATIC_CACHE_CONTROL,
51
+ cacheState: options.isProduction ? "MISS" : "STATIC"
52
+ };
39
53
  if (options.revalidateSeconds) return {
40
54
  cacheControl: buildRevalidateCacheControl(options.revalidateSeconds, options.expireSeconds),
41
55
  cacheState: options.isProduction ? "MISS" : void 0
@@ -44,11 +58,15 @@ function resolveAppPageRscResponsePolicy(options) {
44
58
  }
45
59
  function resolveAppPageHtmlResponsePolicy(options) {
46
60
  if (options.isDraftMode) return {
47
- cacheControl: NO_STORE_CACHE_CONTROL,
61
+ cacheControl: resolveUncacheableCacheControl(options.isProduction),
62
+ shouldWriteToCache: false
63
+ };
64
+ if (options.isStaticEligible === false) return {
65
+ cacheControl: resolveUncacheableCacheControl(options.isProduction),
48
66
  shouldWriteToCache: false
49
67
  };
50
68
  if (options.isForceDynamic) return {
51
- cacheControl: NO_STORE_CACHE_CONTROL,
69
+ cacheControl: resolveUncacheableCacheControl(options.isProduction),
52
70
  shouldWriteToCache: false
53
71
  };
54
72
  if (options.hasScriptNonce) return {
@@ -60,16 +78,16 @@ function resolveAppPageHtmlResponsePolicy(options) {
60
78
  shouldWriteToCache: false
61
79
  };
62
80
  if (options.revalidateSeconds === 0) return {
63
- cacheControl: NO_STORE_CACHE_CONTROL,
81
+ cacheControl: resolveUncacheableCacheControl(options.isProduction),
64
82
  shouldWriteToCache: false
65
83
  };
66
- if ((options.isForceStatic || options.isDynamicError) && options.revalidateSeconds === null) return {
84
+ if ((options.isForceStatic || options.isDynamicError) && (options.revalidateSeconds === null || options.revalidateSeconds === Infinity)) return {
67
85
  cacheControl: STATIC_CACHE_CONTROL,
68
86
  cacheState: options.isProduction ? "MISS" : "STATIC",
69
87
  shouldWriteToCache: options.isProduction
70
88
  };
71
89
  if (options.dynamicUsedDuringRender) return {
72
- cacheControl: NO_STORE_CACHE_CONTROL,
90
+ cacheControl: resolveUncacheableCacheControl(options.isProduction),
73
91
  shouldWriteToCache: false
74
92
  };
75
93
  if (options.revalidateSeconds !== null && options.revalidateSeconds > 0 && options.revalidateSeconds !== Infinity) return {
@@ -140,4 +158,4 @@ function buildAppPageHtmlResponse(body, options) {
140
158
  return response;
141
159
  }
142
160
  //#endregion
143
- export { applyClientStaleTimeHeader, applyEdgeRuntimeHeader, buildAppPageHtmlResponse, buildAppPageRscResponse, mergeMiddlewareResponseHeaders, resolveAppPageHtmlResponsePolicy, resolveAppPageRscResponsePolicy };
161
+ export { applyClientStaleTimeHeader, applyEdgeRuntimeHeader, buildAppPageHtmlResponse, buildAppPageRscResponse, mergeMiddlewareResponseHeaders, resolveAppPageHtmlResponsePolicy, resolveAppPageRscResponsePolicy, resolveUncacheableCacheControl };