vinext 1.0.0-beta.9 → 1.0.1

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