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
@@ -1,7 +1,9 @@
1
1
  import { NavigationContext } from "../shims/navigation-context-state.js";
2
2
  import "../shims/navigation.js";
3
3
  import { RootParams } from "../shims/root-params.js";
4
- import { AppPageSsrHandler } from "./app-page-stream.js";
4
+ import { InitialNavigationCacheMetadata } from "./app-ssr-stream.js";
5
+ import { AppPageFontData, AppPageSsrHandler } from "./app-page-stream.js";
6
+ import { CdnAppPageDocument } from "../shims/cdn-cache.js";
5
7
  //#region src/server/app-page-rsc-render-status.d.ts
6
8
  /**
7
9
  * The status of a finished RSC render, as Next.js's static generation decides
@@ -10,6 +12,8 @@ import { AppPageSsrHandler } from "./app-page-stream.js";
10
12
  */
11
13
  export type AppPageRscRenderStatus = {
12
14
  kind: "page";
15
+ /** The page's document, when the resolver rendered one to store. */
16
+ document?: CdnAppPageDocument;
13
17
  } | {
14
18
  kind: "special-error";
15
19
  status: number;
@@ -22,9 +26,28 @@ export type AppPageRscRenderStatus = {
22
26
  {
23
27
  kind: "unstorable";
24
28
  };
29
+ /** What the page's document renders with, as an HTML request renders it. */
30
+ type AppPageRscRenderDocumentOptions = {
31
+ clientTraceMetadata?: readonly string[];
32
+ /**
33
+ * When the document's render is given up, as completed-response admission
34
+ * gives up a body it hasn't captured by its deadline.
35
+ */
36
+ deadlineAt?: number;
37
+ getFontData: () => AppPageFontData;
38
+ getInitialNavigationCacheMetadata: () => InitialNavigationCacheMetadata;
39
+ mirrorNextFlight: () => boolean;
40
+ onSsrError: (error: unknown) => unknown;
41
+ reactMaxHeadersLength?: number;
42
+ };
25
43
  type CreateAppPageRscRenderStatusResolverOptions = {
26
44
  basePath?: string;
27
45
  capturedRscData: Promise<ArrayBuffer>;
46
+ /**
47
+ * Render the page's document from the payload, to be stored beside it.
48
+ * Without it, only a render that threw a special error renders its shell.
49
+ */
50
+ document?: AppPageRscRenderDocumentOptions;
28
51
  getCapturedSpecialError: () => unknown;
29
52
  getCapturedSpecialErrors: (error: unknown) => readonly unknown[];
30
53
  isForceStatic: boolean;
@@ -39,6 +62,9 @@ type CreateAppPageRscRenderStatusResolverOptions = {
39
62
  * a render that threw one renders the document's shell from the same payload,
40
63
  * as Next.js's static generation renders HTML beside RSC. Its server
41
64
  * components don't run again. A render without a special error is a 200.
65
+ *
66
+ * With `document`, every render renders its document from the payload, as
67
+ * Next.js keeps a page's document and RSC payload in one entry.
42
68
  */
43
69
  export declare function createAppPageRscRenderStatusResolver(options: CreateAppPageRscRenderStatusResolverOptions): () => Promise<AppPageRscRenderStatus>;
44
70
  /**
@@ -46,4 +72,5 @@ export declare function createAppPageRscRenderStatusResolver(options: CreateAppP
46
72
  * payload carries a redirect, so a redirect is a 200 with its `location`.
47
73
  */
48
74
  export declare function resolveAppPageRscResponseStatus(status: number): number;
49
- //#endregion
75
+ //#endregion
76
+ export {};
@@ -1,5 +1,8 @@
1
- import { resolveAppPageShellSpecialError, resolveAppPageSpecialErrorStoredHeaders } from "./app-page-execution.js";
2
- import { isAppSsrRenderResult } from "./app-page-stream.js";
1
+ import { isRenderDynamicLatched } from "../shims/internal/headers-state.js";
2
+ import "../shims/headers.js";
3
+ import { readStreamAsText } from "../utils/text-stream.js";
4
+ import { buildAppPageFontLinkHeader, resolveAppPageShellSpecialError, resolveAppPageSpecialErrorStoredHeaders } from "./app-page-execution.js";
5
+ import { buildAppPageLinkHeader, isAppSsrRenderResult } from "./app-page-stream.js";
3
6
  //#region src/server/app-page-rsc-render-status.ts
4
7
  const PAGE_STATUS = { kind: "page" };
5
8
  /**
@@ -8,28 +11,109 @@ const PAGE_STATUS = { kind: "page" };
8
11
  * a render that threw one renders the document's shell from the same payload,
9
12
  * as Next.js's static generation renders HTML beside RSC. Its server
10
13
  * components don't run again. A render without a special error is a 200.
14
+ *
15
+ * With `document`, every render renders its document from the payload, as
16
+ * Next.js keeps a page's document and RSC payload in one entry.
11
17
  */
12
18
  function createAppPageRscRenderStatusResolver(options) {
13
19
  let status;
14
20
  return () => status ??= resolveAppPageRscRenderStatus(options);
15
21
  }
16
22
  async function resolveAppPageRscRenderStatus(options) {
23
+ const deadlineAt = options.document?.deadlineAt;
24
+ if (deadlineAt === void 0) return renderAppPageRscRenderStatus(options);
25
+ const expired = new AbortController();
26
+ const remaining = deadlineAt - Date.now();
27
+ const timer = remaining > 0 ? setTimeout(() => expired.abort(), remaining) : void 0;
28
+ if (timer === void 0) expired.abort();
29
+ try {
30
+ return await unlessExpired(renderAppPageRscRenderStatus(options, expired.signal), expired.signal, () => {}) ?? expiredDocumentStatus(options);
31
+ } finally {
32
+ clearTimeout(timer);
33
+ }
34
+ }
35
+ /** Settle with `promise`, or with `null` once `signal` aborts. */
36
+ function unlessExpired(promise, signal, discard) {
37
+ if (!signal) return promise;
38
+ if (signal.aborted) {
39
+ promise.then(discard, () => {});
40
+ return Promise.resolve(null);
41
+ }
42
+ return new Promise((resolve, reject) => {
43
+ const onAbort = () => {
44
+ promise.then(discard, () => {});
45
+ resolve(null);
46
+ };
47
+ signal.addEventListener("abort", onAbort, { once: true });
48
+ promise.then((value) => {
49
+ signal.removeEventListener("abort", onAbort);
50
+ if (signal.aborted) discard(value);
51
+ else resolve(value);
52
+ }, (error) => {
53
+ signal.removeEventListener("abort", onAbort);
54
+ reject(error);
55
+ });
56
+ });
57
+ }
58
+ /** Read the document, or cancel it and settle with `null` once `signal` aborts. */
59
+ async function readDocumentHtml(stream, signal) {
60
+ if (!signal) return readStreamAsText(stream);
61
+ const reader = stream.getReader();
62
+ const decoder = new TextDecoder();
63
+ const chunks = [];
64
+ for (;;) {
65
+ const result = await unlessExpired(reader.read(), signal, () => {});
66
+ if (result === null) {
67
+ reader.cancel().catch(() => {});
68
+ return null;
69
+ }
70
+ if (result.done) break;
71
+ chunks.push(decoder.decode(result.value, { stream: true }));
72
+ }
73
+ chunks.push(decoder.decode());
74
+ return chunks.join("");
75
+ }
76
+ /**
77
+ * A document given up at its deadline isn't stored. A render without a
78
+ * special error is still a 200, but one with a special error needs its shell.
79
+ */
80
+ function expiredDocumentStatus(options) {
81
+ return options.getCapturedSpecialError() === null ? PAGE_STATUS : { kind: "unstorable" };
82
+ }
83
+ async function renderAppPageRscRenderStatus(options, signal) {
17
84
  const rscData = await options.capturedRscData;
18
- if (options.getCapturedSpecialError() === null) return PAGE_STATUS;
85
+ const documentOptions = options.document;
86
+ if (!documentOptions && options.getCapturedSpecialError() === null) return PAGE_STATUS;
19
87
  const ssrHandler = await options.loadSsrHandler();
88
+ if (signal?.aborted) return expiredDocumentStatus(options);
89
+ const fontData = documentOptions?.getFontData() ?? {
90
+ links: [],
91
+ preloads: [],
92
+ styles: []
93
+ };
94
+ const clientTraceMetadataMarker = documentOptions?.clientTraceMetadata && documentOptions.clientTraceMetadata.length > 0 ? crypto.randomUUID() : void 0;
20
95
  let rendered;
21
96
  try {
22
- rendered = await ssrHandler.handleSsr(new Response(rscData).body, options.navigationContext, {
23
- links: [],
24
- preloads: [],
25
- styles: []
26
- }, {
97
+ rendered = await unlessExpired(ssrHandler.handleSsr(new Response(rscData).body, options.navigationContext, fontData, {
27
98
  basePath: options.basePath,
28
99
  isForceStatic: options.isForceStatic,
29
- isStaticGeneration: true,
30
- onSsrError: () => void 0,
31
100
  preloadRoutePattern: options.routePattern,
32
- rootParams: options.rootParams
101
+ rootParams: options.rootParams,
102
+ ...documentOptions ? {
103
+ clientTraceMetadata: documentOptions.clientTraceMetadata,
104
+ clientTraceMetadataMarker,
105
+ getInitialNavigationCacheMetadata: documentOptions.getInitialNavigationCacheMetadata,
106
+ isCacheCandidate: true,
107
+ mirrorNextFlight: documentOptions.mirrorNextFlight,
108
+ onSsrError: documentOptions.onSsrError,
109
+ reactMaxHeadersLength: documentOptions.reactMaxHeadersLength,
110
+ signal
111
+ } : {
112
+ isStaticGeneration: true,
113
+ onSsrError: () => void 0
114
+ }
115
+ }), signal, (late) => {
116
+ (isAppSsrRenderResult(late) ? late.htmlStream : late).cancel().catch(() => {});
33
117
  });
34
118
  } catch (error) {
35
119
  const specialError = resolveAppPageShellSpecialError(error, options.getCapturedSpecialErrors(error));
@@ -41,8 +125,32 @@ async function resolveAppPageRscRenderStatus(options) {
41
125
  ...headers ? { headers } : {}
42
126
  };
43
127
  }
44
- (isAppSsrRenderResult(rendered) ? rendered.htmlStream : rendered).cancel().catch(() => {});
45
- return PAGE_STATUS;
128
+ if (rendered === null) return expiredDocumentStatus(options);
129
+ const htmlStream = isAppSsrRenderResult(rendered) ? rendered.htmlStream : rendered;
130
+ if (!documentOptions) {
131
+ htmlStream.cancel().catch(() => {});
132
+ return PAGE_STATUS;
133
+ }
134
+ let html;
135
+ try {
136
+ html = await readDocumentHtml(htmlStream, signal);
137
+ } catch {
138
+ return PAGE_STATUS;
139
+ }
140
+ if (html === null) return expiredDocumentStatus(options);
141
+ if (isRenderDynamicLatched()) return PAGE_STATUS;
142
+ const linkHeader = buildAppPageLinkHeader(isAppSsrRenderResult(rendered) ? rendered.linkHeader : void 0, buildAppPageFontLinkHeader(fontData.preloads), documentOptions.reactMaxHeadersLength);
143
+ if (clientTraceMetadataMarker) {
144
+ const { stripClientTraceMetadataBlock } = await import("./client-trace-metadata.js");
145
+ html = stripClientTraceMetadataBlock(html, clientTraceMetadataMarker);
146
+ }
147
+ return {
148
+ kind: "page",
149
+ document: {
150
+ html,
151
+ ...linkHeader ? { linkHeader } : {}
152
+ }
153
+ };
46
154
  }
47
155
  /**
48
156
  * The status Next.js sends an RSC request for a render with this status. Its
@@ -5,7 +5,11 @@ type ClientPageSsrSearchParamsOptions = {
5
5
  isForceStatic?: boolean;
6
6
  isPprFallbackShell?: boolean;
7
7
  };
8
- export declare function createAppPageSearchParamsObserver(): ThenableParamsObserver;
8
+ /**
9
+ * The observer a route's head hands generateMetadata() and generateViewport()
10
+ * for `searchParams`, or none when a read doesn't count (`force-static`).
11
+ */
12
+ export declare function createAppPageMetadataSearchParamsObserver(observe: boolean): ThenableParamsObserver | undefined;
9
13
  export declare function makeObservedAppPageSearchParamsThenable(pageSearchParams: AppPageSearchParams): ThenableParams<AppPageSearchParams>;
10
14
  /**
11
15
  * The `searchParams` a client page receives during SSR (see
@@ -26,4 +30,5 @@ export declare function makeClientPageSsrSearchParamsThenable(searchParams: URLS
26
30
  * The cache lives in this render's navigation context and is dropped with it.
27
31
  */
28
32
  export declare function createClientPageSsrSearchParamsSource(searchParams: URLSearchParams, options: ClientPageSsrSearchParamsOptions): (pageProps: object) => ThenableParams<AppPageSearchParams>;
29
- //#endregion
33
+ //#endregion
34
+ export {};
@@ -16,6 +16,13 @@ function createAppPageSearchParamsObserver() {
16
16
  observeThenRead: throwIfStaticGenerationAccessError
17
17
  };
18
18
  }
19
+ /**
20
+ * The observer a route's head hands generateMetadata() and generateViewport()
21
+ * for `searchParams`, or none when a read doesn't count (`force-static`).
22
+ */
23
+ function createAppPageMetadataSearchParamsObserver(observe) {
24
+ return observe ? createAppPageSearchParamsObserver() : void 0;
25
+ }
19
26
  function makeObservedAppPageSearchParamsThenable(pageSearchParams) {
20
27
  return makeThenableParams(pageSearchParams, createAppPageSearchParamsObserver());
21
28
  }
@@ -55,4 +62,4 @@ function makeClientPageSsrSearchParamsThenableFromRecord(pageSearchParams, optio
55
62
  return options.isForceStatic !== true && options.isPprFallbackShell !== true ? makeObservedAppPageSearchParamsThenable(pageSearchParams) : makeThenableParams(pageSearchParams);
56
63
  }
57
64
  //#endregion
58
- export { createAppPageSearchParamsObserver, createClientPageSsrSearchParamsSource, makeClientPageSsrSearchParamsThenable, makeObservedAppPageSearchParamsThenable };
65
+ export { createAppPageMetadataSearchParamsObserver, createClientPageSsrSearchParamsSource, makeClientPageSsrSearchParamsThenable, makeObservedAppPageSearchParamsThenable };
@@ -52,4 +52,5 @@ export declare function createAppPageSegmentPlan<TModule extends AppPageModule,
52
52
  slotBindings: readonly AppElementsSlotBinding[];
53
53
  templateEntries: readonly AppPageTemplateEntry<TModule>[];
54
54
  }): AppPageSegmentPlan<TModule>;
55
- //#endregion
55
+ //#endregion
56
+ export {};
@@ -22,6 +22,12 @@ export type AppSsrRenderResult = {
22
22
  renderComplete?: Promise<void>;
23
23
  capturedRscData: Promise<ArrayBuffer> | null;
24
24
  shellErrorRecovered?: boolean;
25
+ /**
26
+ * The special error that rejected the shell, when parallel slot not-found
27
+ * boundaries caught it in a second render of the same payload. The document
28
+ * is that error's, with its status.
29
+ */
30
+ caughtShellError?: unknown;
25
31
  /**
26
32
  * Preload `Link` header value emitted by React during SSR (via `onHeaders`),
27
33
  * already capped to `reactMaxHeadersLength`. Empty/undefined when React
@@ -71,6 +77,8 @@ export type AppPageSsrHandler = {
71
77
  };
72
78
  /** Abort signal for a build-time PPR fallback-shell static render. */
73
79
  pprFallbackShellSignal?: AbortSignal;
80
+ /** Aborts a streaming render whose document is given up. */
81
+ signal?: AbortSignal;
74
82
  /** Route whose client references load before the render; null for none. */
75
83
  preloadRoutePattern?: string | null;
76
84
  /** When true, wait for the full React tree before emitting bytes. */
@@ -92,6 +100,8 @@ export type AppPageSsrHandler = {
92
100
  * default `__next_error__` error-document shell (with the original
93
101
  * flight payload and bootstrap) instead of rejecting. See handleSsr. */
94
102
  fallbackToErrorDocumentOnShellError?: boolean;
103
+ /** The parallel slot not-found boundaries that catch a shell error. See handleSsr. */
104
+ resolveCaughtNotFoundBoundaries?: (error: unknown) => readonly string[] | null;
95
105
  dynamicStaleTimeSeconds?: number;
96
106
  getInitialNavigationCacheMetadata?: () => InitialNavigationCacheMetadata;
97
107
  }) => Promise<ReadableStream<Uint8Array> | AppSsrRenderResult>;
@@ -145,6 +155,8 @@ type RenderAppPageHtmlStreamOptions = {
145
155
  isCacheCandidate?: boolean;
146
156
  /** Override the default shell-error recovery decision passed to handleSsr. */
147
157
  fallbackToErrorDocumentOnShellError?: boolean;
158
+ /** The parallel slot not-found boundaries that catch a shell error. See handleSsr. */
159
+ resolveCaughtNotFoundBoundaries?: (error: unknown) => readonly string[] | null;
148
160
  /** Dev-only: original server error to surface in the browser overlay. */
149
161
  initialDevServerError?: unknown;
150
162
  /** Report an SSR/Fizz render failure through instrumentation. */
@@ -178,9 +190,20 @@ type RenderAppPageHtmlStreamWithRecoveryOptions<TSpecialError> = {
178
190
  onShellRendered?: () => void;
179
191
  renderErrorBoundaryResponse: (error: unknown) => Promise<Response | null>;
180
192
  renderHtmlStream: () => Promise<ReadableStream<Uint8Array> | AppSsrRenderResult>;
181
- renderSpecialErrorResponse: (specialError: TSpecialError) => Promise<Response>;
193
+ /**
194
+ * The document of a special error that rejected the shell. With
195
+ * `caughtDocument`, parallel slot boundaries caught it in the page's own
196
+ * document, which that response sends.
197
+ */
198
+ renderSpecialErrorResponse: (specialError: TSpecialError, caughtDocument?: AppPageCaughtShellErrorDocument) => Promise<Response>;
182
199
  resolveSpecialError: (error: unknown) => TSpecialError | null;
183
200
  };
201
+ /** The page's document, rendered with the slot boundaries that caught its shell error. */
202
+ type AppPageCaughtShellErrorDocument = {
203
+ htmlStream: ReadableStream<Uint8Array>;
204
+ /** React-emitted preload `Link` header (already capped). */
205
+ linkHeader?: string;
206
+ };
184
207
  type AppPageRscErrorTracker = {
185
208
  getCapturedError: () => unknown;
186
209
  /**
@@ -202,6 +225,15 @@ export declare function createAppPageSsrErrorHandler(baseOnError: (error: unknow
202
225
  export declare function createAppPageFontData(options: CreateAppPageFontDataOptions): AppPageFontData;
203
226
  export declare function renderAppPageHtmlStream(options: RenderAppPageHtmlStreamOptions): Promise<AppSsrRenderResult>;
204
227
  export declare function renderAppPageHtmlResponse(options: RenderAppPageHtmlResponseOptions): Promise<Response>;
228
+ export declare function buildAppPageHtmlDocumentResponse(htmlStream: ReadableStream<Uint8Array>, options: {
229
+ clearRequestContext: () => void;
230
+ fontLinkHeader?: string;
231
+ isEdgeRuntime?: boolean;
232
+ middlewareHeaders?: Headers | null;
233
+ reactLinkHeader?: string;
234
+ reactMaxHeadersLength?: number;
235
+ status: number;
236
+ }): Response;
205
237
  export declare function renderAppPageHtmlStreamWithRecovery<TSpecialError>(options: RenderAppPageHtmlStreamWithRecoveryOptions<TSpecialError>): Promise<AppPageHtmlStreamRecoveryResult>;
206
238
  export declare function createAppPageRscErrorTracker(baseOnError: (error: unknown, requestInfo: unknown, errorContext: unknown) => unknown): AppPageRscErrorTracker;
207
239
  //#endregion
@@ -1,9 +1,9 @@
1
+ import { deferUntilStreamConsumed } from "./defer-until-stream-consumed.js";
1
2
  import { VINEXT_RSC_VARY_HEADER } from "./app-rsc-vary.js";
2
3
  import { isNavigationSignalError } from "../utils/navigation-signal.js";
3
- import { deferUntilStreamConsumed } from "./defer-until-stream-consumed.js";
4
- import "./app-rsc-cache-busting.js";
5
- import { mergeMiddlewareResponseHeaders } from "./middleware-response-headers.js";
6
4
  import { markFrameworkLinkHeaders } from "./app-response-header-provenance.js";
5
+ import { mergeMiddlewareResponseHeaders } from "./middleware-response-headers.js";
6
+ import "./app-rsc-cache-busting.js";
7
7
  import { applyEdgeRuntimeHeader } from "./app-page-response.js";
8
8
  import { getNextErrorDigest } from "./next-error-digest.js";
9
9
  import { isAppRenderAbortError } from "./app-render-abort-error.js";
@@ -87,6 +87,7 @@ async function renderAppPageHtmlStream(options) {
87
87
  onSsrError: options.onSsrError,
88
88
  mirrorNextFlight: options.mirrorNextFlight,
89
89
  fallbackToErrorDocumentOnShellError: options.fallbackToErrorDocumentOnShellError ?? (options.waitForAllReady !== true && options.hasCustomGlobalError === false),
90
+ resolveCaughtNotFoundBoundaries: options.resolveCaughtNotFoundBoundaries,
90
91
  dynamicStaleTimeSeconds: options.dynamicStaleTimeSeconds,
91
92
  getInitialNavigationCacheMetadata: options.getInitialNavigationCacheMetadata
92
93
  };
@@ -94,6 +95,12 @@ async function renderAppPageHtmlStream(options) {
94
95
  }
95
96
  async function renderAppPageHtmlResponse(options) {
96
97
  const { htmlStream, linkHeader: reactLinkHeader } = await renderAppPageHtmlStream(options);
98
+ return buildAppPageHtmlDocumentResponse(htmlStream, {
99
+ ...options,
100
+ reactLinkHeader
101
+ });
102
+ }
103
+ function buildAppPageHtmlDocumentResponse(htmlStream, options) {
97
104
  const safeStream = deferUntilStreamConsumed(htmlStream, () => {
98
105
  options.clearRequestContext();
99
106
  });
@@ -103,7 +110,7 @@ async function renderAppPageHtmlResponse(options) {
103
110
  });
104
111
  applyEdgeRuntimeHeader(headers, options.isEdgeRuntime);
105
112
  mergeMiddlewareResponseHeaders(headers, options.middlewareHeaders ?? null);
106
- const frameworkLinkHeader = buildAppPageLinkHeader(reactLinkHeader, options.fontLinkHeader, options.reactMaxHeadersLength);
113
+ const frameworkLinkHeader = buildAppPageLinkHeader(options.reactLinkHeader, options.fontLinkHeader, options.reactMaxHeadersLength);
107
114
  if (frameworkLinkHeader) headers.append("Link", frameworkLinkHeader);
108
115
  const response = new Response(safeStream, {
109
116
  status: options.status,
@@ -114,8 +121,20 @@ async function renderAppPageHtmlResponse(options) {
114
121
  }
115
122
  async function renderAppPageHtmlStreamWithRecovery(options) {
116
123
  try {
117
- const { htmlStream, metadataReady, renderComplete, capturedRscData, linkHeader, shellErrorRecovered } = normalizeAppSsrRenderResult(await options.renderHtmlStream());
124
+ const { htmlStream, metadataReady, renderComplete, capturedRscData, linkHeader, shellErrorRecovered, caughtShellError } = normalizeAppSsrRenderResult(await options.renderHtmlStream());
118
125
  options.onShellRendered?.();
126
+ const caughtSpecialError = caughtShellError === void 0 ? null : options.resolveSpecialError(caughtShellError);
127
+ if (caughtSpecialError) return {
128
+ htmlStream: null,
129
+ response: await options.renderSpecialErrorResponse(caughtSpecialError, {
130
+ htmlStream,
131
+ linkHeader
132
+ }),
133
+ metadataReady: resolvedMetadataReady,
134
+ renderComplete: renderComplete ?? resolvedMetadataReady,
135
+ capturedRscData: null,
136
+ shellErrorRecovered: false
137
+ };
119
138
  return {
120
139
  htmlStream,
121
140
  response: null,
@@ -185,4 +204,4 @@ function createAppPageRscErrorTracker(baseOnError) {
185
204
  };
186
205
  }
187
206
  //#endregion
188
- export { buildAppPageLinkHeader, createAppPageFontData, createAppPageRscErrorTracker, createAppPageSsrErrorHandler, deferUntilStreamConsumed, isAppSsrRenderResult, renderAppPageHtmlResponse, renderAppPageHtmlStream, renderAppPageHtmlStreamWithRecovery };
207
+ export { buildAppPageHtmlDocumentResponse, buildAppPageLinkHeader, createAppPageFontData, createAppPageRscErrorTracker, createAppPageSsrErrorHandler, deferUntilStreamConsumed, isAppSsrRenderResult, renderAppPageHtmlResponse, renderAppPageHtmlStream, renderAppPageHtmlStreamWithRecovery };
@@ -1,8 +1,10 @@
1
1
  import { AppMiddlewareContext } from "./app-middleware.js";
2
2
  import { MiddlewareResponseMergeOptions } from "./middleware-response-headers.js";
3
3
  import { EdgeApiExecutionRuntime } from "./edge-api-runtime.js";
4
+ import { RuntimePagesDataKind } from "./pages-route-data-kind.js";
4
5
  //#region src/server/app-pages-bridge.d.ts
5
6
  export type PagesEntry = {
7
+ getRuntimePageDataKind?: (url: string, request: Request) => RuntimePagesDataKind;
6
8
  handleApiRoute?: (request: Request, url: string, ctx: unknown, trustedRevalidateOrigin: string | undefined, edgeRuntime: EdgeApiExecutionRuntime, initialResponseHeaders?: Headers) => Promise<Response> | Response;
7
9
  matchApiRoute?: (url: string, request: Request) => PagesRouteMatch | null;
8
10
  matchPageRoute?: (url: string, request: Request) => PagesRouteMatch | null;
@@ -55,10 +57,13 @@ type RenderPagesFallbackOptions = {
55
57
  pathname?: string;
56
58
  pagesDataRequest?: Request | null;
57
59
  request: Request;
60
+ /** The shared cache entry answers every host; a request-time render is not stored. */
61
+ sharedAcrossHosts?: boolean;
58
62
  url: URL;
59
63
  };
60
64
  /**
61
65
  * Fallback handler to route App Router requests to the Pages Router when no App Router route matches.
62
66
  */
63
67
  export declare function renderPagesFallback(options: RenderPagesFallbackOptions, dependencies: RenderPagesFallbackDependencies): Promise<Response | null>;
64
- //#endregion
68
+ //#endregion
69
+ export {};
@@ -1,6 +1,6 @@
1
1
  import { cloneRequestWithHeaders, cloneRequestWithUrl } from "./request-pipeline.js";
2
2
  import { getRequestExecutionContext } from "../shims/request-context.js";
3
- import { beginRouteCacheability } from "../shims/cacheability-classification.js";
3
+ import { beginRouteCacheability, markRouteCacheabilityDynamic } from "../shims/cacheability-classification.js";
4
4
  import { mergeHeaders } from "./worker-utils.js";
5
5
  import { pagesRouteHasPriorityOverAppRoute } from "./hybrid-route-priority.js";
6
6
  //#region src/server/app-pages-bridge.ts
@@ -18,7 +18,7 @@ function applyPagesMiddlewareContext(response, middlewareContext) {
18
18
  * Fallback handler to route App Router requests to the Pages Router when no App Router route matches.
19
19
  */
20
20
  async function renderPagesFallback(options, dependencies) {
21
- const { allowRscDocumentFallback = false, appRouteMatch = null, isDataRequest = false, isRscRequest, initialResponseHeaders, matchKind, middlewareContext, pathname = options.url.pathname, pagesDataRequest = null, request, url } = options;
21
+ const { allowRscDocumentFallback = false, appRouteMatch = null, isDataRequest = false, isRscRequest, initialResponseHeaders, matchKind, middlewareContext, pathname = options.url.pathname, pagesDataRequest = null, request, sharedAcrossHosts = false, url } = options;
22
22
  const { loadPagesEntry, buildRequestHeaders, applyRouteHandlerMiddlewareContext, getDraftModeCookieHeader } = dependencies;
23
23
  if (isRscRequest && !allowRscDocumentFallback) return null;
24
24
  const pagesEntry = await loadPagesEntry();
@@ -61,7 +61,11 @@ async function renderPagesFallback(options, dependencies) {
61
61
  if (pageMatch !== null && matchKind === "static" && pageMatch.route.isDynamic) return null;
62
62
  if (pageMatch !== null && matchKind === "dynamic" && !pageMatch.route.isDynamic) return null;
63
63
  if (appRouteMatch !== null && (pageMatch === null || !pagesRouteHasPriorityOverAppRoute(pageMatch.route, appRouteMatch.route))) return null;
64
- if (pageMatch !== null) beginRouteCacheability("pages-page", pageMatch.route.pattern);
64
+ if (pageMatch !== null) {
65
+ beginRouteCacheability("pages-page", pageMatch.route.pattern);
66
+ const runtimeDataKind = sharedAcrossHosts ? pagesEntry.getRuntimePageDataKind?.(pagesUrl, matchRequest) : void 0;
67
+ if (runtimeDataKind === "server" || runtimeDataKind === "initial") markRouteCacheabilityDynamic("getInitialProps render shares a cache entry across hosts");
68
+ }
65
69
  const pagesRequest = claimPagesRequest();
66
70
  const renderArgs = [
67
71
  pagesDataRequest ? cloneRequestWithUrl(pagesRequest, pagesDataRequest.url) : pagesRequest,
@@ -13,4 +13,5 @@ export type WarmPprFallbackShellCachesOptions = {
13
13
  state: PprFallbackShellState;
14
14
  };
15
15
  export declare function warmPprFallbackShellCaches(options: WarmPprFallbackShellCachesOptions): Promise<void>;
16
- //#endregion
16
+ //#endregion
17
+ export {};
@@ -29,4 +29,5 @@ export declare function rewriteAppPprFallbackShellHtmlNavigation(options: {
29
29
  pathname: string;
30
30
  searchParams: URLSearchParams;
31
31
  }): string;
32
- //#endregion
32
+ //#endregion
33
+ export {};
@@ -15,4 +15,5 @@ type HandleAppPrerenderEndpointOptions = {
15
15
  staticParamsMap: AppPrerenderStaticParamsMap;
16
16
  };
17
17
  export declare function handleAppPrerenderEndpoint(request: Request, options: HandleAppPrerenderEndpointOptions): Promise<Response | null>;
18
- //#endregion
18
+ //#endregion
19
+ export {};
@@ -34,4 +34,5 @@ type CallAppPrerenderStaticParamsOptions = {
34
34
  rootParamNamesByPattern: Record<string, readonly string[] | undefined>;
35
35
  };
36
36
  export declare function callAppPrerenderStaticParams(options: CallAppPrerenderStaticParamsOptions): Promise<unknown>;
37
- //#endregion
37
+ //#endregion
38
+ export {};
@@ -11,12 +11,29 @@ export type AppPageRenderDependency = AppRenderDependency & {
11
11
  /** Whether `component` is a "use client" export seen from the RSC environment. */
12
12
  export declare function isAppClientReference(component: unknown): boolean;
13
13
  export declare function isReactOwnedAppComponent(component: unknown): boolean;
14
- export declare function invokeAppComponent(component: ComponentType<Record<string, unknown>>, props: Readonly<Record<string, unknown>>): ReactNode | Promise<ReactNode>;
15
- export declare function registerAppElementRenderDependencies(elements: Readonly<Record<string, unknown>>, dependenciesByElementId: ReadonlyMap<string, AppRenderDependency>): void;
16
- export declare function releaseAppElementRenderDependency(elements: Readonly<Record<string, unknown>>, elementId: string): void;
14
+ /**
15
+ * `mapError` replaces an error thrown by a CSS-wrapped export's inner
16
+ * component, which renders after this call returns. The caller maps the
17
+ * errors this call throws or rejects with.
18
+ */
19
+ export declare function invokeAppComponent(component: ComponentType<Record<string, unknown>>, props: Readonly<Record<string, unknown>>, mapError?: (error: unknown) => unknown): ReactNode | Promise<ReactNode>;
20
+ /**
21
+ * Reports how a component's own render ended: `failure` holds what it threw
22
+ * or rejected with, after `mapError`. A suspension isn't an end, as React
23
+ * renders the component again.
24
+ */
25
+ export type AppComponentSettledCallback = (failure?: {
26
+ error: unknown;
27
+ }) => void;
28
+ /**
29
+ * `invokeAppComponent()`, with every error the component throws or rejects
30
+ * with replaced by `mapError(error)`, including its CSS-wrapped inner one's.
31
+ * `onSettled` hears once how the component, or that inner one, ended.
32
+ */
33
+ export declare function invokeAppComponentMappingErrors(component: ComponentType<Record<string, unknown>>, props: Readonly<Record<string, unknown>>, mapError: (error: unknown) => unknown, onSettled?: AppComponentSettledCallback): ReactNode | Promise<ReactNode>;
17
34
  export declare function createAppRenderDependency(): AppRenderDependency;
18
35
  export declare function createAppPageRenderDependency(): AppPageRenderDependency;
19
36
  export declare function isAppRenderSuspension(error: unknown): boolean;
20
37
  export declare function renderAfterAppDependencies(children: ReactNode, dependencies: readonly AppRenderDependency[]): ReactNode;
21
- export declare function renderAppComponentWithDependencyBarrier(component: ComponentType<Record<string, unknown>>, props: Readonly<Record<string, unknown>>, dependency: AppRenderDependency): ReactNode;
38
+ export declare function renderAppComponentWithDependencyBarrier(component: ComponentType<Record<string, unknown>>, props: Readonly<Record<string, unknown>>, dependency: AppRenderDependency, mapError?: (error: unknown) => unknown, onSettled?: AppComponentSettledCallback): ReactNode;
22
39
  //#endregion