vinext 1.0.0-beta.8 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (813) hide show
  1. package/README.md +158 -84
  2. package/THIRD_PARTY_LICENSES.md +25 -0
  3. package/dist/_virtual/_rolldown/runtime.js +25 -0
  4. package/dist/build/action-owner-manifest.d.ts +8 -9
  5. package/dist/build/action-owner-manifest.js +23 -5
  6. package/dist/build/assets-ignore.d.ts +3 -4
  7. package/dist/build/clean-output.d.ts +2 -3
  8. package/dist/build/client-build-config.d.ts +40 -12
  9. package/dist/build/client-build-config.js +76 -6
  10. package/dist/build/css-url-assets.d.ts +4 -5
  11. package/dist/build/css-url-assets.js +5 -2
  12. package/dist/build/google-fonts/build-url.d.ts +3 -4
  13. package/dist/build/google-fonts/fallback-metrics.d.ts +3 -4
  14. package/dist/build/google-fonts/find-font-files-in-css.d.ts +2 -3
  15. package/dist/build/google-fonts/font-metadata.d.ts +2 -3
  16. package/dist/build/google-fonts/get-axes.d.ts +2 -3
  17. package/dist/build/google-fonts/sort-variants.d.ts +2 -3
  18. package/dist/build/google-fonts/validate.d.ts +2 -3
  19. package/dist/build/google-fonts/validate.js +8 -4
  20. package/dist/build/inject-pregenerated-paths.d.ts +2 -3
  21. package/dist/build/inject-pregenerated-paths.js +16 -14
  22. package/dist/build/inline-css.d.ts +3 -4
  23. package/dist/build/layout-classification-types.d.ts +4 -5
  24. package/dist/build/layout-classification.d.ts +7 -8
  25. package/dist/build/lifecycle.d.ts +42 -0
  26. package/dist/build/lifecycle.js +253 -0
  27. package/dist/build/module-dependency-cache.d.ts +2 -3
  28. package/dist/build/next-client-runtime-manifests.d.ts +4 -5
  29. package/dist/build/nitro-route-rules.d.ts +6 -7
  30. package/dist/build/nitro-route-rules.js +1 -1
  31. package/dist/build/pages-client-assets-module.d.ts +4 -8
  32. package/dist/build/pages-client-assets-module.js +1 -13
  33. package/dist/build/precompress.d.ts +2 -3
  34. package/dist/build/prerender-cloudflare-loader.d.ts +4 -0
  35. package/dist/build/prerender-cloudflare-loader.js +49 -0
  36. package/dist/build/prerender-paths.d.ts +82 -8
  37. package/dist/build/prerender-paths.js +814 -99
  38. package/dist/build/prerender-phase.d.ts +2 -3
  39. package/dist/build/prerender-server-entry.js +11 -3
  40. package/dist/build/prerender-server-pool.d.ts +9 -6
  41. package/dist/build/prerender-server-pool.js +8 -5
  42. package/dist/build/prerender.d.ts +67 -15
  43. package/dist/build/prerender.js +177 -64
  44. package/dist/build/preview-credentials.d.ts +5 -6
  45. package/dist/build/preview-credentials.js +2 -2
  46. package/dist/build/public-dir-conflict.d.ts +5 -6
  47. package/dist/build/public-dir-conflict.js +2 -1
  48. package/dist/build/report.d.ts +38 -19
  49. package/dist/build/report.js +73 -4
  50. package/dist/build/route-classification-injector.d.ts +2 -3
  51. package/dist/build/route-classification-manifest.d.ts +5 -6
  52. package/dist/build/run-prerender.d.ts +11 -9
  53. package/dist/build/run-prerender.js +25 -16
  54. package/dist/build/server-entry.d.ts +4 -0
  55. package/dist/build/server-entry.js +28 -0
  56. package/dist/build/server-manifest.d.ts +8 -3
  57. package/dist/build/server-manifest.js +14 -2
  58. package/dist/build/ssr-manifest.d.ts +5 -6
  59. package/dist/build/standalone.d.ts +2 -3
  60. package/dist/build/standalone.js +2 -2
  61. package/dist/build/static-export.d.ts +7 -8
  62. package/dist/cache/cache-adapters-virtual.d.ts +95 -9
  63. package/dist/cache/cache-adapters-virtual.js +58 -6
  64. package/dist/check.d.ts +11 -10
  65. package/dist/check.js +467 -176
  66. package/dist/cli-args.d.ts +7 -16
  67. package/dist/cli-args.js +2 -45
  68. package/dist/cli-dev-config.d.ts +10 -7
  69. package/dist/cli-dev-config.js +160 -3
  70. package/dist/cli.js +124 -435
  71. package/dist/client/app-nav-failure-handler.d.ts +6 -7
  72. package/dist/client/client-rewrite-matcher.d.ts +2 -3
  73. package/dist/client/client-rewrites.d.ts +4 -5
  74. package/dist/client/dev-error-overlay-store.d.ts +13 -14
  75. package/dist/client/dev-error-overlay.d.ts +15 -15
  76. package/dist/client/dev-error-overlay.js +8 -5
  77. package/dist/client/instrumentation-client-inject.d.ts +3 -4
  78. package/dist/client/instrumentation-client-state.d.ts +5 -6
  79. package/dist/client/instrumentation-client.d.ts +3 -4
  80. package/dist/client/navigation-runtime.d.ts +21 -17
  81. package/dist/client/navigation-runtime.js +2 -1
  82. package/dist/client/pages-router-link-navigation.d.ts +4 -5
  83. package/dist/client/react-instance.d.ts +2 -3
  84. package/dist/client/validate-module-path.d.ts +2 -3
  85. package/dist/client/vinext-next-data.d.ts +7 -8
  86. package/dist/client/window-next.d.ts +4 -5
  87. package/dist/config/config-matchers.d.ts +16 -16
  88. package/dist/config/config-matchers.js +10 -7
  89. package/dist/config/dotenv.d.ts +3 -4
  90. package/dist/config/dotenv.js +2 -1
  91. package/dist/config/next-config.d.ts +31 -27
  92. package/dist/config/next-config.js +163 -16
  93. package/dist/config/prerender.d.ts +20 -16
  94. package/dist/config/prerender.js +10 -4
  95. package/dist/config/request-context.d.ts +5 -6
  96. package/dist/config/server-external-packages.d.ts +14 -3
  97. package/dist/config/server-external-packages.js +37 -3
  98. package/dist/config/tsconfig-paths.d.ts +3 -4
  99. package/dist/deps/.pnpm/ignore@5.3.2/deps/ignore/index.js +189 -0
  100. package/dist/deps/.pnpm/ua-parser-js@1.0.35/deps/ua-parser-js/src/ua-parser.js +1057 -0
  101. package/dist/entries/app-browser-entry.d.ts +5 -6
  102. package/dist/entries/app-browser-entry.js +3 -2
  103. package/dist/entries/app-rsc-entry.d.ts +12 -3
  104. package/dist/entries/app-rsc-entry.js +530 -55
  105. package/dist/entries/app-rsc-manifest.d.ts +4 -3
  106. package/dist/entries/app-rsc-manifest.js +27 -8
  107. package/dist/entries/app-ssr-entry.d.ts +2 -3
  108. package/dist/entries/app-ssr-entry.js +8 -1
  109. package/dist/entries/pages-client-entry.d.ts +3 -3
  110. package/dist/entries/pages-client-entry.js +17 -2
  111. package/dist/entries/pages-server-entry.d.ts +13 -3
  112. package/dist/entries/pages-server-entry.js +237 -33
  113. package/dist/entries/runtime-entry-module.d.ts +4 -5
  114. package/dist/image/image-adapters-virtual.d.ts +4 -5
  115. package/dist/index.d.ts +10 -11
  116. package/dist/index.js +832 -199
  117. package/dist/init-cloudflare.d.ts +27 -16
  118. package/dist/init-cloudflare.js +754 -113
  119. package/dist/init-platform.d.ts +26 -22
  120. package/dist/init-platform.js +85 -29
  121. package/dist/init.d.ts +19 -13
  122. package/dist/init.js +123 -41
  123. package/dist/plugins/action-owner-manifest.d.ts +3 -4
  124. package/dist/plugins/action-owner-manifest.js +10 -3
  125. package/dist/plugins/ast-scope.d.ts +10 -11
  126. package/dist/plugins/ast-scope.js +10 -22
  127. package/dist/plugins/ast-utils.d.ts +16 -29
  128. package/dist/plugins/ast-utils.js +27 -71
  129. package/dist/plugins/async-hooks-stub.d.ts +2 -3
  130. package/dist/plugins/client-reference-dedup.d.ts +4 -5
  131. package/dist/plugins/css-data-url.d.ts +2 -3
  132. package/dist/plugins/css-module-imports.d.ts +3 -4
  133. package/dist/plugins/css-module-imports.js +1 -1
  134. package/dist/plugins/dynamic-preload-metadata.d.ts +3 -4
  135. package/dist/plugins/dynamic-preload-metadata.js +55 -154
  136. package/dist/plugins/environment.d.ts +2 -3
  137. package/dist/plugins/extensionless-dynamic-import.d.ts +2 -3
  138. package/dist/plugins/extensionless-dynamic-import.js +6 -10
  139. package/dist/plugins/fonts.d.ts +10 -11
  140. package/dist/plugins/fonts.js +4 -3
  141. package/dist/plugins/ignore-dynamic-requests.d.ts +3 -4
  142. package/dist/plugins/ignore-dynamic-requests.js +60 -89
  143. package/dist/plugins/import-meta-url.d.ts +6 -7
  144. package/dist/plugins/import-meta-url.js +31 -43
  145. package/dist/plugins/instrumentation-client.d.ts +3 -3
  146. package/dist/plugins/instrumentation-client.js +46 -10
  147. package/dist/plugins/middleware-export-validation.d.ts +3 -4
  148. package/dist/plugins/middleware-export-validation.js +3 -3
  149. package/dist/plugins/middleware-server-only.d.ts +2 -3
  150. package/dist/plugins/og-asset-ownership.d.ts +3 -4
  151. package/dist/plugins/og-assets.d.ts +4 -5
  152. package/dist/plugins/og-assets.js +32 -13
  153. package/dist/plugins/og-harfbuzz.d.ts +24 -0
  154. package/dist/plugins/og-harfbuzz.js +260 -0
  155. package/dist/plugins/optimize-imports.d.ts +7 -7
  156. package/dist/plugins/optimize-imports.js +32 -44
  157. package/dist/plugins/pages-node-externals.d.ts +2 -3
  158. package/dist/plugins/pages-node-externals.js +6 -11
  159. package/dist/plugins/postcss.d.ts +8 -4
  160. package/dist/plugins/postcss.js +1 -1
  161. package/dist/plugins/remove-console.d.ts +2 -3
  162. package/dist/plugins/remove-console.js +0 -1
  163. package/dist/plugins/require-condition-resolution.d.ts +3 -4
  164. package/dist/plugins/require-condition-resolution.js +17 -18
  165. package/dist/plugins/require-context.d.ts +2 -3
  166. package/dist/plugins/require-context.js +13 -21
  167. package/dist/plugins/rsc-client-reference-loaders.d.ts +2 -3
  168. package/dist/plugins/rsc-client-shim-excludes.d.ts +4 -5
  169. package/dist/plugins/rsc-client-shim-excludes.js +1 -0
  170. package/dist/plugins/rsc-reference-validation-normalizer.d.ts +2 -3
  171. package/dist/plugins/sass.d.ts +7 -8
  172. package/dist/plugins/sass.js +7 -4
  173. package/dist/plugins/server-externals-manifest.d.ts +2 -3
  174. package/dist/plugins/strip-server-exports.d.ts +5 -6
  175. package/dist/plugins/strip-server-exports.js +1 -1
  176. package/dist/plugins/styled-jsx.d.ts +2 -3
  177. package/dist/plugins/styled-jsx.js +7 -7
  178. package/dist/plugins/transform-cache.d.ts +2 -3
  179. package/dist/plugins/transform-result.d.ts +3 -4
  180. package/dist/plugins/transitive-externals.d.ts +2 -3
  181. package/dist/plugins/typeof-window.d.ts +6 -7
  182. package/dist/plugins/typeof-window.js +30 -31
  183. package/dist/plugins/use-cache-callable.d.ts +2 -5
  184. package/dist/plugins/use-cache-callable.js +43 -22
  185. package/dist/plugins/wasm-module-import.d.ts +2 -3
  186. package/dist/plugins/worker-image-imports.d.ts +2 -3
  187. package/dist/plugins/worker-image-imports.js +6 -8
  188. package/dist/routing/app-route-graph.d.ts +19 -19
  189. package/dist/routing/app-route-graph.js +3 -2
  190. package/dist/routing/app-router.d.ts +20 -5
  191. package/dist/routing/app-router.js +28 -2
  192. package/dist/routing/file-matcher.d.ts +9 -10
  193. package/dist/routing/pages-router.d.ts +6 -6
  194. package/dist/routing/pages-router.js +1 -1
  195. package/dist/routing/route-matching.d.ts +4 -5
  196. package/dist/routing/route-matching.js +4 -2
  197. package/dist/routing/route-pattern.d.ts +13 -14
  198. package/dist/routing/route-trie.d.ts +5 -6
  199. package/dist/routing/route-validation.d.ts +3 -4
  200. package/dist/routing/route-validation.js +12 -11
  201. package/dist/routing/utils.d.ts +13 -14
  202. package/dist/server/accept-encoding.d.ts +9 -10
  203. package/dist/server/api-handler.d.ts +2 -3
  204. package/dist/server/api-handler.js +9 -6
  205. package/dist/server/app-action-forwarding.d.ts +3 -4
  206. package/dist/server/app-action-forwarding.js +1 -1
  207. package/dist/server/app-action-request.d.ts +2 -3
  208. package/dist/server/app-bfcache-id.d.ts +3 -4
  209. package/dist/server/app-bfcache-identity.d.ts +8 -9
  210. package/dist/server/app-browser-action-result.d.ts +15 -16
  211. package/dist/server/app-browser-client-reuse-manifest.d.ts +2 -3
  212. package/dist/server/app-browser-entry.js +121 -40
  213. package/dist/server/app-browser-error.d.ts +5 -6
  214. package/dist/server/app-browser-error.js +9 -3
  215. package/dist/server/app-browser-history-controller.d.ts +4 -5
  216. package/dist/server/app-browser-hydration.d.ts +16 -6
  217. package/dist/server/app-browser-hydration.js +14 -1
  218. package/dist/server/app-browser-interception-context.d.ts +3 -4
  219. package/dist/server/app-browser-mpa-navigation.d.ts +4 -5
  220. package/dist/server/app-browser-navigation-abort.d.ts +3 -4
  221. package/dist/server/app-browser-navigation-controller.d.ts +8 -8
  222. package/dist/server/app-browser-navigation-controller.js +9 -5
  223. package/dist/server/app-browser-navigation-response.d.ts +2 -3
  224. package/dist/server/app-browser-popstate.d.ts +4 -5
  225. package/dist/server/app-browser-prefetch-response.d.ts +5 -6
  226. package/dist/server/app-browser-rsc-redirect.d.ts +4 -5
  227. package/dist/server/app-browser-server-action-client.d.ts +7 -6
  228. package/dist/server/app-browser-server-action-client.js +9 -5
  229. package/dist/server/app-browser-server-action-navigation.d.ts +2 -3
  230. package/dist/server/app-browser-state.d.ts +17 -17
  231. package/dist/server/app-browser-state.js +7 -3
  232. package/dist/server/app-browser-stream.d.ts +4 -5
  233. package/dist/server/app-browser-stream.js +8 -6
  234. package/dist/server/app-browser-supplemental-refresh.d.ts +11 -12
  235. package/dist/server/app-browser-visible-commit.d.ts +6 -7
  236. package/dist/server/app-browser-visible-commit.js +1 -1
  237. package/dist/server/app-client-reference-preloader.d.ts +2 -3
  238. package/dist/server/app-elements-wire-key.d.ts +25 -0
  239. package/dist/server/app-elements-wire-key.js +69 -0
  240. package/dist/server/app-elements-wire.d.ts +34 -53
  241. package/dist/server/app-elements-wire.js +4 -75
  242. package/dist/server/app-elements.d.ts +5 -5
  243. package/dist/server/app-elements.js +1 -1
  244. package/dist/server/app-fallback-renderer.d.ts +4 -4
  245. package/dist/server/app-fallback-renderer.js +6 -6
  246. package/dist/server/app-fetch-tracing.d.ts +15 -0
  247. package/dist/server/app-fetch-tracing.js +38 -0
  248. package/dist/server/app-history-state.d.ts +26 -27
  249. package/dist/server/app-history-state.js +19 -11
  250. package/dist/server/app-hook-warning-suppression.d.ts +2 -3
  251. package/dist/server/app-hydration-cache-publication.d.ts +3 -4
  252. package/dist/server/app-inline-css-client.d.ts +3 -4
  253. package/dist/server/app-interception-context-header.d.ts +2 -3
  254. package/dist/server/app-layout-param-observation.d.ts +7 -8
  255. package/dist/server/app-metadata-tracing.d.ts +12 -0
  256. package/dist/server/app-metadata-tracing.js +17 -0
  257. package/dist/server/app-middleware.d.ts +15 -7
  258. package/dist/server/app-middleware.js +30 -5
  259. package/dist/server/app-mounted-slots-header.d.ts +2 -3
  260. package/dist/server/app-mounted-slots-header.js +2 -2
  261. package/dist/server/app-optimistic-routing.d.ts +14 -10
  262. package/dist/server/app-optimistic-routing.js +16 -3
  263. package/dist/server/app-page-boundary-render.d.ts +6 -6
  264. package/dist/server/app-page-boundary-render.js +10 -4
  265. package/dist/server/app-page-boundary.d.ts +9 -10
  266. package/dist/server/app-page-boundary.js +2 -1
  267. package/dist/server/app-page-cache-finalizer.d.ts +32 -8
  268. package/dist/server/app-page-cache-finalizer.js +118 -14
  269. package/dist/server/app-page-cache-render.d.ts +8 -5
  270. package/dist/server/app-page-cache-render.js +22 -5
  271. package/dist/server/app-page-cache.d.ts +28 -9
  272. package/dist/server/app-page-cache.js +96 -25
  273. package/dist/server/app-page-dispatch.d.ts +36 -12
  274. package/dist/server/app-page-dispatch.js +188 -63
  275. package/dist/server/app-page-element-builder.d.ts +13 -11
  276. package/dist/server/app-page-element-builder.js +104 -61
  277. package/dist/server/app-page-execution.d.ts +14 -14
  278. package/dist/server/app-page-execution.js +12 -8
  279. package/dist/server/app-page-head.d.ts +19 -16
  280. package/dist/server/app-page-head.js +25 -25
  281. package/dist/server/app-page-http-access-fallback-metadata.d.ts +6 -5
  282. package/dist/server/app-page-http-access-fallback-metadata.js +9 -2
  283. package/dist/server/app-page-method.d.ts +5 -11
  284. package/dist/server/app-page-method.js +2 -9
  285. package/dist/server/app-page-params.d.ts +5 -6
  286. package/dist/server/app-page-ppr-runtime.d.ts +2 -2
  287. package/dist/server/app-page-probe.d.ts +5 -6
  288. package/dist/server/app-page-probe.js +5 -4
  289. package/dist/server/app-page-render-identity.d.ts +4 -5
  290. package/dist/server/app-page-render-observation.d.ts +8 -9
  291. package/dist/server/app-page-render-observation.js +1 -1
  292. package/dist/server/app-page-render.d.ts +42 -6
  293. package/dist/server/app-page-render.js +192 -28
  294. package/dist/server/app-page-request.d.ts +10 -9
  295. package/dist/server/app-page-request.js +16 -12
  296. package/dist/server/app-page-response.d.ts +20 -9
  297. package/dist/server/app-page-response.js +31 -13
  298. package/dist/server/app-page-route-wiring.d.ts +15 -15
  299. package/dist/server/app-page-route-wiring.js +31 -24
  300. package/dist/server/app-page-search-params-observation.d.ts +26 -5
  301. package/dist/server/app-page-search-params-observation.js +42 -6
  302. package/dist/server/app-page-segment-plan.d.ts +2 -3
  303. package/dist/server/app-page-segment-state.d.ts +11 -12
  304. package/dist/server/app-page-stream.d.ts +27 -11
  305. package/dist/server/app-page-stream.js +35 -6
  306. package/dist/server/app-page-tracing.d.ts +33 -0
  307. package/dist/server/app-page-tracing.js +49 -0
  308. package/dist/server/app-pages-bridge.d.ts +6 -6
  309. package/dist/server/app-pages-bridge.js +19 -4
  310. package/dist/server/app-post-middleware-context.d.ts +2 -3
  311. package/dist/server/app-ppr-fallback-shell-render.d.ts +3 -4
  312. package/dist/server/app-ppr-fallback-shell-render.js +3 -2
  313. package/dist/server/app-ppr-fallback-shell.d.ts +6 -7
  314. package/dist/server/app-prerender-endpoints.d.ts +5 -5
  315. package/dist/server/app-prerender-endpoints.js +26 -12
  316. package/dist/server/app-prerender-static-params.d.ts +15 -7
  317. package/dist/server/app-prerender-static-params.js +33 -11
  318. package/dist/server/app-render-dependency.d.ts +14 -13
  319. package/dist/server/app-render-dependency.js +5 -1
  320. package/dist/server/app-request-context.d.ts +3 -4
  321. package/dist/server/app-request-stage-context.d.ts +5 -0
  322. package/dist/server/app-request-stage-context.js +11 -0
  323. package/dist/server/app-request-stage-dispatch.d.ts +25 -0
  324. package/dist/server/app-request-stage-dispatch.js +54 -0
  325. package/dist/server/app-request-stage-independent-entry.d.ts +8 -0
  326. package/dist/server/app-request-stage-independent-entry.js +115 -0
  327. package/dist/server/app-response-header-provenance.d.ts +13 -7
  328. package/dist/server/app-response-header-provenance.js +34 -1
  329. package/dist/server/app-response-stage-entry.d.ts +9 -0
  330. package/dist/server/app-response-stage-entry.js +87 -0
  331. package/dist/server/app-route-handler-cache.d.ts +2 -3
  332. package/dist/server/app-route-handler-cache.js +46 -34
  333. package/dist/server/app-route-handler-dispatch.d.ts +3 -3
  334. package/dist/server/app-route-handler-dispatch.js +75 -57
  335. package/dist/server/app-route-handler-execution.d.ts +18 -13
  336. package/dist/server/app-route-handler-execution.js +189 -25
  337. package/dist/server/app-route-handler-middleware-context.d.ts +8 -0
  338. package/dist/server/app-route-handler-middleware-context.js +15 -0
  339. package/dist/server/app-route-handler-policy.d.ts +22 -10
  340. package/dist/server/app-route-handler-policy.js +19 -4
  341. package/dist/server/app-route-handler-response.d.ts +9 -10
  342. package/dist/server/app-route-handler-response.js +2 -0
  343. package/dist/server/app-route-handler-runtime.d.ts +9 -10
  344. package/dist/server/app-route-handler-runtime.js +20 -16
  345. package/dist/server/app-route-module-loader.d.ts +6 -7
  346. package/dist/server/app-route-request-built-ins.d.ts +3 -4
  347. package/dist/server/app-route-tree-prefetch.d.ts +6 -7
  348. package/dist/server/app-route-tree-prefetch.js +2 -1
  349. package/dist/server/app-router-entry.d.ts +2 -0
  350. package/dist/server/app-router-entry.js +76 -12
  351. package/dist/server/app-rsc-cache-busting.d.ts +47 -22
  352. package/dist/server/app-rsc-cache-busting.js +80 -18
  353. package/dist/server/app-rsc-combined-handler.d.ts +9 -0
  354. package/dist/server/app-rsc-combined-handler.js +11 -0
  355. package/dist/server/app-rsc-embedded-chunks.d.ts +6 -7
  356. package/dist/server/app-rsc-error-handler.d.ts +12 -6
  357. package/dist/server/app-rsc-error-handler.js +15 -6
  358. package/dist/server/app-rsc-errors.d.ts +12 -9
  359. package/dist/server/app-rsc-errors.js +15 -13
  360. package/dist/server/app-rsc-handler.d.ts +33 -6
  361. package/dist/server/app-rsc-handler.js +498 -83
  362. package/dist/server/app-rsc-redirect-flight.d.ts +4 -5
  363. package/dist/server/app-rsc-render-mode.d.ts +8 -9
  364. package/dist/server/app-rsc-request-normalization.d.ts +3 -3
  365. package/dist/server/app-rsc-request-normalization.js +2 -1
  366. package/dist/server/app-rsc-response-finalizer.d.ts +8 -5
  367. package/dist/server/app-rsc-response-finalizer.js +24 -7
  368. package/dist/server/app-rsc-response-stage.d.ts +6 -0
  369. package/dist/server/app-rsc-response-stage.js +251 -0
  370. package/dist/server/app-rsc-route-matching.d.ts +4 -4
  371. package/dist/server/app-rsc-route-matching.js +4 -2
  372. package/dist/server/app-rsc-state-fingerprint.d.ts +3 -4
  373. package/dist/server/app-rsc-vary.d.ts +16 -0
  374. package/dist/server/app-rsc-vary.js +31 -0
  375. package/dist/server/app-segment-config.d.ts +120 -6
  376. package/dist/server/app-segment-config.js +264 -12
  377. package/dist/server/app-server-action-execution.d.ts +16 -12
  378. package/dist/server/app-server-action-execution.js +88 -35
  379. package/dist/server/app-ssr-entry.d.ts +14 -4
  380. package/dist/server/app-ssr-entry.js +64 -17
  381. package/dist/server/app-ssr-error-meta.d.ts +3 -4
  382. package/dist/server/app-ssr-error-meta.js +2 -1
  383. package/dist/server/app-ssr-router-instance.d.ts +2 -3
  384. package/dist/server/app-ssr-search-params-gate.d.ts +20 -0
  385. package/dist/server/app-ssr-search-params-gate.js +54 -0
  386. package/dist/server/app-ssr-stream.d.ts +13 -9
  387. package/dist/server/app-ssr-stream.js +33 -7
  388. package/dist/server/app-static-generation.d.ts +4 -5
  389. package/dist/server/app-visited-response-cache.d.ts +11 -12
  390. package/dist/server/app-visited-response-cache.js +2 -2
  391. package/dist/server/app-worker-stages.d.ts +112 -0
  392. package/dist/server/app-worker-stages.js +105 -0
  393. package/dist/server/artifact-compatibility.d.ts +11 -12
  394. package/dist/server/before-interactive-head.d.ts +2 -3
  395. package/dist/server/bfcache-identity.d.ts +7 -8
  396. package/dist/server/cache-control.d.ts +39 -11
  397. package/dist/server/cache-control.js +104 -7
  398. package/dist/server/cache-headers.d.ts +3 -4
  399. package/dist/server/cache-proof.d.ts +75 -70
  400. package/dist/server/cache-proof.js +9 -1
  401. package/dist/server/cacheability-limits.d.ts +8 -0
  402. package/dist/server/cacheability-limits.js +9 -0
  403. package/dist/server/cacheability-manifest.d.ts +68 -0
  404. package/dist/server/cacheability-manifest.js +241 -0
  405. package/dist/server/cacheability-request.d.ts +49 -0
  406. package/dist/server/cacheability-request.js +559 -0
  407. package/dist/server/client-reuse-manifest.d.ts +17 -18
  408. package/dist/server/client-reuse-manifest.js +2 -2
  409. package/dist/server/client-trace-metadata.d.ts +9 -6
  410. package/dist/server/client-trace-metadata.js +27 -15
  411. package/dist/server/cloudflare-workers-tracing.d.ts +1 -0
  412. package/dist/server/cloudflare-workers-tracing.js +8 -0
  413. package/dist/server/config-headers.d.ts +19 -5
  414. package/dist/server/config-headers.js +39 -5
  415. package/dist/server/cookie-utils.d.ts +2 -3
  416. package/dist/server/csp.d.ts +5 -6
  417. package/dist/server/default-global-error-module.d.ts +2 -3
  418. package/dist/server/default-global-not-found-module.d.ts +2 -3
  419. package/dist/server/default-not-found-module.d.ts +2 -3
  420. package/dist/server/defer-until-stream-consumed.d.ts +2 -3
  421. package/dist/server/defer-until-stream-consumed.js +2 -1
  422. package/dist/server/dev-initial-server-error.d.ts +3 -4
  423. package/dist/server/dev-initial-server-error.js +2 -1
  424. package/dist/server/dev-lockfile.d.ts +7 -8
  425. package/dist/server/dev-lockfile.js +4 -1
  426. package/dist/server/dev-module-runner.d.ts +2 -3
  427. package/dist/server/dev-origin-check.d.ts +5 -6
  428. package/dist/server/dev-route-files.d.ts +2 -3
  429. package/dist/server/dev-server.d.ts +4 -5
  430. package/dist/server/dev-server.js +130 -61
  431. package/dist/server/dev-stack-sourcemap.d.ts +7 -7
  432. package/dist/server/dev-stack-sourcemap.js +1 -1
  433. package/dist/server/document-initial-head.d.ts +3 -4
  434. package/dist/server/edge-api-runtime.d.ts +4 -5
  435. package/dist/server/fetch-handler.d.ts +3 -2
  436. package/dist/server/fetch-handler.js +3 -18
  437. package/dist/server/file-based-metadata.d.ts +2 -3
  438. package/dist/server/framework-tracer.d.ts +46 -0
  439. package/dist/server/framework-tracer.js +125 -0
  440. package/dist/server/fully-buffered-response.d.ts +11 -0
  441. package/dist/server/fully-buffered-response.js +19 -0
  442. package/dist/server/headers.d.ts +62 -56
  443. package/dist/server/headers.js +33 -20
  444. package/dist/server/html.d.ts +6 -27
  445. package/dist/server/html.js +16 -1
  446. package/dist/server/http-conditional.d.ts +5 -6
  447. package/dist/server/http-date.d.ts +2 -3
  448. package/dist/server/http-error-responses.d.ts +9 -10
  449. package/dist/server/http-range.d.ts +4 -5
  450. package/dist/server/hybrid-route-priority.d.ts +4 -5
  451. package/dist/server/image-optimization.d.ts +20 -21
  452. package/dist/server/implicit-tags.d.ts +3 -4
  453. package/dist/server/instrumentation-runtime.d.ts +17 -21
  454. package/dist/server/instrumentation-runtime.js +26 -8
  455. package/dist/server/instrumentation.d.ts +26 -30
  456. package/dist/server/instrumentation.js +18 -23
  457. package/dist/server/isr-cache.d.ts +28 -27
  458. package/dist/server/isr-cache.js +18 -70
  459. package/dist/server/isr-decision.d.ts +4 -4
  460. package/dist/server/metadata-route-build-data.d.ts +4 -5
  461. package/dist/server/metadata-route-cache-policy.d.ts +2 -3
  462. package/dist/server/metadata-route-response.d.ts +7 -7
  463. package/dist/server/metadata-route-response.js +68 -2
  464. package/dist/server/metadata-routes.d.ts +18 -19
  465. package/dist/server/middleware-matcher-pattern.d.ts +6 -7
  466. package/dist/server/middleware-matcher.d.ts +13 -6
  467. package/dist/server/middleware-matcher.js +22 -1
  468. package/dist/server/middleware-path-to-regexp.d.ts +6 -7
  469. package/dist/server/middleware-path-to-regexp.js +11 -9
  470. package/dist/server/middleware-response-headers.d.ts +3 -4
  471. package/dist/server/middleware-runtime.d.ts +13 -8
  472. package/dist/server/middleware-runtime.js +54 -10
  473. package/dist/server/middleware.d.ts +5 -5
  474. package/dist/server/multi-stage.d.ts +141 -0
  475. package/dist/server/multi-stage.js +8 -0
  476. package/dist/server/navigation-planner.d.ts +26 -26
  477. package/dist/server/navigation-trace.d.ts +11 -12
  478. package/dist/server/next-error-digest.d.ts +4 -5
  479. package/dist/server/normalize-path.d.ts +5 -6
  480. package/dist/server/normalize-path.js +1 -1
  481. package/dist/server/open-redirect.d.ts +2 -3
  482. package/dist/server/opentelemetry-api.d.ts +59 -0
  483. package/dist/server/opentelemetry-api.js +53 -0
  484. package/dist/server/opentelemetry-tracing.d.ts +5 -0
  485. package/dist/server/opentelemetry-tracing.js +83 -0
  486. package/dist/server/operation-token.d.ts +11 -12
  487. package/dist/server/otel-tracer-extension.d.ts +7 -9
  488. package/dist/server/otel-tracer-extension.js +37 -36
  489. package/dist/server/pages-api-route.d.ts +5 -4
  490. package/dist/server/pages-api-route.js +21 -8
  491. package/dist/server/pages-asset-tags.d.ts +6 -6
  492. package/dist/server/pages-asset-tags.js +37 -2
  493. package/dist/server/pages-body-parser-config.d.ts +4 -5
  494. package/dist/server/pages-body-parser-config.js +4 -4
  495. package/dist/server/pages-client-assets.d.ts +11 -5
  496. package/dist/server/pages-data-route.d.ts +11 -12
  497. package/dist/server/pages-data-route.js +1 -1
  498. package/dist/server/pages-default-404.d.ts +3 -4
  499. package/dist/server/pages-dev-hydration.d.ts +9 -4
  500. package/dist/server/pages-dev-hydration.js +19 -7
  501. package/dist/server/pages-dev-module-url.d.ts +3 -4
  502. package/dist/server/pages-dev-stylesheets.d.ts +5 -6
  503. package/dist/server/pages-document-asset-props.d.ts +6 -7
  504. package/dist/server/pages-document-initial-props.d.ts +5 -5
  505. package/dist/server/pages-document-initial-props.js +4 -2
  506. package/dist/server/pages-execution-tracing.d.ts +40 -0
  507. package/dist/server/pages-execution-tracing.js +80 -0
  508. package/dist/server/pages-get-initial-props.d.ts +9 -10
  509. package/dist/server/pages-i18n.d.ts +8 -8
  510. package/dist/server/pages-i18n.js +3 -2
  511. package/dist/server/pages-media-type.d.ts +4 -5
  512. package/dist/server/pages-node-compat.d.ts +11 -10
  513. package/dist/server/pages-node-compat.js +12 -4
  514. package/dist/server/pages-page-data.d.ts +18 -19
  515. package/dist/server/pages-page-data.js +11 -10
  516. package/dist/server/pages-page-handler.d.ts +7 -6
  517. package/dist/server/pages-page-handler.js +98 -47
  518. package/dist/server/pages-page-method.d.ts +2 -3
  519. package/dist/server/pages-page-response.d.ts +14 -10
  520. package/dist/server/pages-page-response.js +49 -31
  521. package/dist/server/pages-preview.d.ts +10 -11
  522. package/dist/server/pages-readiness.d.ts +2 -3
  523. package/dist/server/pages-request-pipeline.d.ts +16 -12
  524. package/dist/server/pages-request-pipeline.js +69 -28
  525. package/dist/server/pages-request-stage-entry.d.ts +23 -0
  526. package/dist/server/pages-request-stage-entry.js +314 -0
  527. package/dist/server/pages-response-stage-entry.d.ts +11 -0
  528. package/dist/server/pages-response-stage-entry.js +106 -0
  529. package/dist/server/pages-response-stage.d.ts +31 -0
  530. package/dist/server/pages-response-stage.js +49 -0
  531. package/dist/server/pages-revalidate.d.ts +3 -4
  532. package/dist/server/pages-revalidate.js +9 -4
  533. package/dist/server/pages-route-data-kind.d.ts +18 -0
  534. package/dist/server/pages-route-data-kind.js +11 -0
  535. package/dist/server/pages-router-entry.d.ts +1 -25
  536. package/dist/server/pages-router-entry.js +48 -114
  537. package/dist/server/pages-serializable-props.d.ts +3 -4
  538. package/dist/server/pregenerated-concrete-paths.d.ts +9 -7
  539. package/dist/server/pregenerated-concrete-paths.js +12 -6
  540. package/dist/server/prerender-cache-life-header.d.ts +3 -4
  541. package/dist/server/prerender-manifest.d.ts +11 -11
  542. package/dist/server/prerender-manifest.js +6 -3
  543. package/dist/server/prerender-route-params.d.ts +16 -9
  544. package/dist/server/prerender-route-params.js +18 -2
  545. package/dist/server/prerender-work-unit-setup.d.ts +4 -4
  546. package/dist/server/prerender-work-unit-setup.js +37 -14
  547. package/dist/server/prod-server.d.ts +12 -9
  548. package/dist/server/prod-server.js +129 -36
  549. package/dist/server/proxy-trust.d.ts +5 -6
  550. package/dist/server/request-log.d.ts +3 -4
  551. package/dist/server/request-pipeline.d.ts +17 -21
  552. package/dist/server/request-pipeline.js +8 -10
  553. package/dist/server/request-stage.d.ts +5 -0
  554. package/dist/server/request-stage.js +7 -0
  555. package/dist/server/request-tracing.d.ts +22 -0
  556. package/dist/server/request-tracing.js +180 -0
  557. package/dist/server/response-stage-cacheability.d.ts +37 -0
  558. package/dist/server/response-stage-cacheability.js +55 -0
  559. package/dist/server/response-stage-policy.d.ts +23 -0
  560. package/dist/server/response-stage-policy.js +89 -0
  561. package/dist/server/response-stage.d.ts +5 -0
  562. package/dist/server/response-stage.js +7 -0
  563. package/dist/server/response-start-tracing.d.ts +14 -0
  564. package/dist/server/response-start-tracing.js +80 -0
  565. package/dist/server/revalidation-host.d.ts +2 -3
  566. package/dist/server/revalidation-host.js +2 -1
  567. package/dist/server/revalidation-request.d.ts +8 -0
  568. package/dist/server/revalidation-request.js +37 -0
  569. package/dist/server/rsc-completion-metadata.d.ts +6 -7
  570. package/dist/server/rsc-stream-hints.d.ts +18 -7
  571. package/dist/server/rsc-stream-hints.js +70 -35
  572. package/dist/server/seed-cache.d.ts +2 -3
  573. package/dist/server/seed-cache.js +8 -7
  574. package/dist/server/server-action-not-found.d.ts +5 -6
  575. package/dist/server/server-globals.d.ts +2 -3
  576. package/dist/server/server-globals.js +13 -0
  577. package/dist/server/skip-cache-proof.d.ts +4 -4
  578. package/dist/server/socket-error-backstop.d.ts +5 -6
  579. package/dist/server/socket-error-backstop.js +1 -1
  580. package/dist/server/static-file-cache.d.ts +5 -6
  581. package/dist/server/static-file-cache.js +9 -7
  582. package/dist/server/static-file-signal.d.ts +16 -0
  583. package/dist/server/static-file-signal.js +82 -0
  584. package/dist/server/static-layout-client-reuse-proof.d.ts +4 -5
  585. package/dist/server/streaming-metadata.d.ts +2 -3
  586. package/dist/server/tracer.d.ts +5 -0
  587. package/dist/server/tracer.js +13 -0
  588. package/dist/server/worker-prerender-discovery.d.ts +18 -0
  589. package/dist/server/worker-prerender-discovery.js +55 -0
  590. package/dist/server/worker-revalidation-context.d.ts +2 -3
  591. package/dist/server/worker-revalidation-context.js +5 -5
  592. package/dist/server/worker-stages.d.ts +43 -0
  593. package/dist/server/worker-stages.js +25 -0
  594. package/dist/server/worker-utils.d.ts +5 -6
  595. package/dist/server/worker-utils.js +4 -4
  596. package/dist/server/workers-tracing.d.ts +17 -0
  597. package/dist/server/workers-tracing.js +27 -0
  598. package/dist/shims/amp.d.ts +3 -4
  599. package/dist/shims/app-router-scroll-state.d.ts +9 -10
  600. package/dist/shims/app-router-scroll.d.ts +4 -5
  601. package/dist/shims/app-router-scroll.js +2 -1
  602. package/dist/shims/app.d.ts +5 -6
  603. package/dist/shims/before-interactive-context.d.ts +5 -6
  604. package/dist/shims/cache-callable-runtime.d.ts +44 -4
  605. package/dist/shims/cache-callable-runtime.js +168 -8
  606. package/dist/shims/cache-for-request.d.ts +2 -3
  607. package/dist/shims/cache-handler.d.ts +33 -20
  608. package/dist/shims/cache-handler.js +61 -2
  609. package/dist/shims/cache-request-state.d.ts +28 -29
  610. package/dist/shims/cache-runtime.d.ts +23 -21
  611. package/dist/shims/cache-runtime.js +239 -121
  612. package/dist/shims/cache.d.ts +15 -15
  613. package/dist/shims/cache.js +25 -13
  614. package/dist/shims/cacheability-classification.d.ts +106 -0
  615. package/dist/shims/cacheability-classification.js +161 -0
  616. package/dist/shims/cdn-cache-state.d.ts +13 -0
  617. package/dist/shims/cdn-cache-state.js +23 -0
  618. package/dist/shims/cdn-cache.d.ts +76 -18
  619. package/dist/shims/cdn-cache.js +40 -39
  620. package/dist/shims/client-hook-error.d.ts +3 -4
  621. package/dist/shims/client-locale.d.ts +2 -3
  622. package/dist/shims/client-page-root.d.ts +24 -0
  623. package/dist/shims/client-page-root.js +121 -0
  624. package/dist/shims/compat-router.d.ts +2 -3
  625. package/dist/shims/config.d.ts +3 -4
  626. package/dist/shims/constants.d.ts +73 -74
  627. package/dist/shims/constants.js +1 -1
  628. package/dist/shims/default-not-found.d.ts +2 -3
  629. package/dist/shims/document.d.ts +9 -9
  630. package/dist/shims/dynamic-preload-chunks.d.ts +2 -3
  631. package/dist/shims/dynamic-preload-chunks.js +17 -13
  632. package/dist/shims/dynamic.d.ts +3 -3
  633. package/dist/shims/error-boundary-navigation.d.ts +3 -4
  634. package/dist/shims/error-boundary.d.ts +17 -18
  635. package/dist/shims/error-boundary.js +17 -11
  636. package/dist/shims/error.d.ts +4 -4
  637. package/dist/shims/error.js +1 -1
  638. package/dist/shims/error.react-server.d.ts +3 -4
  639. package/dist/shims/fetch-cache.d.ts +22 -22
  640. package/dist/shims/fetch-cache.js +50 -20
  641. package/dist/shims/font-google-base.d.ts +9 -9
  642. package/dist/shims/font-google-base.js +2 -1
  643. package/dist/shims/font-local.d.ts +3 -3
  644. package/dist/shims/font-local.js +1 -1
  645. package/dist/shims/font-utils.d.ts +14 -15
  646. package/dist/shims/form.d.ts +2 -2
  647. package/dist/shims/form.js +10 -7
  648. package/dist/shims/hash-scroll.d.ts +5 -6
  649. package/dist/shims/head-state.d.ts +4 -5
  650. package/dist/shims/head.d.ts +16 -16
  651. package/dist/shims/head.js +5 -4
  652. package/dist/shims/headers.d.ts +68 -32
  653. package/dist/shims/headers.js +101 -10
  654. package/dist/shims/i18n-context.d.ts +5 -6
  655. package/dist/shims/i18n-state.d.ts +4 -5
  656. package/dist/shims/image-config.d.ts +5 -6
  657. package/dist/shims/image-config.js +2 -0
  658. package/dist/shims/image.d.ts +5 -5
  659. package/dist/shims/image.js +12 -8
  660. package/dist/shims/internal/als-registry.d.ts +4 -5
  661. package/dist/shims/internal/api-utils.d.ts +3 -4
  662. package/dist/shims/internal/app-page-props-cache-key.d.ts +32 -4
  663. package/dist/shims/internal/app-page-props-cache-key.js +53 -1
  664. package/dist/shims/internal/app-prefetch-fetch-queue.d.ts +5 -6
  665. package/dist/shims/internal/app-prefetch-rsc-request.d.ts +13 -0
  666. package/dist/shims/internal/app-prefetch-rsc-request.js +12 -0
  667. package/dist/shims/internal/app-route-detection.d.ts +2 -2
  668. package/dist/shims/internal/app-route-prefetch-policy.d.ts +5 -6
  669. package/dist/shims/internal/app-route-prefetch-policy.js +1 -0
  670. package/dist/shims/internal/app-router-context.d.ts +9 -10
  671. package/dist/shims/internal/cookie-serialize.d.ts +4 -5
  672. package/dist/shims/internal/format-url-object.d.ts +7 -0
  673. package/dist/shims/internal/format-url-object.js +53 -0
  674. package/dist/shims/internal/hybrid-client-route-owner-direct.d.ts +6 -7
  675. package/dist/shims/internal/hybrid-client-route-owner-direct.js +29 -11
  676. package/dist/shims/internal/hybrid-client-route-owner.d.ts +3 -3
  677. package/dist/shims/internal/hybrid-client-route-owner.js +5 -4
  678. package/dist/shims/internal/interpolate-as.d.ts +5 -6
  679. package/dist/shims/internal/interpolate-as.js +4 -2
  680. package/dist/shims/internal/link-status-registry.d.ts +5 -6
  681. package/dist/shims/internal/make-hanging-promise.d.ts +8 -3
  682. package/dist/shims/internal/make-hanging-promise.js +13 -2
  683. package/dist/shims/internal/navigation-untracked.d.ts +2 -3
  684. package/dist/shims/internal/normalize-router-href.d.ts +15 -0
  685. package/dist/shims/internal/normalize-router-href.js +41 -0
  686. package/dist/shims/internal/pages-data-fetch-dedup.d.ts +8 -9
  687. package/dist/shims/internal/pages-data-target.d.ts +8 -6
  688. package/dist/shims/internal/pages-data-target.js +32 -36
  689. package/dist/shims/internal/pages-data-url.d.ts +4 -5
  690. package/dist/shims/internal/pages-data-url.js +2 -1
  691. package/dist/shims/internal/pages-router-accessor.d.ts +3 -4
  692. package/dist/shims/internal/pages-router-components.d.ts +3 -4
  693. package/dist/shims/internal/route-pattern-for-warning.d.ts +5 -6
  694. package/dist/shims/internal/route-pattern-for-warning.js +3 -3
  695. package/dist/shims/internal/router-context.d.ts +2 -3
  696. package/dist/shims/internal/thenable-well-known-properties.d.ts +10 -0
  697. package/dist/shims/internal/thenable-well-known-properties.js +33 -0
  698. package/dist/shims/internal/utils.d.ts +7 -8
  699. package/dist/shims/internal/work-unit-async-storage.d.ts +12 -11
  700. package/dist/shims/layout-segment-context.d.ts +3 -4
  701. package/dist/shims/link-prefetch.d.ts +9 -10
  702. package/dist/shims/link.d.ts +4 -4
  703. package/dist/shims/link.js +67 -116
  704. package/dist/shims/metadata.d.ts +15 -16
  705. package/dist/shims/metadata.js +40 -36
  706. package/dist/shims/navigation-context-accessors.d.ts +9 -0
  707. package/dist/shims/navigation-context-accessors.js +19 -0
  708. package/dist/shims/navigation-context-state.d.ts +27 -18
  709. package/dist/shims/navigation-errors.d.ts +18 -19
  710. package/dist/shims/navigation-state.d.ts +6 -7
  711. package/dist/shims/navigation.d.ts +80 -68
  712. package/dist/shims/navigation.js +45 -17
  713. package/dist/shims/navigation.react-server.d.ts +9 -9
  714. package/dist/shims/navigation.react-server.js +1 -1
  715. package/dist/shims/offline.d.ts +2 -3
  716. package/dist/shims/og.d.ts +2 -2
  717. package/dist/shims/pages-router-runtime.d.ts +4 -5
  718. package/dist/shims/ppr-fallback-shell.d.ts +13 -14
  719. package/dist/shims/readonly-url-search-params.d.ts +2 -3
  720. package/dist/shims/request-context.d.ts +7 -6
  721. package/dist/shims/root-params.d.ts +14 -15
  722. package/dist/shims/router-state.d.ts +5 -6
  723. package/dist/shims/router-state.js +1 -1
  724. package/dist/shims/router.d.ts +22 -21
  725. package/dist/shims/router.js +339 -164
  726. package/dist/shims/script-nonce-context.d.ts +8 -6
  727. package/dist/shims/script-nonce-context.js +15 -6
  728. package/dist/shims/script.d.ts +4 -4
  729. package/dist/shims/script.js +9 -7
  730. package/dist/shims/search-params-gate.d.ts +35 -0
  731. package/dist/shims/search-params-gate.js +32 -0
  732. package/dist/shims/server.d.ts +19 -51
  733. package/dist/shims/server.js +14 -28
  734. package/dist/shims/slot.d.ts +33 -15
  735. package/dist/shims/slot.js +41 -9
  736. package/dist/shims/streamed-icons.d.ts +3 -4
  737. package/dist/shims/thenable-params.d.ts +5 -7
  738. package/dist/shims/thenable-params.js +3 -24
  739. package/dist/shims/unified-request-context.d.ts +34 -31
  740. package/dist/shims/unified-request-context.js +34 -24
  741. package/dist/shims/unrecognized-action-error.d.ts +3 -4
  742. package/dist/shims/url-safety.d.ts +5 -6
  743. package/dist/shims/url-utils.d.ts +18 -12
  744. package/dist/shims/url-utils.js +10 -1
  745. package/dist/shims/use-merged-ref.d.ts +2 -3
  746. package/dist/shims/user-agent.d.ts +31 -0
  747. package/dist/shims/user-agent.js +16 -0
  748. package/dist/shims/web-vitals.d.ts +2 -2
  749. package/dist/typegen.d.ts +3 -4
  750. package/dist/utils/asset-prefix.d.ts +7 -8
  751. package/dist/utils/base-path.d.ts +5 -6
  752. package/dist/utils/built-asset-url.d.ts +2 -3
  753. package/dist/utils/built-asset-url.js +1 -1
  754. package/dist/utils/cache-control-metadata.d.ts +4 -5
  755. package/dist/utils/client-build-manifest.d.ts +6 -7
  756. package/dist/utils/client-build-manifest.js +2 -1
  757. package/dist/utils/client-entry-manifest.d.ts +6 -7
  758. package/dist/utils/client-runtime-metadata.d.ts +8 -3
  759. package/dist/utils/client-runtime-metadata.js +18 -1
  760. package/dist/utils/commonjs-loader.d.ts +4 -5
  761. package/dist/utils/compare.d.ts +2 -3
  762. package/dist/utils/deployment-id.d.ts +6 -7
  763. package/dist/utils/dev-error-recovery-event.d.ts +2 -3
  764. package/dist/utils/dev-stack-sourcemap-endpoint.d.ts +2 -3
  765. package/dist/utils/domain-locale.d.ts +7 -8
  766. package/dist/utils/encode-cache-tag.d.ts +3 -4
  767. package/dist/utils/error-cause.d.ts +2 -3
  768. package/dist/utils/external-url.d.ts +2 -3
  769. package/dist/utils/has-trailing-comma.d.ts +3 -4
  770. package/dist/utils/hash.d.ts +3 -4
  771. package/dist/utils/html-limited-bots.d.ts +3 -4
  772. package/dist/utils/lazy-chunks.d.ts +8 -9
  773. package/dist/utils/lazy-chunks.js +4 -4
  774. package/dist/utils/manifest-paths.d.ts +5 -6
  775. package/dist/utils/mdx-scan.d.ts +11 -4
  776. package/dist/utils/mdx-scan.js +27 -1
  777. package/dist/utils/middleware-request-headers.d.ts +7 -6
  778. package/dist/utils/middleware-request-headers.js +6 -1
  779. package/dist/utils/navigation-signal.d.ts +3 -3
  780. package/dist/utils/navigation-signal.js +16 -1
  781. package/dist/utils/number.d.ts +2 -3
  782. package/dist/utils/package-name.d.ts +3 -4
  783. package/dist/utils/parse-cookie.d.ts +4 -5
  784. package/dist/utils/path.d.ts +8 -9
  785. package/dist/utils/plugin-options.d.ts +2 -3
  786. package/dist/utils/precompressed-variant.d.ts +3 -4
  787. package/dist/utils/prerender-output-paths.d.ts +9 -10
  788. package/dist/utils/prerender-output-paths.js +16 -9
  789. package/dist/utils/project.d.ts +19 -30
  790. package/dist/utils/project.js +20 -29
  791. package/dist/utils/promise.d.ts +2 -3
  792. package/dist/utils/protocol-headers.d.ts +14 -15
  793. package/dist/utils/public-file-path.d.ts +2 -3
  794. package/dist/utils/public-routes.d.ts +2 -3
  795. package/dist/utils/query.d.ts +14 -9
  796. package/dist/utils/query.js +22 -1
  797. package/dist/utils/react-compiler-support.d.ts +6 -7
  798. package/dist/utils/react-version.d.ts +4 -3
  799. package/dist/utils/react-version.js +19 -1
  800. package/dist/utils/record.d.ts +2 -3
  801. package/dist/utils/redirect-digest.d.ts +3 -4
  802. package/dist/utils/regex-safety.d.ts +4 -5
  803. package/dist/utils/regex.d.ts +2 -3
  804. package/dist/utils/safe-json-file.d.ts +2 -3
  805. package/dist/utils/sorted-array.d.ts +2 -3
  806. package/dist/utils/text-stream.d.ts +3 -4
  807. package/dist/utils/vinext-root.d.ts +2 -3
  808. package/dist/utils/virtual-module.d.ts +3 -4
  809. package/dist/utils/vite-cli-invocation.d.ts +21 -0
  810. package/dist/utils/vite-cli-invocation.js +144 -0
  811. package/dist/utils/vite-version.d.ts +5 -6
  812. package/next-package.json +4 -0
  813. package/package.json +55 -6
@@ -1,43 +1,64 @@
1
- import { closeAfterResponse, closeAfterResponseWithBody, createRequestContext, preserveFullyBufferedBodyMetadata, runWithRequestContext } from "../shims/unified-request-context.js";
1
+ import { preserveFullyBufferedBodyMetadata } from "./fully-buffered-response.js";
2
+ import { closeAfterResponse, closeAfterResponseWithBody, createRequestContext, runWithRequestContext } from "../shims/unified-request-context.js";
3
+ import { PRERENDER_REVALIDATE_HEADER, VINEXT_MW_CTX_HEADER, VINEXT_PRERENDER_ROUTE_PARAMS_HEADER, VINEXT_PRERENDER_SPECULATIVE_HEADER, VINEXT_REVALIDATE_HOST_HEADER } from "../utils/protocol-headers.js";
4
+ import { hasMiddlewareRequestHeaderOverrides } from "../utils/middleware-request-headers.js";
5
+ import { requestContextFromRequest } from "../config/request-context.js";
6
+ import { isExternalUrl } from "../utils/external-url.js";
2
7
  import { normalizePathnameForRouteMatchStrict } from "../routing/utils.js";
3
8
  import { addBasePathToPathname, hasBasePath, stripBasePath } from "../utils/base-path.js";
4
- import { requestContextFromRequest } from "../config/request-context.js";
9
+ import { patternToNextFormat } from "../routing/route-validation.js";
5
10
  import { getRequestExecutionContext } from "../shims/request-context.js";
6
- import { VINEXT_MW_CTX_HEADER, VINEXT_PRERENDER_ROUTE_PARAMS_HEADER, VINEXT_PRERENDER_SPECULATIVE_HEADER, VINEXT_REVALIDATE_HOST_HEADER } from "../utils/protocol-headers.js";
7
- import { ACTION_REVALIDATED_HEADER, FLIGHT_HEADERS } from "./headers.js";
11
+ import "./app-rsc-vary.js";
12
+ import { ACTION_REVALIDATED_HEADER, FLIGHT_HEADERS, VINEXT_PARAMS_HEADER, VINEXT_RENDERED_PATH_AND_SEARCH_HEADER } from "./headers.js";
8
13
  import { isInterceptionMatchedUrlPath, normalizePath } from "./normalize-path.js";
9
- import { isExternalUrl } from "../utils/external-url.js";
10
14
  import { badRequestResponse, notFoundResponse } from "./http-error-responses.js";
11
15
  import { cloneRequestWithHeaders, cloneRequestWithUrl, filterInternalHeaders, normalizeTrailingSlash, resolvePublicFileRoute } from "./request-pipeline.js";
12
16
  import { normalizeDefaultLocalePathname } from "./pages-i18n.js";
13
- import { NEVER_CACHE_CONTROL, applyCdnResponseHeaders } from "./cache-control.js";
14
- import { isOnDemandRevalidateRequest } from "./isr-cache.js";
15
- import { getHeadersContext, headersContextFromRequest, runWithHeadersContext } from "../shims/headers.js";
16
- import { ensureFetchPatch, setCurrentFetchSoftTags } from "../shims/fetch-cache.js";
17
+ import { getCdnCacheAdapter } from "../shims/cdn-cache.js";
18
+ import { markRouteCacheabilityDynamic, preserveRouteCacheabilityResponsePolicy } from "../shims/cacheability-classification.js";
19
+ import { NEVER_CACHE_CONTROL, applyCdnResponseHeaders, captureCdnResponsePolicyOverrides, isCdnResponsePolicyHeader, reconcileCdnResponseHeadersAfterOuterPolicy } from "./cache-control.js";
20
+ import { isOnDemandRevalidateRequest } from "./revalidation-request.js";
21
+ import { getDraftModeCookieHeader, getEffectiveRequestCookieHeader, getHeadersContext, hasEffectiveRequestCookieChanges, headersContextFromRequest, isDraftModeEnabled, isDraftModeRequest, runWithHeadersContext } from "../shims/headers.js";
17
22
  import { mergeRewriteQuery } from "../utils/query.js";
18
23
  import { getScriptNonceFromHeaderSources } from "./csp.js";
19
24
  import { buildNextDataNotFoundResponse, normalizePagesDataRequest } from "./pages-data-route.js";
25
+ import { traceFindPageComponents } from "./pages-execution-tracing.js";
20
26
  import { DEFAULT_DEVICE_SIZES, DEFAULT_IMAGE_SIZES, isImageOptimizationPath, resolveDevImageRedirect } from "./image-optimization.js";
21
- import { VINEXT_RSC_CACHE_BUSTING_SEARCH_PARAM, createRscRedirectLocation, hasRscCacheBustingSearchParam, resolveInvalidRscCacheBustingRequest, stripRscCacheBustingSearchParam, stripRscSuffix } from "./app-rsc-cache-busting.js";
27
+ import { parseCacheabilityManifest } from "./cacheability-manifest.js";
28
+ import { getRenderedConcreteUrlPathsForRoute } from "./pregenerated-concrete-paths.js";
29
+ import { VINEXT_RSC_CACHE_BUSTING_SEARCH_PARAM, canonicalizeLoadingShellRscRequestHeaders, canonicalizePrewarmableRscRequestHeaders, createCanonicalRscRequestUrl, createRscRedirectLocation, createRscRequestUrl, hasRscCacheBustingSearchParam, resolveInvalidRscCacheBustingRequest, stripRscCacheBustingSearchParam, stripRscSuffix } from "./app-rsc-cache-busting.js";
22
30
  import { mergeMiddlewareResponseHeaders } from "./middleware-response-headers.js";
31
+ import { consumeResponseStageLinkProvenance, copyLinkHeaderProvenance } from "./app-response-header-provenance.js";
23
32
  import "./app-page-response.js";
24
33
  import { parseNextHttpErrorDigest } from "./next-error-digest.js";
34
+ import { traceAppPageRender } from "./app-page-tracing.js";
35
+ import { setFrameworkRequestRoute, traceFrameworkRequest } from "./request-tracing.js";
25
36
  import { matchPrerenderRouteParamsPayload, readTrustedPrerenderRouteParams, serializePrerenderRouteParamsHeader } from "./prerender-route-params.js";
26
37
  import { buildPageCacheTags } from "./implicit-tags.js";
27
- import { getRenderedConcreteUrlPathsForRoute } from "./pregenerated-concrete-paths.js";
28
- import { pickRootParams, setRootParams } from "../shims/root-params.js";
29
- import { flattenErrorCauses } from "../utils/error-cause.js";
30
38
  import { createServerActionNotFoundResponse, getServerActionNotFoundMessage } from "./server-action-not-found.js";
31
39
  import { buildPostMwRequestContext } from "./app-post-middleware-context.js";
40
+ import { pickRootParams, setRootParams } from "../shims/root-params.js";
32
41
  import { createRouteTreePrefetchResponse, isRouteTreePrefetchRequest } from "./app-route-tree-prefetch.js";
33
- import { applyAppRscConfigHeaders, finalizeAppRscResponse } from "./app-rsc-response-finalizer.js";
42
+ import { createSharedAppPageCacheIdentity, isStaticCandidateAppPageDispatch, prepareSharedAppPageDispatch, withoutAppPageDispatchQuery } from "./app-worker-stages.js";
43
+ import { flattenErrorCauses } from "../utils/error-cause.js";
44
+ import { applyAppRscConfigHeaders, finalizeAppRscResponse, markAppRscResponseConfigHeadersApplied } from "./app-rsc-response-finalizer.js";
34
45
  import { normalizeRscRequest } from "./app-rsc-request-normalization.js";
46
+ import { hasPagesPreviewCookie } from "./pages-response-stage.js";
35
47
  import { runWithPrerenderWorkUnit } from "./prerender-work-unit-setup.js";
48
+ import { consumePagesResponseStagePolicyOwner, withoutResponseStageVary } from "./response-stage-policy.js";
36
49
  //#region src/server/app-rsc-handler.ts
37
- const STATIC_METADATA_CONFIG_HEADER_OVERRIDES = /* @__PURE__ */ new Set(["cache-control"]);
38
50
  const HAS_CONFIG_HEADERS = process.env.__VINEXT_HAS_CONFIG_HEADERS !== "false";
39
51
  const HAS_CONFIG_REDIRECTS = process.env.__VINEXT_HAS_CONFIG_REDIRECTS !== "false";
40
52
  const HAS_CONFIG_REWRITES = process.env.__VINEXT_HAS_CONFIG_REWRITES !== "false";
53
+ function ruleUsesUnkeyedRequestCondition(rule) {
54
+ return [...rule.has ?? [], ...rule.missing ?? []].some((condition) => condition.type === "header" || condition.type === "cookie" || condition.type === "host");
55
+ }
56
+ function markConditionalRewriteCacheability(rewrite) {
57
+ if (ruleUsesUnkeyedRequestCondition(rewrite)) markRouteCacheabilityDynamic("next.config rewrite depends on request headers, cookies, or hostnames");
58
+ }
59
+ function markConditionalRedirectCacheability(redirect) {
60
+ if (ruleUsesUnkeyedRequestCondition(redirect)) markRouteCacheabilityDynamic("next.config redirect depends on request headers, cookies, or hostnames");
61
+ }
41
62
  function haveSameRequestCookies(first, second) {
42
63
  if (first.size !== second.size) return false;
43
64
  for (const [name, value] of first) if (second.get(name) !== value) return false;
@@ -56,10 +77,45 @@ function haveSamePageParams(first, second) {
56
77
  }
57
78
  return true;
58
79
  }
59
- function applyMiddlewareContextToResponse(response, middlewareContext) {
80
+ function rewriteCachePathname(sourcePathname, resolvedPathname) {
81
+ return `${sourcePathname}?__vinext_rewrite=${encodeURIComponent(resolvedPathname)}`;
82
+ }
83
+ function requestOptsOutOfWorkerResponseStage(request, options, scriptNonce, allowInternalRscDocumentFallback) {
84
+ if (request.method !== "GET" && request.method !== "HEAD") return true;
85
+ if (allowInternalRscDocumentFallback || scriptNonce !== void 0) return true;
86
+ if (isDraftModeRequest(request, options.draftModeSecret) || isDraftModeEnabled()) return true;
87
+ if (isOnDemandRevalidateRequest(request.headers.get("x-prerender-revalidate"))) return true;
88
+ if (request.headers.has("x-vinext-prerender-route-params")) return true;
89
+ return false;
90
+ }
91
+ let parsedCacheabilityRequestProjection;
92
+ function readCacheabilityRequestProjection(options) {
93
+ const raw = options.cacheabilityRequestProjection;
94
+ if (!raw || !options.buildId) return null;
95
+ if (parsedCacheabilityRequestProjection?.raw !== raw || parsedCacheabilityRequestProjection.buildId !== options.buildId) parsedCacheabilityRequestProjection = {
96
+ buildId: options.buildId,
97
+ manifest: parseCacheabilityManifest(raw, options.buildId),
98
+ raw
99
+ };
100
+ return parsedCacheabilityRequestProjection.manifest;
101
+ }
102
+ function adapterUsesQueryFreeCacheIdentity() {
103
+ const adapter = getCdnCacheAdapter();
104
+ return adapter.requiresCompletedResponseAdmission === true && adapter.responseStageCacheIdentity === "query-free";
105
+ }
106
+ function hasUrlParserDotSegment(pathname) {
107
+ return pathname.split("/").some((segment) => {
108
+ const decodedDots = segment.replaceAll(/%2e/gi, ".");
109
+ return decodedDots === "." || decodedDots === "..";
110
+ });
111
+ }
112
+ function applyMiddlewareContextToResponse(response, middlewareContext, appendToPostConfigLink = false) {
60
113
  if (!middlewareContext.headers && middlewareContext.status == null) return response;
61
114
  const headers = new Headers(response.headers);
115
+ const responseLink = appendToPostConfigLink ? headers.get("link") : null;
62
116
  mergeMiddlewareResponseHeaders(headers, middlewareContext.headers);
117
+ const middlewareLink = middlewareContext.headers?.get("link");
118
+ if (responseLink && middlewareLink) headers.set("link", `${middlewareLink}, ${responseLink}`);
63
119
  return preserveFullyBufferedBodyMetadata(response, new Response(response.body, {
64
120
  status: middlewareContext.status ?? response.status,
65
121
  statusText: response.statusText,
@@ -89,11 +145,11 @@ function redirectDestinationWithBasePath(destination, basePath, hadBasePath) {
89
145
  if (!basePath || !hadBasePath || isExternalUrl(destination) || hasBasePath(destination, basePath)) return destination;
90
146
  return basePath + destination;
91
147
  }
92
- async function applyRewrite(options, cleanPathname) {
148
+ async function applyRewrite(options, cleanPathname, recordCacheability = true) {
93
149
  if (!HAS_CONFIG_REWRITES || !options.rewrites.length) return null;
94
150
  const sourcePathname = options.paramsPathname ?? cleanPathname;
95
151
  const configMatchers = await import("../config/config-matchers.js");
96
- const rewritten = configMatchers.matchRewrite(sourcePathname, options.rewrites, options.requestContext, options.basePathState, options.paramsPathname);
152
+ const rewritten = configMatchers.matchRewrite(sourcePathname, options.rewrites, options.requestContext, options.basePathState, options.paramsPathname, recordCacheability ? markConditionalRewriteCacheability : void 0);
97
153
  if (!rewritten) return null;
98
154
  if (isExternalUrl(rewritten)) {
99
155
  const validationResponse = await options.validateExternalRewriteRequest();
@@ -123,7 +179,8 @@ async function applyConfigHeadersToMiddlewareRedirect(response, options) {
123
179
  configHeaders: options.configHeaders,
124
180
  pathname: options.pathname,
125
181
  requestContext: options.requestContext,
126
- basePathState: options.basePathState
182
+ basePathState: options.basePathState,
183
+ recordCacheability: options.recordCacheability
127
184
  });
128
185
  if (!headers.entries().next().done) {
129
186
  mergeMiddlewareResponseHeaders(headers, response.headers);
@@ -148,7 +205,7 @@ function requestWithoutRscSuffix(request) {
148
205
  url.pathname = pathname;
149
206
  return cloneRequestWithUrl(request, url.toString());
150
207
  }
151
- function markInvalidInterceptionIdResponseUncacheable(response) {
208
+ function markUnverifiedInterceptionResponseUncacheable(response) {
152
209
  const applyNoStore = (headers) => {
153
210
  applyCdnResponseHeaders(headers, { cacheControl: NEVER_CACHE_CONTROL });
154
211
  };
@@ -166,7 +223,7 @@ function markInvalidInterceptionIdResponseUncacheable(response) {
166
223
  }
167
224
  return markedResponse;
168
225
  }
169
- async function handleAppRscRequest(options, request, preMiddlewareRequestContext, middlewareContext, isDataRequest, isMiddlewareDataRequest, pagesDataRequest, dispatchInternalRequest, allowInternalRscDocumentFallback, markInterceptionIdRejected) {
226
+ async function handleAppRscRequest(options, request, preMiddlewareRequestContext, middlewareContext, isDataRequest, isMiddlewareDataRequest, pagesDataRequest, dispatchInternalRequest, allowInternalRscDocumentFallback, dispatchResponseStage, responseStageProbeMode = null, setInterceptionResponseUncacheable = () => {}) {
170
227
  const handlerStart = process.env.NODE_ENV !== "production" ? performance.now() : 0;
171
228
  if (process.env.NODE_ENV !== "production") {
172
229
  const originBlock = options.validateDevRequestOrigin?.(request);
@@ -181,10 +238,26 @@ async function handleAppRscRequest(options, request, preMiddlewareRequestContext
181
238
  ].some((rule) => rule.basePath === false);
182
239
  const normalized = normalizeRscRequest(request, options.basePath, canHandleOutsideBasePath);
183
240
  if (normalized instanceof Response) {
184
- if (request.headers.has("X-Vinext-Interception-Id")) markInterceptionIdRejected();
241
+ if (request.headers.has("X-Vinext-Interception-Context") || request.headers.has("X-Vinext-Interception-Id")) setInterceptionResponseUncacheable(true);
185
242
  return normalized;
186
243
  }
187
244
  const { url, isRscRequest, interceptionContextHeader, interceptionIdHeader, mountedSlotsHeader, renderMode, clientReuseManifest, hadBasePath } = normalized;
245
+ setFrameworkRequestRoute(void 0, isRscRequest);
246
+ const hasRawInterceptionContext = isRscRequest && request.headers.has("X-Vinext-Interception-Context");
247
+ if (hasRawInterceptionContext) setInterceptionResponseUncacheable(true);
248
+ let interceptionSourcePathname = null;
249
+ if (isRscRequest && interceptionContextHeader !== null) try {
250
+ if (!isInterceptionMatchedUrlPath(interceptionContextHeader)) throw new Error("Invalid interception source pathname");
251
+ const decodedInterceptionSourcePathname = normalizePathnameForRouteMatchStrict(interceptionContextHeader);
252
+ if (/[\t\n\r]/.test(decodedInterceptionSourcePathname)) throw new Error("Interception source contains a stripped URL character");
253
+ if (hasUrlParserDotSegment(decodedInterceptionSourcePathname)) throw new Error("Interception source contains a URL dot segment");
254
+ interceptionSourcePathname = normalizePath(decodedInterceptionSourcePathname);
255
+ if (interceptionSourcePathname !== decodedInterceptionSourcePathname) throw new Error("Non-canonical interception source pathname");
256
+ } catch {
257
+ options.clearRequestContext();
258
+ setInterceptionResponseUncacheable(true);
259
+ return badRequestResponse();
260
+ }
188
261
  const { requestCleanPathname } = normalized;
189
262
  let { pathname, cleanPathname } = normalized;
190
263
  let resolvedUrl = cleanPathname + url.search;
@@ -197,8 +270,8 @@ async function handleAppRscRequest(options, request, preMiddlewareRequestContext
197
270
  };
198
271
  let cleanPathnameIsRequestPathname = true;
199
272
  const matchCleanPathname = () => cleanPathnameIsRequestPathname && options.matchRequestRoute ? options.matchRequestRoute(requestCleanPathname) : options.matchRoute(cleanPathname);
200
- if (interceptionIdHeader !== null && (!isRscRequest || interceptionContextHeader === null || !options.hasInterceptionId(interceptionIdHeader))) {
201
- markInterceptionIdRejected();
273
+ if (interceptionIdHeader !== null && (!isRscRequest || interceptionContextHeader === null || request.method !== "GET" && request.method !== "HEAD" || !options.hasInterceptionId(interceptionIdHeader))) {
274
+ setInterceptionResponseUncacheable(true);
202
275
  return badRequestResponse();
203
276
  }
204
277
  if (interceptionIdHeader !== null) {
@@ -208,11 +281,17 @@ async function handleAppRscRequest(options, request, preMiddlewareRequestContext
208
281
  });
209
282
  if (selectorCacheBustingRedirect) return selectorCacheBustingRedirect;
210
283
  }
284
+ const provesConcreteInterceptionSource = (sourceMatch) => {
285
+ if (sourceMatch === null) return false;
286
+ if (sourceMatch.interceptionSourceIsConcrete !== void 0) return sourceMatch.interceptionSourceIsConcrete;
287
+ return interceptionSourcePathname !== null && options.matchRoute(interceptionSourcePathname)?.route === sourceMatch.route;
288
+ };
289
+ if (provesConcreteInterceptionSource(hadBasePath && hasRawInterceptionContext && interceptionContextHeader !== null ? options.matchInterceptRoute?.(requestCleanPathname, interceptionContextHeader, interceptionIdHeader) ?? null : null)) setInterceptionResponseUncacheable(false);
211
290
  if (pathname === "/__vinext/prerender/static-params" || pathname === "/__vinext/prerender/pages-static-paths" || pathname === "/__vinext/prerender/metadata-routes") {
212
291
  const { handleAppPrerenderEndpoint } = await import("./app-prerender-endpoints.js");
213
292
  const prerenderEndpointResponse = await handleAppPrerenderEndpoint(request, {
214
293
  isPrerenderEnabled() {
215
- return process.env.VINEXT_PRERENDER === "1";
294
+ return process.env.VINEXT_PRERENDER === "1" || getRequestExecutionContext()?.isPrerenderPathDiscovery === true;
216
295
  },
217
296
  getMetadataRoutePaths: options.getPrerenderMetadataRoutePaths,
218
297
  loadPagesRoutes: options.loadPrerenderPagesRoutes,
@@ -227,7 +306,7 @@ async function handleAppRscRequest(options, request, preMiddlewareRequestContext
227
306
  const matchPathname = (p) => normalizeDefaultLocalePathname(p, options.i18nConfig, { hostname: url.hostname });
228
307
  const redirectPathname = matchPathname(requestCleanPathname);
229
308
  const configMatchers = HAS_CONFIG_REDIRECTS && options.configRedirects.length ? await import("../config/config-matchers.js") : null;
230
- const redirect = configMatchers ? configMatchers.matchRedirect(redirectPathname, options.configRedirects, preMiddlewareRequestContext, basePathState) : null;
309
+ const redirect = configMatchers ? configMatchers.matchRedirect(redirectPathname, options.configRedirects, preMiddlewareRequestContext, basePathState, dispatchResponseStage ? void 0 : markConditionalRedirectCacheability) : null;
231
310
  if (configMatchers && redirect) {
232
311
  const destination = configMatchers.sanitizeDestination(redirectDestinationWithBasePath(redirect.destination, options.basePath, hadBasePath));
233
312
  const location = isRscRequest && request.headers.get("RSC") === "1" ? await createRscRedirectLocation(destination, request) : configMatchers.preserveRedirectDestinationQuery(destination, url.search);
@@ -267,12 +346,14 @@ async function handleAppRscRequest(options, request, preMiddlewareRequestContext
267
346
  request: userlandRequest,
268
347
  validateExternalRewriteRequest: () => validateClaimedOutsideBasePathRsc(true)
269
348
  });
349
+ if (!dispatchResponseStage && middlewareResult.pathnameEligible) markRouteCacheabilityDynamic(middlewareResult.matched ? "middleware matched this request" : "middleware is eligible for this pathname");
270
350
  if (middlewareResult.kind === "response") {
271
351
  if (request.body && !request.body.locked) request.body.cancel().catch(() => {});
272
352
  return applyConfigHeadersToMiddlewareRedirect(middlewareResult.response, {
273
353
  basePathState,
274
354
  configHeaders: options.configHeaders,
275
355
  pathname: matchPathname(requestCleanPathname),
356
+ recordCacheability: dispatchResponseStage === void 0,
276
357
  requestContext: preMiddlewareRequestContext
277
358
  });
278
359
  }
@@ -284,6 +365,158 @@ async function handleAppRscRequest(options, request, preMiddlewareRequestContext
284
365
  resolvedUrl = cleanPathname + url.search;
285
366
  }
286
367
  const scriptNonce = getScriptNonceFromHeaderSources(request.headers, middlewareContext.headers);
368
+ const hasMiddlewareCookieOverlay = hasEffectiveRequestCookieChanges(request.headers.get("cookie"));
369
+ const middlewareCookieOverlay = hasMiddlewareCookieOverlay ? getEffectiveRequestCookieHeader() ?? "" : null;
370
+ const draftModeCookie = dispatchResponseStage || options.renderResponseStageLocally ? getDraftModeCookieHeader() : null;
371
+ const responseStageCacheability = (resolvedRouteUrl) => ({
372
+ policyHeaders: null,
373
+ probeMode: responseStageProbeMode,
374
+ resolvedRoutePathname: pathnameForResolvedUrl(resolvedRouteUrl)
375
+ });
376
+ let responseStagePolicyPromise;
377
+ const loadResponseStagePolicy = () => responseStagePolicyPromise ??= options.configHeaders.length ? import("./config-headers.js").then(({ resolveResponseStageCachePolicy }) => withoutResponseStageVary(resolveResponseStageCachePolicy({
378
+ basePathState,
379
+ configHeaders: options.configHeaders,
380
+ pathname: matchPathname(requestCleanPathname),
381
+ requestContext: preMiddlewareRequestContext
382
+ }))) : Promise.resolve(null);
383
+ let canUseSharedWorkerResponseStage = draftModeCookie === null && !hasMiddlewareCookieOverlay && !hasMiddlewareRequestHeaderOverrides(middlewareContext.requestHeaders ?? middlewareContext.headers) && !requestOptsOutOfWorkerResponseStage(request, options, scriptNonce, allowInternalRscDocumentFallback);
384
+ const isOnDemandRevalidate = isOnDemandRevalidateRequest(request.headers.get(PRERENDER_REVALIDATE_HEADER));
385
+ const transportedResponseStage = dispatchResponseStage ? async (stageRequest, props) => {
386
+ const responseStagePolicy = await loadResponseStagePolicy();
387
+ const cache = responseStageProbeMode || isOnDemandRevalidate || (props.kind === "app-page" || props.kind === "app-route-handler") && (props.bypassInterceptionContextCache || props.forceDynamic === true && responseStagePolicy === null) ? "bypass" : canUseSharedWorkerResponseStage ? "shared" : "bypass";
388
+ let dispatchRequest = props.kind === "app-page" ? prepareSharedAppPageDispatch(stageRequest, cache) : stageRequest;
389
+ let canonicalRsc = null;
390
+ if (cache === "shared" && props.kind === "app-page" && props.isRscRequest && props.matchKind === "request" && props.interceptionContext === null && props.interceptionId === null && props.mountedSlotsHeader === null) {
391
+ const headers = new Headers(dispatchRequest.headers);
392
+ if (props.renderMode === "navigation" ? canonicalizePrewarmableRscRequestHeaders(headers) : props.renderMode === "prefetch-loading-shell" && props.canUseCanonicalLoadingShell ? canonicalizeLoadingShellRscRequestHeaders(headers) : false) {
393
+ canonicalRsc = {
394
+ headers,
395
+ navigation: props.renderMode === "navigation"
396
+ };
397
+ dispatchRequest = cloneRequestWithHeaders(dispatchRequest, headers);
398
+ }
399
+ }
400
+ let stageProps = {
401
+ ...props,
402
+ cacheability: {
403
+ ...props.cacheability,
404
+ policyHeaders: responseStagePolicy
405
+ }
406
+ };
407
+ if (cache === "shared" && responseStagePolicy === null && stageProps.kind === "app-page") {
408
+ const projection = readCacheabilityRequestProjection(options);
409
+ if (projection && isStaticCandidateAppPageDispatch(projection, dispatchRequest, stageProps)) {
410
+ const queryFree = withoutAppPageDispatchQuery(dispatchRequest.url, stageProps);
411
+ dispatchRequest = cloneRequestWithUrl(dispatchRequest, queryFree.url);
412
+ stageProps = queryFree.props;
413
+ }
414
+ }
415
+ if (canonicalRsc) {
416
+ const rscPath = canonicalRsc.navigation ? createCanonicalRscRequestUrl(dispatchRequest.url) : await createRscRequestUrl(dispatchRequest.url, canonicalRsc.headers);
417
+ dispatchRequest = cloneRequestWithUrl(dispatchRequest, new URL(rscPath, dispatchRequest.url).toString());
418
+ }
419
+ const cacheIdentity = cache === "shared" && responseStagePolicy === null && stageProps.kind === "app-page" && stageProps.matchKind !== "interception" && stageProps.interceptionContext === null && stageProps.interceptionId === null && stageProps.mountedSlotsHeader === null && adapterUsesQueryFreeCacheIdentity() ? createSharedAppPageCacheIdentity(dispatchRequest, stageProps) : void 0;
420
+ let response = await dispatchResponseStage(dispatchRequest, stageProps, cacheIdentity ? {
421
+ cache,
422
+ cacheIdentity
423
+ } : { cache });
424
+ if (stageRequest.method.toUpperCase() === "HEAD" && response.body) {
425
+ await response.body.cancel();
426
+ response = new Response(null, {
427
+ headers: response.headers,
428
+ status: response.status,
429
+ statusText: response.statusText
430
+ });
431
+ }
432
+ if (props.kind !== "app-page" || !props.isRscRequest) return response;
433
+ const headers = new Headers(response.headers);
434
+ if (Object.keys(props.params).length > 0) headers.set(VINEXT_PARAMS_HEADER, encodeURIComponent(JSON.stringify(props.params)));
435
+ else headers.delete(VINEXT_PARAMS_HEADER);
436
+ headers.set(VINEXT_RENDERED_PATH_AND_SEARCH_HEADER, encodeURIComponent(props.resolvedUrl));
437
+ return preserveFullyBufferedBodyMetadata(response, new Response(response.body, {
438
+ headers,
439
+ status: response.status,
440
+ statusText: response.statusText
441
+ }));
442
+ } : void 0;
443
+ const responseStageRequest = (stageRequest = request) => {
444
+ const activeHeaders = getHeadersContext()?.headers;
445
+ if (!activeHeaders) return stageRequest;
446
+ return cloneRequestWithHeaders(stageRequest, new Headers(activeHeaders));
447
+ };
448
+ const renderMetadataRouteIfMatched = async () => {
449
+ if (!filesystemRouteEligible || (options.isMetadataRoute ? !options.isMetadataRoute(cleanPathname) : !options.handleMetadataRouteRequest)) return null;
450
+ const metadataRoutePathname = cleanPathnameIsRequestPathname ? requestCleanPathname : cleanPathname;
451
+ const metadataResponseStage = transportedResponseStage ?? options.renderResponseStageLocally;
452
+ if (metadataResponseStage) {
453
+ const response = await metadataResponseStage(responseStageRequest(), {
454
+ kind: "app-metadata",
455
+ buildId: options.buildId,
456
+ cacheability: responseStageCacheability(resolvedUrl),
457
+ canonicalPathname,
458
+ cleanPathname,
459
+ draftModeCookie,
460
+ isRscRequest,
461
+ middlewareCookieOverlay,
462
+ mountedSlotsHeader,
463
+ protocolVersion: 10,
464
+ requestOrigin: url.origin,
465
+ renderMode,
466
+ resolvedUrl,
467
+ routePathname: metadataRoutePathname,
468
+ scriptNonce: scriptNonce ?? null
469
+ });
470
+ if (response.headers.get("x-vinext-app-metadata-stage-no-match") === "1") {
471
+ await response.body?.cancel();
472
+ return null;
473
+ }
474
+ return response;
475
+ }
476
+ return options.handleMetadataRouteRequest?.(cleanPathname, metadataRoutePathname) ?? null;
477
+ };
478
+ const applyConfigHeadersToResponseStage = async (response, preserveExistingPolicy = false) => {
479
+ const headers = new Headers(response.headers);
480
+ copyLinkHeaderProvenance(response.headers, headers);
481
+ await applyAppRscConfigHeaders(headers, request, {
482
+ basePath: options.basePath,
483
+ configHeaders: options.configHeaders,
484
+ i18nConfig: options.i18nConfig,
485
+ middlewareHeaders: middlewareContext.headers,
486
+ overwriteExisting: preserveExistingPolicy ? /* @__PURE__ */ new Set() : isCdnResponsePolicyHeader,
487
+ recordCacheability: dispatchResponseStage === void 0,
488
+ requestContext: preMiddlewareRequestContext
489
+ });
490
+ return preserveFullyBufferedBodyMetadata(response, new Response(response.body, {
491
+ headers,
492
+ status: response.status,
493
+ statusText: response.statusText
494
+ }));
495
+ };
496
+ let preHandlerResponseHeadersPromise;
497
+ const loadPreHandlerResponseHeaders = () => preHandlerResponseHeadersPromise ??= (async () => {
498
+ const headers = new Headers();
499
+ await applyAppRscConfigHeaders(headers, request, {
500
+ basePath: options.basePath,
501
+ configHeaders: options.configHeaders,
502
+ i18nConfig: options.i18nConfig,
503
+ overwriteExisting: isCdnResponsePolicyHeader,
504
+ recordCacheability: false,
505
+ requestContext: preMiddlewareRequestContext
506
+ });
507
+ mergeMiddlewareResponseHeaders(headers, middlewareContext.headers);
508
+ return headers;
509
+ })();
510
+ let outerResponsePolicyPromise;
511
+ const loadOuterResponsePolicy = () => outerResponsePolicyPromise ??= Promise.all([loadPreHandlerResponseHeaders(), loadResponseStagePolicy()]).then(([headers, responseStagePolicy]) => captureCdnResponsePolicyOverrides(headers, new Headers(responseStagePolicy ?? [])));
512
+ const composeResponseStageResponse = async (response) => {
513
+ const transportedLink = consumeResponseStageLinkProvenance(response);
514
+ response = transportedLink.response;
515
+ response = await applyConfigHeadersToResponseStage(response, Boolean(dispatchResponseStage || options.renderResponseStageLocally));
516
+ response = applyMiddlewareContextToResponse(response, middlewareContext, transportedLink.appendToPostConfigLink);
517
+ reconcileCdnResponseHeadersAfterOuterPolicy(response.headers, await loadOuterResponsePolicy());
518
+ return markAppRscResponseConfigHeadersApplied(response);
519
+ };
287
520
  const postMiddlewareRequestContext = buildPostMwRequestContext(userlandRequest);
288
521
  filesystemRouteEligible ||= didMiddlewareRewrite;
289
522
  for (const rewrite of options.configRewrites.beforeFiles) {
@@ -295,7 +528,7 @@ async function handleAppRscRequest(options, request, preMiddlewareRequestContext
295
528
  paramsPathname: matchPathname(cleanPathnameIsRequestPathname ? requestCleanPathname : cleanPathname),
296
529
  rewrites: [rewrite],
297
530
  validateExternalRewriteRequest: () => validateClaimedOutsideBasePathRsc(true)
298
- }, matchPathname(cleanPathname));
531
+ }, matchPathname(cleanPathname), dispatchResponseStage === void 0);
299
532
  if (beforeFilesRewrite instanceof Response) return beforeFilesRewrite;
300
533
  if (beforeFilesRewrite) {
301
534
  resolvedUrl = mergeRewriteQuery(resolvedUrl, beforeFilesRewrite);
@@ -322,7 +555,7 @@ async function handleAppRscRequest(options, request, preMiddlewareRequestContext
322
555
  paramsPathname: matchPathname(cleanPathnameIsRequestPathname ? requestCleanPathname : cleanPathname),
323
556
  rewrites: [rewrite],
324
557
  validateExternalRewriteRequest: () => validateClaimedOutsideBasePathRsc(true)
325
- }, matchPathname(cleanPathname));
558
+ }, matchPathname(cleanPathname), dispatchResponseStage === void 0);
326
559
  if (rewritten instanceof Response) return rewritten;
327
560
  if (!rewritten) continue;
328
561
  resolvedUrl = mergeRewriteQuery(resolvedUrl, rewritten);
@@ -341,7 +574,7 @@ async function handleAppRscRequest(options, request, preMiddlewareRequestContext
341
574
  paramsPathname: matchPathname(cleanPathnameIsRequestPathname ? requestCleanPathname : cleanPathname),
342
575
  rewrites: [rewrite],
343
576
  validateExternalRewriteRequest: () => validateClaimedOutsideBasePathRsc(true)
344
- }, matchPathname(cleanPathname));
577
+ }, matchPathname(cleanPathname), dispatchResponseStage === void 0);
345
578
  if (rewritten instanceof Response) return rewritten;
346
579
  if (!rewritten) continue;
347
580
  resolvedUrl = mergeRewriteQuery(resolvedUrl, rewritten);
@@ -360,20 +593,8 @@ async function handleAppRscRequest(options, request, preMiddlewareRequestContext
360
593
  if (!imageRedirect) return new Response("Invalid image optimization parameters", { status: 400 });
361
594
  return Response.redirect(new URL(imageRedirect, url.origin).href, 302);
362
595
  }
363
- if (filesystemRouteEligible && options.handleMetadataRouteRequest) {
364
- const metadataRouteResponse = await options.handleMetadataRouteRequest(cleanPathname);
365
- if (metadataRouteResponse && HAS_CONFIG_HEADERS && options.configHeaders.length) {
366
- const { applyConfigHeadersToResponse } = await import("./config-headers.js");
367
- applyConfigHeadersToResponse(metadataRouteResponse.headers, {
368
- basePathState,
369
- configHeaders: options.configHeaders,
370
- overwriteExisting: STATIC_METADATA_CONFIG_HEADER_OVERRIDES,
371
- pathname: matchPathname(cleanPathnameIsRequestPathname ? requestCleanPathname : cleanPathname),
372
- requestContext: preMiddlewareRequestContext
373
- });
374
- }
375
- if (metadataRouteResponse) return applyMiddlewareContextToResponse(metadataRouteResponse, middlewareContext);
376
- }
596
+ const metadataRouteResponse = await renderMetadataRouteIfMatched();
597
+ if (metadataRouteResponse) return composeResponseStageResponse(metadataRouteResponse);
377
598
  const publicFileResponse = filesystemRouteEligible ? resolvePublicFileRoute({
378
599
  cleanPathname,
379
600
  middlewareContext,
@@ -396,21 +617,22 @@ async function handleAppRscRequest(options, request, preMiddlewareRequestContext
396
617
  });
397
618
  const directPreActionMatch = filesystemRouteEligible ? matchCleanPathname() : null;
398
619
  const preActionRoutePathname = cleanPathnameIsRequestPathname ? requestCleanPathname : cleanPathname;
399
- let interceptionSourcePathname = null;
400
- if (filesystemRouteEligible && isRscRequest && interceptionContextHeader !== null) try {
401
- if (!isInterceptionMatchedUrlPath(interceptionContextHeader)) throw new Error("Invalid interception source pathname");
402
- interceptionSourcePathname = normalizePath(normalizePathnameForRouteMatchStrict(interceptionContextHeader));
403
- } catch {
620
+ const interceptionSourceMatch = filesystemRouteEligible && interceptionSourcePathname !== null && interceptionContextHeader !== null ? options.matchInterceptRoute?.(preActionRoutePathname, interceptionContextHeader, interceptionIdHeader) ?? null : null;
621
+ const hasVerifiedInterceptionSource = provesConcreteInterceptionSource(interceptionSourceMatch);
622
+ if (interceptionIdHeader !== null && !hasVerifiedInterceptionSource) {
404
623
  options.clearRequestContext();
405
- if (interceptionIdHeader !== null) markInterceptionIdRejected();
406
- return badRequestResponse();
407
- }
408
- const interceptionSourceMatch = interceptionSourcePathname !== null && interceptionContextHeader !== null ? options.matchInterceptRoute?.(preActionRoutePathname, interceptionContextHeader, interceptionIdHeader) ?? null : null;
409
- if (interceptionIdHeader !== null && interceptionSourceMatch === null) {
410
- options.clearRequestContext();
411
- markInterceptionIdRejected();
624
+ setInterceptionResponseUncacheable(true);
412
625
  return badRequestResponse();
413
626
  }
627
+ let bypassInterceptionContextCache = hasRawInterceptionContext && !hasVerifiedInterceptionSource;
628
+ if (interceptionContextHeader !== null) setInterceptionResponseUncacheable(bypassInterceptionContextCache);
629
+ let interceptionCacheProofInvalidated = false;
630
+ const invalidateInterceptionCacheProof = () => {
631
+ if (!hasRawInterceptionContext) return;
632
+ interceptionCacheProofInvalidated = true;
633
+ bypassInterceptionContextCache = true;
634
+ setInterceptionResponseUncacheable(true);
635
+ };
414
636
  if (interceptionSourceMatch !== null && interceptionSourcePathname !== null && runMiddleware && interceptionSourceMatch.route !== directPreActionMatch?.route) {
415
637
  const sourceUrl = new URL(userlandRequest.url);
416
638
  sourceUrl.search = new URL(resolvedUrl, url).search;
@@ -449,6 +671,7 @@ async function handleAppRscRequest(options, request, preMiddlewareRequestContext
449
671
  if (sourceMiddlewareRequest.body && !sourceMiddlewareRequest.bodyUsed && !sourceMiddlewareRequest.body.locked) sourceMiddlewareRequest.body.cancel().catch(() => {});
450
672
  if (sourceRequest !== userlandRequest && sourceRequest.body && !sourceRequest.bodyUsed && !sourceRequest.body.locked) sourceRequest.body.cancel().catch(() => {});
451
673
  }
674
+ if (!dispatchResponseStage && sourceMiddlewareResult.pathnameEligible) markRouteCacheabilityDynamic(sourceMiddlewareResult.matched ? "middleware matched this request" : "middleware is eligible for this pathname");
452
675
  if (sourceMiddlewareResult.kind === "response") {
453
676
  options.clearRequestContext();
454
677
  return sourceMiddlewareResult.response;
@@ -469,7 +692,10 @@ async function handleAppRscRequest(options, request, preMiddlewareRequestContext
469
692
  targetHeadersContext.headers.set(name, value);
470
693
  addedSourceHeader = true;
471
694
  }
472
- if (addedSourceHeader) targetHeadersContext.readonlyHeaders = void 0;
695
+ if (addedSourceHeader) {
696
+ targetHeadersContext.readonlyHeaders = void 0;
697
+ canUseSharedWorkerResponseStage = false;
698
+ }
473
699
  if (sourceMiddlewareResult.rewritten) {
474
700
  const rewrittenSourceMatch = options.matchRoute(sourceMiddlewareResult.cleanPathname);
475
701
  if (sourceMiddlewareResult.search !== sourceUrl.search || rewrittenSourceMatch?.route !== interceptionSourceMatch.route || !haveSamePageParams(rewrittenSourceMatch.params, interceptionSourceMatch.params)) {
@@ -526,6 +752,7 @@ async function handleAppRscRequest(options, request, preMiddlewareRequestContext
526
752
  basePath: options.basePath,
527
753
  configHeaders: options.configHeaders,
528
754
  i18nConfig: options.i18nConfig,
755
+ recordCacheability: dispatchResponseStage === void 0,
529
756
  requestContext: preMiddlewareRequestContext
530
757
  });
531
758
  }
@@ -550,9 +777,54 @@ async function handleAppRscRequest(options, request, preMiddlewareRequestContext
550
777
  let match = preActionMatch;
551
778
  const renderPagesForMatchKind = async (matchKind) => {
552
779
  if (!filesystemRouteEligible) return null;
780
+ let sharedOuterPolicyNeedsReconciliation = false;
781
+ const dispatchPagesResponseStage = dispatchResponseStage ? async (stageRequest, resourceKind, dataKind, hasRequestAwareDocument) => {
782
+ const pagesOnDemandRevalidate = resourceKind === "page" && isOnDemandRevalidateRequest(stageRequest.headers.get("x-prerender-revalidate"));
783
+ const cache = responseStageProbeMode || pagesOnDemandRevalidate || hasPagesPreviewCookie(stageRequest.headers.get("cookie")) || resourceKind === "page" && dataKind === "static" && hasRequestAwareDocument ? "bypass" : canUseSharedWorkerResponseStage ? "shared" : "bypass";
784
+ let response = await dispatchResponseStage(responseStageRequest(stageRequest), {
785
+ kind: "hybrid-pages",
786
+ buildId: options.buildId,
787
+ cacheability: {
788
+ ...responseStageCacheability(resolvedUrl),
789
+ policyHeaders: await loadResponseStagePolicy(),
790
+ ...isDataRequest ? { representation: "pages-data" } : {}
791
+ },
792
+ allowRscDocumentFallback: didMiddlewareRewritePathname || allowInternalRscDocumentFallback,
793
+ appRouteMatch: match ? {
794
+ isDynamic: match.route.isDynamic,
795
+ pattern: match.route.pattern
796
+ } : null,
797
+ canonicalPathname,
798
+ cleanPathname,
799
+ draftModeCookie,
800
+ isDataRequest,
801
+ isRscRequest,
802
+ matchKind,
803
+ middlewareCookieOverlay,
804
+ preHandlerHeaders: cache === "shared" && resourceKind === "page" && dataKind === "static" ? null : [...await loadPreHandlerResponseHeaders()],
805
+ protocolVersion: 10,
806
+ requestOrigin: url.origin,
807
+ resourceKind,
808
+ requestUrl: request.url,
809
+ resolvedUrl,
810
+ scriptNonce: scriptNonce ?? null
811
+ }, { cache });
812
+ const policyOwner = resourceKind === "page" ? consumePagesResponseStagePolicyOwner(response) : {
813
+ owner: null,
814
+ response
815
+ };
816
+ response = policyOwner.response;
817
+ const requestTimePolicyOwner = policyOwner.owner === "request-time" || policyOwner.owner === null && dataKind === "server";
818
+ sharedOuterPolicyNeedsReconciliation = cache === "shared" && resourceKind === "page" && !requestTimePolicyOwner;
819
+ const responseStageHasContentLength = response.headers.has("Content-Length");
820
+ response = await applyConfigHeadersToResponseStage(response, resourceKind === "api" || requestTimePolicyOwner);
821
+ if (!responseStageHasContentLength) response.headers.delete("Content-Length");
822
+ return response;
823
+ } : void 0;
553
824
  const response = !isInterceptionMatch && (match === null || match.route.isDynamic) ? await options.renderPagesFallback?.({
554
825
  appRouteMatch: match ?? null,
555
826
  allowRscDocumentFallback: didMiddlewareRewritePathname || allowInternalRscDocumentFallback,
827
+ dispatchPagesResponseStage,
556
828
  isDataRequest,
557
829
  isRscRequest,
558
830
  matchKind,
@@ -562,14 +834,18 @@ async function handleAppRscRequest(options, request, preMiddlewareRequestContext
562
834
  request,
563
835
  url
564
836
  }) ?? null : null;
565
- if (!response || !pagesDataRequest || resolvedUrl === originalResolvedUrl) return response;
837
+ if (response) preserveRouteCacheabilityResponsePolicy();
838
+ if (!response) return null;
839
+ if (sharedOuterPolicyNeedsReconciliation) reconcileCdnResponseHeadersAfterOuterPolicy(response.headers, await loadOuterResponsePolicy());
840
+ if (!pagesDataRequest || resolvedUrl === originalResolvedUrl) return dispatchPagesResponseStage ? markAppRscResponseConfigHeadersApplied(response) : response;
566
841
  const headers = new Headers(response.headers);
567
842
  headers.set("x-nextjs-rewrite", resolvedUrl);
568
- return new Response(response.body, {
843
+ const rewrittenResponse = new Response(response.body, {
569
844
  headers,
570
845
  status: response.status,
571
846
  statusText: response.statusText
572
847
  });
848
+ return dispatchPagesResponseStage ? markAppRscResponseConfigHeadersApplied(rewrittenResponse) : rewrittenResponse;
573
849
  };
574
850
  const staticPagesFallbackResponse = await renderPagesForMatchKind("static");
575
851
  if (staticPagesFallbackResponse) {
@@ -585,15 +861,21 @@ async function handleAppRscRequest(options, request, preMiddlewareRequestContext
585
861
  paramsPathname: matchPathname(cleanPathnameIsRequestPathname ? requestCleanPathname : cleanPathname),
586
862
  rewrites: [rewrite],
587
863
  validateExternalRewriteRequest: () => validateClaimedOutsideBasePathRsc(true)
588
- }, matchPathname(cleanPathname));
589
- if (afterFilesRewrite instanceof Response) return afterFilesRewrite;
864
+ }, matchPathname(cleanPathname), dispatchResponseStage === void 0);
865
+ if (afterFilesRewrite instanceof Response) {
866
+ invalidateInterceptionCacheProof();
867
+ return afterFilesRewrite;
868
+ }
590
869
  if (!afterFilesRewrite) continue;
591
870
  resolvedUrl = mergeRewriteQuery(resolvedUrl, afterFilesRewrite);
592
871
  cleanPathname = pathnameForResolvedUrl(resolvedUrl);
593
872
  cleanPathnameIsRequestPathname = false;
873
+ invalidateInterceptionCacheProof();
594
874
  filesystemRouteEligible = true;
595
875
  const claimedRscCacheBustingRedirect = await validateClaimedOutsideBasePathRsc();
596
876
  if (claimedRscCacheBustingRedirect) return claimedRscCacheBustingRedirect;
877
+ const rewrittenMetadataResponse = await renderMetadataRouteIfMatched();
878
+ if (rewrittenMetadataResponse) return composeResponseStageResponse(rewrittenMetadataResponse);
597
879
  match = matchCleanPathname();
598
880
  const rewrittenStaticPagesResponse = await renderPagesForMatchKind("static");
599
881
  if (rewrittenStaticPagesResponse) {
@@ -621,15 +903,21 @@ async function handleAppRscRequest(options, request, preMiddlewareRequestContext
621
903
  paramsPathname: matchPathname(cleanPathnameIsRequestPathname ? requestCleanPathname : cleanPathname),
622
904
  rewrites: [rewrite],
623
905
  validateExternalRewriteRequest: () => validateClaimedOutsideBasePathRsc(true)
624
- }, matchPathname(cleanPathname));
625
- if (fallbackRewrite instanceof Response) return fallbackRewrite;
906
+ }, matchPathname(cleanPathname), dispatchResponseStage === void 0);
907
+ if (fallbackRewrite instanceof Response) {
908
+ invalidateInterceptionCacheProof();
909
+ return fallbackRewrite;
910
+ }
626
911
  if (!fallbackRewrite) continue;
627
912
  resolvedUrl = mergeRewriteQuery(resolvedUrl, fallbackRewrite);
628
913
  cleanPathname = pathnameForResolvedUrl(resolvedUrl);
629
914
  cleanPathnameIsRequestPathname = false;
915
+ invalidateInterceptionCacheProof();
630
916
  filesystemRouteEligible = true;
631
917
  const claimedRscCacheBustingRedirect = await validateClaimedOutsideBasePathRsc();
632
918
  if (claimedRscCacheBustingRedirect) return claimedRscCacheBustingRedirect;
919
+ const rewrittenMetadataResponse = await renderMetadataRouteIfMatched();
920
+ if (rewrittenMetadataResponse) return composeResponseStageResponse(rewrittenMetadataResponse);
633
921
  match = matchCleanPathname();
634
922
  const rewrittenStaticPagesResponse = await renderPagesForMatchKind("static");
635
923
  if (rewrittenStaticPagesResponse) {
@@ -643,6 +931,18 @@ async function handleAppRscRequest(options, request, preMiddlewareRequestContext
643
931
  }
644
932
  if (match) break;
645
933
  }
934
+ if (interceptionCacheProofInvalidated && interceptionContextHeader !== null) {
935
+ const finalInterceptionTargetPathname = cleanPathnameIsRequestPathname ? requestCleanPathname : cleanPathname;
936
+ const finalInterceptionSourceMatch = filesystemRouteEligible && match !== null ? options.matchInterceptRoute?.(finalInterceptionTargetPathname, interceptionContextHeader, interceptionIdHeader) ?? null : null;
937
+ const hasVerifiedFinalInterceptionSource = hasVerifiedInterceptionSource && interceptionSourceMatch !== null && provesConcreteInterceptionSource(finalInterceptionSourceMatch) && finalInterceptionSourceMatch?.route === interceptionSourceMatch.route && haveSamePageParams(finalInterceptionSourceMatch.params, interceptionSourceMatch.params);
938
+ if (interceptionIdHeader !== null && !hasVerifiedFinalInterceptionSource) {
939
+ options.clearRequestContext();
940
+ setInterceptionResponseUncacheable(true);
941
+ return badRequestResponse();
942
+ }
943
+ bypassInterceptionContextCache = !hasVerifiedFinalInterceptionSource;
944
+ setInterceptionResponseUncacheable(bypassInterceptionContextCache);
945
+ }
646
946
  if (!filesystemRouteEligible) {
647
947
  options.clearRequestContext();
648
948
  const headers = new Headers();
@@ -669,13 +969,31 @@ async function handleAppRscRequest(options, request, preMiddlewareRequestContext
669
969
  options.clearRequestContext();
670
970
  return new Response("", { status: 404 });
671
971
  }
672
- const renderedNotFoundResponse = await options.renderNotFound({
972
+ setFrameworkRequestRoute("/404", isRscRequest);
973
+ const notFoundResponseStage = transportedResponseStage ?? options.renderResponseStageLocally;
974
+ if (notFoundResponseStage) return composeResponseStageResponse(await notFoundResponseStage(responseStageRequest(), {
975
+ kind: "app-not-found",
976
+ buildId: options.buildId,
977
+ cacheability: responseStageCacheability(resolvedUrl),
978
+ canonicalPathname,
979
+ cleanPathname,
980
+ draftModeCookie,
981
+ isRscRequest,
982
+ middlewareCookieOverlay,
983
+ mountedSlotsHeader,
984
+ protocolVersion: 10,
985
+ requestOrigin: url.origin,
986
+ renderMode,
987
+ resolvedUrl,
988
+ scriptNonce: scriptNonce ?? null
989
+ }));
990
+ const renderedNotFoundResponse = await traceAppPageRender("/404", "render", () => options.renderNotFound({
673
991
  isRscRequest,
674
992
  middlewareContext,
675
993
  request,
676
994
  route: null,
677
995
  scriptNonce
678
- });
996
+ }));
679
997
  if (renderedNotFoundResponse) return renderedNotFoundResponse;
680
998
  options.clearRequestContext();
681
999
  const headers = new Headers();
@@ -683,7 +1001,18 @@ async function handleAppRscRequest(options, request, preMiddlewareRequestContext
683
1001
  return notFoundResponse({ headers });
684
1002
  }
685
1003
  const { route, params } = match;
686
- if (options.ensureRouteLoaded) await options.ensureRouteLoaded(route);
1004
+ const requestPathnameDiffersFromCachePath = requestCleanPathname !== cleanPathname;
1005
+ const rawRequestPathnameIsObservable = isInterceptionMatch || route.routeHandler != null || typeof route.__loadRouteHandler === "function";
1006
+ if ((!isInterceptionMatch || requestPathnameDiffersFromCachePath) && options.matchRequestRoute) {
1007
+ const cachePathMatch = options.matchRoute(cleanPathname);
1008
+ if (requestPathnameDiffersFromCachePath && rawRequestPathnameIsObservable || !cachePathMatch || cachePathMatch.route.pattern !== route.pattern || !haveSamePageParams(cachePathMatch.params, params)) {
1009
+ bypassInterceptionContextCache = true;
1010
+ setInterceptionResponseUncacheable(true);
1011
+ }
1012
+ }
1013
+ const cachePathname = cleanPathnameIsRequestPathname ? cleanPathname : rewriteCachePathname(canonicalPathname, cleanPathname);
1014
+ setFrameworkRequestRoute(patternToNextFormat(route.pattern), isRscRequest);
1015
+ if (options.ensureRouteLoaded) await traceFindPageComponents(route.pattern, () => options.ensureRouteLoaded(route));
687
1016
  const resolvedSearchParams = getResolvedSearchParams();
688
1017
  if (isRouteTreePrefetchRequest(request) && !route.routeHandler) {
689
1018
  const response = await createRouteTreePrefetchResponse(route, {
@@ -693,10 +1022,14 @@ async function handleAppRscRequest(options, request, preMiddlewareRequestContext
693
1022
  options.clearRequestContext();
694
1023
  return applyMiddlewareContextToResponse(response, middlewareContext);
695
1024
  }
696
- const prerenderRouteParamsMatch = matchPrerenderRouteParamsPayload(readTrustedPrerenderRouteParams(request), route.pattern, params);
1025
+ const prerenderRouteParamsPayload = readTrustedPrerenderRouteParams(request);
1026
+ const prerenderRouteParamsMatch = matchPrerenderRouteParamsPayload(prerenderRouteParamsPayload, route.pattern, params);
697
1027
  const prerenderRouteParams = prerenderRouteParamsMatch?.params ?? null;
698
1028
  const isPrerenderFallbackShell = prerenderRouteParamsMatch?.kind === "fallback-shell";
699
1029
  const renderParams = prerenderRouteParams ?? params;
1030
+ const responseStageMatchKind = isInterceptionMatch ? "interception" : cleanPathnameIsRequestPathname && options.matchRequestRoute ? "request" : "resolved";
1031
+ const responseStageRoutePathname = isInterceptionMatch ? preActionRoutePathname : cleanPathnameIsRequestPathname ? requestCleanPathname || "/" : cleanPathname || "/";
1032
+ const matchedResponseStage = transportedResponseStage ?? options.renderResponseStageLocally;
700
1033
  let runtimeFallbackShells = [];
701
1034
  if (options.createPprFallbackShells && request.method === "GET" && !isRscRequest && !isPrerenderFallbackShell && route.params) runtimeFallbackShells = options.createPprFallbackShells({
702
1035
  params: route.params,
@@ -711,13 +1044,42 @@ async function handleAppRscRequest(options, request, preMiddlewareRequestContext
711
1044
  const rootParams = pickRootParams(renderParams, route.rootParamNames);
712
1045
  setRootParams(rootParams);
713
1046
  if (route.routeHandler) {
714
- setCurrentFetchSoftTags(buildPageCacheTags(cleanPathname, [], [...route.routeSegments], "route"));
715
1047
  const routeHandlerRequest = isEdgeRouteHandler(route.routeHandler) ? userlandRequest : normalizedUserlandRequest;
716
1048
  const routeHandlerUrl = new URL(routeHandlerRequest.url);
717
1049
  const internalRscValues = isEdgeRouteHandler(route.routeHandler) ? [] : routeHandlerUrl.searchParams.getAll(VINEXT_RSC_CACHE_BUSTING_SEARCH_PARAM);
718
1050
  routeHandlerUrl.search = resolvedSearchParams.toString();
719
1051
  for (const internalRscValue of internalRscValues) routeHandlerUrl.searchParams.append(VINEXT_RSC_CACHE_BUSTING_SEARCH_PARAM, internalRscValue);
1052
+ if (matchedResponseStage) return composeResponseStageResponse(await matchedResponseStage(responseStageRequest(), {
1053
+ kind: "app-route-handler",
1054
+ buildId: options.buildId,
1055
+ cacheability: responseStageCacheability(resolvedUrl),
1056
+ bypassInterceptionContextCache,
1057
+ cachePathname,
1058
+ canUseCanonicalLoadingShell: route.canUseCanonicalLoadingShell === true,
1059
+ canonicalPathname,
1060
+ cleanPathname,
1061
+ draftModeCookie,
1062
+ forceDynamic: route.forceDynamic === true,
1063
+ interceptionContext: interceptionContextHeader,
1064
+ interceptionId: interceptionIdHeader,
1065
+ isRscRequest,
1066
+ matchKind: responseStageMatchKind,
1067
+ middlewareCookieOverlay,
1068
+ mountedSlotsHeader,
1069
+ params,
1070
+ protocolVersion: 10,
1071
+ requestOrigin: url.origin,
1072
+ renderMode,
1073
+ resolvedUrl,
1074
+ routePattern: route.pattern,
1075
+ routePathname: responseStageRoutePathname,
1076
+ scriptNonce: scriptNonce ?? null
1077
+ }));
1078
+ const { setCurrentFetchSoftTags } = await import("../shims/fetch-cache.js");
1079
+ setCurrentFetchSoftTags(buildPageCacheTags(cleanPathname, [], [...route.routeSegments], "route"));
720
1080
  return options.dispatchMatchedRouteHandler({
1081
+ bypassInterceptionContextCache,
1082
+ cachePathname,
721
1083
  cleanPathname,
722
1084
  middlewareContext,
723
1085
  params: route.isDynamic ? renderParams : null,
@@ -726,7 +1088,34 @@ async function handleAppRscRequest(options, request, preMiddlewareRequestContext
726
1088
  searchParams: resolvedSearchParams
727
1089
  });
728
1090
  }
729
- const pageResponse = await options.dispatchMatchedPage({
1091
+ const pageResponse = matchedResponseStage ? await matchedResponseStage(responseStageRequest(), {
1092
+ kind: "app-page",
1093
+ buildId: options.buildId,
1094
+ cacheability: responseStageCacheability(resolvedUrl),
1095
+ bypassInterceptionContextCache,
1096
+ cachePathname,
1097
+ canUseCanonicalLoadingShell: route.canUseCanonicalLoadingShell === true,
1098
+ canonicalPathname,
1099
+ cleanPathname,
1100
+ draftModeCookie,
1101
+ forceDynamic: route.forceDynamic === true,
1102
+ interceptionContext: isRscRequest ? interceptionContextHeader : null,
1103
+ interceptionId: interceptionIdHeader,
1104
+ isRscRequest,
1105
+ matchKind: responseStageMatchKind,
1106
+ middlewareCookieOverlay,
1107
+ mountedSlotsHeader,
1108
+ params,
1109
+ protocolVersion: 10,
1110
+ requestOrigin: url.origin,
1111
+ renderMode,
1112
+ resolvedUrl,
1113
+ routePattern: route.pattern,
1114
+ routePathname: responseStageRoutePathname,
1115
+ scriptNonce: scriptNonce ?? null
1116
+ }).then(composeResponseStageResponse) : await options.dispatchMatchedPage({
1117
+ bypassInterceptionContextCache,
1118
+ cachePathname,
730
1119
  clientReuseManifest,
731
1120
  cleanPathname,
732
1121
  displayPathname: canonicalPathname,
@@ -734,7 +1123,7 @@ async function handleAppRscRequest(options, request, preMiddlewareRequestContext
734
1123
  actionError: normalizedProgressiveActionError,
735
1124
  actionFailed,
736
1125
  handlerStart,
737
- interceptionContext: interceptionContextHeader,
1126
+ interceptionContext: isRscRequest ? interceptionContextHeader : null,
738
1127
  interceptionId: interceptionIdHeader,
739
1128
  interceptionPathname: cleanPathnameIsRequestPathname ? requestCleanPathname : cleanPathname,
740
1129
  isProgressiveActionRender,
@@ -793,10 +1182,9 @@ function applyProgressiveActionSideEffects(response, sideEffects) {
793
1182
  });
794
1183
  }
795
1184
  }
796
- function createAppRscHandler(options) {
797
- return async function appRscHandler(rawRequest, ctx, allowInternalRscDocumentFallback = false) {
798
- options.registerCacheAdapters();
799
- await options.ensureInstrumentation?.();
1185
+ /** Build the request-only handler without retaining the response renderer graph. */
1186
+ function createAppRscRequestHandler(options) {
1187
+ const handleAppRscRequestLifecycle = async (rawRequest, ctx, allowInternalRscDocumentFallback = false, dispatchResponseStage, responseStageProbeMode = null, transportedPrerenderState) => {
800
1188
  const mwCtx = rawRequest.headers.get(VINEXT_MW_CTX_HEADER);
801
1189
  const pagesDataUrl = new URL(rawRequest.url);
802
1190
  const pagesDataInScope = !options.basePath || hasBasePath(pagesDataUrl.pathname, options.basePath);
@@ -806,8 +1194,12 @@ function createAppRscHandler(options) {
806
1194
  if (pagesDataNormalization?.notFoundResponse) return pagesDataNormalization.notFoundResponse;
807
1195
  const isPagesDataRequest = pagesDataNormalization?.isDataReq === true;
808
1196
  const executionContext = isExecutionContextLike(ctx) ? ctx : getRequestExecutionContext() ?? null;
809
- const prerenderRouteParamsPayload = readTrustedPrerenderRouteParams(rawRequest);
810
- const isTrustedSpeculativePrerender = process.env.VINEXT_PRERENDER === "1" && rawRequest.headers.get("x-vinext-prerender-secret") !== null && rawRequest.headers.get("x-vinext-prerender-speculative") === "1";
1197
+ const trustedPrerenderState = transportedPrerenderState !== void 0 ? transportedPrerenderState : process.env.VINEXT_PRERENDER === "1" && rawRequest.headers.get("x-vinext-prerender-secret") !== null ? {
1198
+ routeParams: readTrustedPrerenderRouteParams(rawRequest),
1199
+ speculative: rawRequest.headers.get(VINEXT_PRERENDER_SPECULATIVE_HEADER) === "1"
1200
+ } : null;
1201
+ const prerenderRouteParamsPayload = trustedPrerenderState?.routeParams ?? null;
1202
+ const isTrustedSpeculativePrerender = trustedPrerenderState?.speculative === true;
811
1203
  const filteredHeaders = executionContext?.isInternalPagesRevalidation ? new Headers(rawRequest.headers) : filterInternalHeaders(rawRequest.headers);
812
1204
  filteredHeaders.delete(VINEXT_REVALIDATE_HOST_HEADER);
813
1205
  if (isForwardedActionContext(ctx)) filteredHeaders.set("x-action-forwarded", "1");
@@ -823,14 +1215,18 @@ function createAppRscHandler(options) {
823
1215
  }
824
1216
  const request = cloneRequestWithHeaders(appRequest, filteredHeaders);
825
1217
  const pagesDataRequest = pagesDataNormalization?.isDataReq ? cloneRequestWithHeaders(pagesDataCandidate, filteredHeaders) : null;
1218
+ const headersContext = headersContextFromRequest(request, { draftModeSecret: options.draftModeSecret });
826
1219
  const requestContext = createRequestContext({
827
- headersContext: headersContextFromRequest(request, { draftModeSecret: options.draftModeSecret }),
1220
+ headersContext,
828
1221
  executionContext,
829
1222
  unstableCacheRevalidation: "background"
830
1223
  });
831
- let interceptionIdRejected = false;
1224
+ let interceptionResponseUncacheable = false;
832
1225
  const responsePromise = runWithRequestContext(requestContext, () => runWithPrerenderWorkUnit(async () => {
833
- ensureFetchPatch();
1226
+ if (!dispatchResponseStage) {
1227
+ const { ensureFetchPatch } = await import("../shims/fetch-cache.js");
1228
+ ensureFetchPatch();
1229
+ }
834
1230
  const preMiddlewareRequestContext = requestContextFromRequest(request);
835
1231
  const middlewareContext = {
836
1232
  headers: null,
@@ -839,8 +1235,8 @@ function createAppRscHandler(options) {
839
1235
  };
840
1236
  let response;
841
1237
  try {
842
- response = await handleAppRscRequest(options, request, preMiddlewareRequestContext, middlewareContext, isPagesDataRequest, isPagesDataRequest, pagesDataRequest, (internalRequest) => appRscHandler(internalRequest, ctx, true), allowInternalRscDocumentFallback, () => {
843
- interceptionIdRejected = true;
1238
+ response = await handleAppRscRequest(options, request, preMiddlewareRequestContext, middlewareContext, isPagesDataRequest, isPagesDataRequest, pagesDataRequest, (internalRequest) => appRscHandler(internalRequest, ctx, true, dispatchResponseStage, responseStageProbeMode, trustedPrerenderState, true), allowInternalRscDocumentFallback, dispatchResponseStage, responseStageProbeMode, (uncacheable) => {
1239
+ interceptionResponseUncacheable = uncacheable;
844
1240
  });
845
1241
  } catch (error) {
846
1242
  if (process.env.NODE_ENV !== "production") flattenErrorCauses(error);
@@ -851,10 +1247,14 @@ function createAppRscHandler(options) {
851
1247
  configHeaders: options.configHeaders,
852
1248
  i18nConfig: options.i18nConfig,
853
1249
  middlewareHeaders: middlewareContext.headers,
1250
+ recordCacheability: dispatchResponseStage === void 0,
854
1251
  requestContext: preMiddlewareRequestContext
855
1252
  });
856
- return interceptionIdRejected ? markInvalidInterceptionIdResponseUncacheable(response) : response;
857
- }, { route: () => new URL(request.url).pathname }));
1253
+ return interceptionResponseUncacheable ? markUnverifiedInterceptionResponseUncacheable(response) : response;
1254
+ }, {
1255
+ cacheComponents: options.createPprFallbackShells !== void 0,
1256
+ route: () => new URL(request.url).pathname
1257
+ }));
858
1258
  let response;
859
1259
  try {
860
1260
  response = await responsePromise;
@@ -864,6 +1264,21 @@ function createAppRscHandler(options) {
864
1264
  }
865
1265
  return closeAfterResponseWithBody(response, requestContext);
866
1266
  };
1267
+ const appRscHandler = async function appRscHandler(rawRequest, ctx, allowInternalRscDocumentFallback = false, dispatchResponseStage, responseStageProbeMode = null, transportedPrerenderState, detachedTrace = false) {
1268
+ options.registerCacheAdapters();
1269
+ await options.ensureInstrumentation?.();
1270
+ const traceUrl = new URL(rawRequest.url);
1271
+ return traceFrameworkRequest({
1272
+ callback: () => handleAppRscRequestLifecycle(rawRequest, ctx, allowInternalRscDocumentFallback, dispatchResponseStage, responseStageProbeMode, transportedPrerenderState),
1273
+ detached: detachedTrace,
1274
+ getStatus: (response) => response?.status,
1275
+ headers: rawRequest.headers,
1276
+ isRsc: traceUrl.pathname.endsWith(".rsc") || rawRequest.headers.get("RSC") === "1",
1277
+ method: rawRequest.method,
1278
+ target: traceUrl.pathname + traceUrl.search
1279
+ });
1280
+ };
1281
+ return appRscHandler;
867
1282
  }
868
1283
  //#endregion
869
- export { createAppRscHandler };
1284
+ export { createAppRscRequestHandler };