vinext 1.3.0 → 1.4.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 (529) hide show
  1. package/README.md +5 -2
  2. package/THIRD_PARTY_LICENSES.md +47 -0
  3. package/dist/_virtual/_rolldown/runtime.js +4 -3
  4. package/dist/build/action-owner-manifest.d.ts +3 -2
  5. package/dist/build/action-owner-manifest.js +18 -2
  6. package/dist/build/app-page-static-eligibility.d.ts +17 -1
  7. package/dist/build/app-page-static-eligibility.js +80 -13
  8. package/dist/build/clean-output.d.ts +2 -1
  9. package/dist/build/client-build-config.d.ts +13 -3
  10. package/dist/build/client-build-config.js +46 -9
  11. package/dist/build/client-reference-async.d.ts +48 -0
  12. package/dist/build/client-reference-async.js +123 -0
  13. package/dist/build/client-reference-chunks.d.ts +32 -0
  14. package/dist/build/client-reference-chunks.js +111 -0
  15. package/dist/build/client-reference-groups.d.ts +9 -1
  16. package/dist/build/client-reference-groups.js +40 -2
  17. package/dist/build/css-url-assets.d.ts +2 -1
  18. package/dist/build/google-fonts/fallback-metrics.d.ts +2 -1
  19. package/dist/build/google-fonts/find-font-files-in-css.d.ts +1 -0
  20. package/dist/build/google-fonts/find-font-files-in-css.js +17 -4
  21. package/dist/build/google-fonts/font-metadata.d.ts +2 -1
  22. package/dist/build/google-fonts/validate.d.ts +2 -1
  23. package/dist/build/inline-css.d.ts +2 -1
  24. package/dist/build/module-dependency-cache.d.ts +2 -1
  25. package/dist/build/next-client-runtime-manifests.d.ts +2 -1
  26. package/dist/build/precompress.d.ts +2 -1
  27. package/dist/build/precompress.js +1 -1
  28. package/dist/build/prerender-paths.d.ts +2 -1
  29. package/dist/build/prerender-phase.d.ts +2 -1
  30. package/dist/build/prerender-server-pool.js +1 -1
  31. package/dist/build/prerender.d.ts +3 -2
  32. package/dist/build/prerender.js +6 -5
  33. package/dist/build/report.d.ts +2 -15
  34. package/dist/build/report.js +1 -51
  35. package/dist/build/run-prerender.d.ts +2 -1
  36. package/dist/build/server-actions-encryption-key.d.ts +2 -1
  37. package/dist/build/ssr-manifest.js +25 -2
  38. package/dist/build/standalone.d.ts +2 -1
  39. package/dist/cache/cache-adapters-virtual.d.ts +2 -1
  40. package/dist/cache.js +1 -2
  41. package/dist/check.d.ts +2 -1
  42. package/dist/check.js +5 -1
  43. package/dist/cli-args.d.ts +2 -1
  44. package/dist/cli.js +5 -0
  45. package/dist/client/client-redirect-matcher.js +2 -1
  46. package/dist/client/client-redirects.d.ts +4 -3
  47. package/dist/client/client-redirects.js +2 -1
  48. package/dist/client/client-rewrites.d.ts +2 -1
  49. package/dist/client/dev-error-overlay-store.d.ts +2 -1
  50. package/dist/client/dev-error-overlay.js +1 -1
  51. package/dist/client/index.js +1 -2
  52. package/dist/client/instrumentation-client-state.js +5 -5
  53. package/dist/client/navigation-runtime.d.ts +16 -2
  54. package/dist/client/navigation-runtime.js +2 -2
  55. package/dist/client/pages-router-link-navigation.d.ts +2 -1
  56. package/dist/client/vinext-next-data.d.ts +25 -1
  57. package/dist/client/window-next.d.ts +2 -1
  58. package/dist/config/config-matchers.d.ts +12 -1
  59. package/dist/config/config-matchers.js +111 -16
  60. package/dist/config/dotenv.d.ts +2 -1
  61. package/dist/config/next-config.d.ts +32 -1
  62. package/dist/config/next-config.js +93 -5
  63. package/dist/config/tsconfig-paths.d.ts +2 -1
  64. package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/dbcs-codec.js +327 -0
  65. package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/dbcs-data.js +123 -0
  66. package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/index.js +29 -0
  67. package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/internal.js +134 -0
  68. package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/sbcs-codec.js +50 -0
  69. package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/sbcs-data-generated.js +455 -0
  70. package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/sbcs-data.js +147 -0
  71. package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/tables/big5-added.json.js +169 -0
  72. package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/tables/cp936.json.js +2584 -0
  73. package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/tables/cp949.json.js +2220 -0
  74. package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/tables/cp950.json.js +227 -0
  75. package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/tables/eucjp.json.js +425 -0
  76. package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/tables/gb18030-ranges.json.js +427 -0
  77. package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/tables/gbk-added.json.js +229 -0
  78. package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/tables/shiftjis.json.js +292 -0
  79. package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/utf16.js +106 -0
  80. package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/utf7.js +182 -0
  81. package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/lib/bom-handling.js +42 -0
  82. package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/lib/extend-node.js +147 -0
  83. package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/lib/index.js +94 -0
  84. package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/lib/streams.js +95 -0
  85. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/detector.js +23 -0
  86. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/index.js +2 -0
  87. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/lookup.js +25 -0
  88. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/bmp.js +11 -0
  89. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/cur.js +15 -0
  90. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/dds.js +11 -0
  91. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/gif.js +12 -0
  92. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/heif.js +55 -0
  93. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/icns.js +76 -0
  94. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/ico.js +39 -0
  95. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/index.js +46 -0
  96. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/j2c.js +11 -0
  97. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/jp2.js +21 -0
  98. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/jpg.js +71 -0
  99. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/jxl-stream.js +42 -0
  100. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/jxl.js +46 -0
  101. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/ktx.js +19 -0
  102. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/png.js +28 -0
  103. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/pnm.js +54 -0
  104. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/psd.js +11 -0
  105. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/svg.js +79 -0
  106. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/tga.js +15 -0
  107. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/tiff.js +96 -0
  108. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/utils.js +53 -0
  109. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/webp.js +45 -0
  110. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/utils/bit-reader.js +38 -0
  111. package/dist/deps/.pnpm/safer-buffer@2.1.2/deps/safer-buffer/safer.js +45 -0
  112. package/dist/deps/.pnpm/ua-parser-js@1.0.35/deps/ua-parser-js/src/ua-parser.js +2 -2
  113. package/dist/entries/app-browser-entry.d.ts +20 -5
  114. package/dist/entries/app-browser-entry.js +79 -6
  115. package/dist/entries/app-rsc-entry.d.ts +2 -1
  116. package/dist/entries/app-rsc-entry.js +59 -60
  117. package/dist/entries/app-rsc-manifest.d.ts +2 -1
  118. package/dist/entries/app-rsc-manifest.js +56 -4
  119. package/dist/entries/app-ssr-entry.js +1 -0
  120. package/dist/entries/pages-entry-helpers.js +1 -2
  121. package/dist/entries/pages-server-entry.d.ts +2 -1
  122. package/dist/entries/pages-server-entry.js +34 -9
  123. package/dist/entries/runtime-entry-module.d.ts +1 -0
  124. package/dist/entries/runtime-entry-module.js +4 -1
  125. package/dist/image/image-adapters-virtual.d.ts +2 -1
  126. package/dist/index.js +184 -103
  127. package/dist/init-cloudflare.d.ts +1 -3
  128. package/dist/init-cloudflare.js +10 -48
  129. package/dist/init-platform.d.ts +2 -0
  130. package/dist/init-platform.js +4 -0
  131. package/dist/plugins/client-compile-hints.d.ts +30 -0
  132. package/dist/plugins/client-compile-hints.js +88 -0
  133. package/dist/plugins/client-reference-dedup.d.ts +2 -1
  134. package/dist/plugins/cloudflare-dev-module-urls.d.ts +2 -1
  135. package/dist/plugins/dynamic-preload-metadata.d.ts +3 -1
  136. package/dist/plugins/dynamic-preload-metadata.js +1 -1
  137. package/dist/plugins/environment.d.ts +2 -1
  138. package/dist/plugins/extensionless-dynamic-import.js +6 -2
  139. package/dist/plugins/fonts.js +9 -12
  140. package/dist/plugins/ignore-dynamic-requests.d.ts +2 -1
  141. package/dist/plugins/import-meta-url.d.ts +2 -1
  142. package/dist/plugins/next-intl-catalog.d.ts +12 -0
  143. package/dist/plugins/next-intl-catalog.js +85 -0
  144. package/dist/plugins/og-assets.d.ts +2 -1
  145. package/dist/plugins/og-assets.js +2 -3
  146. package/dist/plugins/optimize-imports.d.ts +2 -1
  147. package/dist/plugins/pages-node-externals.d.ts +3 -1
  148. package/dist/plugins/pages-node-externals.js +1 -1
  149. package/dist/plugins/remove-console.d.ts +2 -1
  150. package/dist/plugins/require-condition-resolution.d.ts +2 -1
  151. package/dist/plugins/rsc-client-reference-loaders.d.ts +8 -0
  152. package/dist/plugins/rsc-client-reference-loaders.js +170 -68
  153. package/dist/plugins/rsc-client-shim-excludes.js +2 -0
  154. package/dist/plugins/sass.d.ts +2 -1
  155. package/dist/plugins/strip-server-exports.d.ts +2 -1
  156. package/dist/plugins/styled-jsx.d.ts +2 -1
  157. package/dist/plugins/transform-result.d.ts +2 -1
  158. package/dist/plugins/typeof-window.d.ts +2 -1
  159. package/dist/plugins/use-cache-callable.d.ts +1 -1
  160. package/dist/plugins/use-cache-callable.js +136 -94
  161. package/dist/plugins/worker-image-imports.js +1 -1
  162. package/dist/plugins/worker-use-server.d.ts +2 -1
  163. package/dist/routing/app-route-graph.d.ts +46 -0
  164. package/dist/routing/app-route-graph.js +131 -51
  165. package/dist/routing/browser-route-manifest.d.ts +2 -1
  166. package/dist/routing/optimistic-route-trie.d.ts +2 -1
  167. package/dist/routing/route-matching.d.ts +2 -1
  168. package/dist/routing/route-pattern.d.ts +2 -1
  169. package/dist/server/accept-encoding.d.ts +2 -1
  170. package/dist/server/api-handler.js +19 -4
  171. package/dist/server/app-action-forwarding.d.ts +2 -1
  172. package/dist/server/app-bfcache-identity.d.ts +2 -1
  173. package/dist/server/app-bfcache-identity.js +1 -1
  174. package/dist/server/app-browser-action-result.d.ts +2 -1
  175. package/dist/server/app-browser-entry.js +106 -66
  176. package/dist/server/app-browser-error.d.ts +2 -1
  177. package/dist/server/app-browser-history-controller.d.ts +7 -5
  178. package/dist/server/app-browser-history-controller.js +93 -15
  179. package/dist/server/app-browser-hydration.d.ts +2 -1
  180. package/dist/server/app-browser-interception-context.d.ts +2 -1
  181. package/dist/server/app-browser-navigation-controller.d.ts +2 -2
  182. package/dist/server/app-browser-navigation-controller.js +16 -12
  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-rsc-redirect.js +4 -4
  186. package/dist/server/app-browser-server-action-client.d.ts +4 -1
  187. package/dist/server/app-browser-server-action-client.js +4 -3
  188. package/dist/server/app-browser-state.d.ts +2 -4
  189. package/dist/server/app-browser-state.js +9 -4
  190. package/dist/server/app-browser-stream.d.ts +2 -1
  191. package/dist/server/app-browser-supplemental-refresh.js +16 -1
  192. package/dist/server/app-browser-visible-commit.d.ts +3 -2
  193. package/dist/server/app-browser-visible-commit.js +2 -12
  194. package/dist/server/app-client-reference-manifest.d.ts +31 -0
  195. package/dist/server/app-client-reference-manifest.js +46 -0
  196. package/dist/server/app-client-reference-preloader.d.ts +25 -5
  197. package/dist/server/app-client-reference-preloader.js +22 -7
  198. package/dist/server/app-elements-wire.d.ts +8 -39
  199. package/dist/server/app-elements-wire.js +4 -41
  200. package/dist/server/app-elements.d.ts +4 -2
  201. package/dist/server/app-elements.js +4 -2
  202. package/dist/server/app-fallback-renderer.d.ts +9 -2
  203. package/dist/server/app-fallback-renderer.js +4 -1
  204. package/dist/server/app-history-state.d.ts +4 -3
  205. package/dist/server/app-history-state.js +5 -2
  206. package/dist/server/app-inline-css-client.d.ts +2 -1
  207. package/dist/server/app-metadata-tracing.d.ts +2 -1
  208. package/dist/server/app-mounted-layouts.d.ts +21 -0
  209. package/dist/server/app-mounted-layouts.js +67 -0
  210. package/dist/server/app-optimistic-routing.d.ts +37 -2
  211. package/dist/server/app-optimistic-routing.js +75 -2
  212. package/dist/server/app-page-boundary-render.d.ts +20 -2
  213. package/dist/server/app-page-boundary-render.js +224 -40
  214. package/dist/server/app-page-boundary.d.ts +34 -5
  215. package/dist/server/app-page-boundary.js +41 -8
  216. package/dist/server/app-page-cache-finalizer.d.ts +14 -2
  217. package/dist/server/app-page-cache-finalizer.js +71 -30
  218. package/dist/server/app-page-cache-render.d.ts +10 -2
  219. package/dist/server/app-page-cache-render.js +14 -2
  220. package/dist/server/app-page-cache.d.ts +13 -1
  221. package/dist/server/app-page-cache.js +33 -11
  222. package/dist/server/app-page-dispatch.d.ts +39 -11
  223. package/dist/server/app-page-dispatch.js +236 -177
  224. package/dist/server/app-page-element-builder.d.ts +19 -3
  225. package/dist/server/app-page-element-builder.js +193 -71
  226. package/dist/server/app-page-execution.d.ts +43 -51
  227. package/dist/server/app-page-execution.js +205 -92
  228. package/dist/server/app-page-head.d.ts +108 -3
  229. package/dist/server/app-page-head.js +337 -154
  230. package/dist/server/app-page-http-access-fallback-metadata.d.ts +49 -2
  231. package/dist/server/app-page-http-access-fallback-metadata.js +77 -2
  232. package/dist/server/app-page-layout-gate.d.ts +35 -0
  233. package/dist/server/app-page-layout-gate.js +50 -0
  234. package/dist/server/app-page-method.d.ts +2 -1
  235. package/dist/server/app-page-params.d.ts +0 -1
  236. package/dist/server/app-page-params.js +1 -14
  237. package/dist/server/app-page-probe.d.ts +5 -22
  238. package/dist/server/app-page-probe.js +4 -37
  239. package/dist/server/app-page-render-identity.d.ts +2 -1
  240. package/dist/server/app-page-render.d.ts +9 -13
  241. package/dist/server/app-page-render.js +108 -214
  242. package/dist/server/app-page-request.d.ts +15 -4
  243. package/dist/server/app-page-request.js +2 -2
  244. package/dist/server/app-page-response.js +3 -3
  245. package/dist/server/app-page-route-wiring.d.ts +65 -8
  246. package/dist/server/app-page-route-wiring.js +259 -103
  247. package/dist/server/app-page-rsc-render-status.d.ts +29 -2
  248. package/dist/server/app-page-rsc-render-status.js +121 -13
  249. package/dist/server/app-page-search-params-observation.d.ts +7 -2
  250. package/dist/server/app-page-search-params-observation.js +8 -1
  251. package/dist/server/app-page-segment-plan.d.ts +2 -1
  252. package/dist/server/app-page-stream.d.ts +33 -1
  253. package/dist/server/app-page-stream.js +25 -6
  254. package/dist/server/app-pages-bridge.d.ts +6 -1
  255. package/dist/server/app-pages-bridge.js +7 -3
  256. package/dist/server/app-ppr-fallback-shell-render.d.ts +2 -1
  257. package/dist/server/app-ppr-fallback-shell.d.ts +2 -1
  258. package/dist/server/app-prerender-endpoints.d.ts +2 -1
  259. package/dist/server/app-prerender-static-params.d.ts +2 -1
  260. package/dist/server/app-render-dependency.d.ts +21 -4
  261. package/dist/server/app-render-dependency.js +100 -33
  262. package/dist/server/app-request-stage-dispatch.js +1 -1
  263. package/dist/server/app-request-stage-independent-entry.d.ts +2 -1
  264. package/dist/server/app-response-stage-entry.d.ts +2 -1
  265. package/dist/server/app-route-handler-cache.d.ts +2 -1
  266. package/dist/server/app-route-handler-cache.js +2 -2
  267. package/dist/server/app-route-handler-dispatch.d.ts +2 -1
  268. package/dist/server/app-route-handler-dispatch.js +15 -10
  269. package/dist/server/app-route-handler-execution.d.ts +2 -1
  270. package/dist/server/app-route-handler-execution.js +8 -3
  271. package/dist/server/app-route-handler-policy.d.ts +1 -1
  272. package/dist/server/app-route-handler-policy.js +3 -3
  273. package/dist/server/app-route-handler-response.d.ts +2 -1
  274. package/dist/server/app-route-handler-response.js +1 -1
  275. package/dist/server/app-route-handler-runtime.d.ts +2 -1
  276. package/dist/server/app-route-handler-runtime.js +17 -4
  277. package/dist/server/app-route-module-loader.d.ts +18 -1
  278. package/dist/server/app-route-module-loader.js +8 -0
  279. package/dist/server/app-route-tree-prefetch.d.ts +2 -1
  280. package/dist/server/app-rsc-cache-busting.d.ts +2 -2
  281. package/dist/server/app-rsc-cache-busting.js +4 -4
  282. package/dist/server/app-rsc-error-handler.d.ts +4 -2
  283. package/dist/server/app-rsc-error-handler.js +9 -1
  284. package/dist/server/app-rsc-errors.d.ts +10 -1
  285. package/dist/server/app-rsc-errors.js +8 -1
  286. package/dist/server/app-rsc-handler.d.ts +7 -6
  287. package/dist/server/app-rsc-handler.js +36 -34
  288. package/dist/server/app-rsc-request-normalization.d.ts +0 -4
  289. package/dist/server/app-rsc-request-normalization.js +1 -4
  290. package/dist/server/app-rsc-response-finalizer.d.ts +2 -1
  291. package/dist/server/app-rsc-response-finalizer.js +2 -2
  292. package/dist/server/app-rsc-response-stage.js +5 -3
  293. package/dist/server/app-rsc-route-matching.d.ts +38 -1
  294. package/dist/server/app-rsc-route-matching.js +24 -0
  295. package/dist/server/app-segment-config.d.ts +2 -1
  296. package/dist/server/app-segment-config.js +1 -14
  297. package/dist/server/app-server-action-execution.d.ts +5 -2
  298. package/dist/server/app-server-action-execution.js +10 -7
  299. package/dist/server/app-ssr-entry.d.ts +8 -0
  300. package/dist/server/app-ssr-entry.js +98 -50
  301. package/dist/server/app-ssr-error-meta.d.ts +2 -1
  302. package/dist/server/app-ssr-search-params-gate.d.ts +2 -1
  303. package/dist/server/app-ssr-stream.d.ts +22 -10
  304. package/dist/server/app-ssr-stream.js +300 -68
  305. package/dist/server/app-static-generation.d.ts +2 -1
  306. package/dist/server/app-streamed-client-references.d.ts +39 -0
  307. package/dist/server/app-streamed-client-references.js +156 -0
  308. package/dist/server/app-visited-response-cache.d.ts +38 -2
  309. package/dist/server/app-visited-response-cache.js +46 -5
  310. package/dist/server/app-worker-stages.d.ts +27 -4
  311. package/dist/server/app-worker-stages.js +45 -6
  312. package/dist/server/artifact-compatibility.d.ts +2 -2
  313. package/dist/server/artifact-compatibility.js +1 -10
  314. package/dist/server/bfcache-identity.d.ts +2 -1
  315. package/dist/server/cache-headers.d.ts +2 -1
  316. package/dist/server/cache-proof.d.ts +1 -115
  317. package/dist/server/cache-proof.js +1 -544
  318. package/dist/server/cacheability-request.d.ts +2 -1
  319. package/dist/server/cacheability-request.js +13 -8
  320. package/dist/server/config-headers.d.ts +2 -1
  321. package/dist/server/csp.d.ts +2 -1
  322. package/dist/server/default-global-not-found-module.d.ts +2 -1
  323. package/dist/server/default-http-access-fallback-modules.d.ts +33 -0
  324. package/dist/server/default-http-access-fallback-modules.js +31 -0
  325. package/dist/server/defer-until-stream-consumed.d.ts +34 -0
  326. package/dist/server/defer-until-stream-consumed.js +154 -21
  327. package/dist/server/dev-lockfile.d.ts +32 -2
  328. package/dist/server/dev-lockfile.js +46 -2
  329. package/dist/server/dev-module-runner.d.ts +2 -1
  330. package/dist/server/dev-server.js +14 -6
  331. package/dist/server/fetch-handler.js +1 -2
  332. package/dist/server/file-based-metadata.d.ts +2 -1
  333. package/dist/server/framework-tracer.d.ts +2 -1
  334. package/dist/server/headers.d.ts +6 -3
  335. package/dist/server/headers.js +9 -5
  336. package/dist/server/html.d.ts +1 -0
  337. package/dist/server/html.js +19 -1
  338. package/dist/server/http-conditional.d.ts +2 -1
  339. package/dist/server/http-error-responses.d.ts +2 -1
  340. package/dist/server/implicit-tags.d.ts +2 -1
  341. package/dist/server/isr-cache.d.ts +8 -2
  342. package/dist/server/isr-cache.js +26 -1
  343. package/dist/server/metadata-route-build-data.d.ts +2 -1
  344. package/dist/server/metadata-route-build-data.js +1 -1
  345. package/dist/server/metadata-route-response.d.ts +2 -1
  346. package/dist/server/metadata-route-response.js +32 -15
  347. package/dist/server/metadata-routes.d.ts +2 -1
  348. package/dist/server/middleware-runtime.d.ts +2 -1
  349. package/dist/server/multi-stage.d.ts +52 -11
  350. package/dist/server/multi-stage.js +13 -1
  351. package/dist/server/navigation-planner.js +1 -1
  352. package/dist/server/navigation-trace.d.ts +2 -1
  353. package/dist/server/next-error-digest.d.ts +2 -1
  354. package/dist/server/nitro-public-files-plugin.d.ts +2 -1
  355. package/dist/server/nitro-public-files.d.ts +2 -1
  356. package/dist/server/opentelemetry-api.d.ts +2 -1
  357. package/dist/server/operation-token.d.ts +2 -1
  358. package/dist/server/pages-api-route.d.ts +2 -1
  359. package/dist/server/pages-api-route.js +28 -19
  360. package/dist/server/pages-asset-tags.d.ts +2 -1
  361. package/dist/server/pages-body-parser-config.d.ts +2 -1
  362. package/dist/server/pages-client-assets.d.ts +4 -0
  363. package/dist/server/pages-data-route.d.ts +2 -1
  364. package/dist/server/pages-document-asset-props.d.ts +2 -1
  365. package/dist/server/pages-document-initial-props.d.ts +2 -1
  366. package/dist/server/pages-execution-tracing.d.ts +2 -1
  367. package/dist/server/pages-execution-tracing.js +1 -1
  368. package/dist/server/pages-get-initial-props.d.ts +2 -1
  369. package/dist/server/pages-media-type.d.ts +21 -1
  370. package/dist/server/pages-media-type.js +69 -5
  371. package/dist/server/pages-node-compat.js +52 -27
  372. package/dist/server/pages-page-data.d.ts +7 -1
  373. package/dist/server/pages-page-data.js +35 -12
  374. package/dist/server/pages-page-handler.d.ts +3 -2
  375. package/dist/server/pages-page-handler.js +27 -27
  376. package/dist/server/pages-page-method.d.ts +2 -1
  377. package/dist/server/pages-page-response.d.ts +2 -1
  378. package/dist/server/pages-preview.d.ts +2 -1
  379. package/dist/server/pages-readiness.d.ts +2 -1
  380. package/dist/server/pages-request-pipeline.d.ts +10 -1
  381. package/dist/server/pages-request-pipeline.js +6 -7
  382. package/dist/server/pages-request-stage-entry.d.ts +2 -1
  383. package/dist/server/pages-request-stage-entry.js +14 -12
  384. package/dist/server/pages-response-stage-entry.d.ts +2 -1
  385. package/dist/server/pages-response-stage-entry.js +9 -3
  386. package/dist/server/pages-route-data-kind.d.ts +2 -1
  387. package/dist/server/prerender-cache-life-header.d.ts +2 -1
  388. package/dist/server/prerender-route-params.d.ts +2 -1
  389. package/dist/server/prod-server.js +14 -4
  390. package/dist/server/request-log.d.ts +2 -1
  391. package/dist/server/request-pipeline.d.ts +6 -0
  392. package/dist/server/request-pipeline.js +21 -1
  393. package/dist/server/request-tracing.d.ts +2 -1
  394. package/dist/server/request-tracing.js +1 -1
  395. package/dist/server/response-start-tracing.js +7 -29
  396. package/dist/server/rsc-render-stream.d.ts +4 -0
  397. package/dist/server/rsc-render-stream.js +25 -0
  398. package/dist/server/seed-cache.d.ts +2 -1
  399. package/dist/server/seed-cache.js +1 -1
  400. package/dist/server/shared-cache-identity.d.ts +23 -0
  401. package/dist/server/shared-cache-identity.js +36 -0
  402. package/dist/server/static-file-cache.d.ts +2 -1
  403. package/dist/server/static-file-cache.js +1 -0
  404. package/dist/server/worker-revalidation-context.d.ts +2 -1
  405. package/dist/server/worker-stages.d.ts +18 -4
  406. package/dist/server/worker-stages.js +23 -4
  407. package/dist/shims/app.d.ts +2 -1
  408. package/dist/shims/cache-callable-runtime.d.ts +2 -1
  409. package/dist/shims/cache-handler.d.ts +8 -3
  410. package/dist/shims/cache-handler.js +31 -11
  411. package/dist/shims/cache-request-state.d.ts +17 -20
  412. package/dist/shims/cache-request-state.js +16 -21
  413. package/dist/shims/cache-runtime.js +27 -11
  414. package/dist/shims/cache.d.ts +8 -7
  415. package/dist/shims/cache.js +17 -19
  416. package/dist/shims/cacheability-classification.d.ts +2 -0
  417. package/dist/shims/caught-not-found-boundaries.d.ts +15 -0
  418. package/dist/shims/caught-not-found-boundaries.js +48 -0
  419. package/dist/shims/cdn-cache.d.ts +22 -5
  420. package/dist/shims/cdn-purge-routes.d.ts +2 -1
  421. package/dist/shims/client-locale.js +2 -1
  422. package/dist/shims/client-page-root.d.ts +2 -1
  423. package/dist/shims/client-page-root.js +2 -2
  424. package/dist/shims/config.d.ts +2 -1
  425. package/dist/shims/default-forbidden.d.ts +4 -0
  426. package/dist/shims/default-forbidden.js +18 -0
  427. package/dist/shims/default-not-found.d.ts +0 -5
  428. package/dist/shims/default-not-found.js +5 -41
  429. package/dist/shims/default-unauthorized.d.ts +4 -0
  430. package/dist/shims/default-unauthorized.js +18 -0
  431. package/dist/shims/dynamic.js +9 -6
  432. package/dist/shims/error-boundary.d.ts +39 -3
  433. package/dist/shims/error-boundary.js +33 -18
  434. package/dist/shims/fetch-cache-state.d.ts +5 -1
  435. package/dist/shims/fetch-cache-state.js +1 -3
  436. package/dist/shims/fetch-cache.d.ts +2 -1
  437. package/dist/shims/fetch-cache.js +34 -24
  438. package/dist/shims/font-google.js +1 -2
  439. package/dist/shims/font-utils.d.ts +3 -2
  440. package/dist/shims/font-utils.js +5 -3
  441. package/dist/shims/form.js +3 -3
  442. package/dist/shims/headers.d.ts +8 -23
  443. package/dist/shims/headers.js +17 -67
  444. package/dist/shims/http-access-error-fallback.d.ts +7 -0
  445. package/dist/shims/http-access-error-fallback.js +47 -0
  446. package/dist/shims/image.d.ts +1 -22
  447. package/dist/shims/internal/app-prefetch-fetch-queue.d.ts +22 -2
  448. package/dist/shims/internal/app-prefetch-fetch-queue.js +71 -18
  449. package/dist/shims/internal/app-route-prefetch-policy.d.ts +14 -3
  450. package/dist/shims/internal/app-route-prefetch-policy.js +29 -4
  451. package/dist/shims/internal/cache-context-accessor.d.ts +2 -1
  452. package/dist/shims/internal/client-reference-loader.d.ts +7 -0
  453. package/dist/shims/internal/client-reference-loader.js +91 -0
  454. package/dist/shims/internal/cookie-serialize.d.ts +2 -1
  455. package/dist/shims/internal/cookies.js +1 -2
  456. package/dist/shims/internal/headers-state.d.ts +2 -0
  457. package/dist/shims/internal/headers-state.js +6 -1
  458. package/dist/shims/internal/hybrid-client-route-owner-direct.d.ts +2 -1
  459. package/dist/shims/internal/interpolate-as.d.ts +2 -1
  460. package/dist/shims/internal/navigation-untracked.js +1 -1
  461. package/dist/shims/internal/pages-data-target.d.ts +2 -1
  462. package/dist/shims/internal/pages-data-url.d.ts +2 -1
  463. package/dist/shims/internal/thenable-well-known-properties.d.ts +2 -1
  464. package/dist/shims/link.js +197 -52
  465. package/dist/shims/metadata.d.ts +52 -29
  466. package/dist/shims/metadata.js +142 -42
  467. package/dist/shims/navigation-errors.d.ts +2 -1
  468. package/dist/shims/navigation-server.js +1 -1
  469. package/dist/shims/navigation.d.ts +95 -8
  470. package/dist/shims/navigation.js +255 -47
  471. package/dist/shims/navigation.react-server.js +2 -2
  472. package/dist/shims/pages-router-runtime.d.ts +2 -1
  473. package/dist/shims/ppr-fallback-shell.d.ts +2 -1
  474. package/dist/shims/request-state-types.d.ts +2 -2
  475. package/dist/shims/router.js +14 -3
  476. package/dist/shims/slot.d.ts +12 -0
  477. package/dist/shims/slot.js +37 -9
  478. package/dist/shims/unified-request-context.d.ts +1 -1
  479. package/dist/shims/unified-request-context.js +5 -6
  480. package/dist/typegen.d.ts +2 -1
  481. package/dist/utils/cache-control-metadata.d.ts +5 -0
  482. package/dist/utils/cache-control-metadata.js +9 -1
  483. package/dist/utils/client-build-manifest.d.ts +4 -1
  484. package/dist/utils/client-build-manifest.js +9 -2
  485. package/dist/utils/client-entry-manifest.d.ts +13 -0
  486. package/dist/utils/client-entry-manifest.js +20 -1
  487. package/dist/utils/client-reference-chunks.d.ts +45 -0
  488. package/dist/utils/client-reference-chunks.js +30 -0
  489. package/dist/utils/client-runtime-metadata.d.ts +9 -1
  490. package/dist/utils/client-runtime-metadata.js +40 -9
  491. package/dist/utils/compare.d.ts +9 -0
  492. package/dist/utils/compare.js +15 -1
  493. package/dist/utils/lazy-chunks.d.ts +14 -0
  494. package/dist/utils/lazy-chunks.js +27 -1
  495. package/dist/utils/middleware-request-headers.d.ts +2 -1
  496. package/dist/utils/project.d.ts +4 -3
  497. package/dist/utils/project.js +12 -17
  498. package/dist/utils/query.d.ts +2 -1
  499. package/dist/utils/regex.d.ts +5 -0
  500. package/dist/utils/regex.js +11 -1
  501. package/dist/utils/text-stream.d.ts +10 -5
  502. package/dist/utils/text-stream.js +6 -6
  503. package/dist/utils/vite-cli-invocation.d.ts +2 -1
  504. package/package.json +6 -5
  505. package/dist/build/layout-classification-types.d.ts +0 -60
  506. package/dist/build/layout-classification-types.js +0 -1
  507. package/dist/build/layout-classification.d.ts +0 -61
  508. package/dist/build/layout-classification.js +0 -98
  509. package/dist/build/route-classification-injector.d.ts +0 -32
  510. package/dist/build/route-classification-injector.js +0 -59
  511. package/dist/build/route-classification-manifest.d.ts +0 -53
  512. package/dist/build/route-classification-manifest.js +0 -143
  513. package/dist/deps/.pnpm/image-size@2.0.2/deps/image-size/dist/index.js +0 -808
  514. package/dist/server/app-browser-client-reuse-manifest.d.ts +0 -10
  515. package/dist/server/app-browser-client-reuse-manifest.js +0 -101
  516. package/dist/server/app-layout-param-observation.d.ts +0 -41
  517. package/dist/server/app-layout-param-observation.js +0 -168
  518. package/dist/server/client-reuse-manifest.d.ts +0 -102
  519. package/dist/server/client-reuse-manifest.js +0 -209
  520. package/dist/server/default-not-found-module.d.ts +0 -19
  521. package/dist/server/default-not-found-module.js +0 -18
  522. package/dist/server/rsc-stream-hints.d.ts +0 -21
  523. package/dist/server/rsc-stream-hints.js +0 -227
  524. package/dist/server/skip-cache-proof.d.ts +0 -60
  525. package/dist/server/skip-cache-proof.js +0 -168
  526. package/dist/server/static-layout-client-reuse-proof.d.ts +0 -13
  527. package/dist/server/static-layout-client-reuse-proof.js +0 -33
  528. package/dist/utils/sorted-array.d.ts +0 -7
  529. package/dist/utils/sorted-array.js +0 -20
@@ -3,12 +3,14 @@ import "./app-rsc-vary.js";
3
3
  import { isOnDemandRevalidateRequest } from "./revalidation-request.js";
4
4
  import { createRscOnErrorHandler } from "./app-rsc-errors.js";
5
5
  //#region src/server/app-rsc-error-handler.ts
6
+ const loggedErrorsByRequest = /* @__PURE__ */ new WeakMap();
6
7
  /**
7
8
  * Build a per-request RSC error handler that extracts request metadata from
8
9
  * the incoming Web `Request`, wires it into a `createRscOnErrorHandler` call,
9
10
  * and binds the configured `reportRequestError` reporter.
10
11
  *
11
- * Pure factory: takes all deps explicitly — no closure over module-level state.
12
+ * Takes all deps explicitly. The only module-level state is the set of errors
13
+ * each request already logged, keyed weakly by its `Request`.
12
14
  */
13
15
  function createAppRscOnErrorHandler(reportRequestError, request, pathname, routePath, overrides) {
14
16
  const requestHeaders = Object.fromEntries(request.headers.entries());
@@ -24,9 +26,15 @@ function createAppRscOnErrorHandler(reportRequestError, request, pathname, route
24
26
  renderSource: overrides?.renderSource ?? (request.headers.get("RSC") === "1" || new URL(request.url).pathname.endsWith(".rsc") ? "react-server-components-payload" : "react-server-components"),
25
27
  revalidateReason: isOnDemandRevalidateRequest(request.headers.get("x-prerender-revalidate")) ? "on-demand" : overrides?.revalidateReason
26
28
  };
29
+ let loggedErrors = loggedErrorsByRequest.get(request);
30
+ if (!loggedErrors) {
31
+ loggedErrors = /* @__PURE__ */ new WeakSet();
32
+ loggedErrorsByRequest.set(request, loggedErrors);
33
+ }
27
34
  return createRscOnErrorHandler({
28
35
  attachDigest: errorContext.renderSource !== "server-rendering",
29
36
  errorContext,
37
+ loggedErrors,
30
38
  reportRequestError(error, info, context) {
31
39
  reportRequestError(error, info, context);
32
40
  },
@@ -15,6 +15,14 @@ type RscErrorReporter = (error: unknown, requestInfo: RscRequestInfo, errorConte
15
15
  type CreateRscOnErrorHandlerOptions = {
16
16
  attachDigest?: boolean;
17
17
  errorContext: RscErrorContext | null;
18
+ /**
19
+ * The errors this request already logged, shared by its handlers so an error
20
+ * reaching more than one, such as in the RSC and then the SSR pass, is logged
21
+ * once. Like Next.js, a digest alone does not mean an error was logged: user
22
+ * code can set its own. Request-scoped, as a failed module evaluation throws
23
+ * the same error on every request. Defaults to this handler's own.
24
+ */
25
+ loggedErrors?: WeakSet<object>;
18
26
  nodeEnv?: string;
19
27
  reportRequestError: RscErrorReporter;
20
28
  requestInfo: RscRequestInfo | null;
@@ -46,4 +54,5 @@ export declare function errorDigest(input: string): string;
46
54
  export declare const PRODUCTION_SERVER_COMPONENTS_ERROR_MESSAGE = "Minified React error #441; visit https://react.dev/errors/441 for the full message or use the non-minified dev environment for full errors and additional helpful warnings.";
47
55
  export declare function sanitizeErrorForClient(error: unknown, nodeEnv?: "development" | "production" | "test"): unknown;
48
56
  export declare function createRscOnErrorHandler(options: CreateRscOnErrorHandlerOptions): (error: unknown) => string | undefined;
49
- //#endregion
57
+ //#endregion
58
+ export {};
@@ -63,6 +63,13 @@ function sanitizeErrorForClient(error, nodeEnv = process.env.NODE_ENV) {
63
63
  }
64
64
  function createRscOnErrorHandler(options) {
65
65
  let loggedPrerenderErrors;
66
+ const loggedErrors = options.loggedErrors ?? /* @__PURE__ */ new WeakSet();
67
+ const wasLogged = (error) => {
68
+ if (typeof error !== "object" && typeof error !== "function" || error === null) return false;
69
+ if (loggedErrors.has(error)) return true;
70
+ loggedErrors.add(error);
71
+ return false;
72
+ };
66
73
  return (error) => {
67
74
  const nodeEnv = options.nodeEnv ?? process.env.NODE_ENV;
68
75
  const reportableError = error && typeof error === "object" && ORIGINAL_SERVER_ERROR in error ? Reflect.get(error, ORIGINAL_SERVER_ERROR) : error;
@@ -87,7 +94,7 @@ function createRscOnErrorHandler(options) {
87
94
  const route = options.requestInfo?.path ?? options.errorContext?.routePath ?? "<unknown>";
88
95
  console.error(`[vinext] Error prerendering route ${JSON.stringify(route)}:`, reportableError);
89
96
  }
90
- } else if (nodeEnv !== "production" && !thrownHasDigest) console.error("[vinext] Server render error:", properError);
97
+ } else if (!(reportableError !== error && thrownHasDigest) && !wasLogged(reportableError)) console.error("[vinext] Server render error:", properError);
91
98
  return digest;
92
99
  };
93
100
  }
@@ -1,14 +1,13 @@
1
1
  import { VinextCacheabilityProbeMode } from "./multi-stage.js";
2
2
  import { NextHeader, NextI18nConfig, NextRedirect, NextRewrite } from "../config/next-config.js";
3
+ import { AppRscRenderMode } from "./app-rsc-render-mode.js";
3
4
  import { ImageConfig } from "./image-optimization.js";
4
5
  import { ExecutionContextLike } from "../shims/request-context.js";
5
6
  import { AppMiddlewareContext, ApplyAppMiddlewareResult } from "./app-middleware.js";
6
- import { ClientReuseManifestParseResult } from "./client-reuse-manifest.js";
7
- import { AppRscRenderMode } from "./app-rsc-render-mode.js";
8
7
  import { RootParams } from "../shims/root-params.js";
9
8
  import { AppPagePprFallbackCacheShell } from "./app-ppr-fallback-shell.js";
10
- import { AppPrerenderRootParamNamesMap, AppPrerenderStaticParamsMap } from "./app-prerender-endpoints.js";
11
9
  import { PagesRouteDataKind } from "./pages-route-data-kind.js";
10
+ import { AppPrerenderRootParamNamesMap, AppPrerenderStaticParamsMap } from "./app-prerender-endpoints.js";
12
11
  import { TrustedPrerenderState } from "./prerender-route-params.js";
13
12
  import { AppRouteTreePrefetchRoute, PrefetchInliningConfig } from "./app-route-tree-prefetch.js";
14
13
  import { DispatchAppWorkerResponseStage, RenderAppWorkerResponseStageLocally } from "./app-worker-stages.js";
@@ -52,7 +51,6 @@ type AppRscRouteMatch<TRoute> = {
52
51
  type DispatchMatchedPageOptions<TRoute> = {
53
52
  bypassInterceptionContextCache: boolean;
54
53
  cachePathname: string;
55
- clientReuseManifest: ClientReuseManifestParseResult;
56
54
  cleanPathname: string;
57
55
  displayPathname: string;
58
56
  formState: ReactFormState | null;
@@ -170,7 +168,7 @@ type RenderPagesFallbackOptions = {
170
168
  pattern: string;
171
169
  };
172
170
  } | null;
173
- dispatchPagesResponseStage?: (request: Request, resourceKind: "api" | "page", dataKind?: PagesRouteDataKind, hasRequestAwareDocument?: boolean) => Promise<Response>;
171
+ dispatchPagesResponseStage?: (request: Request, resourceKind: "api" | "page", dataKind?: PagesRouteDataKind, hasRequestAwareDocument?: boolean, runsInitialProps?: boolean) => Promise<Response>;
174
172
  isDataRequest?: boolean;
175
173
  isRscRequest: boolean;
176
174
  initialResponseHeaders?: Headers;
@@ -179,6 +177,8 @@ type RenderPagesFallbackOptions = {
179
177
  pathname?: string;
180
178
  pagesDataRequest?: Request | null;
181
179
  request: Request;
180
+ /** The shared cache entry answers every host; a request-time render is not stored. */
181
+ sharedAcrossHosts?: boolean;
182
182
  url: URL;
183
183
  };
184
184
  type NavigationContextValue = {
@@ -263,4 +263,5 @@ export type CreateAppRscHandlerOptions<TRoute extends AppRscHandlerRoute> = {
263
263
  export type AppRscRequestHandler = (request: Request, ctx: unknown, allowInternalRscDocumentFallback?: boolean, dispatchResponseStage?: DispatchAppWorkerResponseStage, responseStageProbeMode?: VinextCacheabilityProbeMode | null, trustedPrerenderState?: TrustedPrerenderState | null) => Promise<Response>;
264
264
  /** Build the request-only handler without retaining the response renderer graph. */
265
265
  export declare function createAppRscRequestHandler<TRoute extends AppRscHandlerRoute>(options: CreateAppRscHandlerOptions<TRoute>): AppRscRequestHandler;
266
- //#endregion
266
+ //#endregion
267
+ export {};
@@ -17,7 +17,6 @@ import { runOutsideWorkStoreScope } from "../shims/internal/work-store-scope.js"
17
17
  import { isInterceptionMatchedUrlPath, normalizePath } from "./normalize-path.js";
18
18
  import { normalizeDefaultLocalePathname, shouldRestoreLocaleRootTrailingSlash } from "./pages-i18n.js";
19
19
  import { buildNextDataNotFoundResponse, normalizePagesDataRequest } from "./pages-data-route.js";
20
- import { getCdnCacheAdapter } from "../shims/cdn-cache.js";
21
20
  import { markRouteCacheabilityDynamic, preserveRouteCacheabilityResponsePolicy } from "../shims/cacheability-classification.js";
22
21
  import { NEVER_CACHE_CONTROL, applyCdnResponseHeaders, captureCdnResponsePolicyOverrides, isCdnResponsePolicyHeader, reconcileCdnResponseHeadersAfterOuterPolicy } from "./cache-control.js";
23
22
  import { isOnDemandRevalidateRequest } from "./revalidation-request.js";
@@ -28,29 +27,30 @@ import { traceFindPageComponents } from "./pages-execution-tracing.js";
28
27
  import { DEFAULT_DEVICE_SIZES, DEFAULT_IMAGE_SIZES, isImageOptimizationPath, markImageOptimizationSignal, resolveDevImageRedirect } from "./image-optimization.js";
29
28
  import { parseCacheabilityManifest } from "./cacheability-manifest.js";
30
29
  import { getRenderedConcreteUrlPathsForRoute } from "./pregenerated-concrete-paths.js";
31
- import { VINEXT_RSC_CACHE_BUSTING_SEARCH_PARAM, canonicalizeLoadingShellRscRequestHeaders, canonicalizePrewarmableRscRequestHeaders, createCanonicalRscRequestUrl, createRscRedirectLocation, createRscRequestUrl, hasRscCacheBustingSearchParam, resolveInvalidRscCacheBustingRequest, stripRscCacheBustingSearchParam, stripRscSuffix } from "./app-rsc-cache-busting.js";
32
- import { mergeMiddlewareResponseHeaders, mergeMiddlewareResponseHeadersOntoResponse, withExternalRewriteResponseHeaders } from "./middleware-response-headers.js";
33
- import { consumeResponseStageLinkProvenance, copyLinkHeaderProvenance } from "./app-response-header-provenance.js";
34
- import "./app-page-response.js";
35
- import { parseNextHttpErrorDigest } from "./next-error-digest.js";
36
- import { traceAppPageRender } from "./app-page-tracing.js";
37
30
  import { openForwardedMiddlewareContext } from "./forwarded-middleware-context.js";
31
+ import { consumeResponseStageLinkProvenance, copyLinkHeaderProvenance } from "./app-response-header-provenance.js";
38
32
  import { setFrameworkRequestRoute, traceFrameworkRequest } from "./request-tracing.js";
33
+ import { mergeMiddlewareResponseHeaders, mergeMiddlewareResponseHeadersOntoResponse, withExternalRewriteResponseHeaders } from "./middleware-response-headers.js";
34
+ import { VINEXT_RSC_CACHE_BUSTING_SEARCH_PARAM, canonicalizeLoadingShellRscRequestHeaders, canonicalizePrewarmableRscRequestHeaders, createCanonicalRscRequestUrl, createRscRedirectLocation, createRscRequestUrl, hasRscCacheBustingSearchParam, resolveInvalidRscCacheBustingRequest, stripRscCacheBustingSearchParam, stripRscSuffix } from "./app-rsc-cache-busting.js";
39
35
  import { matchPrerenderRouteParamsPayload, readTrustedPrerenderRouteParams, serializePrerenderRouteParamsHeader } from "./prerender-route-params.js";
40
- import { buildPageCacheTags } from "./implicit-tags.js";
41
36
  import { createServerActionNotFoundResponse, getServerActionNotFoundMessage } from "./server-action-not-found.js";
42
37
  import { isPossibleAppRouteActionRequest } from "./app-action-request.js";
38
+ import "./app-page-response.js";
39
+ import { parseNextHttpErrorDigest } from "./next-error-digest.js";
43
40
  import { isAppRouteHandlerRoute } from "./app-rsc-route-matching.js";
41
+ import { traceAppPageRender } from "./app-page-tracing.js";
44
42
  import { normalizeInterceptionContextHeader } from "./app-interception-context-header.js";
43
+ import { buildPageCacheTags } from "./implicit-tags.js";
45
44
  import { buildPostMwRequestContext } from "./app-post-middleware-context.js";
46
45
  import { pickRootParams, setRootParams } from "../shims/root-params.js";
47
46
  import { createRouteTreePrefetchResponse, isRouteTreePrefetchRequest } from "./app-route-tree-prefetch.js";
48
- import { createSharedAppPageCacheIdentity, isStaticCandidateAppPageDispatch, prepareSharedAppPageDispatch, withoutAppPageDispatchQuery } from "./app-worker-stages.js";
47
+ import { createSharedAppCacheIdentity, createSharedAppPageCacheIdentity, createSharedHybridPagesCacheIdentity, isStaticCandidateAppPageDispatch, prepareSharedAppPageDispatch, withoutAppPageDispatchQuery } from "./app-worker-stages.js";
49
48
  import { flattenErrorCauses } from "../utils/error-cause.js";
50
49
  import { applyAppRscConfigHeaders, finalizeAppRscResponse, markAppRscResponseConfigHeadersApplied } from "./app-rsc-response-finalizer.js";
51
50
  import { normalizeRscRequest } from "./app-rsc-request-normalization.js";
52
51
  import { hasPagesPreviewCookie } from "./pages-response-stage.js";
53
52
  import { runWithPrerenderWorkUnit } from "./prerender-work-unit-setup.js";
53
+ import { adapterSharedCacheIdentity, adapterUsesSharedCacheIdentity, pagesCacheIdentityOrigin, pagesPageSharesAcrossHosts } from "./shared-cache-identity.js";
54
54
  import { consumePagesResponseStagePolicyOwner, withoutResponseStageVary } from "./response-stage-policy.js";
55
55
  //#region src/server/app-rsc-handler.ts
56
56
  const HAS_CONFIG_HEADERS = process.env.__VINEXT_HAS_CONFIG_HEADERS !== "false";
@@ -132,10 +132,6 @@ function readCacheabilityRequestProjection(options) {
132
132
  };
133
133
  return parsedCacheabilityRequestProjection.manifest;
134
134
  }
135
- function adapterUsesQueryFreeCacheIdentity() {
136
- const adapter = getCdnCacheAdapter();
137
- return adapter.requiresCompletedResponseAdmission === true && adapter.responseStageCacheIdentity === "query-free";
138
- }
139
135
  function hasUrlParserDotSegment(pathname) {
140
136
  return pathname.split("/").some((segment) => {
141
137
  const decodedDots = segment.replaceAll(/%2e/gi, ".");
@@ -195,10 +191,6 @@ function createMissingServerActionResponse(options, actionId) {
195
191
  options.clearRequestContext();
196
192
  return createServerActionNotFoundResponse();
197
193
  }
198
- function redirectDestinationWithBasePath(destination, basePath, hadBasePath) {
199
- if (!basePath || !hadBasePath || isExternalUrl(destination) || hasBasePath(destination, basePath)) return destination;
200
- return basePath + destination;
201
- }
202
194
  async function applyRewrite(options, cleanPathname, recordCacheability = true) {
203
195
  if (!HAS_CONFIG_REWRITES || !options.rewrites.length) return null;
204
196
  const sourcePathname = options.paramsPathname ?? cleanPathname;
@@ -316,7 +308,7 @@ async function handleAppRscRequest(options, request, preMiddlewareRequestContext
316
308
  if (request.headers.has("X-Vinext-Interception-Context") || request.headers.has("X-Vinext-Interception-Id")) setInterceptionResponseUncacheable(true);
317
309
  return normalized;
318
310
  }
319
- const { url, isRscRequest, interceptionContextHeader, interceptionIdHeader, mountedSlotsHeader, renderMode, clientReuseManifest, hadBasePath } = normalized;
311
+ const { url, isRscRequest, interceptionContextHeader, interceptionIdHeader, mountedSlotsHeader, renderMode, hadBasePath } = normalized;
320
312
  setFrameworkRequestRoute(void 0, isRscRequest);
321
313
  const hasRawInterceptionContext = isRscRequest && request.headers.has("X-Vinext-Interception-Context");
322
314
  if (hasRawInterceptionContext) setInterceptionResponseUncacheable(true);
@@ -371,7 +363,7 @@ async function handleAppRscRequest(options, request, preMiddlewareRequestContext
371
363
  });
372
364
  if (prerenderEndpointResponse) return prerenderEndpointResponse;
373
365
  }
374
- if (!options.skipTrailingSlashRedirect) {
366
+ if (!isDataRequest && !options.skipTrailingSlashRedirect) {
375
367
  const trailingSlashRedirect = options.trailingSlash && options.isMetadataRoutePath && await options.isMetadataRoutePath(cleanPathname) ? null : normalizeTrailingSlash(requestCleanPathname, hadBasePath ? options.basePath : "", options.trailingSlash, url.search);
376
368
  if (trailingSlashRedirect) return trailingSlashRedirect;
377
369
  }
@@ -385,10 +377,10 @@ async function handleAppRscRequest(options, request, preMiddlewareRequestContext
385
377
  const configMatchers = HAS_CONFIG_REDIRECTS && options.configRedirects.length ? await import("../config/config-matchers.js") : null;
386
378
  const redirect = configMatchers ? configMatchers.matchRedirect(redirectPathname, options.configRedirects, preMiddlewareRequestContext, basePathState, dispatchResponseStage ? void 0 : markConditionalRedirectCacheability) : null;
387
379
  if (configMatchers && redirect) {
388
- const destination = configMatchers.sanitizeDestination(redirectDestinationWithBasePath(redirect.destination, options.basePath, hadBasePath));
389
- const location = isRscRequest && request.headers.get("RSC") === "1" ? await createRscRedirectLocation(destination, request) : configMatchers.preserveRedirectDestinationQuery(destination, url.search, redirect.destinationQuery);
380
+ const destination = redirect.destination;
381
+ const location = isRscRequest && request.headers.get("RSC") === "1" ? await createRscRedirectLocation(configMatchers.encodeRedirectLocation(destination), request) : configMatchers.encodeRedirectLocation(configMatchers.preserveRedirectDestinationQuery(destination, url.search, redirect.destinationQuery));
390
382
  return new Response(null, {
391
- status: redirect.permanent ? 308 : 307,
383
+ status: redirect.statusCode,
392
384
  headers: { Location: location }
393
385
  });
394
386
  }
@@ -484,7 +476,7 @@ async function handleAppRscRequest(options, request, preMiddlewareRequestContext
484
476
  const cache = responseStageProbeMode || isOnDemandRevalidate || (props.kind === "app-page" || props.kind === "app-route-handler") && (props.bypassInterceptionContextCache || props.forceDynamic === true && responseStagePolicy === null) ? "bypass" : canUseSharedWorkerResponseStage ? "shared" : "bypass";
485
477
  let dispatchRequest = props.kind === "app-page" ? prepareSharedAppPageDispatch(stageRequest, cache) : stageRequest;
486
478
  let canonicalRsc = null;
487
- if (cache === "shared" && props.kind === "app-page" && props.isRscRequest && props.matchKind === "request" && props.interceptionContext === null && props.interceptionId === null && props.mountedSlotsHeader === null) {
479
+ if (cache === "shared" && props.kind === "app-page" && props.isRscRequest && (props.matchKind === "request" || props.matchKind === "resolved") && props.interceptionContext === null && props.interceptionId === null && props.mountedSlotsHeader === null) {
488
480
  const headers = new Headers(dispatchRequest.headers);
489
481
  if (props.renderMode === "navigation" ? canonicalizePrewarmableRscRequestHeaders(headers) : props.renderMode === "prefetch-loading-shell" && props.canUseCanonicalLoadingShell ? canonicalizeLoadingShellRscRequestHeaders(headers) : false) {
490
482
  canonicalRsc = {
@@ -513,7 +505,7 @@ async function handleAppRscRequest(options, request, preMiddlewareRequestContext
513
505
  const rscPath = canonicalRsc.navigation ? createCanonicalRscRequestUrl(dispatchRequest.url) : await createRscRequestUrl(dispatchRequest.url, canonicalRsc.headers);
514
506
  dispatchRequest = cloneRequestWithUrl(dispatchRequest, new URL(rscPath, dispatchRequest.url).toString());
515
507
  }
516
- 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;
508
+ const cacheIdentity = cache !== "shared" || stageProps.kind === "app-full-request" || stageProps.kind === "hybrid-pages" || !adapterUsesSharedCacheIdentity() ? void 0 : stageProps.kind === "app-page" && adapterSharedCacheIdentity() === "query-free" && responseStagePolicy === null && stageProps.matchKind !== "interception" && stageProps.interceptionContext === null && stageProps.interceptionId === null && stageProps.mountedSlotsHeader === null ? createSharedAppPageCacheIdentity(dispatchRequest, stageProps) : createSharedAppCacheIdentity(dispatchRequest, stageProps);
517
509
  let response = await dispatchResponseStage(dispatchRequest, stageProps, cacheIdentity ? {
518
510
  cache,
519
511
  cacheIdentity
@@ -557,7 +549,7 @@ async function handleAppRscRequest(options, request, preMiddlewareRequestContext
557
549
  isRscRequest,
558
550
  middlewareCookieOverlay,
559
551
  mountedSlotsHeader,
560
- protocolVersion: 11,
552
+ protocolVersion: 13,
561
553
  requestOrigin: url.origin,
562
554
  renderMode,
563
555
  resolvedUrl,
@@ -925,10 +917,15 @@ async function handleAppRscRequest(options, request, preMiddlewareRequestContext
925
917
  if (!filesystemRouteEligible) return null;
926
918
  const pagesRouteUrl = cleanPathnameIsRequestPathname ? requestCleanPathname + resolvedUrl.slice(pathnameForResolvedUrl(resolvedUrl).length) : resolvedUrl;
927
919
  let sharedOuterPolicyNeedsReconciliation = false;
928
- const dispatchPagesResponseStage = dispatchResponseStage ? async (stageRequest, resourceKind, dataKind, hasRequestAwareDocument) => {
920
+ const dispatchPagesResponseStage = dispatchResponseStage ? async (stageRequest, resourceKind, dataKind, hasRequestAwareDocument, runsInitialProps) => {
929
921
  const pagesOnDemandRevalidate = resourceKind === "page" && isOnDemandRevalidateRequest(stageRequest.headers.get("x-prerender-revalidate"));
930
922
  const cache = responseStageProbeMode || pagesOnDemandRevalidate || hasPagesPreviewCookie(stageRequest.headers.get("cookie")) || resourceKind === "page" && dataKind === "static" && hasRequestAwareDocument ? "bypass" : canUseSharedWorkerResponseStage ? "shared" : "bypass";
931
- let response = await dispatchResponseStage(responseStageRequest(stageRequest), {
923
+ const renderRequest = responseStageRequest(stageRequest);
924
+ const sharedAcrossHosts = (cache === "shared" || responseStageProbeMode !== null) && resourceKind === "page" && pagesPageSharesAcrossHosts({
925
+ dataKind,
926
+ runsInitialProps
927
+ }) && adapterUsesSharedCacheIdentity();
928
+ const hybridProps = {
932
929
  kind: "hybrid-pages",
933
930
  buildId: options.buildId,
934
931
  cacheability: {
@@ -949,13 +946,18 @@ async function handleAppRscRequest(options, request, preMiddlewareRequestContext
949
946
  matchKind,
950
947
  middlewareCookieOverlay,
951
948
  preHandlerHeaders: cache === "shared" && resourceKind === "page" && dataKind === "static" ? null : [...await loadPreHandlerResponseHeaders()],
952
- protocolVersion: 11,
949
+ protocolVersion: 13,
953
950
  requestOrigin: url.origin,
954
951
  resourceKind,
955
952
  requestUrl: request.url,
956
953
  resolvedUrl: pagesRouteUrl,
957
- scriptNonce: scriptNonce ?? null
958
- }, { cache });
954
+ scriptNonce: scriptNonce ?? null,
955
+ sharedAcrossHosts
956
+ };
957
+ let response = await dispatchResponseStage(renderRequest, hybridProps, cache === "shared" && sharedAcrossHosts ? {
958
+ cache,
959
+ cacheIdentity: createSharedHybridPagesCacheIdentity(renderRequest, hybridProps, pagesCacheIdentityOrigin(request.url, options.i18nConfig))
960
+ } : { cache });
959
961
  const policyOwner = resourceKind === "page" ? consumePagesResponseStagePolicyOwner(response) : {
960
962
  owner: null,
961
963
  response
@@ -1163,7 +1165,7 @@ async function handleAppRscRequest(options, request, preMiddlewareRequestContext
1163
1165
  isRscRequest,
1164
1166
  middlewareCookieOverlay,
1165
1167
  mountedSlotsHeader,
1166
- protocolVersion: 11,
1168
+ protocolVersion: 13,
1167
1169
  requestOrigin: url.origin,
1168
1170
  renderMode,
1169
1171
  resolvedUrl,
@@ -1250,7 +1252,7 @@ async function handleAppRscRequest(options, request, preMiddlewareRequestContext
1250
1252
  middlewareCookieOverlay,
1251
1253
  mountedSlotsHeader,
1252
1254
  params,
1253
- protocolVersion: 11,
1255
+ protocolVersion: 13,
1254
1256
  requestOrigin: url.origin,
1255
1257
  renderMode,
1256
1258
  resolvedUrl,
@@ -1292,7 +1294,7 @@ async function handleAppRscRequest(options, request, preMiddlewareRequestContext
1292
1294
  middlewareCookieOverlay,
1293
1295
  mountedSlotsHeader,
1294
1296
  params,
1295
- protocolVersion: 11,
1297
+ protocolVersion: 13,
1296
1298
  requestOrigin: url.origin,
1297
1299
  renderMode,
1298
1300
  resolvedUrl,
@@ -1302,7 +1304,6 @@ async function handleAppRscRequest(options, request, preMiddlewareRequestContext
1302
1304
  }).then(composeResponseStageResponse) : await options.dispatchMatchedPage({
1303
1305
  bypassInterceptionContextCache,
1304
1306
  cachePathname,
1305
- clientReuseManifest,
1306
1307
  cleanPathname,
1307
1308
  displayPathname: canonicalPathname,
1308
1309
  formState: progressiveActionFormState?.formState ?? null,
@@ -1410,6 +1411,7 @@ function createAppRscRequestHandler(options) {
1410
1411
  const requestContext = createRequestContext({
1411
1412
  headersContext,
1412
1413
  executionContext,
1414
+ isOnDemandRevalidate: isOnDemandRevalidateRequest(request.headers.get(PRERENDER_REVALIDATE_HEADER)),
1413
1415
  requestSignal: executionContext?.requestSignal ?? rawRequestSignal,
1414
1416
  unstableCacheRevalidation: "background"
1415
1417
  });
@@ -1,4 +1,3 @@
1
- import { ClientReuseManifestParseResult } from "./client-reuse-manifest.js";
2
1
  import { AppRscRenderMode } from "./app-rsc-render-mode.js";
3
2
  import { normalizeMountedSlotsHeader } from "./app-mounted-slots-header.js";
4
3
  //#region src/server/app-rsc-request-normalization.d.ts
@@ -21,8 +20,6 @@ export type NormalizedRscRequest = {
21
20
  mountedSlotsHeader: string | null;
22
21
  /** Semantic RSC payload mode. HTML requests always normalize to "navigation". */
23
22
  renderMode: AppRscRenderMode;
24
- /** Parsed ClientReuseManifest hint. Verification and skip authorization happen later. */
25
- clientReuseManifest: ClientReuseManifestParseResult;
26
23
  /** Whether the incoming pathname included the configured basePath. */
27
24
  hadBasePath: boolean;
28
25
  };
@@ -52,7 +49,6 @@ export type NormalizedRscRequest = {
52
49
  * 8. Sanitize X-Vinext-Interception-Context — strip null bytes (header injection)
53
50
  * 9. Normalize x-vinext-mounted-slots — dedup and sort for canonical cache keys
54
51
  * 10. Read semantic render mode for refresh/action payload rendering
55
- * 11. Parse ClientReuseManifest hints on canonical RSC payload requests
56
52
  *
57
53
  * @returns A 400 or 404 Response for invalid or out-of-scope inputs,
58
54
  * or a NormalizedRscRequest for valid requests.
@@ -1,6 +1,6 @@
1
1
  import { hasBasePath, stripBasePath } from "../utils/base-path.js";
2
2
  import { NEXT_ROUTER_STATE_TREE_HEADER, NEXT_URL_HEADER, VINEXT_INTERCEPTION_CONTEXT_HEADER, VINEXT_INTERCEPTION_ID_HEADER, VINEXT_MOUNTED_SLOTS_HEADER, VINEXT_RSC_RENDER_MODE_HEADER } from "./app-rsc-vary.js";
3
- import { VINEXT_CLIENT_REUSE_MANIFEST_HEADER } from "./headers.js";
3
+ import "./headers.js";
4
4
  import { badRequestResponse, notFoundResponse } from "./http-error-responses.js";
5
5
  import { guardProtocolRelativeUrl } from "./request-pipeline.js";
6
6
  import { assetPrefixPathname, isNextStaticPath } from "../utils/asset-prefix.js";
@@ -9,7 +9,6 @@ import { normalizePath } from "./normalize-path.js";
9
9
  import { normalizeMountedSlotsHeader } from "./app-mounted-slots-header.js";
10
10
  import { APP_RSC_RENDER_MODE_NAVIGATION, APP_RSC_RENDER_MODE_PREFETCH_EMPTY, APP_RSC_RENDER_MODE_PREFETCH_LOADING_SHELL, parseAppRscRenderMode } from "./app-rsc-render-mode.js";
11
11
  import { VINEXT_RSC_CACHE_BUSTING_SEARCH_PARAM, stripRscSuffix } from "./app-rsc-cache-busting.js";
12
- import { parseClientReuseManifestHeader } from "./client-reuse-manifest.js";
13
12
  import { normalizeInterceptionContextHeader } from "./app-interception-context-header.js";
14
13
  //#region src/server/app-rsc-request-normalization.ts
15
14
  function extractFlightRouterStatePath(value, depth = 0) {
@@ -86,7 +85,6 @@ function tryNormalizeComparablePathAndSearch(value, basePath, baseUrl) {
86
85
  * 8. Sanitize X-Vinext-Interception-Context — strip null bytes (header injection)
87
86
  * 9. Normalize x-vinext-mounted-slots — dedup and sort for canonical cache keys
88
87
  * 10. Read semantic render mode for refresh/action payload rendering
89
- * 11. Parse ClientReuseManifest hints on canonical RSC payload requests
90
88
  *
91
89
  * @returns A 400 or 404 Response for invalid or out-of-scope inputs,
92
90
  * or a NormalizedRscRequest for valid requests.
@@ -135,7 +133,6 @@ function normalizeRscRequest(request, basePath, allowOutsideBasePath = false, as
135
133
  }
136
134
  }
137
135
  return {
138
- clientReuseManifest: isRscRequest ? parseClientReuseManifestHeader(request.headers.get(VINEXT_CLIENT_REUSE_MANIFEST_HEADER)) : { kind: "absent" },
139
136
  hadBasePath,
140
137
  url,
141
138
  pathname,
@@ -47,4 +47,5 @@ export declare function applyAppRscConfigHeaders(headers: Headers, request: Requ
47
47
  * to redirects regardless.
48
48
  */
49
49
  export declare function finalizeAppRscResponse(response: Response, request: Request, options: FinalizeAppRscResponseOptions): Promise<Response>;
50
- //#endregion
50
+ //#endregion
51
+ export {};
@@ -6,9 +6,9 @@ import { normalizeDefaultLocalePathname } from "./pages-i18n.js";
6
6
  import { isNonCacheableCacheControl } from "../shims/cdn-cache.js";
7
7
  import { captureRouteCacheabilityResponsePolicy } from "../shims/cacheability-classification.js";
8
8
  import { NO_STORE_CACHE_CONTROL, applyCdnResponseHeaders, captureCdnResponsePolicyHeaders, hasExplicitNonCacheableResponsePolicy, isCdnResponsePolicyHeader } from "./cache-control.js";
9
- import "./app-rsc-cache-busting.js";
10
- import { mergeVaryHeader } from "./middleware-response-headers.js";
11
9
  import { hasPostConfigLinkHeaders } from "./app-response-header-provenance.js";
10
+ import { mergeVaryHeader } from "./middleware-response-headers.js";
11
+ import "./app-rsc-cache-busting.js";
12
12
  //#region src/server/app-rsc-response-finalizer.ts
13
13
  const HAS_CONFIG_HEADERS = process.env.__VINEXT_HAS_CONFIG_HEADERS !== "false";
14
14
  const configHeadersAlreadyApplied = /* @__PURE__ */ new WeakSet();
@@ -1,10 +1,11 @@
1
1
  import { preserveFullyBufferedBodyMetadata } from "./fully-buffered-response.js";
2
2
  import { closeAfterResponse, closeAfterResponseWithBody, createRequestContext, runWithRequestContext } from "../shims/unified-request-context.js";
3
- import { VINEXT_REVALIDATE_HOST_HEADER } from "../utils/protocol-headers.js";
3
+ import { PRERENDER_REVALIDATE_HEADER, VINEXT_REVALIDATE_HOST_HEADER } from "../utils/protocol-headers.js";
4
4
  import "./headers.js";
5
5
  import { cloneRequestWithHeaders, cloneRequestWithUrl, filterInternalHeaders } from "./request-pipeline.js";
6
6
  import { getRequestExecutionContext } from "../shims/request-context.js";
7
7
  import { runOutsideWorkStoreScope } from "../shims/internal/work-store-scope.js";
8
+ import { isOnDemandRevalidateRequest } from "./revalidation-request.js";
8
9
  import { applyEffectiveRequestCookieHeader, getDraftModeCookieHeader, headersContextFromRequest, restoreDraftModeTransition } from "../shims/headers.js";
9
10
  import { ensureFetchPatch, setCurrentFetchSoftTags } from "../shims/fetch-cache.js";
10
11
  import { traceFindPageComponents } from "./pages-execution-tracing.js";
@@ -69,7 +70,7 @@ function rematchAppWorkerResponseStageRoute(options, normalized, props) {
69
70
  return match;
70
71
  }
71
72
  async function renderAppWorkerResponseStage(options, rawRequest, ctx, props, stageOptions) {
72
- if (props.protocolVersion !== 11 || props.buildId !== options.buildId) return new Response("Incompatible vinext App response stage", { status: 409 });
73
+ if (props.protocolVersion !== 13 || props.buildId !== options.buildId) return new Response("Incompatible vinext App response stage", { status: 409 });
73
74
  if (props.kind === "app-full-request") return new Response("Invalid vinext App response stage", { status: 400 });
74
75
  const rawRequestSignal = rawRequest.signal;
75
76
  options.registerCacheAdapters();
@@ -104,6 +105,7 @@ async function renderAppWorkerResponseStage(options, rawRequest, ctx, props, sta
104
105
  const requestContext = createRequestContext({
105
106
  headersContext,
106
107
  executionContext,
108
+ isOnDemandRevalidate: isOnDemandRevalidateRequest(request.headers.get(PRERENDER_REVALIDATE_HEADER)),
107
109
  requestSignal: executionContext?.requestSignal ?? rawRequestSignal,
108
110
  unstableCacheRevalidation: "background"
109
111
  });
@@ -171,6 +173,7 @@ async function renderAppWorkerResponseStage(options, rawRequest, ctx, props, sta
171
173
  pathname: props.resolvedUrl,
172
174
  pagesDataRequest: props.isDataRequest ? request : null,
173
175
  request: pageRequest,
176
+ sharedAcrossHosts: props.sharedAcrossHosts,
174
177
  url: new URL(props.requestUrl)
175
178
  }));
176
179
  if (!pagesResponse) return new Response("Invalid vinext App response stage", { status: 404 });
@@ -216,7 +219,6 @@ async function renderAppWorkerResponseStage(options, rawRequest, ctx, props, sta
216
219
  return options.dispatchMatchedPage({
217
220
  bypassInterceptionContextCache: props.bypassInterceptionContextCache,
218
221
  cachePathname: props.cachePathname,
219
- clientReuseManifest: normalized.clientReuseManifest,
220
222
  cleanPathname: props.cleanPathname,
221
223
  displayPathname: props.canonicalPathname,
222
224
  formState: null,
@@ -35,13 +35,25 @@ type AppRscInterceptForMatching = {
35
35
  interceptLoadings?: readonly unknown[];
36
36
  interceptLoadingTreePositions?: readonly number[];
37
37
  interceptNotFoundBranchSegments?: readonly string[];
38
+ interceptNotFounds?: readonly unknown[];
39
+ interceptNotFoundTreePositions?: readonly number[];
38
40
  __loadInterceptLayouts?: readonly (() => Promise<unknown>)[] | null;
39
41
  __loadInterceptLoadings?: readonly (() => Promise<unknown>)[] | null;
42
+ __loadInterceptNotFounds?: readonly (() => Promise<unknown>)[] | null;
40
43
  page: unknown;
41
44
  __pageLoader?: (() => Promise<unknown>) | null;
42
45
  notFound?: unknown;
43
46
  __loadNotFound?: (() => Promise<unknown>) | null;
44
47
  notFoundTreePosition?: number | null;
48
+ interceptForbiddens?: readonly unknown[];
49
+ interceptForbiddenTreePositions?: readonly number[];
50
+ __loadInterceptForbiddens?: readonly (() => Promise<unknown>)[] | null;
51
+ interceptUnauthorizeds?: readonly unknown[];
52
+ interceptUnauthorizedTreePositions?: readonly number[];
53
+ __loadInterceptUnauthorizeds?: readonly (() => Promise<unknown>)[] | null;
54
+ interceptErrors?: readonly unknown[];
55
+ interceptErrorTreePositions?: readonly number[];
56
+ __loadInterceptErrors?: readonly (() => Promise<unknown>)[] | null;
45
57
  params: readonly string[];
46
58
  };
47
59
  type AppRscSlotForMatching = {
@@ -60,13 +72,25 @@ type AppRscSiblingInterceptForMatching = {
60
72
  interceptLoadings?: readonly unknown[];
61
73
  interceptLoadingTreePositions?: readonly number[];
62
74
  interceptNotFoundBranchSegments?: readonly string[];
75
+ interceptNotFounds?: readonly unknown[];
76
+ interceptNotFoundTreePositions?: readonly number[];
63
77
  __loadInterceptLayouts?: readonly (() => Promise<unknown>)[] | null;
64
78
  __loadInterceptLoadings?: readonly (() => Promise<unknown>)[] | null;
79
+ __loadInterceptNotFounds?: readonly (() => Promise<unknown>)[] | null;
65
80
  page: unknown;
66
81
  __pageLoader?: (() => Promise<unknown>) | null;
67
82
  notFound?: unknown;
68
83
  __loadNotFound?: (() => Promise<unknown>) | null;
69
84
  notFoundTreePosition?: number | null;
85
+ interceptForbiddens?: readonly unknown[];
86
+ interceptForbiddenTreePositions?: readonly number[];
87
+ __loadInterceptForbiddens?: readonly (() => Promise<unknown>)[] | null;
88
+ interceptUnauthorizeds?: readonly unknown[];
89
+ interceptUnauthorizedTreePositions?: readonly number[];
90
+ __loadInterceptUnauthorizeds?: readonly (() => Promise<unknown>)[] | null;
91
+ interceptErrors?: readonly unknown[];
92
+ interceptErrorTreePositions?: readonly number[];
93
+ __loadInterceptErrors?: readonly (() => Promise<unknown>)[] | null;
70
94
  params: readonly string[];
71
95
  };
72
96
  type AppRscRouteForMatching = {
@@ -108,13 +132,25 @@ type AppRscInterceptLookupEntry = {
108
132
  interceptLoadings?: readonly unknown[];
109
133
  interceptLoadingTreePositions?: readonly number[];
110
134
  interceptNotFoundBranchSegments?: readonly string[];
135
+ interceptNotFounds?: readonly unknown[];
136
+ interceptNotFoundTreePositions?: readonly number[];
111
137
  __loadInterceptLayouts?: readonly (() => Promise<unknown>)[] | null;
112
138
  __loadInterceptLoadings?: readonly (() => Promise<unknown>)[] | null;
139
+ __loadInterceptNotFounds?: readonly (() => Promise<unknown>)[] | null;
113
140
  page: unknown;
114
141
  __pageLoader?: (() => Promise<unknown>) | null;
115
142
  notFound: unknown;
116
143
  __loadNotFound?: (() => Promise<unknown>) | null;
117
144
  notFoundTreePosition?: number | null;
145
+ interceptForbiddens?: readonly unknown[];
146
+ interceptForbiddenTreePositions?: readonly number[];
147
+ __loadInterceptForbiddens?: readonly (() => Promise<unknown>)[] | null;
148
+ interceptUnauthorizeds?: readonly unknown[];
149
+ interceptUnauthorizedTreePositions?: readonly number[];
150
+ __loadInterceptUnauthorizeds?: readonly (() => Promise<unknown>)[] | null;
151
+ interceptErrors?: readonly unknown[];
152
+ interceptErrorTreePositions?: readonly number[];
153
+ __loadInterceptErrors?: readonly (() => Promise<unknown>)[] | null;
118
154
  __loadState: AppRscInterceptLoadState;
119
155
  params: readonly string[];
120
156
  slotId: string | null;
@@ -141,4 +177,5 @@ export declare function createAppRscRouteMatcher<Route extends AppRscRouteForMat
141
177
  } | null;
142
178
  findIntercept(pathname: string, sourcePathname?: string | null, interceptionId?: string | null): AppRscInterceptMatch | null;
143
179
  };
144
- //#endregion
180
+ //#endregion
181
+ export {};
@@ -209,6 +209,9 @@ function createInterceptLookup(routes) {
209
209
  interceptLoadings: intercept.interceptLoadings,
210
210
  interceptLoadingTreePositions: intercept.interceptLoadingTreePositions,
211
211
  interceptNotFoundBranchSegments: intercept.interceptNotFoundBranchSegments,
212
+ interceptNotFounds: intercept.interceptNotFounds,
213
+ interceptNotFoundTreePositions: intercept.interceptNotFoundTreePositions,
214
+ __loadInterceptNotFounds: intercept.__loadInterceptNotFounds,
212
215
  __loadInterceptLayouts: intercept.__loadInterceptLayouts,
213
216
  __loadInterceptLoadings: intercept.__loadInterceptLoadings,
214
217
  page: intercept.page,
@@ -216,6 +219,15 @@ function createInterceptLookup(routes) {
216
219
  notFound: intercept.notFound,
217
220
  __loadNotFound: intercept.__loadNotFound,
218
221
  notFoundTreePosition: intercept.notFoundTreePosition,
222
+ interceptForbiddens: intercept.interceptForbiddens,
223
+ interceptForbiddenTreePositions: intercept.interceptForbiddenTreePositions,
224
+ __loadInterceptForbiddens: intercept.__loadInterceptForbiddens,
225
+ interceptUnauthorizeds: intercept.interceptUnauthorizeds,
226
+ interceptUnauthorizedTreePositions: intercept.interceptUnauthorizedTreePositions,
227
+ __loadInterceptUnauthorizeds: intercept.__loadInterceptUnauthorizeds,
228
+ interceptErrors: intercept.interceptErrors,
229
+ interceptErrorTreePositions: intercept.interceptErrorTreePositions,
230
+ __loadInterceptErrors: intercept.__loadInterceptErrors,
219
231
  __loadState: {
220
232
  page: intercept.page,
221
233
  pageLoading: null,
@@ -248,6 +260,9 @@ function createInterceptLookup(routes) {
248
260
  interceptLoadings: intercept.interceptLoadings,
249
261
  interceptLoadingTreePositions: intercept.interceptLoadingTreePositions,
250
262
  interceptNotFoundBranchSegments: intercept.interceptNotFoundBranchSegments,
263
+ interceptNotFounds: intercept.interceptNotFounds,
264
+ interceptNotFoundTreePositions: intercept.interceptNotFoundTreePositions,
265
+ __loadInterceptNotFounds: intercept.__loadInterceptNotFounds,
251
266
  __loadInterceptLayouts: intercept.__loadInterceptLayouts,
252
267
  __loadInterceptLoadings: intercept.__loadInterceptLoadings,
253
268
  page: intercept.page,
@@ -255,6 +270,15 @@ function createInterceptLookup(routes) {
255
270
  notFound: intercept.notFound,
256
271
  __loadNotFound: intercept.__loadNotFound,
257
272
  notFoundTreePosition: intercept.notFoundTreePosition,
273
+ interceptForbiddens: intercept.interceptForbiddens,
274
+ interceptForbiddenTreePositions: intercept.interceptForbiddenTreePositions,
275
+ __loadInterceptForbiddens: intercept.__loadInterceptForbiddens,
276
+ interceptUnauthorizeds: intercept.interceptUnauthorizeds,
277
+ interceptUnauthorizedTreePositions: intercept.interceptUnauthorizedTreePositions,
278
+ __loadInterceptUnauthorizeds: intercept.__loadInterceptUnauthorizeds,
279
+ interceptErrors: intercept.interceptErrors,
280
+ interceptErrorTreePositions: intercept.interceptErrorTreePositions,
281
+ __loadInterceptErrors: intercept.__loadInterceptErrors,
258
282
  __loadState: {
259
283
  page: intercept.page,
260
284
  pageLoading: null,
@@ -169,4 +169,5 @@ export declare function isAppPageStaticEligible(options: {
169
169
  isStaticGenerationEdgeRuntime: boolean;
170
170
  revalidateSeconds: number | null;
171
171
  }): boolean;
172
- //#endregion
172
+ //#endregion
173
+ export {};
@@ -1,3 +1,4 @@
1
+ import { compareFolderNames } from "../utils/compare.js";
1
2
  import { isEdgeApiRuntime } from "./edge-api-runtime.js";
2
3
  //#region src/server/app-segment-config.ts
3
4
  const DYNAMIC_VALUES = /* @__PURE__ */ new Set([
@@ -310,20 +311,6 @@ function hasGenerateStaticParamsExport(segment) {
310
311
  }
311
312
  const DEFAULT_SEGMENT_NAME = "__DEFAULT__";
312
313
  /**
313
- * Turbopack reads a folder's subfolders from a `BTreeMap<RcStr, _>`, whose
314
- * keys compare as Rust `str`s: by UTF-8 bytes. That is Unicode code point
315
- * order, which JavaScript's `<` (UTF-16 code units) doesn't match above the
316
- * Basic Multilingual Plane.
317
- * https://github.com/vercel/next.js/blob/v16.2.7/crates/next-core/src/app_structure.rs#L188-L192
318
- * https://github.com/vercel/next.js/blob/v16.2.7/turbopack/crates/turbo-rcstr/src/lib.rs#L350-L354
319
- */
320
- function compareFolderNames(a, b) {
321
- const left = Array.from(a, (char) => char.codePointAt(0) ?? 0);
322
- const right = Array.from(b, (char) => char.codePointAt(0) ?? 0);
323
- for (let index = 0; index < Math.min(left.length, right.length); index++) if (left[index] !== right[index]) return left[index] - right[index];
324
- return left.length - right.length;
325
- }
326
- /**
327
314
  * Collect the loader-tree segments of an App page route from its layout, page
328
315
  * and parallel-slot modules, for `lastDynamicSegmentHasGenerateStaticParams`.
329
316
  *