vinext 1.2.1 → 1.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (509) hide show
  1. package/README.md +12 -9
  2. package/dist/_virtual/_rolldown/runtime.js +1 -1
  3. package/dist/build/action-owner-manifest.d.ts +3 -2
  4. package/dist/build/action-owner-manifest.js +18 -2
  5. package/dist/build/app-page-static-eligibility.d.ts +17 -1
  6. package/dist/build/app-page-static-eligibility.js +80 -13
  7. package/dist/build/clean-output.d.ts +2 -1
  8. package/dist/build/client-build-config.d.ts +77 -6
  9. package/dist/build/client-build-config.js +176 -12
  10. package/dist/build/client-reference-async.d.ts +48 -0
  11. package/dist/build/client-reference-async.js +123 -0
  12. package/dist/build/client-reference-chunks.d.ts +32 -0
  13. package/dist/build/client-reference-chunks.js +111 -0
  14. package/dist/build/client-reference-groups.d.ts +171 -0
  15. package/dist/build/client-reference-groups.js +572 -0
  16. package/dist/build/css-url-assets.d.ts +2 -1
  17. package/dist/build/google-fonts/fallback-metrics.d.ts +2 -1
  18. package/dist/build/google-fonts/find-font-files-in-css.d.ts +1 -0
  19. package/dist/build/google-fonts/find-font-files-in-css.js +17 -4
  20. package/dist/build/google-fonts/font-metadata.d.ts +2 -1
  21. package/dist/build/google-fonts/validate.d.ts +2 -1
  22. package/dist/build/inline-css.d.ts +2 -1
  23. package/dist/build/layout-classification.d.ts +2 -1
  24. package/dist/build/module-dependency-cache.d.ts +33 -1
  25. package/dist/build/module-dependency-cache.js +51 -1
  26. package/dist/build/next-client-runtime-manifests.d.ts +12 -2
  27. package/dist/build/next-client-runtime-manifests.js +19 -4
  28. package/dist/build/nitro-public-files.d.ts +24 -0
  29. package/dist/build/nitro-public-files.js +60 -0
  30. package/dist/build/pages-client-assets-module.js +1 -1
  31. package/dist/build/precompress.d.ts +2 -1
  32. package/dist/build/precompress.js +1 -1
  33. package/dist/build/prerender-paths.d.ts +2 -1
  34. package/dist/build/prerender-paths.js +5 -2
  35. package/dist/build/prerender-phase.d.ts +2 -1
  36. package/dist/build/prerender-server-pool.js +1 -1
  37. package/dist/build/prerender.d.ts +3 -2
  38. package/dist/build/prerender.js +5 -4
  39. package/dist/build/report.d.ts +2 -1
  40. package/dist/build/route-classification-injector.d.ts +2 -1
  41. package/dist/build/route-classification-manifest.d.ts +2 -1
  42. package/dist/build/run-prerender.d.ts +2 -1
  43. package/dist/build/server-actions-encryption-key.d.ts +24 -0
  44. package/dist/build/server-actions-encryption-key.js +101 -0
  45. package/dist/build/ssr-manifest.d.ts +3 -0
  46. package/dist/build/ssr-manifest.js +34 -2
  47. package/dist/build/standalone.d.ts +2 -1
  48. package/dist/cache/cache-adapters-virtual.d.ts +2 -1
  49. package/dist/cache.js +1 -2
  50. package/dist/check.d.ts +2 -1
  51. package/dist/check.js +4 -0
  52. package/dist/cli-args.d.ts +2 -1
  53. package/dist/cli.js +2 -0
  54. package/dist/client/client-redirect-matcher.js +2 -1
  55. package/dist/client/client-redirects.d.ts +4 -3
  56. package/dist/client/client-redirects.js +2 -1
  57. package/dist/client/client-rewrite-params.d.ts +9 -0
  58. package/dist/client/client-rewrite-params.js +20 -0
  59. package/dist/client/client-rewrites.d.ts +2 -1
  60. package/dist/client/dev-error-overlay-store.d.ts +2 -1
  61. package/dist/client/dev-error-overlay.js +2 -1
  62. package/dist/client/index.js +1 -2
  63. package/dist/client/instrumentation-client-state.js +5 -5
  64. package/dist/client/navigation-runtime.d.ts +28 -3
  65. package/dist/client/navigation-runtime.js +42 -11
  66. package/dist/client/pages-router-link-navigation.d.ts +2 -1
  67. package/dist/client/vinext-next-data.d.ts +25 -2
  68. package/dist/client/window-next.d.ts +2 -1
  69. package/dist/config/config-matchers.d.ts +27 -41
  70. package/dist/config/config-matchers.js +293 -270
  71. package/dist/config/config-source.d.ts +34 -0
  72. package/dist/config/config-source.js +141 -0
  73. package/dist/config/dotenv.d.ts +2 -1
  74. package/dist/config/header-params.d.ts +29 -0
  75. package/dist/config/header-params.js +106 -0
  76. package/dist/config/next-config.d.ts +20 -6
  77. package/dist/config/next-config.js +149 -11
  78. package/dist/config/tsconfig-paths.d.ts +2 -1
  79. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/detector.js +23 -0
  80. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/index.js +2 -0
  81. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/lookup.js +25 -0
  82. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/bmp.js +11 -0
  83. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/cur.js +15 -0
  84. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/dds.js +11 -0
  85. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/gif.js +12 -0
  86. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/heif.js +55 -0
  87. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/icns.js +76 -0
  88. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/ico.js +39 -0
  89. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/index.js +46 -0
  90. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/j2c.js +11 -0
  91. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/jp2.js +21 -0
  92. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/jpg.js +71 -0
  93. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/jxl-stream.js +42 -0
  94. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/jxl.js +46 -0
  95. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/ktx.js +19 -0
  96. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/png.js +28 -0
  97. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/pnm.js +54 -0
  98. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/psd.js +11 -0
  99. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/svg.js +79 -0
  100. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/tga.js +15 -0
  101. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/tiff.js +96 -0
  102. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/utils.js +53 -0
  103. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/webp.js +45 -0
  104. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/utils/bit-reader.js +38 -0
  105. package/dist/deps/.pnpm/ua-parser-js@1.0.35/deps/ua-parser-js/src/ua-parser.js +2 -2
  106. package/dist/entries/app-browser-entry.d.ts +34 -6
  107. package/dist/entries/app-browser-entry.js +103 -40
  108. package/dist/entries/app-rsc-entry.d.ts +4 -1
  109. package/dist/entries/app-rsc-entry.js +131 -66
  110. package/dist/entries/app-rsc-manifest.d.ts +12 -1
  111. package/dist/entries/app-rsc-manifest.js +73 -1
  112. package/dist/entries/app-ssr-entry.d.ts +4 -1
  113. package/dist/entries/app-ssr-entry.js +9 -2
  114. package/dist/entries/pages-client-entry.d.ts +1 -0
  115. package/dist/entries/pages-client-entry.js +6 -6
  116. package/dist/entries/pages-entry-helpers.js +1 -2
  117. package/dist/entries/pages-server-entry.d.ts +2 -1
  118. package/dist/entries/pages-server-entry.js +18 -15
  119. package/dist/entries/runtime-entry-module.d.ts +1 -0
  120. package/dist/entries/runtime-entry-module.js +4 -1
  121. package/dist/image/image-adapters-virtual.d.ts +2 -1
  122. package/dist/index.d.ts +11 -0
  123. package/dist/index.js +340 -116
  124. package/dist/init.js +17 -0
  125. package/dist/plugins/client-compile-hints.d.ts +30 -0
  126. package/dist/plugins/client-compile-hints.js +88 -0
  127. package/dist/plugins/client-reference-dedup.d.ts +2 -1
  128. package/dist/plugins/cloudflare-dev-module-urls.d.ts +2 -1
  129. package/dist/plugins/dynamic-preload-metadata.d.ts +3 -1
  130. package/dist/plugins/dynamic-preload-metadata.js +1 -1
  131. package/dist/plugins/environment.d.ts +2 -1
  132. package/dist/plugins/fonts.js +9 -12
  133. package/dist/plugins/ignore-dynamic-requests.d.ts +2 -1
  134. package/dist/plugins/import-meta-url.d.ts +2 -1
  135. package/dist/plugins/og-assets.d.ts +2 -1
  136. package/dist/plugins/og-assets.js +2 -3
  137. package/dist/plugins/optimize-imports.d.ts +27 -3
  138. package/dist/plugins/optimize-imports.js +106 -20
  139. package/dist/plugins/pages-node-externals.d.ts +2 -1
  140. package/dist/plugins/remove-console.d.ts +2 -1
  141. package/dist/plugins/require-condition-resolution.d.ts +2 -1
  142. package/dist/plugins/rsc-client-reference-loaders.d.ts +53 -1
  143. package/dist/plugins/rsc-client-reference-loaders.js +447 -27
  144. package/dist/plugins/rsc-client-shim-excludes.js +2 -0
  145. package/dist/plugins/sass.d.ts +2 -1
  146. package/dist/plugins/strip-server-exports.d.ts +2 -1
  147. package/dist/plugins/styled-jsx.d.ts +2 -1
  148. package/dist/plugins/transform-result.d.ts +2 -1
  149. package/dist/plugins/typeof-window.d.ts +2 -1
  150. package/dist/plugins/use-cache-callable.d.ts +5 -0
  151. package/dist/plugins/use-cache-callable.js +30 -8
  152. package/dist/plugins/worker-image-imports.d.ts +1 -0
  153. package/dist/plugins/worker-image-imports.js +2 -2
  154. package/dist/plugins/worker-use-server.d.ts +2 -1
  155. package/dist/routing/app-route-graph.d.ts +41 -1
  156. package/dist/routing/app-route-graph.js +122 -50
  157. package/dist/routing/browser-route-manifest.d.ts +44 -0
  158. package/dist/routing/browser-route-manifest.js +195 -0
  159. package/dist/routing/hashed-route-patterns.d.ts +4 -0
  160. package/dist/routing/hashed-route-patterns.js +22 -0
  161. package/dist/routing/optimistic-route-trie.d.ts +28 -0
  162. package/dist/routing/optimistic-route-trie.js +102 -0
  163. package/dist/routing/route-matching.d.ts +2 -1
  164. package/dist/routing/route-pattern.d.ts +2 -1
  165. package/dist/routing/route-validation.d.ts +6 -1
  166. package/dist/routing/route-validation.js +26 -10
  167. package/dist/server/accept-encoding.d.ts +2 -1
  168. package/dist/server/app-action-forwarding.d.ts +10 -1
  169. package/dist/server/app-action-forwarding.js +15 -1
  170. package/dist/server/app-bfcache-identity.d.ts +2 -1
  171. package/dist/server/app-browser-action-result.d.ts +2 -1
  172. package/dist/server/app-browser-client-reuse-manifest.d.ts +2 -1
  173. package/dist/server/app-browser-entry.js +175 -64
  174. package/dist/server/app-browser-error.d.ts +5 -2
  175. package/dist/server/app-browser-error.js +7 -2
  176. package/dist/server/app-browser-history-controller.d.ts +2 -1
  177. package/dist/server/app-browser-hydration.d.ts +2 -1
  178. package/dist/server/app-browser-interception-context.d.ts +4 -3
  179. package/dist/server/app-browser-mpa-navigation.d.ts +1 -0
  180. package/dist/server/app-browser-mpa-navigation.js +6 -5
  181. package/dist/server/app-browser-navigation-controller.d.ts +17 -6
  182. package/dist/server/app-browser-navigation-controller.js +103 -36
  183. package/dist/server/app-browser-popstate.d.ts +2 -1
  184. package/dist/server/app-browser-rsc-redirect.d.ts +2 -1
  185. package/dist/server/app-browser-server-action-client.d.ts +2 -1
  186. package/dist/server/app-browser-state.d.ts +2 -2
  187. package/dist/server/app-browser-state.js +1 -1
  188. package/dist/server/app-browser-stream.d.ts +2 -1
  189. package/dist/server/app-browser-visible-commit.d.ts +6 -5
  190. package/dist/server/app-client-reference-manifest.d.ts +31 -0
  191. package/dist/server/app-client-reference-manifest.js +46 -0
  192. package/dist/server/app-client-reference-preloader.d.ts +45 -2
  193. package/dist/server/app-client-reference-preloader.js +48 -10
  194. package/dist/server/app-elements-wire.d.ts +2 -1
  195. package/dist/server/app-elements.d.ts +2 -0
  196. package/dist/server/app-elements.js +3 -1
  197. package/dist/server/app-fallback-renderer.d.ts +9 -2
  198. package/dist/server/app-fallback-renderer.js +6 -2
  199. package/dist/server/app-history-state.d.ts +2 -1
  200. package/dist/server/app-inline-css-client.d.ts +2 -1
  201. package/dist/server/app-layout-param-observation.d.ts +2 -1
  202. package/dist/server/app-metadata-tracing.d.ts +2 -1
  203. package/dist/server/app-middleware.d.ts +6 -0
  204. package/dist/server/app-middleware.js +8 -10
  205. package/dist/server/app-optimistic-routing.d.ts +26 -11
  206. package/dist/server/app-optimistic-routing.js +38 -96
  207. package/dist/server/app-page-boundary-render.d.ts +20 -2
  208. package/dist/server/app-page-boundary-render.js +229 -39
  209. package/dist/server/app-page-boundary.d.ts +34 -5
  210. package/dist/server/app-page-boundary.js +40 -7
  211. package/dist/server/app-page-cache-finalizer.d.ts +2 -1
  212. package/dist/server/app-page-cache-finalizer.js +1 -1
  213. package/dist/server/app-page-cache-render.d.ts +10 -2
  214. package/dist/server/app-page-cache-render.js +15 -2
  215. package/dist/server/app-page-cache.js +2 -2
  216. package/dist/server/app-page-dispatch.d.ts +34 -1
  217. package/dist/server/app-page-dispatch.js +165 -34
  218. package/dist/server/app-page-element-builder.d.ts +17 -1
  219. package/dist/server/app-page-element-builder.js +187 -66
  220. package/dist/server/app-page-execution.d.ts +28 -1
  221. package/dist/server/app-page-execution.js +114 -5
  222. package/dist/server/app-page-head.d.ts +95 -3
  223. package/dist/server/app-page-head.js +307 -152
  224. package/dist/server/app-page-http-access-fallback-metadata.d.ts +48 -2
  225. package/dist/server/app-page-http-access-fallback-metadata.js +76 -1
  226. package/dist/server/app-page-method.d.ts +2 -1
  227. package/dist/server/app-page-probe.d.ts +2 -1
  228. package/dist/server/app-page-render-identity.d.ts +2 -1
  229. package/dist/server/app-page-render.d.ts +7 -1
  230. package/dist/server/app-page-render.js +38 -11
  231. package/dist/server/app-page-request.d.ts +14 -1
  232. package/dist/server/app-page-request.js +1 -1
  233. package/dist/server/app-page-route-wiring.d.ts +52 -2
  234. package/dist/server/app-page-route-wiring.js +197 -47
  235. package/dist/server/app-page-rsc-render-status.d.ts +3 -1
  236. package/dist/server/app-page-rsc-render-status.js +1 -0
  237. package/dist/server/app-page-search-params-observation.d.ts +8 -6
  238. package/dist/server/app-page-search-params-observation.js +16 -11
  239. package/dist/server/app-page-segment-plan.d.ts +2 -1
  240. package/dist/server/app-page-stream.d.ts +38 -1
  241. package/dist/server/app-page-stream.js +24 -4
  242. package/dist/server/app-pages-bridge.d.ts +4 -2
  243. package/dist/server/app-pages-bridge.js +11 -7
  244. package/dist/server/app-ppr-fallback-shell-render.d.ts +2 -1
  245. package/dist/server/app-ppr-fallback-shell.d.ts +2 -1
  246. package/dist/server/app-prerender-endpoints.d.ts +2 -1
  247. package/dist/server/app-prerender-static-params.d.ts +2 -1
  248. package/dist/server/app-prerender-static-params.js +3 -2
  249. package/dist/server/app-render-dependency.d.ts +11 -1
  250. package/dist/server/app-render-dependency.js +65 -6
  251. package/dist/server/app-request-stage-independent-entry.d.ts +2 -1
  252. package/dist/server/app-request-stage-independent-entry.js +2 -2
  253. package/dist/server/app-response-stage-entry.d.ts +2 -1
  254. package/dist/server/app-response-stage-entry.js +3 -3
  255. package/dist/server/app-route-handler-cache.d.ts +2 -1
  256. package/dist/server/app-route-handler-dispatch.d.ts +2 -1
  257. package/dist/server/app-route-handler-dispatch.js +4 -2
  258. package/dist/server/app-route-handler-execution.d.ts +4 -1
  259. package/dist/server/app-route-handler-execution.js +9 -2
  260. package/dist/server/app-route-handler-middleware-context.d.ts +2 -1
  261. package/dist/server/app-route-handler-middleware-context.js +3 -3
  262. package/dist/server/app-route-handler-response.d.ts +4 -2
  263. package/dist/server/app-route-handler-response.js +2 -2
  264. package/dist/server/app-route-handler-runtime.d.ts +4 -1
  265. package/dist/server/app-route-handler-runtime.js +20 -3
  266. package/dist/server/app-route-module-loader.d.ts +18 -1
  267. package/dist/server/app-route-module-loader.js +15 -6
  268. package/dist/server/app-route-tree-prefetch.d.ts +2 -1
  269. package/dist/server/app-route-tree.d.ts +20 -0
  270. package/dist/server/app-route-tree.js +18 -0
  271. package/dist/server/app-router-entry.js +2 -2
  272. package/dist/server/app-rsc-combined-handler.js +8 -1
  273. package/dist/server/app-rsc-error-handler.d.ts +2 -1
  274. package/dist/server/app-rsc-errors.d.ts +9 -1
  275. package/dist/server/app-rsc-errors.js +9 -2
  276. package/dist/server/app-rsc-handler.d.ts +6 -2
  277. package/dist/server/app-rsc-handler.js +152 -140
  278. package/dist/server/app-rsc-response-finalizer.d.ts +7 -1
  279. package/dist/server/app-rsc-response-finalizer.js +4 -1
  280. package/dist/server/app-rsc-response-stage.js +3 -1
  281. package/dist/server/app-rsc-route-matching.d.ts +39 -1
  282. package/dist/server/app-rsc-route-matching.js +25 -1
  283. package/dist/server/app-segment-config.d.ts +2 -1
  284. package/dist/server/app-segment-config.js +1 -14
  285. package/dist/server/app-server-action-execution.d.ts +25 -7
  286. package/dist/server/app-server-action-execution.js +53 -59
  287. package/dist/server/app-ssr-entry.d.ts +12 -0
  288. package/dist/server/app-ssr-entry.js +104 -48
  289. package/dist/server/app-ssr-error-meta.d.ts +2 -1
  290. package/dist/server/app-ssr-search-params-gate.d.ts +2 -1
  291. package/dist/server/app-ssr-stream.d.ts +29 -10
  292. package/dist/server/app-ssr-stream.js +311 -67
  293. package/dist/server/app-static-generation.d.ts +2 -1
  294. package/dist/server/app-streamed-client-references.d.ts +39 -0
  295. package/dist/server/app-streamed-client-references.js +156 -0
  296. package/dist/server/app-visited-response-cache.d.ts +2 -1
  297. package/dist/server/app-worker-stages.d.ts +2 -1
  298. package/dist/server/artifact-compatibility.d.ts +2 -1
  299. package/dist/server/bfcache-identity.d.ts +2 -1
  300. package/dist/server/cache-headers.d.ts +2 -1
  301. package/dist/server/cacheability-request.d.ts +2 -1
  302. package/dist/server/client-reuse-manifest.d.ts +2 -1
  303. package/dist/server/config-headers.d.ts +2 -1
  304. package/dist/server/config-headers.js +12 -3
  305. package/dist/server/csp.d.ts +2 -1
  306. package/dist/server/default-global-not-found-module.d.ts +2 -1
  307. package/dist/server/default-http-access-fallback-modules.d.ts +33 -0
  308. package/dist/server/default-http-access-fallback-modules.js +31 -0
  309. package/dist/server/defer-until-stream-consumed.d.ts +34 -0
  310. package/dist/server/defer-until-stream-consumed.js +154 -21
  311. package/dist/server/dev-lockfile.d.ts +32 -2
  312. package/dist/server/dev-lockfile.js +46 -2
  313. package/dist/server/dev-module-runner.d.ts +2 -1
  314. package/dist/server/dev-server.js +10 -3
  315. package/dist/server/fetch-handler.js +1 -2
  316. package/dist/server/file-based-metadata.d.ts +2 -1
  317. package/dist/server/framework-tracer.d.ts +2 -1
  318. package/dist/server/html.d.ts +1 -0
  319. package/dist/server/html.js +19 -1
  320. package/dist/server/http-conditional.d.ts +2 -1
  321. package/dist/server/http-error-responses.d.ts +2 -1
  322. package/dist/server/implicit-tags.d.ts +2 -1
  323. package/dist/server/isolate-shared-promise.d.ts +10 -0
  324. package/dist/server/isolate-shared-promise.js +33 -0
  325. package/dist/server/isr-cache.js +3 -2
  326. package/dist/server/metadata-route-build-data.d.ts +2 -1
  327. package/dist/server/metadata-route-build-data.js +1 -1
  328. package/dist/server/metadata-route-response.d.ts +2 -1
  329. package/dist/server/metadata-route-response.js +1 -1
  330. package/dist/server/metadata-routes.d.ts +2 -1
  331. package/dist/server/middleware-matcher-pattern.d.ts +0 -1
  332. package/dist/server/middleware-matcher-pattern.js +11 -140
  333. package/dist/server/middleware-matcher.js +5 -6
  334. package/dist/server/middleware-response-headers.d.ts +31 -0
  335. package/dist/server/middleware-response-headers.js +57 -1
  336. package/dist/server/middleware-runtime.d.ts +2 -1
  337. package/dist/server/middleware-runtime.js +26 -13
  338. package/dist/server/navigation-planner.d.ts +2 -2
  339. package/dist/server/navigation-trace.d.ts +2 -1
  340. package/dist/server/next-error-digest.d.ts +2 -1
  341. package/dist/server/nitro-public-files-plugin.d.ts +39 -0
  342. package/dist/server/nitro-public-files-plugin.js +106 -0
  343. package/dist/server/nitro-public-files.d.ts +22 -0
  344. package/dist/server/nitro-public-files.js +39 -0
  345. package/dist/server/opentelemetry-api.d.ts +2 -1
  346. package/dist/server/operation-token.d.ts +2 -1
  347. package/dist/server/pages-api-route.d.ts +2 -1
  348. package/dist/server/pages-asset-tags.d.ts +7 -1
  349. package/dist/server/pages-asset-tags.js +9 -2
  350. package/dist/server/pages-body-parser-config.d.ts +2 -1
  351. package/dist/server/pages-client-assets.d.ts +8 -1
  352. package/dist/server/pages-data-route.d.ts +2 -1
  353. package/dist/server/pages-document-asset-props.d.ts +2 -1
  354. package/dist/server/pages-document-initial-props.d.ts +2 -1
  355. package/dist/server/pages-execution-tracing.d.ts +2 -1
  356. package/dist/server/pages-execution-tracing.js +1 -1
  357. package/dist/server/pages-get-initial-props.d.ts +2 -1
  358. package/dist/server/pages-i18n.d.ts +18 -0
  359. package/dist/server/pages-i18n.js +18 -2
  360. package/dist/server/pages-node-compat.d.ts +5 -3
  361. package/dist/server/pages-node-compat.js +35 -16
  362. package/dist/server/pages-page-data.d.ts +7 -1
  363. package/dist/server/pages-page-data.js +35 -12
  364. package/dist/server/pages-page-handler.d.ts +3 -2
  365. package/dist/server/pages-page-handler.js +16 -7
  366. package/dist/server/pages-page-method.d.ts +2 -1
  367. package/dist/server/pages-page-response.d.ts +2 -1
  368. package/dist/server/pages-preview.d.ts +2 -1
  369. package/dist/server/pages-readiness.d.ts +2 -1
  370. package/dist/server/pages-request-pipeline.d.ts +8 -2
  371. package/dist/server/pages-request-pipeline.js +35 -40
  372. package/dist/server/pages-request-stage-entry.d.ts +2 -1
  373. package/dist/server/pages-request-stage-entry.js +16 -6
  374. package/dist/server/pages-response-stage-entry.d.ts +2 -1
  375. package/dist/server/pages-response-stage-entry.js +1 -1
  376. package/dist/server/pages-revalidate.js +1 -0
  377. package/dist/server/pages-route-data-kind.d.ts +2 -1
  378. package/dist/server/pages-router-entry.js +1 -1
  379. package/dist/server/prerender-cache-life-header.d.ts +2 -1
  380. package/dist/server/prerender-route-params.d.ts +2 -1
  381. package/dist/server/prod-server.d.ts +2 -2
  382. package/dist/server/prod-server.js +80 -36
  383. package/dist/server/proxy-trust.d.ts +6 -0
  384. package/dist/server/proxy-trust.js +12 -6
  385. package/dist/server/request-log.d.ts +2 -1
  386. package/dist/server/request-pipeline.d.ts +5 -0
  387. package/dist/server/request-pipeline.js +12 -1
  388. package/dist/server/request-tracing.d.ts +2 -1
  389. package/dist/server/request-tracing.js +1 -1
  390. package/dist/server/response-start-tracing.js +7 -29
  391. package/dist/server/rsc-render-stream.d.ts +4 -0
  392. package/dist/server/rsc-render-stream.js +25 -0
  393. package/dist/server/seed-cache.d.ts +2 -1
  394. package/dist/server/seed-cache.js +1 -1
  395. package/dist/server/server-reference-loader.js +10 -1
  396. package/dist/server/static-file-cache.d.ts +2 -1
  397. package/dist/server/static-file-cache.js +16 -3
  398. package/dist/server/static-layout-client-reuse-proof.d.ts +2 -1
  399. package/dist/server/worker-revalidation-context.d.ts +2 -1
  400. package/dist/server/worker-stages.d.ts +2 -1
  401. package/dist/server/worker-utils.js +1 -1
  402. package/dist/shims/app.d.ts +2 -1
  403. package/dist/shims/cache-callable-runtime.d.ts +2 -1
  404. package/dist/shims/cache-handler.d.ts +8 -3
  405. package/dist/shims/cache-handler.js +32 -11
  406. package/dist/shims/cache-request-state.d.ts +40 -3
  407. package/dist/shims/cache-request-state.js +70 -5
  408. package/dist/shims/cache-runtime.js +47 -19
  409. package/dist/shims/cache.d.ts +2 -2
  410. package/dist/shims/cache.js +17 -8
  411. package/dist/shims/caught-not-found-boundaries.d.ts +15 -0
  412. package/dist/shims/caught-not-found-boundaries.js +48 -0
  413. package/dist/shims/cdn-purge-routes.d.ts +25 -0
  414. package/dist/shims/cdn-purge-routes.js +77 -0
  415. package/dist/shims/client-locale.js +2 -1
  416. package/dist/shims/client-page-root.d.ts +2 -1
  417. package/dist/shims/config.d.ts +2 -1
  418. package/dist/shims/default-forbidden.d.ts +4 -0
  419. package/dist/shims/default-forbidden.js +18 -0
  420. package/dist/shims/default-not-found.d.ts +0 -5
  421. package/dist/shims/default-not-found.js +5 -41
  422. package/dist/shims/default-unauthorized.d.ts +4 -0
  423. package/dist/shims/default-unauthorized.js +18 -0
  424. package/dist/shims/dynamic.js +17 -4
  425. package/dist/shims/error-boundary.d.ts +39 -3
  426. package/dist/shims/error-boundary.js +31 -16
  427. package/dist/shims/font-google.js +1 -2
  428. package/dist/shims/font-utils.d.ts +3 -2
  429. package/dist/shims/font-utils.js +5 -3
  430. package/dist/shims/form.js +9 -4
  431. package/dist/shims/http-access-error-fallback.d.ts +7 -0
  432. package/dist/shims/http-access-error-fallback.js +47 -0
  433. package/dist/shims/image-props.d.ts +93 -0
  434. package/dist/shims/image-props.js +323 -0
  435. package/dist/shims/image.d.ts +4 -39
  436. package/dist/shims/image.js +4 -319
  437. package/dist/shims/internal/app-prefetch-fetch-queue.d.ts +22 -2
  438. package/dist/shims/internal/app-prefetch-fetch-queue.js +71 -18
  439. package/dist/shims/internal/app-route-prefetch-policy.d.ts +14 -3
  440. package/dist/shims/internal/app-route-prefetch-policy.js +29 -4
  441. package/dist/shims/internal/cache-context-accessor.d.ts +2 -1
  442. package/dist/shims/internal/client-reference-loader.d.ts +7 -0
  443. package/dist/shims/internal/client-reference-loader.js +91 -0
  444. package/dist/shims/internal/cookie-serialize.d.ts +2 -1
  445. package/dist/shims/internal/cookies.js +1 -2
  446. package/dist/shims/internal/headers-state.d.ts +9 -0
  447. package/dist/shims/internal/headers-state.js +19 -2
  448. package/dist/shims/internal/hybrid-client-route-owner-direct.d.ts +6 -2
  449. package/dist/shims/internal/hybrid-client-route-owner-direct.js +31 -14
  450. package/dist/shims/internal/hybrid-client-route-owner.js +8 -8
  451. package/dist/shims/internal/interpolate-as.d.ts +2 -1
  452. package/dist/shims/internal/pages-data-target.d.ts +2 -1
  453. package/dist/shims/internal/pages-data-url.d.ts +2 -1
  454. package/dist/shims/internal/thenable-well-known-properties.d.ts +2 -1
  455. package/dist/shims/link.js +198 -53
  456. package/dist/shims/metadata.d.ts +32 -11
  457. package/dist/shims/metadata.js +88 -26
  458. package/dist/shims/navigation-errors.d.ts +2 -1
  459. package/dist/shims/navigation.d.ts +23 -3
  460. package/dist/shims/navigation.js +91 -25
  461. package/dist/shims/og.js +35 -10
  462. package/dist/shims/pages-router-runtime.d.ts +2 -1
  463. package/dist/shims/ppr-fallback-shell.d.ts +2 -1
  464. package/dist/shims/request-context.d.ts +13 -0
  465. package/dist/shims/router.js +33 -43
  466. package/dist/shims/server.d.ts +31 -4
  467. package/dist/shims/server.js +58 -10
  468. package/dist/shims/thenable-params.d.ts +6 -1
  469. package/dist/shims/thenable-params.js +11 -2
  470. package/dist/shims/unified-request-context.d.ts +5 -0
  471. package/dist/shims/unified-request-context.js +5 -3
  472. package/dist/typegen.d.ts +2 -1
  473. package/dist/utils/asset-prefix.d.ts +7 -0
  474. package/dist/utils/asset-prefix.js +10 -1
  475. package/dist/utils/client-build-manifest.d.ts +4 -1
  476. package/dist/utils/client-build-manifest.js +20 -6
  477. package/dist/utils/client-entry-manifest.d.ts +13 -0
  478. package/dist/utils/client-entry-manifest.js +20 -1
  479. package/dist/utils/client-reference-chunks.d.ts +45 -0
  480. package/dist/utils/client-reference-chunks.js +30 -0
  481. package/dist/utils/client-runtime-metadata.d.ts +10 -1
  482. package/dist/utils/client-runtime-metadata.js +53 -9
  483. package/dist/utils/compare.d.ts +9 -0
  484. package/dist/utils/compare.js +15 -1
  485. package/dist/utils/lazy-chunks.d.ts +18 -0
  486. package/dist/utils/lazy-chunks.js +27 -1
  487. package/dist/utils/manifest-paths.d.ts +14 -0
  488. package/dist/utils/manifest-paths.js +22 -1
  489. package/dist/utils/middleware-request-headers.d.ts +2 -1
  490. package/dist/utils/path-to-regexp.d.ts +21 -0
  491. package/dist/{server/middleware-path-to-regexp.js → utils/path-to-regexp.js} +14 -11
  492. package/dist/utils/plugin-react-version.d.ts +15 -0
  493. package/dist/utils/plugin-react-version.js +64 -0
  494. package/dist/utils/project.d.ts +2 -1
  495. package/dist/utils/project.js +9 -1
  496. package/dist/utils/public-routes.d.ts +2 -0
  497. package/dist/utils/public-routes.js +18 -7
  498. package/dist/utils/query.d.ts +2 -1
  499. package/dist/utils/sorted-array.d.ts +2 -1
  500. package/dist/utils/vite-cli-invocation.d.ts +2 -1
  501. package/package.json +5 -5
  502. package/dist/deps/.pnpm/image-size@2.0.2/deps/image-size/dist/index.js +0 -808
  503. package/dist/server/default-not-found-module.d.ts +0 -19
  504. package/dist/server/default-not-found-module.js +0 -18
  505. package/dist/server/middleware-path-to-regexp.d.ts +0 -13
  506. package/dist/server/rsc-stream-hints.d.ts +0 -21
  507. package/dist/server/rsc-stream-hints.js +0 -227
  508. package/dist/utils/regex-safety.d.ts +0 -17
  509. package/dist/utils/regex-safety.js +0 -789
@@ -15,15 +15,17 @@ export type PagesReqResRequest = Readable & {
15
15
  draftMode?: true;
16
16
  previewData: PagesPreviewData | false;
17
17
  };
18
+ type PagesReqResHeaderValue = string | number | boolean | string[];
18
19
  type PagesReqResHeaders = {
19
- [key: string]: string | number | boolean | string[];
20
+ [key: string]: PagesReqResHeaderValue;
20
21
  };
21
22
  export type PagesReqResResponse = Writable & {
22
23
  statusCode: number;
23
24
  readonly headersSent: boolean;
24
25
  writeHead: (code: number, headers?: PagesReqResHeaders) => PagesReqResResponse;
25
- setHeader: (name: string, value: string | number | boolean | string[]) => PagesReqResResponse;
26
- getHeader: (name: string) => string | number | boolean | string[] | undefined;
26
+ setHeader: (name: string, value: PagesReqResHeaderValue) => PagesReqResResponse;
27
+ appendHeader: (name: string, value: string | readonly string[]) => PagesReqResResponse;
28
+ getHeader: (name: string) => PagesReqResHeaderValue | undefined;
27
29
  status: (code: number) => PagesReqResResponse;
28
30
  json: (data: unknown) => void;
29
31
  send: (data: unknown) => void;
@@ -1,4 +1,5 @@
1
1
  import { parseCookieHeader } from "../utils/parse-cookie.js";
2
+ import { getRequestExecutionContext } from "../shims/request-context.js";
2
3
  import { readStreamAsTextWithLimit } from "../utils/text-stream.js";
3
4
  import { DEFAULT_PAGES_API_BODY_SIZE_LIMIT } from "./pages-body-parser-config.js";
4
5
  import { PagesBodyParseError, getMediaType, isJsonMediaType } from "./pages-media-type.js";
@@ -13,6 +14,18 @@ const NO_BODY_RESPONSE_STATUSES = /* @__PURE__ */ new Set([
13
14
  205,
14
15
  304
15
16
  ]);
17
+ const HTTP_TOKEN_PATTERN = /^[\^_`a-zA-Z\-0-9!#$%&'*+.|~]+$/;
18
+ const INVALID_HEADER_VALUE_CHAR_PATTERN = /[^\t\x20-\x7e\x80-\xff]/;
19
+ function createNodeTypeError(code, message) {
20
+ return Object.assign(new TypeError(message), { code });
21
+ }
22
+ function validateAppendedHeader(name, value) {
23
+ if (typeof name !== "string" || !name || !HTTP_TOKEN_PATTERN.test(name)) throw createNodeTypeError("ERR_INVALID_HTTP_TOKEN", `Header name must be a valid HTTP token ["${String(name)}"]`);
24
+ for (const item of Array.isArray(value) ? value : [value]) {
25
+ if (item === void 0) throw createNodeTypeError("ERR_HTTP_INVALID_HEADER_VALUE", `Invalid value "undefined" for header "${name}"`);
26
+ if (INVALID_HEADER_VALUE_CHAR_PATTERN.test(String(item))) throw createNodeTypeError("ERR_INVALID_CHAR", `Invalid character in header content ["${name}"]`);
27
+ }
28
+ }
16
29
  async function readPagesRequestBodyWithLimit(request, maxBytes) {
17
30
  if (!request.body) return "";
18
31
  return readStreamAsTextWithLimit(request.body, maxBytes, () => {
@@ -120,9 +133,9 @@ var PagesResponseStream = class extends Writable {
120
133
  resolveResponse;
121
134
  rejectResponse;
122
135
  resStatusCode = 200;
123
- resHeaders = {};
124
- setCookieHeaders = [];
136
+ resHeaders = Object.create(null);
125
137
  resolved = false;
138
+ headWritten = false;
126
139
  controller = null;
127
140
  bufferedChunks = [];
128
141
  streamEnded = false;
@@ -150,15 +163,21 @@ var PagesResponseStream = class extends Writable {
150
163
  }
151
164
  writeHead(code, headers) {
152
165
  this.resStatusCode = code;
153
- if (headers) for (const [key, value] of Object.entries(headers)) this.setHeaderValue(key, value, { replaceSetCookie: true });
166
+ if (headers) for (const [key, value] of Object.entries(headers)) this.setHeaderValue(key, value, { append: false });
167
+ this.headWritten = true;
154
168
  return this;
155
169
  }
156
170
  setHeader(name, value) {
157
- this.setHeaderValue(name, value, { replaceSetCookie: true });
171
+ this.setHeaderValue(name, value, { append: false });
172
+ return this;
173
+ }
174
+ appendHeader(name, value) {
175
+ if (this.headWritten || this.headersSent) throw Object.assign(/* @__PURE__ */ new Error("Cannot append headers after they are sent to the client"), { code: "ERR_HTTP_HEADERS_SENT" });
176
+ validateAppendedHeader(name, value);
177
+ this.setHeaderValue(name, value, { append: true });
158
178
  return this;
159
179
  }
160
180
  getHeader(name) {
161
- if (name.toLowerCase() === "set-cookie") return this.setCookieHeaders.length > 0 ? this.setCookieHeaders : void 0;
162
181
  return this.resHeaders[name.toLowerCase()];
163
182
  }
164
183
  status(code) {
@@ -196,9 +215,7 @@ var PagesResponseStream = class extends Writable {
196
215
  return this;
197
216
  }
198
217
  getHeaders() {
199
- const headers = { ...this.resHeaders };
200
- if (this.setCookieHeaders.length > 0) headers["set-cookie"] = this.setCookieHeaders;
201
- return headers;
218
+ return { ...this.resHeaders };
202
219
  }
203
220
  setPreviewData(data, options = {}) {
204
221
  setPagesPreviewData(this, data, options);
@@ -250,13 +267,15 @@ var PagesResponseStream = class extends Writable {
250
267
  callback(error);
251
268
  }
252
269
  setHeaderValue(name, value, options) {
253
- if (name.toLowerCase() === "set-cookie") {
254
- const values = Array.isArray(value) ? value.map(String) : [String(value)];
255
- if (options.replaceSetCookie) this.setCookieHeaders.length = 0;
256
- this.setCookieHeaders.push(...values);
270
+ const key = name.toLowerCase();
271
+ const existing = this.resHeaders[key];
272
+ if (!options.append || existing === void 0) {
273
+ this.resHeaders[key] = value;
257
274
  return;
258
275
  }
259
- this.resHeaders[name.toLowerCase()] = Array.isArray(value) ? value.join(", ") : value;
276
+ const values = Array.isArray(existing) ? existing : [existing];
277
+ values.push(...Array.isArray(value) ? value : [value]);
278
+ this.resHeaders[key] = values;
260
279
  }
261
280
  releasePendingWrite(error) {
262
281
  const callback = this.pendingWrite;
@@ -267,8 +286,8 @@ var PagesResponseStream = class extends Writable {
267
286
  if (this.resolved) return;
268
287
  this.resolved = true;
269
288
  const headers = new Headers();
270
- for (const [key, value] of Object.entries(this.resHeaders)) headers.set(key, String(value));
271
- for (const cookie of this.setCookieHeaders) headers.append("set-cookie", cookie);
289
+ for (const [key, value] of Object.entries(this.resHeaders)) if (Array.isArray(value)) for (const item of value) headers.append(key, String(item));
290
+ else headers.set(key, String(value));
272
291
  if (NO_BODY_RESPONSE_STATUSES.has(this.resStatusCode)) {
273
292
  this.discardBody = true;
274
293
  this.bufferedChunks.length = 0;
@@ -359,10 +378,10 @@ function createPagesReqRes(options) {
359
378
  */
360
379
  function createPagesApiReqRes(options) {
361
380
  const { req, res, responsePromise } = createPagesReqRes(options);
362
- const trustedRevalidateOrigin = options.trustedRevalidateOrigin ?? new URL(options.request.url).origin;
363
381
  return {
364
382
  req,
365
383
  res: Object.assign(res, { async revalidate(urlPath, opts) {
384
+ const trustedRevalidateOrigin = options.trustedRevalidateOrigin ?? (getRequestExecutionContext()?.dispatchPagesRevalidate ? new URL(options.request.url).origin : void 0);
366
385
  await performOnDemandRevalidate(options.request.headers, urlPath, opts, trustedRevalidateOrigin, options.allowedRevalidateHeaderKeys);
367
386
  } }),
368
387
  responsePromise
@@ -298,6 +298,11 @@ type ResolvePagesPageDataNotFoundResult = {
298
298
  cacheState?: "MISS" | "HIT" | "STALE";
299
299
  };
300
300
  type ResolvePagesPageDataResult = ResolvePagesPageDataRenderResult | ResolvePagesPageDataResponseResult | ResolvePagesPageDataNotFoundResult;
301
+ /**
302
+ * Write a Pages res header the way Node sends it: an array sends one header
303
+ * line per item, so `[]` sends none.
304
+ */
305
+ export declare function setPagesResponseHeader(headers: Headers, name: string, value: string | number | boolean | string[]): void;
301
306
  export declare function mergePagesNotFoundSourceHeaders(response: Response, sourceHeaders: Record<string, string | number | boolean | string[]> | undefined): Response;
302
307
  /** Validate and normalize the redirect metadata returned by gSP/gSSP. */
303
308
  export declare function resolvePagesRedirect(redirect: PagesRedirectResult, options: {
@@ -330,4 +335,5 @@ export type PagesRouteParam = {
330
335
  export declare function getPagesRouteParams(routePattern: string): PagesRouteParam[];
331
336
  export declare function matchesPagesStaticPath(pathEntry: PagesStaticPathsEntry, params: Record<string, unknown>, routeParams: PagesRouteParam[], routeUrl: string, i18n?: Pick<PagesI18nRenderContext, "locale" | "locales" | "defaultLocale">): boolean;
332
337
  export declare function resolvePagesPageData(options: ResolvePagesPageDataOptions): Promise<ResolvePagesPageDataResult>;
333
- //#endregion
338
+ //#endregion
339
+ export {};
@@ -6,7 +6,7 @@ import { isDangerousScheme } from "../shims/url-safety.js";
6
6
  import { extractLocaleFromUrl } from "./pages-i18n.js";
7
7
  import { buildNextDataPropsJsonResponse } from "./pages-data-route.js";
8
8
  import { recordRouteCacheability } from "../shims/cacheability-classification.js";
9
- import { applyCdnResponseHeaders } from "./cache-control.js";
9
+ import { NEVER_CACHE_CONTROL, applyCdnResponseHeaders } from "./cache-control.js";
10
10
  import { buildMissIsrCacheControl, decideIsr } from "./isr-decision.js";
11
11
  import { isrCacheControl } from "./isr-cache.js";
12
12
  import { normalizeStaticPathname } from "../routing/route-pattern.js";
@@ -98,14 +98,22 @@ function buildPagesNotFoundResult(options, revalidateSeconds, cacheState, expire
98
98
  responseHeaders
99
99
  };
100
100
  }
101
+ /**
102
+ * Write a Pages res header the way Node sends it: an array sends one header
103
+ * line per item, so `[]` sends none.
104
+ */
105
+ function setPagesResponseHeader(headers, name, value) {
106
+ headers.delete(name);
107
+ if (!Array.isArray(value)) {
108
+ headers.set(name, String(value));
109
+ return;
110
+ }
111
+ for (const item of value) headers.append(name, String(item));
112
+ }
101
113
  function mergePagesNotFoundSourceHeaders(response, sourceHeaders) {
102
114
  if (!sourceHeaders) return response;
103
115
  const headers = new Headers(response.headers);
104
- for (const [name, value] of Object.entries(sourceHeaders)) if (name.toLowerCase() === "set-cookie") {
105
- headers.delete("set-cookie");
106
- const cookies = Array.isArray(value) ? value : [value];
107
- for (const cookie of cookies) headers.append("set-cookie", String(cookie));
108
- } else headers.set(name, Array.isArray(value) ? value.join(", ") : String(value));
116
+ for (const [name, value] of Object.entries(sourceHeaders)) setPagesResponseHeader(headers, name, value);
109
117
  return new Response(response.body, {
110
118
  headers,
111
119
  status: response.status,
@@ -292,6 +300,15 @@ function buildPagesRedirectResponse(redirect, options, props = { pageProps: {} }
292
300
  headers
293
301
  });
294
302
  }
303
+ /**
304
+ * Next.js pages-handler.ts gives a getServerSideProps result `revalidate: 0`,
305
+ * so its redirect and notFound exits are answered private/no-store unless the
306
+ * handler set its own Cache-Control. Like Next's `!res.getHeader(...)`, this
307
+ * reads the raw value, so `""` and `0` count as unset.
308
+ */
309
+ function applyPagesGsspCacheControlDefault(headers, res) {
310
+ if (!res.getHeaders()["cache-control"]) headers.set("Cache-Control", NEVER_CACHE_CONTROL);
311
+ }
295
312
  function getPagesGsspResponseHeaders(res) {
296
313
  const headers = new Headers();
297
314
  for (const [name, value] of Object.entries(res.getHeaders())) if (Array.isArray(value)) for (const item of value) headers.append(name, item);
@@ -566,13 +583,19 @@ async function resolvePagesPageData(options) {
566
583
  pageProps
567
584
  };
568
585
  }
569
- if (result?.redirect) return {
570
- kind: "response",
571
- response: buildPagesRedirectResponse(result.redirect, options, renderProps, "getServerSideProps", getPagesGsspResponseHeaders(res))
572
- };
586
+ if (result?.redirect) {
587
+ const responseHeaders = getPagesGsspResponseHeaders(res);
588
+ applyPagesGsspCacheControlDefault(responseHeaders, res);
589
+ return {
590
+ kind: "response",
591
+ response: buildPagesRedirectResponse(result.redirect, options, renderProps, "getServerSideProps", responseHeaders)
592
+ };
593
+ }
573
594
  if (result?.notFound) {
574
595
  const responseHeaders = res.getHeaders();
575
- return buildPagesNotFoundResult(options, void 0, void 0, void 0, Object.keys(responseHeaders).length > 0 ? responseHeaders : void 0);
596
+ const notFoundResult = buildPagesNotFoundResult(options, void 0, void 0, void 0, Object.keys(responseHeaders).length > 0 ? responseHeaders : void 0);
597
+ if (notFoundResult.kind === "response") applyPagesGsspCacheControlDefault(notFoundResult.response.headers, res);
598
+ return notFoundResult;
576
599
  }
577
600
  if (result?.props !== void 0 && options.validatePropsSerialization !== false) isSerializableProps(options.routePattern, "getServerSideProps", pageProps);
578
601
  gsspRes = res;
@@ -796,4 +819,4 @@ async function resolvePagesPageData(options) {
796
819
  };
797
820
  }
798
821
  //#endregion
799
- export { assertPages404DoesNotReturnNotFound, buildPagesRedirectProps, getPagesRouteParams, matchesPagesStaticPath, mergePagesDataProps, mergePagesNotFoundSourceHeaders, resolvePagesPageData, resolvePagesRedirect, resolvePagesRedirectLocation, resolvePagesRevalidateSeconds, resolvePagesStatusPageRenderPath };
822
+ export { assertPages404DoesNotReturnNotFound, buildPagesRedirectProps, getPagesRouteParams, matchesPagesStaticPath, mergePagesDataProps, mergePagesNotFoundSourceHeaders, resolvePagesPageData, resolvePagesRedirect, resolvePagesRedirectLocation, resolvePagesRevalidateSeconds, resolvePagesStatusPageRenderPath, setPagesResponseHeader };
@@ -97,7 +97,7 @@ export type CreatePagesPageHandlerOptions = {
97
97
  href: string;
98
98
  type: string;
99
99
  }>;
100
- /** `renderToReadableStream` from `react-dom/server.edge`. */
100
+ /** `renderToReadableStream` from `react-dom/server`. */
101
101
  renderToReadableStream: (element: ReactNode) => Promise<ReadableStream<Uint8Array>>;
102
102
  /** `safeJsonStringify` from `vinext/html`. */
103
103
  safeJsonStringify: (value: unknown) => string;
@@ -139,4 +139,5 @@ type RenderPageOptions = {
139
139
  * accepts the same options shape the generated entry always passed inline.
140
140
  */
141
141
  export declare function createPagesPageHandler(opts: CreatePagesPageHandlerOptions): (request: Request, url: string, manifest: Record<string, string[]> | null | undefined, middlewareHeaders: Headers | null | undefined, options: RenderPageOptions | null | undefined, initialResponseHeaders?: Headers) => Promise<Response>;
142
- //#endregion
142
+ //#endregion
143
+ export {};
@@ -10,7 +10,7 @@ import { buildNextDataNotFoundResponse, buildNextDataPropsJsonResponse, normaliz
10
10
  import { reportRequestError } from "./instrumentation.js";
11
11
  import { getCdnCacheAdapter } from "../shims/cdn-cache.js";
12
12
  import { beginRouteCacheability, isRouteCacheabilityIdentityProbe, isRouteCacheabilityProbe, markRouteCacheabilityExplicitResponsePolicy, markRouteCacheabilityFinalResponseUncacheable, recordRouteCacheability } from "../shims/cacheability-classification.js";
13
- import { BROWSER_REVALIDATE_CACHE_CONTROL, NEVER_CACHE_CONTROL, STATIC_CACHE_CONTROL, applyCdnResponseHeaders, hasCdnResponsePolicy, hasExplicitNonCacheableResponsePolicy, shouldUseNextDeployCacheControl } from "./cache-control.js";
13
+ import { BROWSER_REVALIDATE_CACHE_CONTROL, NEVER_CACHE_CONTROL, STATIC_CACHE_CONTROL, applyCdnResponseHeaders, hasCdnResponsePolicy, hasExplicitNonCacheableResponsePolicy, isCdnResponsePolicyHeader, shouldUseNextDeployCacheControl } from "./cache-control.js";
14
14
  import { buildMissIsrCacheControl } from "./isr-decision.js";
15
15
  import { isOnDemandRevalidateRequest } from "./revalidation-request.js";
16
16
  import { coalesceOnDemandRevalidation, isrGet, isrSet, pagesIsrCacheKey, triggerBackgroundRegeneration } from "./isr-cache.js";
@@ -25,7 +25,7 @@ import { pagesPathCacheTag } from "./pages-cache-tag.js";
25
25
  import { renderPagesPageResponse } from "./pages-page-response.js";
26
26
  import { hasPagesGetInitialProps } from "./pages-get-initial-props.js";
27
27
  import { traceFindPageComponents, tracePagesDocumentStream } from "./pages-execution-tracing.js";
28
- import { mergePagesNotFoundSourceHeaders, resolvePagesPageData, resolvePagesStatusPageRenderPath } from "./pages-page-data.js";
28
+ import { mergePagesNotFoundSourceHeaders, resolvePagesPageData, resolvePagesStatusPageRenderPath, setPagesResponseHeader } from "./pages-page-data.js";
29
29
  import { collectAssetTags, resolveClientModuleUrl } from "./pages-asset-tags.js";
30
30
  import { PAGES_PREVIEW_CACHE_CONTROL, appendPagesPreviewClearCookies, getPagesPreviewState } from "./pages-preview.js";
31
31
  import { createPagesReqRes } from "./pages-node-compat.js";
@@ -87,14 +87,23 @@ function stripPagesNotFoundFramingHeaders(response) {
87
87
  statusText: response.statusText
88
88
  });
89
89
  }
90
- function applyPagesErrorCachePolicy(response, revalidateSeconds, expireSeconds, cacheTagPathname) {
90
+ /**
91
+ * `notFoundResHeaders` is the getServerSideProps res as it stands after the
92
+ * 404 render: the middleware and next.config headers, the handler's writes,
93
+ * then any write from the 404 render's own user code.
94
+ */
95
+ function applyPagesErrorCachePolicy(response, revalidateSeconds, expireSeconds, cacheTagPathname, notFoundResHeaders) {
91
96
  const headers = new Headers(response.headers);
92
97
  recordRouteCacheability(revalidateSeconds === void 0 ? { cacheable: false } : {
93
98
  cacheable: revalidateSeconds !== 0,
94
99
  cacheControl: buildMissIsrCacheControl(revalidateSeconds, expireSeconds)
95
100
  });
96
101
  if (hasExplicitNonCacheableResponsePolicy(headers)) return response;
97
- if (revalidateSeconds === void 0) applyCdnResponseHeaders(headers, { cacheControl: NEVER_CACHE_CONTROL });
102
+ if (revalidateSeconds === void 0 && notFoundResHeaders?.["cache-control"]) {
103
+ const policyHeaderNames = Array.from(headers.keys()).filter(isCdnResponsePolicyHeader);
104
+ for (const name of policyHeaderNames) headers.delete(name);
105
+ for (const [name, value] of Object.entries(notFoundResHeaders)) if (isCdnResponsePolicyHeader(name)) setPagesResponseHeader(headers, name, value);
106
+ } else if (revalidateSeconds === void 0) applyCdnResponseHeaders(headers, { cacheControl: NEVER_CACHE_CONTROL });
98
107
  else applyCdnResponseHeaders(headers, {
99
108
  cacheControl: buildMissIsrCacheControl(revalidateSeconds, expireSeconds),
100
109
  tags: [pagesPathCacheTag(cacheTagPathname)]
@@ -364,7 +373,7 @@ function createPagesPageHandler(opts) {
364
373
  }
365
374
  };
366
375
  const scriptNonce = getScriptNonceFromHeaderSources(request.headers, middlewareHeaders);
367
- const browserCacheControl = isStaticPropsRoute && !scriptNonce ? (initialResponseHeaders ?? middlewareHeaders)?.get("Cache-Control") : null;
376
+ const browserCacheControl = isStaticPropsRoute && !scriptNonce && !options?.__notFoundSourceHeaders ? (initialResponseHeaders ?? middlewareHeaders)?.get("Cache-Control") : null;
368
377
  const withBrowserPolicy = (response) => {
369
378
  if (browserCacheControl) response.headers.set("Cache-Control", browserCacheControl);
370
379
  return response;
@@ -590,7 +599,7 @@ function createPagesPageHandler(opts) {
590
599
  if (pageDataResult.kind === "response") {
591
600
  if (sendsEarly && pageResponseSent()) return pageDataResult.response;
592
601
  let response = isOnDemandRevalidate && pageDataResult.onDemandRevalidateSuccess !== false ? withPagesCacheState(pageDataResult.response, "REVALIDATED", isrCachePathname) : pageDataResult.response;
593
- if (shouldApplyErrorResponsePolicy) response = applyPagesErrorCachePolicy(response, errorPageRevalidateSeconds, errorPageExpireSeconds, errorResponseCachePathname);
602
+ if (shouldApplyErrorResponsePolicy) response = applyPagesErrorCachePolicy(response, errorPageRevalidateSeconds, errorPageExpireSeconds, errorResponseCachePathname, options?.__notFoundSourceHeaders);
594
603
  return finalizePagesPreviewResponse(withBrowserPolicy(response), preview);
595
604
  }
596
605
  const { pageProps, renderProps } = withErrorStatusCode(pageDataResult.pageProps, previewData !== false ? {
@@ -656,7 +665,7 @@ function createPagesPageHandler(opts) {
656
665
  requestCacheControl: request.headers.get("cache-control") ?? void 0
657
666
  });
658
667
  if (sendsEarly && pageResponseSent()) return pageResponse;
659
- if (shouldApplyErrorResponsePolicy) pageResponse = applyPagesErrorCachePolicy(pageResponse, errorPageRevalidateSeconds, errorPageExpireSeconds, errorResponseCachePathname);
668
+ if (shouldApplyErrorResponsePolicy) pageResponse = applyPagesErrorCachePolicy(pageResponse, errorPageRevalidateSeconds, errorPageExpireSeconds, errorResponseCachePathname, options?.__notFoundSourceHeaders ? documentReqRes?.res.getHeaders() ?? options.__notFoundSourceHeaders : void 0);
660
669
  return finalizePagesPreviewResponse(withBrowserPolicy(pageResponse), preview);
661
670
  } catch (e) {
662
671
  await reportSsrError(e);
@@ -43,4 +43,5 @@ type PagesPageMethodOptions = {
43
43
  * static (no `getServerSideProps`) Pages Router page, otherwise `null`.
44
44
  */
45
45
  export declare function resolvePagesPageMethodResponse(options: PagesPageMethodOptions): Response | null;
46
- //#endregion
46
+ //#endregion
47
+ export {};
@@ -151,4 +151,5 @@ export declare function buildPagesNextDataScript(options: Pick<RenderPagesPageRe
151
151
  vinext?: VinextNextData["__vinext"];
152
152
  }): string;
153
153
  export declare function renderPagesPageResponse(options: RenderPagesPageResponseOptions): Promise<Response>;
154
- //#endregion
154
+ //#endregion
155
+ export {};
@@ -22,4 +22,5 @@ export declare function clearPagesPreviewData(response: PreviewResponse, options
22
22
  path?: string;
23
23
  }): void;
24
24
  export declare function appendPagesPreviewClearCookies(headers: Headers): void;
25
- //#endregion
25
+ //#endregion
26
+ export {};
@@ -32,4 +32,5 @@ export declare function buildPagesReadinessNextData(options: {
32
32
  } | null | undefined;
33
33
  hasRewrites: boolean;
34
34
  }): PagesReadinessNextData;
35
- //#endregion
35
+ //#endregion
36
+ export {};
@@ -15,7 +15,7 @@ type PageRouteMatch = {
15
15
  dataKind?: PagesRouteDataKind;
16
16
  };
17
17
  };
18
- export declare function fetchWorkerFilesystemRoute(request: Request, requestPathname: string, phase: FilesystemRoutePhase, fetchAsset: (request: Request) => Promise<Response>, publicFiles: ReadonlySet<string>, basePath?: string, assetPathPrefix?: string, hadBasePath?: boolean): Promise<Response | false>;
18
+ export declare function fetchWorkerFilesystemRoute(request: Request, requestPathname: string, phase: FilesystemRoutePhase, fetchAsset: (request: Request) => Promise<Response>, publicFiles: ReadonlySet<string>, basePath?: string, assetPathPrefix?: string, pathnameHasBasePath?: boolean): Promise<Response | false>;
19
19
  export type MiddlewareResult = {
20
20
  continue: boolean;
21
21
  /** The pathname matches middleware, irrespective of request `has`/`missing` conditions. */
@@ -54,6 +54,11 @@ export type PagesPipelineDeps = {
54
54
  recordCacheability?: boolean;
55
55
  rawSearch?: string;
56
56
  configMatchPathname?: string;
57
+ /**
58
+ * `shouldRestoreLocaleRootTrailingSlash` for the raw request pathname
59
+ * (basePath included), which the basePath-stripped request no longer shows.
60
+ */
61
+ restoreLocaleRootTrailingSlash?: boolean;
57
62
  /**
58
63
  * Validate an on-demand revalidation credential using the runtime's
59
64
  * authoritative build secret. Production adapters must inject the verifier
@@ -152,4 +157,5 @@ export type PagesPipelineResult = {
152
157
  * runPagesRequest receives a "clean" request with basePath-stripped URL.
153
158
  */
154
159
  export declare function runPagesRequest(request: Request, deps: PagesPipelineDeps): Promise<PagesPipelineResult>;
155
- //#endregion
160
+ //#endregion
161
+ export {};
@@ -1,12 +1,12 @@
1
1
  import { PRERENDER_REVALIDATE_HEADER } from "../utils/protocol-headers.js";
2
2
  import { requestContextFromRequest } from "../config/request-context.js";
3
3
  import { isExternalUrl } from "../utils/external-url.js";
4
- import { addBasePathToPathname, hasBasePath } from "../utils/base-path.js";
4
+ import { addBasePathToPathname } from "../utils/base-path.js";
5
5
  import { VINEXT_PRERENDER_REWRITTEN_HEADER } from "./headers.js";
6
6
  import { methodNotAllowedResponse, notFoundStaticAssetResponse, sanitizeMethodNotAllowedHeaders } from "./http-error-responses.js";
7
7
  import { cloneRequestWithUrl, normalizeTrailingSlash } from "./request-pipeline.js";
8
- import { applyMiddlewareRequestHeaders, matchRedirect, matchRewrite, preserveRedirectDestinationQuery, proxyExternalRequest, sanitizeDestination } from "../config/config-matchers.js";
9
- import { assetPrefixPathname, isNextStaticPath } from "../utils/asset-prefix.js";
8
+ import { applyMiddlewareRequestHeaders, encodeRedirectLocation, matchRedirect, matchRewrite, preserveRedirectDestinationQuery, proxyExternalRequest } from "../config/config-matchers.js";
9
+ import { assetPrefixPathname, isAssetPrefixBuildAsset, isNextStaticPath } from "../utils/asset-prefix.js";
10
10
  import { normalizePathnameForRouteMatchStrict } from "../routing/utils.js";
11
11
  import { patternToNextFormat } from "../routing/route-validation.js";
12
12
  import { detectPathnameLocale, normalizeDefaultLocalePathname, stripI18nLocaleForApiRoute } from "./pages-i18n.js";
@@ -14,6 +14,7 @@ import { buildMiddlewarePrefetchSkipResponse } from "./pages-data-route.js";
14
14
  import { markRouteCacheabilityDynamic } from "../shims/cacheability-classification.js";
15
15
  import { isOnDemandRevalidateRequest } from "./revalidation-request.js";
16
16
  import { mergeRewriteQuery } from "../utils/query.js";
17
+ import { withExternalRewriteResponseHeaders } from "./middleware-response-headers.js";
17
18
  import { setFrameworkRequestRoute } from "./request-tracing.js";
18
19
  import { applyConfigHeadersToHeaderRecord } from "./config-headers.js";
19
20
  import { finalizeMissingStaticAssetResponse, mergeHeaders } from "./worker-utils.js";
@@ -33,7 +34,7 @@ function headersFromRecord(record) {
33
34
  else headers.set(name, value);
34
35
  return headers;
35
36
  }
36
- async function fetchWorkerFilesystemRoute(request, requestPathname, phase, fetchAsset, publicFiles, basePath = "", assetPathPrefix = "", hadBasePath = true) {
37
+ async function fetchWorkerFilesystemRoute(request, requestPathname, phase, fetchAsset, publicFiles, basePath = "", assetPathPrefix = "", pathnameHasBasePath = true) {
37
38
  const isRetrievalMethod = request.method === "GET" || request.method === "HEAD";
38
39
  const assetUrl = new URL(request.url);
39
40
  assetUrl.pathname = requestPathname;
@@ -46,7 +47,8 @@ async function fetchWorkerFilesystemRoute(request, requestPathname, phase, fetch
46
47
  } catch {
47
48
  return false;
48
49
  }
49
- const isPublicFile = (phase !== "direct" || hadBasePath) && publicFiles.has(publicFileKey);
50
+ if (!pathnameHasBasePath && !isAssetPrefixBuildAsset(decodedAssetUrl.pathname, assetPathPrefix)) return false;
51
+ const isPublicFile = pathnameHasBasePath && publicFiles.has(publicFileKey);
50
52
  if (!isPublicFile && (requestPathname === "/api" || requestPathname.startsWith("/api/"))) return false;
51
53
  if (phase === "direct" && isRetrievalMethod && !isPublicFile) return false;
52
54
  if (!isPublicFile && !isNextStaticPath(decodedAssetUrl.pathname, basePath, assetPathPrefix)) return false;
@@ -118,15 +120,18 @@ async function runPagesRequest(request, deps) {
118
120
  const reqCtx = requestContextFromRequest(request);
119
121
  const requestHostname = i18nConfig ? url.hostname : "";
120
122
  const requestConfigMatchPathname = i18nConfig ? normalizeDefaultLocalePathname(requestConfigPathname, i18nConfig, { hostname: requestHostname }) : requestConfigPathname;
123
+ const requestHeaderMatchPathname = i18nConfig ? normalizeDefaultLocalePathname(requestConfigPathname, i18nConfig, {
124
+ hostname: requestHostname,
125
+ restoreRootTrailingSlash: deps.restoreLocaleRootTrailingSlash
126
+ }) : requestConfigPathname;
121
127
  if (configRedirects.length) {
122
128
  const redirect = matchRedirect(requestConfigMatchPathname, configRedirects, reqCtx, basePathState, conditionalRedirectCacheability);
123
129
  if (redirect) {
124
- const dest = sanitizeDestination(basePath && hadBasePath && !isExternalUrl(redirect.destination) && !hasBasePath(redirect.destination, basePath) ? basePath + redirect.destination : redirect.destination);
125
- const location = preserveRedirectDestinationQuery(dest, deps.rawSearch ?? search, redirect.destinationQuery);
130
+ const location = encodeRedirectLocation(preserveRedirectDestinationQuery(redirect.destination, deps.rawSearch ?? search, redirect.destinationQuery));
126
131
  return {
127
132
  type: "response",
128
133
  response: new Response(null, {
129
- status: redirect.permanent ? 308 : 307,
134
+ status: redirect.statusCode,
130
135
  headers: { Location: location }
131
136
  })
132
137
  };
@@ -141,14 +146,16 @@ async function runPagesRequest(request, deps) {
141
146
  hadBasePath: resolvedPathnameHasBasePath
142
147
  });
143
148
  const middlewareHeaders = {};
149
+ let middlewareCookies = [];
144
150
  const mergeConfigHeadersIntoEarlyResponse = (response) => {
145
151
  if (configHeaders.length === 0) return response;
146
152
  const matchedConfigHeaders = {};
147
153
  applyConfigHeadersToHeaderRecord(matchedConfigHeaders, {
148
154
  configHeaders,
149
- pathname: requestConfigMatchPathname,
155
+ pathname: requestHeaderMatchPathname,
150
156
  requestContext: reqCtx,
151
157
  basePathState,
158
+ middlewareHeaders: response.headers,
152
159
  recordCacheability: deps.recordCacheability
153
160
  });
154
161
  return mergeHeaders(response, matchedConfigHeaders);
@@ -210,6 +217,8 @@ async function runPagesRequest(request, deps) {
210
217
  else if (existing) middlewareHeaders[key] = [existing, value];
211
218
  else middlewareHeaders[key] = [value];
212
219
  } else middlewareHeaders[key] = value;
220
+ const stagedCookies = middlewareHeaders["set-cookie"];
221
+ if (Array.isArray(stagedCookies)) middlewareCookies = [...stagedCookies];
213
222
  if (result.rewriteUrl) {
214
223
  resolvedUrl = result.rewriteUrl;
215
224
  resolvedPathnameIsRequestPathname = false;
@@ -249,26 +258,24 @@ async function runPagesRequest(request, deps) {
249
258
  };
250
259
  if (configHeaders.length) applyConfigHeadersToHeaderRecord(middlewareHeaders, {
251
260
  configHeaders,
252
- pathname: requestConfigMatchPathname,
261
+ pathname: requestHeaderMatchPathname,
253
262
  requestContext: reqCtx,
254
263
  basePathState,
255
264
  recordCacheability: deps.recordCacheability
256
265
  });
257
- if (isExternalUrl(resolvedUrl)) {
258
- const proxyResponse = await proxyExternal(request, resolvedUrl);
259
- return {
260
- type: "response",
261
- response: mergeHeaders(proxyResponse, middlewareHeaders, void 0)
262
- };
263
- }
266
+ const proxyConfigRewrite = async (destination) => ({
267
+ type: "response",
268
+ response: withExternalRewriteResponseHeaders(await proxyExternal(request, destination), new Headers(), middlewareCookies)
269
+ });
270
+ if (isExternalUrl(resolvedUrl)) return {
271
+ type: "response",
272
+ response: withExternalRewriteResponseHeaders(await proxyExternal(request, resolvedUrl), headersFromRecord(middlewareHeaders), middlewareCookies)
273
+ };
264
274
  let configRewriteFired = false;
265
275
  for (const rewrite of configRewrites.beforeFiles ?? []) {
266
276
  const rewritten = matchRewrite(configSourcePathname(), [rewrite], rewriteRequestContext(), currentBasePathState(), configSourcePathname(), conditionalRewriteCacheability);
267
277
  if (rewritten) {
268
- if (isExternalUrl(rewritten)) return {
269
- type: "response",
270
- response: await proxyExternal(request, rewritten)
271
- };
278
+ if (isExternalUrl(rewritten)) return proxyConfigRewrite(rewritten);
272
279
  resolvedUrl = mergeRewriteQuery(resolvedUrl, rewritten);
273
280
  resolvedPathname = pathnameForResolvedUrl(resolvedUrl);
274
281
  resolvedPathnameIsRequestPathname = false;
@@ -279,13 +286,13 @@ async function runPagesRequest(request, deps) {
279
286
  const initialFilesystemResult = await serveFilesystemRoute(resolvedPathname, resolvedPathnameIsRequestPathname ? "direct" : "beforeFiles");
280
287
  if (initialFilesystemResult) return initialFilesystemResult;
281
288
  const isMissingBuildAsset = () => isNextStaticPath(resolvedPathname, "", assetPrefixPathname(deps.assetPrefix ?? ""));
282
- const isOutsideBasePathUnclaimed = () => basePath && !hadBasePath && !configRewriteFired;
289
+ const isOutsideBasePathUnclaimed = () => basePath && !resolvedPathnameHasBasePath;
283
290
  const outOfBasePathNotFound = () => ({
284
291
  type: "response",
285
- response: isMissingBuildAsset() ? notFoundStaticAssetResponse(headersFromRecord(middlewareHeaders)) : new Response("This page could not be found", {
292
+ response: isMissingBuildAsset() ? notFoundStaticAssetResponse(headersFromRecord(middlewareHeaders)) : mergeHeaders(new Response("This page could not be found", {
286
293
  status: 404,
287
294
  headers: { "Content-Type": "text/html; charset=utf-8" }
288
- })
295
+ }), middlewareHeaders)
289
296
  });
290
297
  const handleResolvedApiRoute = async () => {
291
298
  if (isOutsideBasePathUnclaimed()) return null;
@@ -327,10 +334,7 @@ async function runPagesRequest(request, deps) {
327
334
  if (!pageMatch || pageMatch.route.isDynamic) for (const rewrite of configRewrites.afterFiles ?? []) {
328
335
  const rewritten = matchRewrite(configSourcePathname(), [rewrite], rewriteRequestContext(), currentBasePathState(), configSourcePathname(), conditionalRewriteCacheability);
329
336
  if (rewritten) {
330
- if (isExternalUrl(rewritten)) return {
331
- type: "response",
332
- response: await proxyExternal(request, rewritten)
333
- };
337
+ if (isExternalUrl(rewritten)) return proxyConfigRewrite(rewritten);
334
338
  resolvedUrl = mergeRewriteQuery(resolvedUrl, rewritten);
335
339
  resolvedPathname = pathnameForResolvedUrl(resolvedUrl);
336
340
  resolvedPathnameIsRequestPathname = false;
@@ -355,10 +359,7 @@ async function runPagesRequest(request, deps) {
355
359
  if ((isOutsideBasePathUnclaimed() || isDataReq || isDataRequest) && !renderPageMatch && configRewrites.fallback?.length) for (const rewrite of configRewrites.fallback) {
356
360
  const fallbackRewrite = matchRewrite(configSourcePathname(), [rewrite], rewriteRequestContext(), currentBasePathState(), configSourcePathname(), conditionalRewriteCacheability);
357
361
  if (!fallbackRewrite) continue;
358
- if (isExternalUrl(fallbackRewrite)) return {
359
- type: "response",
360
- response: await proxyExternal(request, fallbackRewrite)
361
- };
362
+ if (isExternalUrl(fallbackRewrite)) return proxyConfigRewrite(fallbackRewrite);
362
363
  resolvedUrl = mergeRewriteQuery(resolvedUrl, fallbackRewrite);
363
364
  resolvedPathname = pathnameForResolvedUrl(resolvedUrl);
364
365
  resolvedPathnameIsRequestPathname = false;
@@ -384,10 +385,7 @@ async function runPagesRequest(request, deps) {
384
385
  if (response.status === 404 && shouldDeferErrorPageOnMiss && configRewrites.fallback?.length) for (const rewrite of configRewrites.fallback) {
385
386
  const fallbackRewrite = matchRewrite(configSourcePathname(), [rewrite], rewriteRequestContext(), currentBasePathState(), configSourcePathname(), conditionalRewriteCacheability);
386
387
  if (!fallbackRewrite) continue;
387
- if (isExternalUrl(fallbackRewrite)) return {
388
- type: "response",
389
- response: await proxyExternal(request, fallbackRewrite)
390
- };
388
+ if (isExternalUrl(fallbackRewrite)) return proxyConfigRewrite(fallbackRewrite);
391
389
  resolvedUrl = mergeRewriteQuery(resolvedUrl, fallbackRewrite);
392
390
  resolvedPathname = pathnameForResolvedUrl(resolvedUrl);
393
391
  resolvedPathnameIsRequestPathname = false;
@@ -437,10 +435,7 @@ async function runPagesRequest(request, deps) {
437
435
  if (!devPageMatch && configRewrites.fallback?.length) for (const rewrite of configRewrites.fallback) {
438
436
  const fallbackRewrite = matchRewrite(configSourcePathname(), [rewrite], rewriteRequestContext(), currentBasePathState(), configSourcePathname(), conditionalRewriteCacheability);
439
437
  if (!fallbackRewrite) continue;
440
- if (isExternalUrl(fallbackRewrite)) return {
441
- type: "response",
442
- response: await proxyExternal(request, fallbackRewrite)
443
- };
438
+ if (isExternalUrl(fallbackRewrite)) return proxyConfigRewrite(fallbackRewrite);
444
439
  resolvedUrl = mergeRewriteQuery(resolvedUrl, fallbackRewrite);
445
440
  resolvedPathname = pathnameForResolvedUrl(resolvedUrl);
446
441
  resolvedPathnameIsRequestPathname = false;
@@ -26,4 +26,5 @@ export declare function isPagesClientBuildFileRequest(request: Request, env: Pag
26
26
  export declare function handleRequestStage(request: Request, env: PagesWorkerEnv | undefined, ctx: PagesWorkerExecutionContext | undefined, dispatchResponseStage: DispatchWorkerResponseStage): Promise<Response>;
27
27
  /** Preserve the direct single-entry Worker path without retaining it in request-only builds. */
28
28
  export declare function handleRequestStageLocally(request: Request, env: PagesWorkerEnv | undefined, ctx: PagesWorkerExecutionContext | undefined, dispatchResponseStage: PagesLocalResponseStage): Promise<Response>;
29
- //#endregion
29
+ //#endregion
30
+ export {};