vinext 1.3.0 → 1.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (391) hide show
  1. package/dist/_virtual/_rolldown/runtime.js +1 -1
  2. package/dist/build/action-owner-manifest.d.ts +3 -2
  3. package/dist/build/action-owner-manifest.js +18 -2
  4. package/dist/build/app-page-static-eligibility.d.ts +17 -1
  5. package/dist/build/app-page-static-eligibility.js +80 -13
  6. package/dist/build/clean-output.d.ts +2 -1
  7. package/dist/build/client-build-config.d.ts +13 -3
  8. package/dist/build/client-build-config.js +46 -9
  9. package/dist/build/client-reference-async.d.ts +48 -0
  10. package/dist/build/client-reference-async.js +123 -0
  11. package/dist/build/client-reference-chunks.d.ts +32 -0
  12. package/dist/build/client-reference-chunks.js +111 -0
  13. package/dist/build/client-reference-groups.d.ts +9 -1
  14. package/dist/build/client-reference-groups.js +40 -2
  15. package/dist/build/css-url-assets.d.ts +2 -1
  16. package/dist/build/google-fonts/fallback-metrics.d.ts +2 -1
  17. package/dist/build/google-fonts/find-font-files-in-css.d.ts +1 -0
  18. package/dist/build/google-fonts/find-font-files-in-css.js +17 -4
  19. package/dist/build/google-fonts/font-metadata.d.ts +2 -1
  20. package/dist/build/google-fonts/validate.d.ts +2 -1
  21. package/dist/build/inline-css.d.ts +2 -1
  22. package/dist/build/layout-classification.d.ts +2 -1
  23. package/dist/build/module-dependency-cache.d.ts +2 -1
  24. package/dist/build/next-client-runtime-manifests.d.ts +2 -1
  25. package/dist/build/precompress.d.ts +2 -1
  26. package/dist/build/precompress.js +1 -1
  27. package/dist/build/prerender-paths.d.ts +2 -1
  28. package/dist/build/prerender-phase.d.ts +2 -1
  29. package/dist/build/prerender-server-pool.js +1 -1
  30. package/dist/build/prerender.d.ts +3 -2
  31. package/dist/build/prerender.js +5 -4
  32. package/dist/build/report.d.ts +2 -1
  33. package/dist/build/route-classification-injector.d.ts +2 -1
  34. package/dist/build/route-classification-manifest.d.ts +2 -1
  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 +4 -0
  43. package/dist/cli-args.d.ts +2 -1
  44. package/dist/cli.js +2 -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/index.js +1 -2
  51. package/dist/client/instrumentation-client-state.js +5 -5
  52. package/dist/client/navigation-runtime.d.ts +3 -1
  53. package/dist/client/navigation-runtime.js +1 -1
  54. package/dist/client/pages-router-link-navigation.d.ts +2 -1
  55. package/dist/client/vinext-next-data.d.ts +25 -1
  56. package/dist/client/window-next.d.ts +2 -1
  57. package/dist/config/config-matchers.d.ts +12 -1
  58. package/dist/config/config-matchers.js +111 -16
  59. package/dist/config/dotenv.d.ts +2 -1
  60. package/dist/config/next-config.d.ts +13 -1
  61. package/dist/config/next-config.js +29 -4
  62. package/dist/config/tsconfig-paths.d.ts +2 -1
  63. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/detector.js +23 -0
  64. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/index.js +2 -0
  65. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/lookup.js +25 -0
  66. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/bmp.js +11 -0
  67. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/cur.js +15 -0
  68. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/dds.js +11 -0
  69. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/gif.js +12 -0
  70. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/heif.js +55 -0
  71. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/icns.js +76 -0
  72. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/ico.js +39 -0
  73. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/index.js +46 -0
  74. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/j2c.js +11 -0
  75. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/jp2.js +21 -0
  76. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/jpg.js +71 -0
  77. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/jxl-stream.js +42 -0
  78. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/jxl.js +46 -0
  79. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/ktx.js +19 -0
  80. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/png.js +28 -0
  81. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/pnm.js +54 -0
  82. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/psd.js +11 -0
  83. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/svg.js +79 -0
  84. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/tga.js +15 -0
  85. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/tiff.js +96 -0
  86. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/utils.js +53 -0
  87. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/webp.js +45 -0
  88. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/utils/bit-reader.js +38 -0
  89. package/dist/deps/.pnpm/ua-parser-js@1.0.35/deps/ua-parser-js/src/ua-parser.js +2 -2
  90. package/dist/entries/app-browser-entry.d.ts +20 -5
  91. package/dist/entries/app-browser-entry.js +79 -6
  92. package/dist/entries/app-rsc-entry.d.ts +2 -1
  93. package/dist/entries/app-rsc-entry.js +42 -12
  94. package/dist/entries/app-rsc-manifest.d.ts +2 -1
  95. package/dist/entries/app-rsc-manifest.js +53 -0
  96. package/dist/entries/pages-entry-helpers.js +1 -2
  97. package/dist/entries/pages-server-entry.d.ts +2 -1
  98. package/dist/entries/pages-server-entry.js +1 -1
  99. package/dist/entries/runtime-entry-module.d.ts +1 -0
  100. package/dist/entries/runtime-entry-module.js +4 -1
  101. package/dist/image/image-adapters-virtual.d.ts +2 -1
  102. package/dist/index.js +102 -34
  103. package/dist/plugins/client-compile-hints.d.ts +30 -0
  104. package/dist/plugins/client-compile-hints.js +88 -0
  105. package/dist/plugins/client-reference-dedup.d.ts +2 -1
  106. package/dist/plugins/cloudflare-dev-module-urls.d.ts +2 -1
  107. package/dist/plugins/dynamic-preload-metadata.d.ts +3 -1
  108. package/dist/plugins/dynamic-preload-metadata.js +1 -1
  109. package/dist/plugins/environment.d.ts +2 -1
  110. package/dist/plugins/fonts.js +9 -12
  111. package/dist/plugins/ignore-dynamic-requests.d.ts +2 -1
  112. package/dist/plugins/import-meta-url.d.ts +2 -1
  113. package/dist/plugins/og-assets.d.ts +2 -1
  114. package/dist/plugins/og-assets.js +2 -3
  115. package/dist/plugins/optimize-imports.d.ts +2 -1
  116. package/dist/plugins/pages-node-externals.d.ts +2 -1
  117. package/dist/plugins/remove-console.d.ts +2 -1
  118. package/dist/plugins/require-condition-resolution.d.ts +2 -1
  119. package/dist/plugins/rsc-client-reference-loaders.d.ts +8 -0
  120. package/dist/plugins/rsc-client-reference-loaders.js +170 -68
  121. package/dist/plugins/rsc-client-shim-excludes.js +2 -0
  122. package/dist/plugins/sass.d.ts +2 -1
  123. package/dist/plugins/strip-server-exports.d.ts +2 -1
  124. package/dist/plugins/styled-jsx.d.ts +2 -1
  125. package/dist/plugins/transform-result.d.ts +2 -1
  126. package/dist/plugins/typeof-window.d.ts +2 -1
  127. package/dist/plugins/worker-image-imports.js +1 -1
  128. package/dist/plugins/worker-use-server.d.ts +2 -1
  129. package/dist/routing/app-route-graph.d.ts +40 -0
  130. package/dist/routing/app-route-graph.js +122 -50
  131. package/dist/routing/browser-route-manifest.d.ts +2 -1
  132. package/dist/routing/optimistic-route-trie.d.ts +2 -1
  133. package/dist/routing/route-matching.d.ts +2 -1
  134. package/dist/routing/route-pattern.d.ts +2 -1
  135. package/dist/server/accept-encoding.d.ts +2 -1
  136. package/dist/server/app-action-forwarding.d.ts +2 -1
  137. package/dist/server/app-bfcache-identity.d.ts +2 -1
  138. package/dist/server/app-browser-action-result.d.ts +2 -1
  139. package/dist/server/app-browser-client-reuse-manifest.d.ts +2 -1
  140. package/dist/server/app-browser-entry.js +30 -6
  141. package/dist/server/app-browser-error.d.ts +2 -1
  142. package/dist/server/app-browser-history-controller.d.ts +2 -1
  143. package/dist/server/app-browser-hydration.d.ts +2 -1
  144. package/dist/server/app-browser-interception-context.d.ts +2 -1
  145. package/dist/server/app-browser-navigation-controller.js +15 -10
  146. package/dist/server/app-browser-popstate.d.ts +2 -1
  147. package/dist/server/app-browser-rsc-redirect.d.ts +2 -1
  148. package/dist/server/app-browser-server-action-client.d.ts +2 -1
  149. package/dist/server/app-browser-state.js +1 -1
  150. package/dist/server/app-browser-stream.d.ts +2 -1
  151. package/dist/server/app-browser-visible-commit.d.ts +2 -1
  152. package/dist/server/app-client-reference-manifest.d.ts +31 -0
  153. package/dist/server/app-client-reference-manifest.js +46 -0
  154. package/dist/server/app-client-reference-preloader.d.ts +25 -5
  155. package/dist/server/app-client-reference-preloader.js +22 -7
  156. package/dist/server/app-elements-wire.d.ts +2 -1
  157. package/dist/server/app-elements.d.ts +2 -0
  158. package/dist/server/app-elements.js +3 -1
  159. package/dist/server/app-fallback-renderer.d.ts +9 -2
  160. package/dist/server/app-fallback-renderer.js +4 -1
  161. package/dist/server/app-history-state.d.ts +2 -1
  162. package/dist/server/app-inline-css-client.d.ts +2 -1
  163. package/dist/server/app-layout-param-observation.d.ts +2 -1
  164. package/dist/server/app-metadata-tracing.d.ts +2 -1
  165. package/dist/server/app-optimistic-routing.d.ts +18 -1
  166. package/dist/server/app-optimistic-routing.js +34 -1
  167. package/dist/server/app-page-boundary-render.d.ts +20 -2
  168. package/dist/server/app-page-boundary-render.js +221 -38
  169. package/dist/server/app-page-boundary.d.ts +34 -5
  170. package/dist/server/app-page-boundary.js +40 -7
  171. package/dist/server/app-page-cache-finalizer.d.ts +2 -1
  172. package/dist/server/app-page-cache-finalizer.js +1 -1
  173. package/dist/server/app-page-cache-render.d.ts +10 -2
  174. package/dist/server/app-page-cache-render.js +14 -2
  175. package/dist/server/app-page-cache.js +2 -2
  176. package/dist/server/app-page-dispatch.d.ts +34 -1
  177. package/dist/server/app-page-dispatch.js +163 -34
  178. package/dist/server/app-page-element-builder.d.ts +17 -1
  179. package/dist/server/app-page-element-builder.js +187 -66
  180. package/dist/server/app-page-execution.d.ts +28 -1
  181. package/dist/server/app-page-execution.js +114 -5
  182. package/dist/server/app-page-head.d.ts +95 -3
  183. package/dist/server/app-page-head.js +307 -152
  184. package/dist/server/app-page-http-access-fallback-metadata.d.ts +48 -2
  185. package/dist/server/app-page-http-access-fallback-metadata.js +76 -1
  186. package/dist/server/app-page-method.d.ts +2 -1
  187. package/dist/server/app-page-probe.d.ts +2 -1
  188. package/dist/server/app-page-render-identity.d.ts +2 -1
  189. package/dist/server/app-page-render.d.ts +7 -1
  190. package/dist/server/app-page-render.js +35 -10
  191. package/dist/server/app-page-request.d.ts +14 -1
  192. package/dist/server/app-page-request.js +1 -1
  193. package/dist/server/app-page-route-wiring.d.ts +52 -2
  194. package/dist/server/app-page-route-wiring.js +197 -47
  195. package/dist/server/app-page-rsc-render-status.d.ts +2 -1
  196. package/dist/server/app-page-search-params-observation.d.ts +7 -2
  197. package/dist/server/app-page-search-params-observation.js +8 -1
  198. package/dist/server/app-page-segment-plan.d.ts +2 -1
  199. package/dist/server/app-page-stream.d.ts +31 -1
  200. package/dist/server/app-page-stream.js +23 -4
  201. package/dist/server/app-pages-bridge.d.ts +2 -1
  202. package/dist/server/app-ppr-fallback-shell-render.d.ts +2 -1
  203. package/dist/server/app-ppr-fallback-shell.d.ts +2 -1
  204. package/dist/server/app-prerender-endpoints.d.ts +2 -1
  205. package/dist/server/app-prerender-static-params.d.ts +2 -1
  206. package/dist/server/app-render-dependency.d.ts +11 -1
  207. package/dist/server/app-render-dependency.js +26 -7
  208. package/dist/server/app-request-stage-independent-entry.d.ts +2 -1
  209. package/dist/server/app-response-stage-entry.d.ts +2 -1
  210. package/dist/server/app-route-handler-cache.d.ts +2 -1
  211. package/dist/server/app-route-handler-dispatch.d.ts +2 -1
  212. package/dist/server/app-route-handler-dispatch.js +1 -1
  213. package/dist/server/app-route-handler-execution.d.ts +2 -1
  214. package/dist/server/app-route-handler-response.d.ts +2 -1
  215. package/dist/server/app-route-handler-runtime.d.ts +2 -1
  216. package/dist/server/app-route-module-loader.d.ts +18 -1
  217. package/dist/server/app-route-module-loader.js +8 -0
  218. package/dist/server/app-route-tree-prefetch.d.ts +2 -1
  219. package/dist/server/app-rsc-error-handler.d.ts +2 -1
  220. package/dist/server/app-rsc-errors.d.ts +2 -1
  221. package/dist/server/app-rsc-handler.d.ts +2 -1
  222. package/dist/server/app-rsc-handler.js +6 -10
  223. package/dist/server/app-rsc-response-finalizer.d.ts +2 -1
  224. package/dist/server/app-rsc-route-matching.d.ts +38 -1
  225. package/dist/server/app-rsc-route-matching.js +24 -0
  226. package/dist/server/app-segment-config.d.ts +2 -1
  227. package/dist/server/app-segment-config.js +1 -14
  228. package/dist/server/app-server-action-execution.d.ts +2 -1
  229. package/dist/server/app-server-action-execution.js +3 -3
  230. package/dist/server/app-ssr-entry.d.ts +6 -0
  231. package/dist/server/app-ssr-entry.js +91 -44
  232. package/dist/server/app-ssr-error-meta.d.ts +2 -1
  233. package/dist/server/app-ssr-search-params-gate.d.ts +2 -1
  234. package/dist/server/app-ssr-stream.d.ts +22 -10
  235. package/dist/server/app-ssr-stream.js +299 -67
  236. package/dist/server/app-static-generation.d.ts +2 -1
  237. package/dist/server/app-streamed-client-references.d.ts +39 -0
  238. package/dist/server/app-streamed-client-references.js +156 -0
  239. package/dist/server/app-visited-response-cache.d.ts +2 -1
  240. package/dist/server/app-worker-stages.d.ts +2 -1
  241. package/dist/server/artifact-compatibility.d.ts +2 -1
  242. package/dist/server/bfcache-identity.d.ts +2 -1
  243. package/dist/server/cache-headers.d.ts +2 -1
  244. package/dist/server/cacheability-request.d.ts +2 -1
  245. package/dist/server/client-reuse-manifest.d.ts +2 -1
  246. package/dist/server/config-headers.d.ts +2 -1
  247. package/dist/server/csp.d.ts +2 -1
  248. package/dist/server/default-global-not-found-module.d.ts +2 -1
  249. package/dist/server/default-http-access-fallback-modules.d.ts +33 -0
  250. package/dist/server/default-http-access-fallback-modules.js +31 -0
  251. package/dist/server/defer-until-stream-consumed.d.ts +34 -0
  252. package/dist/server/defer-until-stream-consumed.js +154 -21
  253. package/dist/server/dev-lockfile.d.ts +32 -2
  254. package/dist/server/dev-lockfile.js +46 -2
  255. package/dist/server/dev-module-runner.d.ts +2 -1
  256. package/dist/server/dev-server.js +10 -3
  257. package/dist/server/fetch-handler.js +1 -2
  258. package/dist/server/file-based-metadata.d.ts +2 -1
  259. package/dist/server/framework-tracer.d.ts +2 -1
  260. package/dist/server/html.d.ts +1 -0
  261. package/dist/server/html.js +19 -1
  262. package/dist/server/http-conditional.d.ts +2 -1
  263. package/dist/server/http-error-responses.d.ts +2 -1
  264. package/dist/server/implicit-tags.d.ts +2 -1
  265. package/dist/server/metadata-route-build-data.d.ts +2 -1
  266. package/dist/server/metadata-route-build-data.js +1 -1
  267. package/dist/server/metadata-route-response.d.ts +2 -1
  268. package/dist/server/metadata-route-response.js +1 -1
  269. package/dist/server/metadata-routes.d.ts +2 -1
  270. package/dist/server/middleware-runtime.d.ts +2 -1
  271. package/dist/server/navigation-trace.d.ts +2 -1
  272. package/dist/server/next-error-digest.d.ts +2 -1
  273. package/dist/server/nitro-public-files-plugin.d.ts +2 -1
  274. package/dist/server/nitro-public-files.d.ts +2 -1
  275. package/dist/server/opentelemetry-api.d.ts +2 -1
  276. package/dist/server/operation-token.d.ts +2 -1
  277. package/dist/server/pages-api-route.d.ts +2 -1
  278. package/dist/server/pages-asset-tags.d.ts +2 -1
  279. package/dist/server/pages-body-parser-config.d.ts +2 -1
  280. package/dist/server/pages-client-assets.d.ts +4 -0
  281. package/dist/server/pages-data-route.d.ts +2 -1
  282. package/dist/server/pages-document-asset-props.d.ts +2 -1
  283. package/dist/server/pages-document-initial-props.d.ts +2 -1
  284. package/dist/server/pages-execution-tracing.d.ts +2 -1
  285. package/dist/server/pages-execution-tracing.js +1 -1
  286. package/dist/server/pages-get-initial-props.d.ts +2 -1
  287. package/dist/server/pages-page-data.d.ts +7 -1
  288. package/dist/server/pages-page-data.js +35 -12
  289. package/dist/server/pages-page-handler.d.ts +3 -2
  290. package/dist/server/pages-page-handler.js +16 -7
  291. package/dist/server/pages-page-method.d.ts +2 -1
  292. package/dist/server/pages-page-response.d.ts +2 -1
  293. package/dist/server/pages-preview.d.ts +2 -1
  294. package/dist/server/pages-readiness.d.ts +2 -1
  295. package/dist/server/pages-request-pipeline.d.ts +2 -1
  296. package/dist/server/pages-request-pipeline.js +4 -5
  297. package/dist/server/pages-request-stage-entry.d.ts +2 -1
  298. package/dist/server/pages-response-stage-entry.d.ts +2 -1
  299. package/dist/server/pages-route-data-kind.d.ts +2 -1
  300. package/dist/server/prerender-cache-life-header.d.ts +2 -1
  301. package/dist/server/prerender-route-params.d.ts +2 -1
  302. package/dist/server/prod-server.js +9 -3
  303. package/dist/server/request-log.d.ts +2 -1
  304. package/dist/server/request-tracing.d.ts +2 -1
  305. package/dist/server/request-tracing.js +1 -1
  306. package/dist/server/response-start-tracing.js +7 -29
  307. package/dist/server/rsc-render-stream.d.ts +4 -0
  308. package/dist/server/rsc-render-stream.js +25 -0
  309. package/dist/server/seed-cache.d.ts +2 -1
  310. package/dist/server/seed-cache.js +1 -1
  311. package/dist/server/static-file-cache.d.ts +2 -1
  312. package/dist/server/static-file-cache.js +1 -0
  313. package/dist/server/static-layout-client-reuse-proof.d.ts +2 -1
  314. package/dist/server/worker-revalidation-context.d.ts +2 -1
  315. package/dist/server/worker-stages.d.ts +2 -1
  316. package/dist/shims/app.d.ts +2 -1
  317. package/dist/shims/cache-callable-runtime.d.ts +2 -1
  318. package/dist/shims/cache-handler.d.ts +8 -3
  319. package/dist/shims/cache-handler.js +29 -9
  320. package/dist/shims/caught-not-found-boundaries.d.ts +15 -0
  321. package/dist/shims/caught-not-found-boundaries.js +48 -0
  322. package/dist/shims/cdn-purge-routes.d.ts +2 -1
  323. package/dist/shims/client-locale.js +2 -1
  324. package/dist/shims/client-page-root.d.ts +2 -1
  325. package/dist/shims/config.d.ts +2 -1
  326. package/dist/shims/default-forbidden.d.ts +4 -0
  327. package/dist/shims/default-forbidden.js +18 -0
  328. package/dist/shims/default-not-found.d.ts +0 -5
  329. package/dist/shims/default-not-found.js +5 -41
  330. package/dist/shims/default-unauthorized.d.ts +4 -0
  331. package/dist/shims/default-unauthorized.js +18 -0
  332. package/dist/shims/error-boundary.d.ts +39 -3
  333. package/dist/shims/error-boundary.js +31 -16
  334. package/dist/shims/font-google.js +1 -2
  335. package/dist/shims/font-utils.d.ts +3 -2
  336. package/dist/shims/font-utils.js +5 -3
  337. package/dist/shims/form.js +1 -1
  338. package/dist/shims/http-access-error-fallback.d.ts +7 -0
  339. package/dist/shims/http-access-error-fallback.js +47 -0
  340. package/dist/shims/image.d.ts +1 -22
  341. package/dist/shims/internal/app-prefetch-fetch-queue.d.ts +22 -2
  342. package/dist/shims/internal/app-prefetch-fetch-queue.js +71 -18
  343. package/dist/shims/internal/app-route-prefetch-policy.d.ts +14 -3
  344. package/dist/shims/internal/app-route-prefetch-policy.js +29 -4
  345. package/dist/shims/internal/cache-context-accessor.d.ts +2 -1
  346. package/dist/shims/internal/client-reference-loader.d.ts +7 -0
  347. package/dist/shims/internal/client-reference-loader.js +91 -0
  348. package/dist/shims/internal/cookie-serialize.d.ts +2 -1
  349. package/dist/shims/internal/cookies.js +1 -2
  350. package/dist/shims/internal/headers-state.d.ts +2 -0
  351. package/dist/shims/internal/headers-state.js +6 -1
  352. package/dist/shims/internal/hybrid-client-route-owner-direct.d.ts +2 -1
  353. package/dist/shims/internal/interpolate-as.d.ts +2 -1
  354. package/dist/shims/internal/pages-data-target.d.ts +2 -1
  355. package/dist/shims/internal/pages-data-url.d.ts +2 -1
  356. package/dist/shims/internal/thenable-well-known-properties.d.ts +2 -1
  357. package/dist/shims/link.js +195 -52
  358. package/dist/shims/metadata.d.ts +32 -11
  359. package/dist/shims/metadata.js +88 -26
  360. package/dist/shims/navigation-errors.d.ts +2 -1
  361. package/dist/shims/navigation.d.ts +22 -2
  362. package/dist/shims/navigation.js +74 -20
  363. package/dist/shims/pages-router-runtime.d.ts +2 -1
  364. package/dist/shims/ppr-fallback-shell.d.ts +2 -1
  365. package/dist/shims/router.js +14 -3
  366. package/dist/shims/unified-request-context.js +3 -3
  367. package/dist/typegen.d.ts +2 -1
  368. package/dist/utils/client-build-manifest.d.ts +4 -1
  369. package/dist/utils/client-build-manifest.js +9 -2
  370. package/dist/utils/client-entry-manifest.d.ts +13 -0
  371. package/dist/utils/client-entry-manifest.js +20 -1
  372. package/dist/utils/client-reference-chunks.d.ts +45 -0
  373. package/dist/utils/client-reference-chunks.js +30 -0
  374. package/dist/utils/client-runtime-metadata.d.ts +9 -1
  375. package/dist/utils/client-runtime-metadata.js +40 -9
  376. package/dist/utils/compare.d.ts +9 -0
  377. package/dist/utils/compare.js +15 -1
  378. package/dist/utils/lazy-chunks.d.ts +14 -0
  379. package/dist/utils/lazy-chunks.js +27 -1
  380. package/dist/utils/middleware-request-headers.d.ts +2 -1
  381. package/dist/utils/project.d.ts +2 -1
  382. package/dist/utils/project.js +9 -1
  383. package/dist/utils/query.d.ts +2 -1
  384. package/dist/utils/sorted-array.d.ts +2 -1
  385. package/dist/utils/vite-cli-invocation.d.ts +2 -1
  386. package/package.json +5 -5
  387. package/dist/deps/.pnpm/image-size@2.0.2/deps/image-size/dist/index.js +0 -808
  388. package/dist/server/default-not-found-module.d.ts +0 -19
  389. package/dist/server/default-not-found-module.js +0 -18
  390. package/dist/server/rsc-stream-hints.d.ts +0 -21
  391. package/dist/server/rsc-stream-hints.js +0 -227
@@ -7,8 +7,8 @@ import { AppElementsWire } from "./app-elements-wire.js";
7
7
  import { getMountedSlotIds, getMountedSlotIdsHeader } from "./app-elements.js";
8
8
  import { bindAppElementsRenderedSearch } from "../shims/slot.js";
9
9
  import { createRscRequestHeaders } from "./app-rsc-cache-busting.js";
10
- import { createCacheEntryReuseProof } from "./cache-proof.js";
11
10
  import { createBfcacheSegmentIdentityMap, createInitialBfcacheIdMap, createNextBfcacheIdMap, preserveBfcacheIdsForMergedElements } from "./app-bfcache-identity.js";
11
+ import { createCacheEntryReuseProof } from "./cache-proof.js";
12
12
  import { createAppOwnedHistoryState, createExternalHistoryStatePreservingMetadata, createHistoryStateWithNavigationMetadata, createHistoryStateWithPreviousNextUrl, createHistoryStateWithTreeSnapshotId, isExternalHistoryState, isHistoryStateBfcacheVersionCurrent, readHistoryStateActiveRoutePaths, readHistoryStateBfcacheIds, readHistoryStateBfcacheVersion, readHistoryStatePreviousNextUrl, readHistoryStateTraversalIndex, resolveActiveRoutePaths, resolveHistoryTraversalIntent } from "./app-history-state.js";
13
13
  import { NavigationTraceReasonCodes, createNavigationLifecycleTraceFields, createNavigationTrace } from "./navigation-trace.js";
14
14
  import { verifyOperationTokenForCommit } from "./operation-token.js";
@@ -21,4 +21,5 @@ export declare function chunksToReadableStream(chunks: readonly RscEmbeddedChunk
21
21
  * immediately instead of polling with setTimeout.
22
22
  */
23
23
  export declare function createProgressiveRscStream(): ReadableStream<Uint8Array>;
24
- //#endregion
24
+ //#endregion
25
+ export {};
@@ -79,4 +79,5 @@ export declare function resolveAndClassifyNavigationCommit(options: {
79
79
  targetHref: string;
80
80
  type: "navigate" | "replace" | "traverse";
81
81
  }): Promise<ClassifiedPendingNavigationCommit>;
82
- //#endregion
82
+ //#endregion
83
+ export {};
@@ -0,0 +1,31 @@
1
+ import { ClientReferenceChunks } from "../utils/client-reference-chunks.js";
2
+ //#region src/server/app-client-reference-manifest.d.ts
3
+ type ClientManifestEntry = {
4
+ id: string;
5
+ name: string;
6
+ chunks: string[];
7
+ async?: boolean;
8
+ };
9
+ type ClientManifest = Record<string, ClientManifestEntry>;
10
+ /**
11
+ * Names the chunks each client reference loads in its Flight row, as Next.js
12
+ * does, so the browser loads a reference without a registry of every client
13
+ * reference in the app (see shims/internal/client-reference-loader.ts). Returns a
14
+ * function that wraps @vitejs/plugin-rsc's client manifest, which leaves the
15
+ * chunks empty. Without chunk data (development, or `rsc: false`) it returns
16
+ * the manifest unchanged.
17
+ */
18
+ export declare function createClientReferenceChunksManifest(referenceChunks: ClientReferenceChunks | undefined): (manifest: ClientManifest) => ClientManifest;
19
+ /**
20
+ * The SSR Flight client's consumer manifest. React's webpack binding loads the
21
+ * chunks a client reference's row names before requiring the reference, which
22
+ * only the browser can do, so SSR resolves each reference to itself without
23
+ * them. A null `moduleLoading` keeps React from preinitializing the chunks as
24
+ * classic scripts; SSR preloads them through @vitejs/plugin-rsc instead.
25
+ */
26
+ export declare const ssrServerConsumerManifest: {
27
+ moduleMap: Record<string, Record<string, ClientManifestEntry>>;
28
+ moduleLoading: null;
29
+ };
30
+ //#endregion
31
+ export {};
@@ -0,0 +1,46 @@
1
+ import { toFlightChunks } from "../utils/client-reference-chunks.js";
2
+ //#region src/server/app-client-reference-manifest.ts
3
+ /**
4
+ * Names the chunks each client reference loads in its Flight row, as Next.js
5
+ * does, so the browser loads a reference without a registry of every client
6
+ * reference in the app (see shims/internal/client-reference-loader.ts). Returns a
7
+ * function that wraps @vitejs/plugin-rsc's client manifest, which leaves the
8
+ * chunks empty. Without chunk data (development, or `rsc: false`) it returns
9
+ * the manifest unchanged.
10
+ */
11
+ function createClientReferenceChunksManifest(referenceChunks) {
12
+ if (!referenceChunks) return (manifest) => manifest;
13
+ const flightChunks = referenceChunks.modules.map(toFlightChunks);
14
+ return (manifest) => new Proxy(manifest, { get(target, id, receiver) {
15
+ const entry = Reflect.get(target, id, receiver);
16
+ if (typeof id !== "string" || !entry || typeof entry !== "object") return entry;
17
+ const reference = entry;
18
+ const index = Object.hasOwn(referenceChunks.references, reference.id) ? referenceChunks.references[reference.id] : void 0;
19
+ return index === void 0 ? reference : {
20
+ ...reference,
21
+ chunks: flightChunks[index]
22
+ };
23
+ } });
24
+ }
25
+ /**
26
+ * The SSR Flight client's consumer manifest. React's webpack binding loads the
27
+ * chunks a client reference's row names before requiring the reference, which
28
+ * only the browser can do, so SSR resolves each reference to itself without
29
+ * them. A null `moduleLoading` keeps React from preinitializing the chunks as
30
+ * classic scripts; SSR preloads them through @vitejs/plugin-rsc instead.
31
+ */
32
+ const ssrServerConsumerManifest = {
33
+ moduleMap: new Proxy({}, { get(_target, id) {
34
+ if (typeof id !== "string") return void 0;
35
+ return new Proxy({}, { get(_exports, name) {
36
+ return typeof name === "string" ? {
37
+ id,
38
+ chunks: [],
39
+ name
40
+ } : void 0;
41
+ } });
42
+ } }),
43
+ moduleLoading: null
44
+ };
45
+ //#endregion
46
+ export { createClientReferenceChunksManifest, ssrServerConsumerManifest };
@@ -7,7 +7,11 @@ type ClientReferencePreloaderOptions = {
7
7
  onPreloadError?: (id: string, error: unknown) => void;
8
8
  };
9
9
  type ClientReferencePreloader = {
10
- preload: (referenceIds?: Iterable<string>) => Promise<void>;
10
+ /**
11
+ * Load `referenceIds` in order, or every reference without them. The
12
+ * returned promise doesn't wait for those in `streamedIds`.
13
+ */
14
+ preload: (referenceIds?: Iterable<string>, streamedIds?: ReadonlySet<string>) => Promise<void>;
11
15
  };
12
16
  /**
13
17
  * The client references each App Router route preloads before SSR, generated
@@ -25,12 +29,28 @@ export type RouteClientReferences = {
25
29
  routes: Readonly<Record<string, readonly number[]>>;
26
30
  /** The files of a render without a route, such as a route-miss 404. */
27
31
  routeless: readonly number[];
32
+ /**
33
+ * References whose SSR modules evaluate asynchronously (top-level await),
34
+ * which a render streams instead of waiting for.
35
+ */
36
+ async: readonly number[];
37
+ };
38
+ /** The client references a render loads, and those it streams instead of waiting for. */
39
+ export type RouteClientReferenceSet = {
40
+ /**
41
+ * In import order: the `always` set, then each route file's references in
42
+ * the order its route files render.
43
+ */
44
+ references: string[];
45
+ streamed: string[];
28
46
  };
29
47
  /**
30
48
  * The client references a render of `routePattern` preloads, or of no route
31
- * when it is null. Undefined, meaning every reference, without a plan or a
32
- * route to look up, or for a pattern the plan doesn't know.
49
+ * when it is null, and those it streams.
50
+ * Undefined, meaning every reference, without a plan or a route to look up,
51
+ * or for a pattern the plan doesn't know.
33
52
  */
34
- export declare function resolveRouteClientReferences(plan: RouteClientReferences | null, routePattern: string | null | undefined): string[] | undefined;
53
+ export declare function resolveRouteClientReferences(plan: RouteClientReferences | null, routePattern: string | null | undefined): RouteClientReferenceSet | undefined;
35
54
  export declare function createClientReferencePreloader(options: ClientReferencePreloaderOptions): ClientReferencePreloader;
36
- //#endregion
55
+ //#endregion
56
+ export {};
@@ -3,8 +3,9 @@ import { shareIsolatePromise } from "./isolate-shared-promise.js";
3
3
  const resolvedPreload = Promise.resolve();
4
4
  /**
5
5
  * The client references a render of `routePattern` preloads, or of no route
6
- * when it is null. Undefined, meaning every reference, without a plan or a
7
- * route to look up, or for a pattern the plan doesn't know.
6
+ * when it is null, and those it streams.
7
+ * Undefined, meaning every reference, without a plan or a route to look up,
8
+ * or for a pattern the plan doesn't know.
8
9
  */
9
10
  function resolveRouteClientReferences(plan, routePattern) {
10
11
  if (!plan || routePattern === void 0) return void 0;
@@ -14,7 +15,18 @@ function resolveRouteClientReferences(plan, routePattern) {
14
15
  else return;
15
16
  const indices = new Set(plan.always);
16
17
  for (const file of files) for (const index of plan.files[file]) indices.add(index);
17
- return Array.from(indices, (index) => plan.references[index]);
18
+ const asyncIndices = new Set(plan.async);
19
+ const references = [];
20
+ const streamed = [];
21
+ for (const index of indices) {
22
+ const id = plan.references[index];
23
+ references.push(id);
24
+ if (asyncIndices.has(index)) streamed.push(id);
25
+ }
26
+ return {
27
+ references,
28
+ streamed
29
+ };
18
30
  }
19
31
  function createClientReferencePreloader(options) {
20
32
  let allReferencesPreloaded = false;
@@ -42,17 +54,20 @@ function createClientReferencePreloader(options) {
42
54
  referencePreloadPromises.set(id, preloadPromise);
43
55
  return preloadPromise;
44
56
  }
45
- function preloadReferenceSet(referenceIds, refs, clientRequire) {
57
+ function preloadReferenceSet(referenceIds, refs, clientRequire, streamedIds) {
46
58
  const pending = [];
47
- for (const id of referenceIds) if (Object.hasOwn(refs, id) && !preloadedReferences.has(id)) pending.push(preloadReference(id, clientRequire));
59
+ for (const id of referenceIds) if (Object.hasOwn(refs, id) && !preloadedReferences.has(id)) {
60
+ const loading = preloadReference(id, clientRequire);
61
+ if (!streamedIds?.has(id)) pending.push(loading);
62
+ }
48
63
  if (pending.length === 0) return resolvedPreload;
49
64
  return Promise.all(pending).then(() => {});
50
65
  }
51
- return { preload(referenceIds) {
66
+ return { preload(referenceIds, streamedIds) {
52
67
  const refs = options.getReferences();
53
68
  const clientRequire = options.getClientRequire();
54
69
  if (!refs || !clientRequire) return resolvedPreload;
55
- if (referenceIds) return preloadReferenceSet(referenceIds, refs, clientRequire);
70
+ if (referenceIds) return preloadReferenceSet(referenceIds, refs, clientRequire, streamedIds);
56
71
  if (allReferencesPreloaded) return resolvedPreload;
57
72
  if (allReferencesPreloadPromise) return allReferencesPreloadPromise;
58
73
  allReferencesPreloadPromise = shareIsolatePromise(preloadReferenceSet(Object.keys(refs), refs, clientRequire).then(() => {
@@ -183,4 +183,5 @@ export declare function buildOutgoingAppPayload(input: {
183
183
  }): ReactNode | AppOutgoingElements;
184
184
  export declare function readAppElementsMetadata(elements: Readonly<Record<string, unknown>>): AppElementsMetadata;
185
185
  export declare const AppElementsWire: AppElementsWireCodec;
186
- //#endregion
186
+ //#endregion
187
+ export {};
@@ -1,6 +1,8 @@
1
1
  import { APP_ARTIFACT_COMPATIBILITY_KEY, APP_BFCACHE_SEGMENT_IDENTITIES_KEY, APP_CACHE_ENTRY_REUSE_PROOF_KEY, APP_DYNAMIC_STALE_TIME_KEY, APP_INTERCEPTION_CONTEXT_KEY, APP_INTERCEPTION_KEY, APP_LAYOUT_FLAGS_KEY, APP_LAYOUT_IDS_KEY, APP_ROOT_LAYOUT_KEY, APP_ROUTE_KEY, APP_SKIPPED_LAYOUT_IDS_KEY, APP_SLOT_BINDINGS_KEY, APP_SOURCE_PAGE_SEGMENTS_KEY, APP_STATIC_SIBLINGS_KEY, APP_UNMATCHED_SLOT_WIRE_VALUE, AppElementValue, AppElements, AppElementsBfcacheSegmentIdentities, AppElementsInterception, AppElementsSlotBinding, AppElementsWire, AppOutgoingElements, AppWireElements, LayoutFlags, UNMATCHED_SLOT, buildOutgoingAppPayload, compareAppElementsSlotIds, isAppElementsRecord, normalizeAppElements, normalizeAppElementsSlotBindings, readAppElementsMetadata, withLayoutFlags } from "./app-elements-wire.js";
2
2
  //#region src/server/app-elements.d.ts
3
3
  export declare const APP_PREFETCH_LOADING_SHELL_MARKER_KEY = "__prefetchLoadingShell";
4
+ /** Prefix of the element that streams a route's generateMetadata() tags in the body. */
5
+ export declare const APP_STREAMING_METADATA_BODY_ID_PREFIX = "__vinext_streaming_metadata_body:";
4
6
  export declare function getMountedSlotIds(elements: AppElements): string[];
5
7
  export declare function getMountedSlotIdsHeader(elements: AppElements): string | null;
6
8
  export declare function resolveVisitedResponseInterceptionContext(requestInterceptionContext: string | null, payloadInterceptionContext: string | null): string | null;
@@ -2,6 +2,8 @@ import { normalizeMountedSlotsHeader } from "./app-mounted-slots-header.js";
2
2
  import { APP_ARTIFACT_COMPATIBILITY_KEY, APP_BFCACHE_SEGMENT_IDENTITIES_KEY, APP_CACHE_ENTRY_REUSE_PROOF_KEY, APP_DYNAMIC_STALE_TIME_KEY, APP_INTERCEPTION_CONTEXT_KEY, APP_INTERCEPTION_KEY, APP_LAYOUT_FLAGS_KEY, APP_LAYOUT_IDS_KEY, APP_ROOT_LAYOUT_KEY, APP_ROUTE_KEY, APP_SKIPPED_LAYOUT_IDS_KEY, APP_SLOT_BINDINGS_KEY, APP_SOURCE_PAGE_SEGMENTS_KEY, APP_STATIC_SIBLINGS_KEY, APP_UNMATCHED_SLOT_WIRE_VALUE, AppElementsWire, UNMATCHED_SLOT, buildOutgoingAppPayload, compareAppElementsSlotIds, isAppElementsRecord, normalizeAppElements, normalizeAppElementsSlotBindings, readAppElementsMetadata, withLayoutFlags } from "./app-elements-wire.js";
3
3
  //#region src/server/app-elements.ts
4
4
  const APP_PREFETCH_LOADING_SHELL_MARKER_KEY = "__prefetchLoadingShell";
5
+ /** Prefix of the element that streams a route's generateMetadata() tags in the body. */
6
+ const APP_STREAMING_METADATA_BODY_ID_PREFIX = "__vinext_streaming_metadata_body:";
5
7
  function getMountedSlotIds(elements) {
6
8
  return Object.keys(elements).filter((key) => {
7
9
  const value = elements[key];
@@ -16,4 +18,4 @@ function resolveVisitedResponseInterceptionContext(requestInterceptionContext, p
16
18
  return payloadInterceptionContext ?? requestInterceptionContext;
17
19
  }
18
20
  //#endregion
19
- export { APP_ARTIFACT_COMPATIBILITY_KEY, APP_BFCACHE_SEGMENT_IDENTITIES_KEY, APP_CACHE_ENTRY_REUSE_PROOF_KEY, APP_DYNAMIC_STALE_TIME_KEY, APP_INTERCEPTION_CONTEXT_KEY, APP_INTERCEPTION_KEY, APP_LAYOUT_FLAGS_KEY, APP_LAYOUT_IDS_KEY, APP_PREFETCH_LOADING_SHELL_MARKER_KEY, APP_ROOT_LAYOUT_KEY, APP_ROUTE_KEY, APP_SKIPPED_LAYOUT_IDS_KEY, APP_SLOT_BINDINGS_KEY, APP_SOURCE_PAGE_SEGMENTS_KEY, APP_STATIC_SIBLINGS_KEY, APP_UNMATCHED_SLOT_WIRE_VALUE, AppElementsWire, UNMATCHED_SLOT, buildOutgoingAppPayload, compareAppElementsSlotIds, getMountedSlotIds, getMountedSlotIdsHeader, isAppElementsRecord, normalizeAppElements, normalizeAppElementsSlotBindings, readAppElementsMetadata, resolveVisitedResponseInterceptionContext, withLayoutFlags };
21
+ export { APP_ARTIFACT_COMPATIBILITY_KEY, APP_BFCACHE_SEGMENT_IDENTITIES_KEY, APP_CACHE_ENTRY_REUSE_PROOF_KEY, APP_DYNAMIC_STALE_TIME_KEY, APP_INTERCEPTION_CONTEXT_KEY, APP_INTERCEPTION_KEY, APP_LAYOUT_FLAGS_KEY, APP_LAYOUT_IDS_KEY, APP_PREFETCH_LOADING_SHELL_MARKER_KEY, APP_ROOT_LAYOUT_KEY, APP_ROUTE_KEY, APP_SKIPPED_LAYOUT_IDS_KEY, APP_SLOT_BINDINGS_KEY, APP_SOURCE_PAGE_SEGMENTS_KEY, APP_STATIC_SIBLINGS_KEY, APP_STREAMING_METADATA_BODY_ID_PREFIX, APP_UNMATCHED_SLOT_WIRE_VALUE, AppElementsWire, UNMATCHED_SLOT, buildOutgoingAppPayload, compareAppElementsSlotIds, getMountedSlotIds, getMountedSlotIdsHeader, isAppElementsRecord, normalizeAppElements, normalizeAppElementsSlotBindings, readAppElementsMetadata, resolveVisitedResponseInterceptionContext, withLayoutFlags };
@@ -6,7 +6,7 @@ import "../shims/navigation.js";
6
6
  import { AppPageParams } from "./app-page-boundary.js";
7
7
  import { AppPageFontPreload } from "./app-page-execution.js";
8
8
  import { AppPageMiddlewareContext } from "./app-page-response.js";
9
- import { ApplyAppPageFileBasedMetadata } from "./app-page-head.js";
9
+ import { AppPageFallbackRouteHead, ApplyAppPageFileBasedMetadata } from "./app-page-head.js";
10
10
  import { AppPageInterceptOptions } from "./app-page-element-builder.js";
11
11
  import { AppPageSsrHandler } from "./app-page-stream.js";
12
12
  import { AppRenderErrorContextOverrides } from "./app-rsc-error-handler.js";
@@ -95,13 +95,20 @@ type AppFallbackRenderer<TModule extends AppPageModule = AppPageModule> = {
95
95
  renderHttpAccessFallback: (route: AppPageBoundaryRoute<TModule> | null, statusCode: number, isRscRequest: boolean, request: Request, opts: {
96
96
  boundaryComponent?: AppPageComponent | null;
97
97
  boundaryModule?: TModule | null;
98
+ /** Boundary whose metadata the head uses, when not `boundaryModule`. */
99
+ headBoundaryModule?: TModule | null;
100
+ /** Layouts whose metadata the head uses, when more than `layouts`. */
101
+ headLayouts?: readonly (TModule | null | undefined)[] | null;
98
102
  intercept?: AppPageInterceptOptions<TModule> | null;
99
103
  /** The document may be stored, so it must not carry the request's query. */
100
104
  isCacheCandidate?: boolean;
101
105
  layouts?: readonly (TModule | null | undefined)[] | null;
102
106
  matchedParams?: AppPageParams;
107
+ /** The route's render threw the signal, so the document keeps the route's head. */
108
+ routeHead?: AppPageFallbackRouteHead | null;
103
109
  }, scriptNonce: string | undefined, middlewareContext: AppPageMiddlewareContext, callContext?: AppFallbackRendererCallContext) => Promise<Response | null>;
104
110
  renderNotFound: (route: AppPageBoundaryRoute<TModule> | null, isRscRequest: boolean, request: Request, matchedParams: AppPageParams | undefined, scriptNonce: string | undefined, middlewareContext: AppPageMiddlewareContext, callContext?: AppFallbackRendererCallContext) => Promise<Response | null>;
105
111
  };
106
112
  export declare function createAppFallbackRenderer<TModule extends AppPageModule>(options: AppFallbackRendererOptions<TModule>): AppFallbackRenderer<TModule>;
107
- //#endregion
113
+ //#endregion
114
+ export {};
@@ -4,7 +4,7 @@ import { DEFAULT_GLOBAL_ERROR_MODULE } from "./default-global-error-module.js";
4
4
  import { shouldServeStreamingMetadata } from "./streaming-metadata.js";
5
5
  import { renderAppPageErrorBoundary, renderAppPageHttpAccessFallback } from "./app-page-boundary-render.js";
6
6
  import { DEFAULT_GLOBAL_NOT_FOUND_MODULE } from "./default-global-not-found-module.js";
7
- import { DEFAULT_NOT_FOUND_MODULE } from "./default-not-found-module.js";
7
+ import { DEFAULT_NOT_FOUND_MODULE } from "./default-http-access-fallback-modules.js";
8
8
  //#region src/server/app-fallback-renderer.ts
9
9
  const EMPTY_MW_CTX = {
10
10
  headers: null,
@@ -86,6 +86,8 @@ function createAppFallbackRenderer(options) {
86
86
  getAndClearPendingCookies,
87
87
  getNavigationContext,
88
88
  globalErrorModule: effectiveGlobalErrorModule,
89
+ headBoundaryModule: opts?.headBoundaryModule ?? null,
90
+ headLayoutModules: useGlobalNotFound ? [] : opts?.headLayouts ?? null,
89
91
  intercept: opts?.intercept ?? null,
90
92
  isCacheCandidate: opts?.isCacheCandidate,
91
93
  isEdgeRuntime: callContext?.isEdgeRuntime,
@@ -104,6 +106,7 @@ function createAppFallbackRenderer(options) {
104
106
  rootNotFoundModule: routeMissRootNotFoundModule,
105
107
  rootUnauthorizedModule,
106
108
  route: useGlobalNotFound ? null : route,
109
+ routeHead: opts?.routeHead ?? null,
107
110
  routePathname: callContext?.routePathname,
108
111
  renderToReadableStream: rscRenderer,
109
112
  scriptNonce,
@@ -104,4 +104,5 @@ export declare function resolveHistoryTraversalIntent(options: {
104
104
  currentHistoryIndex: number | null;
105
105
  historyState: unknown;
106
106
  }): HistoryTraversalIntent;
107
- //#endregion
107
+ //#endregion
108
+ export {};
@@ -2,4 +2,5 @@
2
2
  type InlineCssStylesheetLinkElement = Pick<HTMLLinkElement, "getAttribute" | "hasAttribute">;
3
3
  export declare function isInlineCssStylesheetLinkElement(link: InlineCssStylesheetLinkElement): boolean;
4
4
  export declare function removeStylesheetLinksCoveredByInlineCss(): void;
5
- //#endregion
5
+ //#endregion
6
+ export {};
@@ -38,4 +38,5 @@ export type StaticLayoutObservationSkipRejection = Readonly<{
38
38
  export declare function getStaticLayoutObservationSkipRejection(observation: AppLayoutParamAccessObservation): StaticLayoutObservationSkipRejection | null;
39
39
  export declare function isAppLayoutObservationUnsafeForStaticReuse(observation: AppLayoutParamAccessObservation): boolean;
40
40
  export declare function createAppLayoutParamAccessTracker(): AppLayoutParamAccessTracker;
41
- //#endregion
41
+ //#endregion
42
+ export {};
@@ -9,4 +9,5 @@ export declare function createGenerateMetadataSpanDescriptor(moduleRoute: string
9
9
  readonly name: `generateMetadata ${string}`;
10
10
  readonly type: "ResolveMetadata.generateMetadata";
11
11
  };
12
- //#endregion
12
+ //#endregion
13
+ export {};
@@ -49,6 +49,22 @@ export declare function createOptimisticRouteTemplate(options: {
49
49
  routeManifest: BrowserRouteManifest;
50
50
  }): OptimisticRouteTemplate | null;
51
51
  export declare function createOptimisticRouteElements(template: OptimisticRouteTemplate): AppElements;
52
+ /**
53
+ * The optimistic shell reveals the prefetch's streamed metadata, such as its
54
+ * title. React won't hide revealed content again in a transition, so while the
55
+ * authoritative payload's own metadata streams, its whole commit, page
56
+ * included, would wait for it. Render that metadata in a new boundary whose
57
+ * fallback is the shell's instead, so the page commits as it streams and the
58
+ * prefetched title stays until the payload's arrives. Next.js likewise renders
59
+ * the prefetched head until the dynamic one resolves (`Head` in app-router.tsx).
60
+ *
61
+ * A payload streams at most one route's metadata. The shell's may carry
62
+ * another concrete route id, since a template learned for one set of params
63
+ * is reused for others. `navigationKey` remounts the boundary on every
64
+ * navigation, so one that already revealed an earlier navigation's metadata
65
+ * can't hold back the next, as Next.js keys `Head` by its vary path.
66
+ */
67
+ export declare function keepOptimisticStreamingMetadata(elements: AppElements, optimisticElements: AppElements, navigationKey: string): AppElements;
52
68
  /**
53
69
  * A loading-shell prefetch stops at the first loading boundary, so layouts
54
70
  * below that boundary are present in the route metadata but absent from the
@@ -74,4 +90,5 @@ export declare function resolveOptimisticNavigationPayload(options: {
74
90
  routeManifest: BrowserRouteManifest;
75
91
  templates: ReadonlyMap<string, OptimisticRouteTemplate>;
76
92
  }): OptimisticNavigationPayload | null;
77
- //#endregion
93
+ //#endregion
94
+ export {};
@@ -203,6 +203,39 @@ function createOptimisticRouteElements(template) {
203
203
  for (const pageElementId of template.pageElementIds) elements[pageElementId] = createElement(OptimisticRouteSegment);
204
204
  return elements;
205
205
  }
206
+ function findStreamingMetadataBody(elements) {
207
+ for (const id of Object.keys(elements)) if (id.startsWith("__vinext_streaming_metadata_body:")) return id;
208
+ return null;
209
+ }
210
+ /**
211
+ * The optimistic shell reveals the prefetch's streamed metadata, such as its
212
+ * title. React won't hide revealed content again in a transition, so while the
213
+ * authoritative payload's own metadata streams, its whole commit, page
214
+ * included, would wait for it. Render that metadata in a new boundary whose
215
+ * fallback is the shell's instead, so the page commits as it streams and the
216
+ * prefetched title stays until the payload's arrives. Next.js likewise renders
217
+ * the prefetched head until the dynamic one resolves (`Head` in app-router.tsx).
218
+ *
219
+ * A payload streams at most one route's metadata. The shell's may carry
220
+ * another concrete route id, since a template learned for one set of params
221
+ * is reused for others. `navigationKey` remounts the boundary on every
222
+ * navigation, so one that already revealed an earlier navigation's metadata
223
+ * can't hold back the next, as Next.js keys `Head` by its vary path.
224
+ */
225
+ function keepOptimisticStreamingMetadata(elements, optimisticElements, navigationKey) {
226
+ const id = findStreamingMetadataBody(elements);
227
+ const optimisticId = findStreamingMetadataBody(optimisticElements);
228
+ if (id === null || optimisticId === null) return elements;
229
+ const optimisticMetadata = optimisticElements[optimisticId];
230
+ if (optimisticMetadata == null) return elements;
231
+ return {
232
+ ...elements,
233
+ [id]: createElement(Suspense, {
234
+ fallback: optimisticMetadata,
235
+ key: navigationKey
236
+ }, elements[id])
237
+ };
238
+ }
206
239
  /**
207
240
  * A loading-shell prefetch stops at the first loading boundary, so layouts
208
241
  * below that boundary are present in the route metadata but absent from the
@@ -278,4 +311,4 @@ function resolveOptimisticNavigationPayload(options) {
278
311
  };
279
312
  }
280
313
  //#endregion
281
- export { canCommitOptimisticRouteTemplate, createOptimisticRouteElements, createOptimisticRouteTemplate, getOptimisticPrefetchSourceKey, getOptimisticRouteTemplateKey, matchOptimisticRouteManifestRoute, resolveOptimisticNavigationParamsForHref, resolveOptimisticNavigationPayload };
314
+ export { canCommitOptimisticRouteTemplate, createOptimisticRouteElements, createOptimisticRouteTemplate, getOptimisticPrefetchSourceKey, getOptimisticRouteTemplateKey, keepOptimisticStreamingMetadata, matchOptimisticRouteManifestRoute, resolveOptimisticNavigationParamsForHref, resolveOptimisticNavigationPayload };
@@ -6,7 +6,7 @@ import "../shims/navigation.js";
6
6
  import { AppPageParams } from "./app-page-boundary.js";
7
7
  import { AppPageFontPreload } from "./app-page-execution.js";
8
8
  import { AppPageMiddlewareContext } from "./app-page-response.js";
9
- import { ApplyAppPageFileBasedMetadata } from "./app-page-head.js";
9
+ import { AppPageFallbackRouteHead, ApplyAppPageFileBasedMetadata } from "./app-page-head.js";
10
10
  import { AppPageRouteWiringRoute } from "./app-page-route-wiring.js";
11
11
  import { AppPageInterceptOptions } from "./app-page-element-builder.js";
12
12
  import { AppPageSsrHandler } from "./app-page-stream.js";
@@ -30,9 +30,17 @@ export type AppPageBoundaryRoute<TModule extends AppPageModule = AppPageModule>
30
30
  notFound?: TModule | null;
31
31
  notFounds?: readonly (TModule | null | undefined)[] | null;
32
32
  notFoundTreePosition?: number | null;
33
+ page?: TModule | null;
33
34
  params?: AppPageParams;
34
35
  pattern?: string;
35
36
  routeSegments?: readonly string[];
37
+ childrenSlot?: AppPageRouteWiringRoute<TModule>["childrenSlot"];
38
+ segmentForbiddens?: readonly (TModule | null | undefined)[] | null;
39
+ segmentForbiddenTreePositions?: readonly number[] | null;
40
+ segmentNotFounds?: readonly (TModule | null | undefined)[] | null;
41
+ segmentNotFoundTreePositions?: readonly number[] | null;
42
+ segmentUnauthorizeds?: readonly (TModule | null | undefined)[] | null;
43
+ segmentUnauthorizedTreePositions?: readonly number[] | null;
36
44
  slots?: AppPageRouteWiringRoute<TModule>["slots"];
37
45
  unauthorized?: TModule | null;
38
46
  unauthorizedTreePosition?: number | null;
@@ -88,12 +96,21 @@ type AppPageBoundaryRenderCommonOptions<TModule extends AppPageModule = AppPageM
88
96
  type RenderAppPageHttpAccessFallbackOptions<TModule extends AppPageModule = AppPageModule> = {
89
97
  boundaryComponent?: AppPageComponent | null;
90
98
  boundaryModule?: TModule | null;
99
+ /** Boundary whose metadata the head uses, when not the rendered boundary. */
100
+ headBoundaryModule?: TModule | null;
101
+ /** Layouts whose metadata the head uses, when more than render around the boundary. */
102
+ headLayoutModules?: readonly (TModule | null | undefined)[] | null;
91
103
  intercept?: AppPageInterceptOptions<TModule> | null;
92
104
  layoutModules?: readonly (TModule | null | undefined)[] | null;
93
105
  matchedParams: AppPageParams;
94
106
  rootForbiddenModule?: TModule | null;
95
107
  rootNotFoundModule?: TModule | null;
96
108
  rootUnauthorizedModule?: TModule | null;
109
+ /**
110
+ * The matched route's render threw the signal, so the document keeps the
111
+ * route's own head rather than the boundary convention's.
112
+ */
113
+ routeHead?: AppPageFallbackRouteHead | null;
97
114
  /** Normalized, basePath-free application pathname used for route matching. */
98
115
  routePathname?: string;
99
116
  route?: AppPageBoundaryRoute<TModule> | null;
@@ -116,4 +133,5 @@ type RenderAppPageErrorBoundaryOptions<TModule extends AppPageModule = AppPageMo
116
133
  } & AppPageBoundaryRenderCommonOptions<TModule>;
117
134
  export declare function renderAppPageHttpAccessFallback<TModule extends AppPageModule>(options: RenderAppPageHttpAccessFallbackOptions<TModule>): Promise<Response | null>;
118
135
  export declare function renderAppPageErrorBoundary<TModule extends AppPageModule>(options: RenderAppPageErrorBoundaryOptions<TModule>): Promise<Response | null>;
119
- //#endregion
136
+ //#endregion
137
+ export {};