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,3 +1,4 @@
1
+ import { deferUntilStreamConsumed } from "./defer-until-stream-consumed.js";
1
2
  import { NEXTJS_CACHE_HEADER, VINEXT_CACHE_HEADER } from "./headers.js";
2
3
  import { getCdnCacheAdapter } from "../shims/cdn-cache.js";
3
4
  import { captureRouteCacheabilityResponsePolicy, deferRouteCacheability, isRouteCacheabilityEvaluation } from "../shims/cacheability-classification.js";
@@ -6,7 +7,6 @@ import { buildAppPageCacheValue, isrCacheControl, resolveRouteExpireSeconds } fr
6
7
  import { resolveClientStaleTimeSeconds } from "../utils/cache-control-metadata.js";
7
8
  import { setCacheStateHeaders } from "./cache-headers.js";
8
9
  import { readStreamAsText } from "../utils/text-stream.js";
9
- import { deferUntilStreamConsumed } from "./defer-until-stream-consumed.js";
10
10
  import { markFrameworkLinkHeaders } from "./app-response-header-provenance.js";
11
11
  import { hasQueryInvariantRenderProof } from "./cache-proof.js";
12
12
  import { createEmptyAppPageRenderObservationState } from "./app-page-render-observation.js";
@@ -67,55 +67,79 @@ function applyRscRenderStatus(outcome, renderStatus) {
67
67
  ...renderStatus.headers ? { headers: renderStatus.headers } : {}
68
68
  };
69
69
  }
70
+ /** Hand an adapter the document; its failure never holds back admission. */
71
+ function settleAdmittedDocument(capture, document) {
72
+ try {
73
+ capture?.(document);
74
+ } catch (error) {
75
+ console.error("[vinext] CDN adapter document capture error:", error);
76
+ }
77
+ }
70
78
  function finalizeEvaluatedAppPageResponse(response, options) {
71
79
  if (!isRouteCacheabilityEvaluation()) return null;
72
80
  const complete = deferRouteCacheability();
73
- if (!complete) return response;
81
+ if (!complete) {
82
+ settleAdmittedDocument(options.captureAdmittedDocument, null);
83
+ return response;
84
+ }
74
85
  captureRouteCacheabilityResponsePolicy(captureCdnResponsePolicyHeaders(response.headers));
86
+ const admit = (renderStatus) => {
87
+ const observationState = options.consumeRenderObservationState?.();
88
+ const cacheControl = resolveAppPageCacheControl({
89
+ expireSeconds: options.expireSeconds,
90
+ requestCacheLife: options.getRequestCacheLife?.(),
91
+ revalidateSeconds: options.revalidateSeconds
92
+ });
93
+ const outcome = cacheControl ? {
94
+ cacheable: true,
95
+ cacheControl: appPageCacheControlHeader(cacheControl),
96
+ ...observationState && !observationState.requestApis.includes("searchParams") ? { searchParamsUnread: true } : {},
97
+ ...cacheControl.stale !== void 0 ? { staleTimeSeconds: cacheControl.stale } : {},
98
+ tags: options.getPageTags()
99
+ } : {
100
+ cacheable: false,
101
+ reason: "render did not produce a cache policy"
102
+ };
103
+ const admitted = renderStatus ? applyRscRenderStatus(outcome, renderStatus) : outcome;
104
+ settleAdmittedDocument(options.captureAdmittedDocument, admitted.cacheable && admitted.searchParamsUnread === true && renderStatus?.kind === "page" ? renderStatus.document ?? null : null);
105
+ complete(admitted);
106
+ };
75
107
  let completed = false;
76
108
  const finish = () => {
77
109
  if (completed) return;
78
110
  completed = true;
79
- const observationState = options.consumeRenderObservationState?.();
80
- let outcome;
81
- if (options.capturedDynamicUsageBeforeContextCleanup?.() === true || options.consumeDynamicUsage()) outcome = {
111
+ let ineligible;
112
+ if (options.capturedDynamicUsageBeforeContextCleanup?.() === true || options.consumeDynamicUsage()) ineligible = {
82
113
  cacheable: false,
83
114
  dynamicUsage: true,
84
115
  reason: "dynamic API used during render"
85
116
  };
86
- else if (options.isStaticEligible === false) outcome = {
117
+ else if (options.isStaticEligible === false) ineligible = {
87
118
  cacheable: false,
88
119
  reason: "route is not statically generated"
89
120
  };
90
- else if (response.headers.has("set-cookie") || hasExplicitNonCacheableResponsePolicy(response.headers)) outcome = {
121
+ else if (response.headers.has("set-cookie") || hasExplicitNonCacheableResponsePolicy(response.headers)) ineligible = {
91
122
  cacheable: false,
92
123
  reason: "response explicitly opts out of shared caching"
93
124
  };
94
- else {
95
- const cacheControl = resolveAppPageCacheControl({
96
- expireSeconds: options.expireSeconds,
97
- requestCacheLife: options.getRequestCacheLife?.(),
98
- revalidateSeconds: options.revalidateSeconds
99
- });
100
- outcome = cacheControl ? {
101
- cacheable: true,
102
- cacheControl: appPageCacheControlHeader(cacheControl),
103
- ...observationState && !observationState.requestApis.includes("searchParams") ? { searchParamsUnread: true } : {},
104
- tags: options.getPageTags()
105
- } : {
106
- cacheable: false,
107
- reason: "render did not produce a cache policy"
108
- };
125
+ if (ineligible) {
126
+ options.consumeRenderObservationState?.();
127
+ settleAdmittedDocument(options.captureAdmittedDocument, null);
128
+ complete(ineligible);
129
+ return;
109
130
  }
110
- if (outcome.cacheable && options.resolveRscRenderStatus) {
111
- const cacheableOutcome = outcome;
112
- options.resolveRscRenderStatus().then((renderStatus) => complete(applyRscRenderStatus(cacheableOutcome, renderStatus)), () => complete({
113
- cacheable: false,
114
- reason: "render status could not be resolved"
115
- }));
131
+ if (!options.resolveRscRenderStatus) {
132
+ admit();
116
133
  return;
117
134
  }
118
- complete(outcome);
135
+ options.resolveRscRenderStatus().then(admit, () => {
136
+ options.consumeRenderObservationState?.();
137
+ settleAdmittedDocument(options.captureAdmittedDocument, null);
138
+ complete({
139
+ cacheable: false,
140
+ reason: "render status could not be resolved"
141
+ });
142
+ });
119
143
  };
120
144
  if (!response.body) {
121
145
  finish();
@@ -230,6 +254,7 @@ function finalizeAppPageRscCacheResponse(response, options) {
230
254
  options.capturedRscDataPromise?.catch(() => {});
231
255
  return probeResponse;
232
256
  }
257
+ settleAdmittedDocument(options.captureAdmittedDocument, null);
233
258
  scheduleAppPageRscCacheWrite(options);
234
259
  const isUncacheableVariant = Boolean(options.mountedSlotsHeader) || options.bypassInterceptionContextCache === true;
235
260
  if (options.preserveClientResponseHeaders === true && !isUncacheableVariant) return response;
@@ -253,6 +278,7 @@ function scheduleAppPageRscCacheWrite(options) {
253
278
  options.isrDebug?.("RSC cache write skipped (dynamic usage during render)", rscKey);
254
279
  return;
255
280
  }
281
+ const renderStatus = await options.resolveRscRenderStatus?.() ?? { kind: "page" };
256
282
  const cacheControl = resolveAppPageCacheControl({
257
283
  expireSeconds: options.expireSeconds,
258
284
  requestCacheLife: options.getRequestCacheLife?.(),
@@ -272,7 +298,6 @@ function scheduleAppPageRscCacheWrite(options) {
272
298
  options.isrDebug?.("RSC cache write skipped (searchParams not proven unread)", rscKey);
273
299
  return;
274
300
  }
275
- const renderStatus = await options.resolveRscRenderStatus?.() ?? { kind: "page" };
276
301
  if (renderStatus.kind === "unstorable") {
277
302
  options.isrDebug?.("RSC cache write skipped (unstorable special error)", rscKey);
278
303
  return;
@@ -282,6 +307,22 @@ function scheduleAppPageRscCacheWrite(options) {
282
307
  tags: pageTags
283
308
  });
284
309
  options.isrDebug?.("RSC cache written", rscKey);
310
+ const document = renderStatus.kind === "page" ? renderStatus.document : void 0;
311
+ if (!document || !options.isrHtmlKey || !options.createHtmlRenderObservation) return;
312
+ const htmlKey = options.isrHtmlKey(options.cleanPathname);
313
+ const htmlRenderObservation = options.createHtmlRenderObservation({
314
+ cacheTags: pageTags,
315
+ state: observationState
316
+ });
317
+ if (!hasQueryInvariantRenderProof(htmlRenderObservation)) {
318
+ options.isrDebug?.("HTML cache write skipped (searchParams not proven unread)", htmlKey);
319
+ return;
320
+ }
321
+ await options.isrSet(htmlKey, buildAppPageCacheValue(document.html, void 0, 200, htmlRenderObservation, document.linkHeader ? { link: document.linkHeader } : void 0), {
322
+ cacheControl,
323
+ tags: pageTags
324
+ });
325
+ options.isrDebug?.("HTML cache written", htmlKey);
285
326
  } catch (cacheError) {
286
327
  console.error("[vinext] ISR RSC cache write error:", cacheError);
287
328
  }
@@ -35,7 +35,14 @@ export type RenderAppPageCacheArtifactsOptions = {
35
35
  * Render the document of a special error that rejected the shell, or return
36
36
  * null to fail the render with it.
37
37
  */
38
- renderShellSpecialError?: (error: unknown) => Promise<AppPageCacheSpecialErrorDocument | null>;
38
+ renderShellSpecialError?: (error: unknown,
39
+ /** The page's own document, in which parallel slot boundaries caught it. */
40
+ caughtDocument?: {
41
+ html: string;
42
+ linkHeader?: string;
43
+ }) => Promise<AppPageCacheSpecialErrorDocument | null>;
44
+ /** The parallel slot not-found boundaries that catch a shell error. See handleSsr. */
45
+ resolveCaughtNotFoundBoundaries?: (error: unknown) => readonly string[] | null;
39
46
  renderToReadableStream: (element: AppPageRenderableElement, options: {
40
47
  onError: (error: unknown, requestInfo: unknown, errorContext: unknown) => unknown;
41
48
  }) => ReadableStream<Uint8Array>;
@@ -73,4 +80,5 @@ export type RenderAppPageCacheArtifactsResult = {
73
80
  * shell regeneration.
74
81
  */
75
82
  export declare function renderAppPageCacheArtifacts(options: RenderAppPageCacheArtifactsOptions): Promise<RenderAppPageCacheArtifactsResult>;
76
- //#endregion
83
+ //#endregion
84
+ export {};
@@ -5,9 +5,9 @@ import { getCollectedFetchTags } from "../shims/fetch-cache.js";
5
5
  import { readStreamAsText } from "../utils/text-stream.js";
6
6
  import { buildAppPageFontLinkHeader, teeAppPageRscStreamForCapture } from "./app-page-execution.js";
7
7
  import { recordAppPageRenderError, traceAppPageRender } from "./app-page-tracing.js";
8
- import { buildAppPageTags } from "./implicit-tags.js";
9
- import { consumeAppPageRenderObservationState, createAppPageHtmlOutputScope, createAppPageRenderObservation, createAppPageRscOutputScope } from "./app-page-render-observation.js";
10
8
  import { buildAppPageLinkHeader, createAppPageSsrErrorHandler, isAppSsrRenderResult } from "./app-page-stream.js";
9
+ import { consumeAppPageRenderObservationState, createAppPageHtmlOutputScope, createAppPageRenderObservation, createAppPageRscOutputScope } from "./app-page-render-observation.js";
10
+ import { buildAppPageTags } from "./implicit-tags.js";
11
11
  //#region src/server/app-page-cache-render.ts
12
12
  /**
13
13
  * Render an App page element to HTML (and optionally its RSC payload) for cache
@@ -44,6 +44,7 @@ async function renderAppPageCacheArtifactsImpl(options, renderSpan) {
44
44
  isStaticGeneration: true,
45
45
  isForceStatic: options.isForceStatic,
46
46
  preloadRoutePattern: options.route.pattern,
47
+ resolveCaughtNotFoundBoundaries: options.resolveCaughtNotFoundBoundaries,
47
48
  onSsrError: options.onSsrError && options.isCapturedRscError ? createAppPageSsrErrorHandler((error) => {
48
49
  recordAppPageRenderError(renderSpan, error);
49
50
  return options.onSsrError?.(error);
@@ -69,6 +70,17 @@ async function renderAppPageCacheArtifactsImpl(options, renderSpan) {
69
70
  const reactLinkHeader = isAppSsrRenderResult(htmlResult) ? htmlResult.linkHeader : void 0;
70
71
  linkHeader = buildAppPageLinkHeader(reactLinkHeader, buildAppPageFontLinkHeader(fontPreloads), options.reactMaxHeadersLength);
71
72
  html = await readStreamAsText(htmlStream);
73
+ const caughtShellError = isAppSsrRenderResult(htmlResult) ? htmlResult.caughtShellError : void 0;
74
+ if (caughtShellError !== void 0) {
75
+ await capturedRscDataRef.value?.catch(() => {});
76
+ specialErrorDocument = await options.renderShellSpecialError?.(caughtShellError, {
77
+ html,
78
+ linkHeader
79
+ }) ?? null;
80
+ if (!specialErrorDocument) throw caughtShellError;
81
+ html = specialErrorDocument.html;
82
+ linkHeader = specialErrorDocument.linkHeader;
83
+ }
72
84
  }
73
85
  let rscData;
74
86
  if (options.captureRscData) {
@@ -83,7 +83,19 @@ type ReadAppPageCacheResponseOptions = {
83
83
  renderMode?: AppRscRenderMode;
84
84
  expireSeconds?: number;
85
85
  revalidateSeconds: number;
86
- renderFreshPageForCache: () => Promise<AppPageCacheRenderResult>;
86
+ /**
87
+ * Whether this is an RSC request Next.js renders dynamically under PPR (one
88
+ * that is not a prefetch, for a path not generated at build time), and so
89
+ * never regenerates the page's document.
90
+ */
91
+ isDynamicRscRequest?: boolean;
92
+ /**
93
+ * Renders the page for its cache entries. `renderDocument` asks for the
94
+ * document as an HTML request renders it, to be stored beside the RSC payload.
95
+ */
96
+ renderFreshPageForCache: (options: {
97
+ renderDocument: boolean;
98
+ }) => Promise<AppPageCacheRenderResult>;
87
99
  scheduleBackgroundRegeneration: AppPageBackgroundRegenerator;
88
100
  };
89
101
  type ReadAppPageFallbackShellCacheResponseOptions = {
@@ -6,14 +6,14 @@ import { buildAppPageCacheValue, isrCacheControl, resolveRouteExpireSeconds } fr
6
6
  import { resolveClientStaleTimeSeconds } from "../utils/cache-control-metadata.js";
7
7
  import { encodeCacheTag } from "../utils/encode-cache-tag.js";
8
8
  import { setCacheStateHeaders } from "./cache-headers.js";
9
- import { VINEXT_RSC_CONTENT_TYPE, applyRscCompatibilityIdHeader, applyRscDeploymentIdHeader } from "./app-rsc-cache-busting.js";
10
- import { mergeMiddlewareResponseHeaders } from "./middleware-response-headers.js";
11
9
  import { markFrameworkLinkHeaders } from "./app-response-header-provenance.js";
12
- import { applyClientStaleTimeHeader, applyEdgeRuntimeHeader } from "./app-page-response.js";
13
- import { hasQueryInvariantRenderProof } from "./cache-proof.js";
10
+ import { mergeMiddlewareResponseHeaders } from "./middleware-response-headers.js";
11
+ import { VINEXT_RSC_CONTENT_TYPE, applyRscCompatibilityIdHeader, applyRscDeploymentIdHeader } from "./app-rsc-cache-busting.js";
14
12
  import { isAppPprDynamicFallbackShellHtml } from "./app-ppr-fallback-shell.js";
15
- import { buildPageCacheTags } from "./implicit-tags.js";
13
+ import { hasQueryInvariantRenderProof } from "./cache-proof.js";
14
+ import { applyClientStaleTimeHeader, applyEdgeRuntimeHeader } from "./app-page-response.js";
16
15
  import { finalizeAppPageHtmlCacheResponse, finalizeAppPageRscCacheResponse, scheduleAppPageRscCacheWrite } from "./app-page-cache-finalizer.js";
16
+ import { buildPageCacheTags } from "./implicit-tags.js";
17
17
  //#region src/server/app-page-cache.ts
18
18
  function recordAppPageCacheOutcome(recordCacheOutcome, input) {
19
19
  try {
@@ -92,6 +92,25 @@ function resolveRegenerationFailureCacheControl(previous) {
92
92
  ...previous.stale === void 0 ? {} : { stale: previous.stale }
93
93
  };
94
94
  }
95
+ /**
96
+ * Next.js stamps every prerender with the stale time it collected. A render
97
+ * that made no `cacheLife` claim keeps the `INFINITE_CACHE` sentinel, which
98
+ * resolves to `experimental.staleTimes.static` (`createSelectStaleTime` in
99
+ * `server/app-render/stale-time.ts`, applied by
100
+ * `applyMetadataFromPrerenderResult` in `app-render.tsx`). Its client only
101
+ * caches a navigation response for that long under
102
+ * `experimental.cachedNavigations` (`fetch-server-response.ts`); otherwise the
103
+ * value only dates prefetches. vinext's client reuses navigation responses for
104
+ * any advertised stale time, so the unclaimed value is only advertised when
105
+ * cached navigations are on.
106
+ */
107
+ function resolveUnclaimedPrerenderStaleTimeSeconds(isRoutePPREnabled) {
108
+ if (isRoutePPREnabled !== true) return void 0;
109
+ if (String(process.env.__NEXT_EXPERIMENTAL_CACHED_NAVIGATIONS) !== "true") return void 0;
110
+ const raw = process.env.__NEXT_CLIENT_ROUTER_STATIC_STALETIME;
111
+ const seconds = raw === void 0 || raw === "" ? 300 : Number(raw);
112
+ return Number.isFinite(seconds) && seconds >= 0 ? Math.floor(seconds) : void 0;
113
+ }
95
114
  function isRedirectStatus(status) {
96
115
  return status === 301 || status === 302 || status === 303 || status === 307 || status === 308;
97
116
  }
@@ -108,7 +127,7 @@ function buildAppPageCachedResponse(cachedValue, options) {
108
127
  expireSeconds: options.expireSeconds,
109
128
  cacheControlMeta: options.cacheControl
110
129
  });
111
- const staleTimeSeconds = resolveClientStaleTimeSeconds(options.cacheControl);
130
+ const staleTimeSeconds = resolveClientStaleTimeSeconds(options.cacheControl) ?? resolveUnclaimedPrerenderStaleTimeSeconds(options.isRoutePPREnabled);
112
131
  if (options.isRscRequest) {
113
132
  if (!cachedValue.rscData) return null;
114
133
  const rscHeaders = buildAppPageCachedHeaders({
@@ -276,8 +295,10 @@ async function readAppPageCacheResponse(options) {
276
295
  console.error(`[vinext] Failed to keep the previous entry for ${key}:`, storeError);
277
296
  }
278
297
  };
298
+ const regeneratesDocument = !options.isRscRequest || options.isDynamicRscRequest !== true && isrKey === options.isrRscKey(options.cleanPathname, null);
299
+ const htmlKey = options.isRscRequest ? regeneratesDocument ? options.isrHtmlKey(options.cleanPathname) : null : isrKey;
279
300
  const regenerate = async () => {
280
- const revalidatedPage = await options.renderFreshPageForCache();
301
+ const revalidatedPage = await options.renderFreshPageForCache({ renderDocument: regeneratesDocument });
281
302
  const cacheControl = resolveRegeneratedAppPageCacheControl({
282
303
  expireSeconds: options.expireSeconds,
283
304
  renderCacheControl: revalidatedPage.cacheControl,
@@ -285,7 +306,8 @@ async function readAppPageCacheResponse(options) {
285
306
  });
286
307
  if (options.isRoutePPREnabled !== true && (revalidatedPage.usedDynamicApi || cacheControl.revalidate === 0)) throw new Error(`Page changed from static to dynamic at runtime ${options.cleanPathname}
287
308
  see more here https://nextjs.org/docs/messages/app-static-to-dynamic-error`);
288
- if (!hasQueryInvariantRenderProof(revalidatedPage.rscRenderObservation) || !options.isRscRequest && !hasQueryInvariantRenderProof(revalidatedPage.htmlRenderObservation)) {
309
+ const documentKey = options.isRscRequest && revalidatedPage.html === "" ? null : htmlKey;
310
+ if (!hasQueryInvariantRenderProof(revalidatedPage.rscRenderObservation) || documentKey !== null && !hasQueryInvariantRenderProof(revalidatedPage.htmlRenderObservation)) {
289
311
  options.isrDebug?.("regen write skipped (searchParams not proven unread)", isrKey);
290
312
  return;
291
313
  }
@@ -304,15 +326,15 @@ see more here https://nextjs.org/docs/messages/app-static-to-dynamic-error`);
304
326
  };
305
327
  const status = revalidatedPage.status ?? 200;
306
328
  if (!await store(rscKey, buildAppPageCacheValue("", revalidatedPage.rscData, status, revalidatedPage.rscRenderObservation, revalidatedPage.headers))) return;
307
- if (!options.isRscRequest) {
308
- if (!await store(isrKey, buildAppPageCacheValue(revalidatedPage.html, void 0, status, revalidatedPage.htmlRenderObservation, revalidatedPage.linkHeader ? {
329
+ if (documentKey !== null) {
330
+ if (!await store(documentKey, buildAppPageCacheValue(revalidatedPage.html, void 0, status, revalidatedPage.htmlRenderObservation, revalidatedPage.linkHeader ? {
309
331
  ...revalidatedPage.headers,
310
332
  link: revalidatedPage.linkHeader
311
333
  } : revalidatedPage.headers))) return;
312
334
  }
313
335
  options.isrDebug?.("regen complete", options.cleanPathname);
314
336
  };
315
- options.scheduleBackgroundRegeneration(isrKey, async () => {
337
+ options.scheduleBackgroundRegeneration(htmlKey ?? isrKey, async () => {
316
338
  try {
317
339
  await regenerate();
318
340
  } catch (error) {
@@ -1,13 +1,11 @@
1
- import { ClassificationReason } from "../build/layout-classification-types.js";
2
- import { ClientReuseManifestParseResult } from "./client-reuse-manifest.js";
3
1
  import { AppOutgoingElements } from "./app-elements-wire.js";
4
2
  import "./app-elements.js";
5
3
  import { AppRscRenderMode } from "./app-rsc-render-mode.js";
6
4
  import { NavigationContext } from "../shims/navigation-context-state.js";
7
5
  import "../shims/navigation.js";
8
- import { AppPageFontPreload, LayoutClassificationOptions } from "./app-page-execution.js";
6
+ import { AppPageFontPreload } from "./app-page-execution.js";
9
7
  import { AppPageMiddlewareContext } from "./app-page-response.js";
10
- import { AppLayoutParamAccessTracker } from "./app-layout-param-observation.js";
8
+ import { AppPageFallbackRouteHead, AppPagePreparedRouteHead } from "./app-page-head.js";
11
9
  import { RootParams } from "../shims/root-params.js";
12
10
  import { AppPageSsrHandler } from "./app-page-stream.js";
13
11
  import { AppRenderErrorContextOverrides } from "./app-rsc-error-handler.js";
@@ -43,8 +41,16 @@ type AppPageDispatchIntercept<TPage = unknown> = {
43
41
  interceptLoadings?: readonly unknown[] | null;
44
42
  interceptLoadingTreePositions?: readonly number[] | null;
45
43
  interceptNotFoundBranchSegments?: readonly string[] | null;
44
+ interceptNotFounds?: readonly unknown[] | null;
45
+ interceptNotFoundTreePositions?: readonly number[] | null;
46
46
  notFound?: unknown;
47
47
  notFoundTreePosition?: number | null;
48
+ interceptForbiddens?: readonly unknown[] | null;
49
+ interceptForbiddenTreePositions?: readonly number[] | null;
50
+ interceptUnauthorizeds?: readonly unknown[] | null;
51
+ interceptUnauthorizedTreePositions?: readonly number[] | null;
52
+ interceptErrors?: readonly unknown[] | null;
53
+ interceptErrorTreePositions?: readonly number[] | null;
48
54
  matchedParams: AppPageParams;
49
55
  sourceMatchedParams?: AppPageParams;
50
56
  page: TPage;
@@ -67,6 +73,14 @@ type AppPageDispatchInterceptOptions<TPage = unknown> = {
67
73
  interceptNotFoundBranchSegments?: readonly string[] | null;
68
74
  interceptNotFound?: unknown;
69
75
  interceptNotFoundTreePosition?: number | null;
76
+ interceptForbiddens?: readonly unknown[] | null;
77
+ interceptForbiddenTreePositions?: readonly number[] | null;
78
+ interceptUnauthorizeds?: readonly unknown[] | null;
79
+ interceptUnauthorizedTreePositions?: readonly number[] | null;
80
+ interceptErrors?: readonly unknown[] | null;
81
+ interceptErrorTreePositions?: readonly number[] | null;
82
+ interceptNotFounds?: readonly unknown[] | null;
83
+ interceptNotFoundTreePositions?: readonly number[] | null;
70
84
  interceptPage: TPage;
71
85
  interceptParams: AppPageParams;
72
86
  interceptSlotId?: string | null;
@@ -90,8 +104,6 @@ type AppPageDispatchSlot = {
90
104
  slotParamNames?: readonly string[] | null;
91
105
  };
92
106
  export type AppPageDispatchRoute = {
93
- __buildTimeClassifications?: LayoutClassificationOptions["buildTimeClassifications"];
94
- __buildTimeReasons?: LayoutClassificationOptions["buildTimeReasons"];
95
107
  error?: AppPageModule | null;
96
108
  errors?: readonly (AppPageModule | null | undefined)[];
97
109
  forbidden?: AppPageModule | null;
@@ -108,6 +120,12 @@ export type AppPageDispatchRoute = {
108
120
  params: readonly string[];
109
121
  pattern: string;
110
122
  routeSegments: readonly string[];
123
+ segmentForbiddens?: readonly (AppPageModule | null | undefined)[];
124
+ segmentForbiddenTreePositions?: readonly number[];
125
+ segmentNotFounds?: readonly (AppPageModule | null | undefined)[];
126
+ segmentNotFoundTreePositions?: readonly number[];
127
+ segmentUnauthorizeds?: readonly (AppPageModule | null | undefined)[];
128
+ segmentUnauthorizedTreePositions?: readonly number[];
111
129
  slots?: Readonly<Record<string, AppPageDispatchSlot>>;
112
130
  unauthorized?: AppPageModule | null;
113
131
  unauthorizedTreePosition?: number | null;
@@ -138,19 +156,22 @@ export type DispatchAppPageOptions<TRoute extends AppPageDispatchRoute> = {
138
156
  * `next.config`. Undefined falls back to the React default downstream.
139
157
  */
140
158
  reactMaxHeadersLength?: number;
141
- buildPageElement: (route: TRoute, params: AppPageParams, opts: AppPageDispatchInterceptOptions | undefined, searchParams: URLSearchParams, layoutParamAccess?: AppLayoutParamAccessTracker, options?: {
159
+ buildPageElement: (route: TRoute, params: AppPageParams, opts: AppPageDispatchInterceptOptions | undefined, searchParams: URLSearchParams, options?: {
142
160
  isForceStatic?: boolean;
161
+ isUncacheableRender?: boolean;
162
+ /** Layouts the navigating client holds, which the render may leave out. */
163
+ mountedLayouts?: ReadonlySet<string> | null;
143
164
  observeMetadataSearchParamsAccess?: boolean;
144
165
  observePageSearchParamsAccess?: boolean;
145
166
  serveStreamingMetadata?: boolean;
146
167
  placeStreamedMetadataInHead?: boolean;
168
+ /** Receives the route's head once the render starts resolving it. */
169
+ onHeadPrepared?: (head: AppPagePreparedRouteHead) => void;
147
170
  }) => Promise<AppPageElement>;
148
- clientReuseManifest?: ClientReuseManifestParseResult;
149
171
  cleanPathname: string;
150
172
  displayPathname?: string;
151
173
  clearRequestContext: () => void;
152
174
  createRscOnErrorHandler: (pathname: string, routePath: string, overrides?: AppRenderErrorContextOverrides) => AppPageBoundaryOnError;
153
- debugClassification?: (layoutId: string, reason: ClassificationReason) => void;
154
175
  draftModeSecret: string;
155
176
  dynamicConfig?: string;
156
177
  dynamicStaleTimeSeconds?: number;
@@ -223,17 +244,23 @@ export type DispatchAppPageOptions<TRoute extends AppPageDispatchRoute> = {
223
244
  skipStaticParamsValidation?: boolean;
224
245
  staticParamsValidationParams?: AppPageParams;
225
246
  rootParams?: RootParams;
226
- probeLayoutAt: (layoutIndex: number, layoutParamAccess?: AppLayoutParamAccessTracker) => unknown;
247
+ probeLayoutAt: (layoutIndex: number) => unknown;
227
248
  expireSeconds?: number;
228
249
  renderErrorBoundaryPage: (error: unknown, errorOrigin?: "rsc" | "ssr") => Promise<Response | null>;
229
250
  renderHttpAccessFallbackPage: (statusCode: number, opts: {
230
251
  boundaryComponent?: unknown;
231
252
  boundaryModule?: AppPageModule | null;
253
+ /** Boundary whose metadata the head uses, when not `boundaryModule`. */
254
+ headBoundaryModule?: AppPageModule | null;
255
+ /** Layouts whose metadata the head uses, when more than `layouts`. */
256
+ headLayouts?: readonly AppPageModule[];
232
257
  intercept?: AppPageDispatchInterceptOptions | null;
233
258
  /** The document may be stored, so it must not carry the request's query. */
234
259
  isCacheCandidate?: boolean;
235
260
  layouts?: readonly AppPageModule[];
236
261
  matchedParams: AppPageParams;
262
+ /** The route's render threw the signal, so the document keeps the route's head. */
263
+ routeHead?: AppPageFallbackRouteHead;
237
264
  }, middlewareContext: AppPageMiddlewareContext | null) => Promise<Response | null>;
238
265
  renderToReadableStream: (element: AppPageRenderableElement, options: {
239
266
  onError: AppPageBoundaryOnError;
@@ -290,4 +317,5 @@ export declare function shouldReadAppPageCache(options: {
290
317
  }): boolean;
291
318
  export declare function hasSearchParams(searchParams: URLSearchParams | null | undefined): boolean;
292
319
  export declare function dispatchAppPage<TRoute extends AppPageDispatchRoute>(options: DispatchAppPageOptions<TRoute>): Promise<Response>;
293
- //#endregion
320
+ //#endregion
321
+ export {};