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,9 +1,10 @@
1
+ import { compareFolderNames } from "../utils/compare.js";
1
2
  import { runWithFetchDedupe } from "../shims/fetch-cache.js";
2
3
  import { searchParamsToRecord } from "../utils/query.js";
3
- import { mergeMetadataEntries, mergeViewport, postProcessMetadata, resolveModuleMetadata as resolveModuleMetadata$1, resolveModuleViewport } from "../shims/metadata.js";
4
- import { resolveAppPageBranchParams, resolveAppPageSegmentParams } from "./app-page-params.js";
4
+ import { mergeMetadataEntries, mergeParentMetadataEntries, mergeViewport, postProcessMetadata, resolveModuleMetadata as resolveModuleMetadata$1, resolveModuleViewport } from "../shims/metadata.js";
5
5
  import { tagAppPageMetadataError } from "./app-page-execution.js";
6
6
  import { createAppMetadataModuleRoute, traceGenerateMetadata } from "./app-metadata-tracing.js";
7
+ import { resolveAppPageBranchParams, resolveAppPageSegmentParams } from "./app-page-params.js";
7
8
  //#region src/server/app-page-head.ts
8
9
  /**
9
10
  * Wrapped {@link _resolveModuleMetadata} that tags any thrown error with the
@@ -24,8 +25,13 @@ async function resolveModuleMetadata(moduleRoute, ...args) {
24
25
  throw tagAppPageMetadataError(error);
25
26
  }
26
27
  }
28
+ /** Whether each intercepting layout is in its intercepting page's own directory. */
29
+ function resolveInterceptLayoutsBesidePage(layoutSegments, branchSegments) {
30
+ return (layoutSegments ?? []).map((segments) => segments.length === branchSegments?.length);
31
+ }
27
32
  function resolveActiveParallelRouteHeadInputs(options) {
28
- return Object.entries(options.slots ?? {}).map(([slotKey, slot]) => {
33
+ const slotEntries = Object.entries(options.slots ?? {});
34
+ return slotEntries.map(([slotKey, slot]) => {
29
35
  const ownerTreePosition = options.layoutTreePositions?.[slot.layoutIndex ?? 0] ?? 0;
30
36
  const ownerRouteSegments = options.routeSegments.slice(0, ownerTreePosition);
31
37
  const ownerParams = resolveAppPageSegmentParams(options.routeSegments, ownerTreePosition, options.params);
@@ -54,6 +60,7 @@ function resolveActiveParallelRouteHeadInputs(options) {
54
60
  ...resolveParallelLayoutParams(options.interceptBranchSegments ?? segments, segments.length, options.interceptParams ?? options.params)
55
61
  };
56
62
  })],
63
+ layoutsBesidePage: [...slot.layout ? [false] : [], ...resolveInterceptLayoutsBesidePage(options.interceptLayoutSegments, options.interceptBranchSegments)],
57
64
  layoutTreePositions: [...slot.layout ? [0] : [], ...interceptLayouts.filter(isPresent).map(() => options.routeSegments.length)],
58
65
  pageModule: options.interceptPage,
59
66
  params: options.interceptParams ?? options.params,
@@ -64,11 +71,14 @@ function resolveActiveParallelRouteHeadInputs(options) {
64
71
  notFoundModuleRouteSegments: interceptNotFoundRouteSegments,
65
72
  notFoundParams: interceptNotFoundParams
66
73
  } : {},
67
- ownerTreePosition
74
+ ownerTreePosition,
75
+ slotKey
68
76
  };
69
77
  }
70
78
  const slotRouteSegments = slot.routeSegments ?? options.routeSegments;
71
79
  const moduleRouteSegments = slot.routeSegments ?? [];
80
+ const layoutTreePositions = [...slot.layout ? [0] : [], ...slot.configLayoutTreePositions ?? []];
81
+ const pageTreePosition = slot.pageTreePosition;
72
82
  return {
73
83
  head: {
74
84
  layoutModules: [slot.layout, ...slot.configLayouts ?? []].filter(isPresent),
@@ -76,21 +86,93 @@ function resolveActiveParallelRouteHeadInputs(options) {
76
86
  ...ownerParams,
77
87
  ...resolveParallelLayoutParams(slot.routeSegments ?? options.routeSegments, treePosition, options.slotParams?.[slotKey] ?? options.params)
78
88
  }))],
79
- layoutTreePositions: [...slot.layout ? [0] : [], ...slot.configLayoutTreePositions ?? []],
89
+ ...pageTreePosition == null ? {} : { layoutsBesidePage: layoutTreePositions.map((treePosition) => treePosition >= pageTreePosition) },
90
+ layoutTreePositions,
80
91
  pageModule: slot.page,
81
92
  params: slotParams,
82
93
  ...ownerRouteSegments.length > 0 ? { moduleRoutePrefixSegments: ownerRouteSegments } : {},
83
94
  ...slot.routeSegments ? {} : { moduleRouteSegments },
84
95
  routeSegments: slotRouteSegments
85
96
  },
86
- ...slot.notFound ? {
97
+ ...slot.notFound && slot.page ? {
87
98
  notFoundModule: slot.notFound,
88
99
  notFoundModuleRouteSegments: [...ownerRouteSegments, ...moduleRouteSegments.slice(0, slot.notFoundTreePosition ?? 0)],
89
100
  notFoundParams
90
101
  } : {},
91
- ownerTreePosition
102
+ ownerTreePosition,
103
+ slotKey
104
+ };
105
+ }).map((input, index) => {
106
+ const [slotKey, slot] = slotEntries[index];
107
+ return {
108
+ directoryDepth: slot.ownerTreePosition ?? input.ownerTreePosition,
109
+ input,
110
+ name: slot.name ?? slotKey
92
111
  };
93
- }).sort((left, right) => right.ownerTreePosition - left.ownerTreePosition);
112
+ }).sort((left, right) => right.directoryDepth - left.directoryDepth || compareFolderNames(left.name, right.name)).map(({ input }) => input);
113
+ }
114
+ /**
115
+ * Whether a slot intercept keeps the source route's head. Next.js's client
116
+ * renders the head of the first leaf on a children-first walk of its router
117
+ * tree that skips `default` segments, and a slot intercept keeps the leaves
118
+ * before its slot from the source route. When one of them is a page, such as
119
+ * the source page in `children`, the source head stays; otherwise the walk
120
+ * reaches the intercept's leaf, headed by the intercepting render.
121
+ * `sourceParallelRoutes` are the source route's own slot branches, in the
122
+ * walk's order (resolveActiveParallelRouteHeadInputs).
123
+ * https://github.com/vercel/next.js/blob/canary/packages/next/src/client/components/router-reducer/reducers/find-head-in-cache.ts
124
+ */
125
+ function slotInterceptKeepsSourceHead(options) {
126
+ const { route } = options;
127
+ if (route.page != null && (route.childrenSlot?.state ?? "active") === "active") return true;
128
+ const interceptIndex = options.sourceParallelRoutes.findIndex((input) => input.slotKey === options.interceptSlotKey);
129
+ return options.sourceParallelRoutes.slice(0, interceptIndex === -1 ? void 0 : interceptIndex).some((input) => input.head.pageModule != null);
130
+ }
131
+ /**
132
+ * Like Promise.all, but awaits the already-started promises one at a time, so
133
+ * the first rejection in this order wins, not the first to settle. Next.js's
134
+ * accumulateMetadata and accumulateViewport await their loader-tree items this
135
+ * way, so an earlier segment's signal beats a later one's. Each promise is
136
+ * handled up front, so none rejects unhandled.
137
+ * https://github.com/vercel/next.js/blob/canary/packages/next/src/lib/metadata/resolve-metadata.ts
138
+ */
139
+ async function allInOrder(promises) {
140
+ for (const promise of promises) promise.catch(() => null);
141
+ const results = [];
142
+ for (const promise of promises) results.push(await promise);
143
+ return results;
144
+ }
145
+ /**
146
+ * A segment's `parent` that records a rejection its resolver saw, through
147
+ * `await` or any other `then()`, so that an error the resolver took from
148
+ * `parent` can be told from its own, even when both are the same value.
149
+ */
150
+ var ObservedParent = class extends Promise {
151
+ static get [Symbol.species]() {
152
+ return Promise;
153
+ }
154
+ rejection = null;
155
+ /** Whether the resolver read it, and what to call when it first does. */
156
+ read = false;
157
+ onRead = null;
158
+ then(onFulfilled, onRejected) {
159
+ if (!this.read) {
160
+ this.read = true;
161
+ this.onRead?.();
162
+ }
163
+ return super.then(onFulfilled, (error) => {
164
+ this.rejection = { error };
165
+ if (onRejected) return onRejected(error);
166
+ throw error;
167
+ });
168
+ }
169
+ };
170
+ function observeParent(parent) {
171
+ const observed = new ObservedParent((resolveParent, rejectParent) => {
172
+ parent.then(resolveParent, rejectParent);
173
+ });
174
+ Promise.prototype.then.call(observed, void 0, () => null);
175
+ return observed;
94
176
  }
95
177
  function isPresent(value) {
96
178
  return value !== null && value !== void 0;
@@ -145,42 +227,20 @@ function createLayoutInputs(layoutModules, layoutTreePositions) {
145
227
  }
146
228
  return layoutInputs;
147
229
  }
148
- async function resolveLayoutMetadata(layoutInputs, params, routeSegments) {
149
- const layoutMetadataPromises = [];
150
- let accumulatedMetadata = Promise.resolve({});
151
- for (const layoutInput of layoutInputs) {
152
- const parentForLayout = accumulatedMetadata;
153
- const layoutParams = resolveAppPageSegmentParams(routeSegments, layoutInput.treePosition, params);
154
- const metadataPromise = resolveModuleMetadata(createAppMetadataModuleRoute(routeSegments.slice(0, layoutInput.treePosition), "layout"), layoutInput.module, layoutParams, void 0, parentForLayout);
155
- layoutMetadataPromises.push(metadataPromise);
156
- metadataPromise.catch(() => null);
157
- accumulatedMetadata = metadataPromise.then(async (metadataResult) => {
158
- if (metadataResult) return mergeMetadataEntries([{ metadata: await parentForLayout }, { metadata: metadataResult }]);
159
- return parentForLayout;
160
- });
161
- accumulatedMetadata.catch(() => null);
162
- }
163
- return Promise.all(layoutMetadataPromises);
164
- }
165
- function resolveLayoutViewport(layoutInputs, params, routeSegments) {
166
- const viewportPromises = [];
167
- let accumulatedViewport = Promise.resolve(mergeViewport([]));
168
- for (const layoutInput of layoutInputs) {
169
- const parentForLayout = accumulatedViewport;
170
- const layoutParams = resolveAppPageSegmentParams(routeSegments, layoutInput.treePosition, params);
171
- const viewportPromise = resolveModuleViewport(layoutInput.module, layoutParams, void 0, parentForLayout);
172
- viewportPromises.push(viewportPromise);
173
- viewportPromise.catch(() => null);
174
- accumulatedViewport = mergeResolvedViewport(parentForLayout, viewportPromise);
175
- accumulatedViewport.catch(() => null);
176
- }
177
- return {
178
- resolvedViewport: accumulatedViewport,
179
- viewportResults: Promise.all(viewportPromises)
230
+ /** The walk's accumulated metadata, with its resolved titles as the shown strings. */
231
+ function toShownMetadata(accumulated) {
232
+ const shown = (title) => typeof title === "object" && title ? title.absolute || void 0 : title;
233
+ const result = { ...accumulated };
234
+ if (typeof accumulated.title === "object") result.title = shown(accumulated.title);
235
+ if (accumulated.openGraph) result.openGraph = {
236
+ ...accumulated.openGraph,
237
+ title: shown(accumulated.openGraph.title)
180
238
  };
181
- }
182
- function mergeResolvedViewport(parent, viewport) {
183
- return Promise.all([parent, viewport]).then(([resolvedParent, resolvedViewport]) => resolvedViewport ? mergeViewport([resolvedParent, resolvedViewport]) : resolvedParent);
239
+ if (accumulated.twitter) result.twitter = {
240
+ ...accumulated.twitter,
241
+ title: shown(accumulated.twitter.title)
242
+ };
243
+ return result;
184
244
  }
185
245
  function getParallelRouteModules(parallelRoute) {
186
246
  return [...parallelRoute.layoutModules ?? [], parallelRoute.layoutModule].filter(isPresent);
@@ -188,70 +248,193 @@ function getParallelRouteModules(parallelRoute) {
188
248
  function parallelRouteHasDynamicMetadata(parallelRoute) {
189
249
  return getParallelRouteModules(parallelRoute).some(hasGenerateMetadata) || hasGenerateMetadata(parallelRoute.pageModule);
190
250
  }
191
- async function resolveParallelRouteMetadata(parallelRoute, fallbackParams, fallbackRouteSegments, pageSearchParams, parent, searchParamsObserver) {
251
+ function createRouteHeadBranch(layoutInputs, routeSegments, params, pageModule) {
252
+ const segments = layoutInputs.map((layoutInput) => ({
253
+ besidePage: layoutInput.treePosition >= routeSegments.length,
254
+ module: layoutInput.module,
255
+ moduleRoute: createAppMetadataModuleRoute(routeSegments.slice(0, layoutInput.treePosition), "layout"),
256
+ page: false,
257
+ params: resolveAppPageSegmentParams(routeSegments, layoutInput.treePosition, params)
258
+ }));
259
+ if (pageModule) segments.push({
260
+ module: pageModule,
261
+ moduleRoute: createAppMetadataModuleRoute(routeSegments, "page"),
262
+ page: true,
263
+ params
264
+ });
265
+ return {
266
+ routeSegments,
267
+ segments
268
+ };
269
+ }
270
+ function createParallelRouteHeadBranch(parallelRoute, fallbackParams, fallbackRouteSegments) {
192
271
  const params = parallelRoute.params ?? fallbackParams;
193
272
  const routeSegments = parallelRoute.routeSegments ?? fallbackRouteSegments;
194
273
  const moduleRoutePrefixSegments = parallelRoute.moduleRoutePrefixSegments ?? [];
195
274
  const moduleRouteSegments = parallelRoute.moduleRouteSegments ?? routeSegments;
196
- const metadataResults = [];
197
- const metadataSources = [];
198
- let accumulatedMetadata = parent;
199
- const layoutModules = getParallelRouteModules(parallelRoute);
200
275
  const layoutTreePositions = parallelRoute.layoutTreePositions ?? [];
201
276
  const layoutParams = parallelRoute.layoutParams ?? [];
202
- for (const [index, layoutModule] of layoutModules.entries()) {
203
- const currentLayoutParams = layoutParams[index] ?? resolveParallelLayoutParams(routeSegments, layoutTreePositions[index] ?? 0, params);
204
- const layoutMetadata = await resolveModuleMetadata(createAppMetadataModuleRoute([...moduleRoutePrefixSegments, ...moduleRouteSegments.slice(0, layoutTreePositions[index] ?? 0)], "layout"), layoutModule, currentLayoutParams, void 0, accumulatedMetadata);
205
- metadataResults.push(layoutMetadata);
206
- metadataSources.push({
207
- metadata: layoutMetadata,
208
- routeSegments
209
- });
210
- if (layoutMetadata) {
211
- accumulatedMetadata = accumulatedMetadata.then(async (parentMetadata) => mergeMetadataEntries([{ metadata: parentMetadata }, { metadata: layoutMetadata }]));
212
- accumulatedMetadata.catch(() => null);
213
- }
214
- }
215
- if (parallelRoute.pageModule) {
216
- const pageMetadata = await resolveModuleMetadata(createAppMetadataModuleRoute([...moduleRoutePrefixSegments, ...moduleRouteSegments], "page"), parallelRoute.pageModule, params, pageSearchParams, accumulatedMetadata, searchParamsObserver);
217
- metadataResults.push(pageMetadata);
218
- metadataSources.push({
219
- metadata: pageMetadata,
220
- routeSegments
221
- });
222
- }
277
+ const segments = getParallelRouteModules(parallelRoute).map((module, index) => ({
278
+ besidePage: parallelRoute.layoutsBesidePage?.[index] ?? false,
279
+ module,
280
+ moduleRoute: createAppMetadataModuleRoute([...moduleRoutePrefixSegments, ...moduleRouteSegments.slice(0, layoutTreePositions[index] ?? 0)], "layout"),
281
+ page: false,
282
+ params: layoutParams[index] ?? resolveParallelLayoutParams(routeSegments, layoutTreePositions[index] ?? 0, params)
283
+ }));
284
+ if (parallelRoute.pageModule) segments.push({
285
+ module: parallelRoute.pageModule,
286
+ moduleRoute: createAppMetadataModuleRoute([...moduleRoutePrefixSegments, ...moduleRouteSegments], "page"),
287
+ page: true,
288
+ params
289
+ });
223
290
  return {
224
- metadataResults,
225
- metadataSources
291
+ routeSegments,
292
+ segments
226
293
  };
227
294
  }
228
- function resolveParallelRouteViewport(parallelRoute, fallbackParams, fallbackRouteSegments, pageSearchParams, parent, searchParamsObserver) {
229
- const params = parallelRoute.params ?? fallbackParams;
230
- const routeSegments = parallelRoute.routeSegments ?? fallbackRouteSegments;
231
- const layoutModules = getParallelRouteModules(parallelRoute);
232
- const layoutTreePositions = parallelRoute.layoutTreePositions ?? [];
233
- const layoutParams = parallelRoute.layoutParams ?? [];
234
- const viewportPromises = [];
235
- let accumulatedViewport = parent;
236
- for (const [index, layoutModule] of layoutModules.entries()) {
237
- const parentForLayout = accumulatedViewport;
238
- const viewportPromise = resolveModuleViewport(layoutModule, layoutParams[index] ?? resolveParallelLayoutParams(routeSegments, layoutTreePositions[index] ?? 0, params), void 0, parentForLayout);
239
- viewportPromises.push(viewportPromise);
240
- viewportPromise.catch(() => null);
241
- accumulatedViewport = mergeResolvedViewport(parentForLayout, viewportPromise);
242
- accumulatedViewport.catch(() => null);
243
- }
244
- if (parallelRoute.pageModule) {
245
- const parentForPage = accumulatedViewport;
246
- const viewportPromise = resolveModuleViewport(parallelRoute.pageModule, params, pageSearchParams, parentForPage, searchParamsObserver);
247
- viewportPromises.push(viewportPromise);
248
- viewportPromise.catch(() => null);
249
- accumulatedViewport = mergeResolvedViewport(parentForPage, viewportPromise);
250
- accumulatedViewport.catch(() => null);
295
+ /** A hidden branch without the layouts it shares with its slot, which resolve once. */
296
+ function createHiddenHeadBranch(hidden, slot, fallbackParams, fallbackRouteSegments) {
297
+ const branch = createParallelRouteHeadBranch(hidden.route, fallbackParams, fallbackRouteSegments);
298
+ const sharedLayoutCount = slot ? Math.min(hidden.sharedLayoutCount, slot.segments.filter((segment) => !segment.page).length) : 0;
299
+ return {
300
+ parallelRouteIndex: slot ? hidden.parallelRouteIndex : -1,
301
+ routeSegments: branch.routeSegments,
302
+ segments: branch.segments.filter((segment, index) => segment.page || index >= sharedLayoutCount),
303
+ sharedLayoutCount
304
+ };
305
+ }
306
+ /**
307
+ * Start an item with everything resolved before it as `parent`, and merge its
308
+ * value into that once both settle. Like Next.js's getResult, the resolver
309
+ * starts now; like its accumulateMetadata and accumulateViewport, the merge
310
+ * waits for the items before it, and its failure is the item's own error.
311
+ *
312
+ * With `deferParentErrors`, `error` never waits on `parent`: what can only be
313
+ * known after it goes to `deferredError` instead.
314
+ */
315
+ function startAppPageHeadItem(kind, segment, parent, deferParentErrors = false, stashed = parent) {
316
+ const observedParent = observeParent(parent);
317
+ const parentRead = new Promise((resolve) => {
318
+ observedParent.onRead = () => resolve(null);
319
+ });
320
+ const result = kind.resolve(segment, observedParent);
321
+ result.catch(() => null);
322
+ const resolved = parent.then((resolvedParent) => stashed.then((resolvedStashed) => result.then((value) => value ? kind.merge(resolvedParent, value, resolvedStashed) : resolvedParent)));
323
+ resolved.catch(() => null);
324
+ const mergeError = result.then((value) => value ? parent.then(() => resolved.then(() => null), () => null) : null, () => null);
325
+ const ownError = result.then(() => null, (error) => {
326
+ const rejection = observedParent.rejection;
327
+ if (rejection && Object.is(rejection.error, error)) return null;
328
+ throw error;
329
+ });
330
+ mergeError.catch(() => null);
331
+ ownError.catch(() => null);
332
+ if (!deferParentErrors) {
333
+ const error = ownError.then(() => mergeError);
334
+ error.catch(() => null);
335
+ return {
336
+ deferredError: null,
337
+ error,
338
+ resolved,
339
+ result
340
+ };
251
341
  }
342
+ const readFirst = result.then(() => observedParent.read, () => observedParent.read);
343
+ const error = Promise.race([parentRead, readFirst.then((read) => read ? null : ownError)]);
344
+ const deferredError = readFirst.then((read) => read ? ownError.then(() => mergeError) : mergeError);
345
+ error.catch(() => null);
346
+ deferredError.catch(() => null);
347
+ return {
348
+ deferredError,
349
+ error,
350
+ resolved,
351
+ result
352
+ };
353
+ }
354
+ /**
355
+ * Start metadata or viewport for every item, then merge their values one at
356
+ * a time, in loader-tree order, as Next.js's prerenderMetadata and
357
+ * accumulateMetadata (and their viewport twins) do. Next.js walks the tree
358
+ * depth first, `children` before the named slots: the route's layouts and
359
+ * page, then each slot's. A hidden branch starts in its slot's place, after
360
+ * the layouts they share, from everything resolved there, and its values stay
361
+ * out of the shown head.
362
+ *
363
+ * The items of a hidden branch and of the slot at `outletIndex` are the
364
+ * slot's. Like Next.js, which throws only the first error, an error of theirs
365
+ * counts only once everything before their branch resolved: one before it
366
+ * belongs to that earlier item, and never also throws inside the slot.
367
+ *
368
+ * The route's errors never wait on the outlet branch, whose resolvers may
369
+ * never settle. A route item after it counts its resolver's error in place
370
+ * until the resolver reads `parent`; what is only known after `parent`, a
371
+ * failed merge or an error after reading it, is deferred until every route
372
+ * error in place is known.
373
+ * https://github.com/vercel/next.js/blob/canary/packages/next/src/lib/metadata/resolve-metadata.ts
374
+ */
375
+ function walkAppPageHead(kind, route, slots, hiddenBranches, outletIndex) {
376
+ const errors = [];
377
+ const deferredErrors = [];
378
+ let resolved = Promise.resolve(kind.initial);
379
+ let slotBranchParent = null;
380
+ let afterOutlet = false;
381
+ const lastBranch = slots.at(-1) ?? route;
382
+ const lastPage = lastBranch.segments.at(-1)?.page ? lastBranch.segments.at(-1) : void 0;
383
+ const lastPageLayout = lastPage && lastBranch.segments.at(-2);
384
+ let beforeLastPageLayout;
385
+ const start = (segment, parent, stashed) => {
386
+ const item = startAppPageHeadItem(kind, segment, parent, !slotBranchParent && afterOutlet, stashed);
387
+ if (item.deferredError) deferredErrors.push(item.deferredError);
388
+ if (slotBranchParent) {
389
+ const error = slotBranchParent.then(() => item.error, () => null);
390
+ error.catch(() => null);
391
+ errors.push({
392
+ error,
393
+ owner: "slot"
394
+ });
395
+ } else errors.push({
396
+ error: item.error,
397
+ owner: "route"
398
+ });
399
+ return item;
400
+ };
401
+ const startShown = (segment) => {
402
+ if (segment === lastPageLayout && segment.besidePage) beforeLastPageLayout = resolved;
403
+ const item = start(segment, resolved, segment === lastPage ? beforeLastPageLayout : void 0);
404
+ resolved = item.resolved;
405
+ return item.result;
406
+ };
407
+ const startHidden = (parallelRouteIndex, sharedLayoutCount) => {
408
+ for (const hidden of hiddenBranches) {
409
+ if (hidden.parallelRouteIndex !== parallelRouteIndex || hidden.sharedLayoutCount !== sharedLayoutCount) continue;
410
+ const shownBranchParent = slotBranchParent;
411
+ slotBranchParent = resolved;
412
+ let parent = resolved;
413
+ for (const segment of hidden.segments) parent = start(segment, parent).resolved;
414
+ slotBranchParent = shownBranchParent;
415
+ }
416
+ };
417
+ const routeResults = route.segments.map(startShown);
418
+ const slotResults = slots.map((slot, index) => {
419
+ slotBranchParent = index === outletIndex ? resolved : null;
420
+ let layoutCount = 0;
421
+ const results = slot.segments.map((segment) => {
422
+ startHidden(index, layoutCount);
423
+ if (!segment.page) layoutCount++;
424
+ return startShown(segment);
425
+ });
426
+ if (!slot.segments.at(-1)?.page) startHidden(index, layoutCount);
427
+ slotBranchParent = null;
428
+ if (index === outletIndex && results.length > 0) afterOutlet = true;
429
+ return results;
430
+ });
431
+ startHidden(-1, 0);
252
432
  return {
253
- resolvedViewport: accumulatedViewport,
254
- viewportResults: Promise.all(viewportPromises)
433
+ deferredErrors,
434
+ errors,
435
+ resolved,
436
+ route: routeResults,
437
+ slots: slotResults
255
438
  };
256
439
  }
257
440
  /**
@@ -266,7 +449,7 @@ function resolveOrderedAppPageMetadata(options) {
266
449
  const metadataPromises = [];
267
450
  let accumulatedEntriesPromise = Promise.resolve([]);
268
451
  for (const source of options.sources) {
269
- const parentPromise = accumulatedEntriesPromise.then((entries) => entries.length > 0 ? mergeMetadataEntries(entries) : {});
452
+ const parentPromise = accumulatedEntriesPromise.then((entries) => entries.length > 0 ? mergeParentMetadataEntries(entries) : {});
270
453
  const metadataPromise = resolveModuleMetadata(source.moduleRoute, source.module, source.params, source.searchParams, parentPromise, source.searchParamsObserver);
271
454
  metadataPromises.push(metadataPromise);
272
455
  metadataPromise.catch(() => null);
@@ -288,8 +471,10 @@ async function resolveAppPageHead(options) {
288
471
  const prepared = prepareAppPageHead(options);
289
472
  const [metadata, viewport] = await Promise.all([prepared.metadata, prepared.viewport]);
290
473
  return {
291
- ...prepared,
474
+ hasDynamicMetadata: prepared.hasDynamicMetadata,
475
+ hasSearchParams: prepared.hasSearchParams,
292
476
  metadata,
477
+ pageSearchParams: prepared.pageSearchParams,
293
478
  viewport
294
479
  };
295
480
  }
@@ -298,7 +483,7 @@ async function resolveAppPageHead(options) {
298
483
  * from the modules alone, so callers can place the head before resolving it.
299
484
  */
300
485
  function hasAppPageDynamicMetadata(options) {
301
- return options.layoutModules.some(hasGenerateMetadata) || hasGenerateMetadata(options.pageModule) || (options.parallelRoutes ?? []).some(parallelRouteHasDynamicMetadata);
486
+ return options.layoutModules.some(hasGenerateMetadata) || hasGenerateMetadata(options.pageModule) || (options.parallelRoutes ?? []).some(parallelRouteHasDynamicMetadata) || (options.hiddenParallelRoutes ?? []).some((hidden) => parallelRouteHasDynamicMetadata(hidden.route));
302
487
  }
303
488
  /**
304
489
  * Start metadata and viewport resolution without coupling their completion.
@@ -316,73 +501,71 @@ function prepareAppPageHeadInner(options) {
316
501
  const layoutInputs = createLayoutInputs(options.layoutModules, layoutTreePositions);
317
502
  const layoutSourcePositions = layoutInputs.map((input) => input.treePosition);
318
503
  const { hasSearchParams, pageSearchParams } = collectAppPageSearchParams(options.searchParams);
319
- const layoutMetadataPromise = resolveLayoutMetadata(layoutInputs, options.params, routeSegments);
320
- const layoutViewport = resolveLayoutViewport(layoutInputs, options.params, routeSegments);
321
- const layoutViewportPromise = layoutViewport.viewportResults;
322
- const layoutMetadataResultsForParent = layoutMetadataPromise.then((metadataResults) => metadataResults.filter(isPresent));
323
- layoutMetadataResultsForParent.catch(() => null);
324
- const pageParentPromise = layoutMetadataResultsForParent.then((metadataResults) => metadataResults.length > 0 ? mergeMetadataEntries(metadataResults.map((metadata) => ({ metadata }))) : {});
325
- pageParentPromise.catch(() => null);
326
- const pageMetadataPromise = options.pageModule ? resolveModuleMetadata(createAppMetadataModuleRoute(routeSegments, "page"), options.pageModule, options.params, pageSearchParams, pageParentPromise, options.searchParamsObserver) : Promise.resolve(null);
327
504
  const parallelRoutes = options.parallelRoutes ?? [];
328
- const parallelRouteMetadataPromise = Promise.all(parallelRoutes.map((parallelRoute) => resolveParallelRouteMetadata(parallelRoute, options.params, routeSegments, pageSearchParams, pageParentPromise, options.searchParamsObserver)));
329
- const parallelRouteViewportPromises = [];
330
- let accumulatedViewport = layoutViewport.resolvedViewport;
331
- const pageParentViewport = accumulatedViewport;
332
- const pageViewportPromise = options.pageModule ? resolveModuleViewport(options.pageModule, options.params, pageSearchParams, pageParentViewport, options.searchParamsObserver) : Promise.resolve(null);
333
- if (options.pageModule) {
334
- accumulatedViewport = mergeResolvedViewport(pageParentViewport, pageViewportPromise);
335
- accumulatedViewport.catch(() => null);
336
- }
337
- for (const parallelRoute of parallelRoutes) {
338
- const parallelViewport = resolveParallelRouteViewport(parallelRoute, options.params, routeSegments, pageSearchParams, accumulatedViewport, options.searchParamsObserver);
339
- parallelRouteViewportPromises.push(parallelViewport.viewportResults);
340
- accumulatedViewport = parallelViewport.resolvedViewport;
341
- }
342
- const parallelRouteViewportPromise = Promise.all(parallelRouteViewportPromises);
505
+ const route = createRouteHeadBranch(layoutInputs, routeSegments, options.params, options.pageModule);
506
+ const slots = parallelRoutes.map((parallelRoute) => createParallelRouteHeadBranch(parallelRoute, options.params, routeSegments));
507
+ const hiddenBranches = (options.hiddenParallelRoutes ?? []).map((hidden) => createHiddenHeadBranch(hidden, slots[hidden.parallelRouteIndex], options.params, routeSegments));
508
+ const outletIndex = options.outletParallelRouteIndex != null && options.outletParallelRouteIndex in slots ? options.outletParallelRouteIndex : -1;
509
+ const segmentSearchParams = (segment) => segment.page ? pageSearchParams : void 0;
510
+ const segmentSearchParamsObserver = (segment) => segment.page ? options.searchParamsObserver : void 0;
511
+ const metadataWalk = walkAppPageHead({
512
+ initial: {},
513
+ merge: (resolved, metadata, stashed) => {
514
+ try {
515
+ return mergeParentMetadataEntries(resolved === stashed ? [{ metadata: resolved }, { metadata }] : [
516
+ { metadata: stashed },
517
+ {
518
+ isPage: true,
519
+ metadata: resolved
520
+ },
521
+ { metadata }
522
+ ]);
523
+ } catch (error) {
524
+ throw tagAppPageMetadataError(error);
525
+ }
526
+ },
527
+ resolve: (segment, parent) => resolveModuleMetadata(segment.moduleRoute, segment.module, segment.params, segmentSearchParams(segment), parent, segmentSearchParamsObserver(segment))
528
+ }, route, slots, hiddenBranches, outletIndex);
529
+ const viewportWalk = walkAppPageHead({
530
+ initial: mergeViewport([]),
531
+ merge: (resolved, viewport) => mergeViewport([resolved, viewport]),
532
+ resolve: (segment, parent) => resolveModuleViewport(segment.module, segment.params, segmentSearchParams(segment), parent, segmentSearchParamsObserver(segment))
533
+ }, route, slots, hiddenBranches, outletIndex);
343
534
  const hasDynamicMetadata = hasAppPageDynamicMetadata(options);
344
- const metadata = Promise.all([
345
- layoutMetadataPromise,
346
- pageMetadataPromise,
347
- parallelRouteMetadataPromise
348
- ]).then(async ([layoutMetadataResults, pageMetadata, parallelRouteMetadata]) => {
349
- const parallelMetadataResults = parallelRouteMetadata.flatMap((head) => head.metadataResults);
350
- const parallelMetadataSources = parallelRouteMetadata.flatMap((head) => head.metadataSources);
351
- const primaryPageHasTitle = pageMetadata != null && pageMetadata.title !== void 0;
352
- const metadataEntries = [
353
- ...layoutMetadataResults.filter(isPresent).map((entry) => ({ metadata: entry })),
354
- ...pageMetadata ? [{
355
- isPage: true,
356
- metadata: pageMetadata
357
- }] : [],
358
- ...parallelMetadataResults.filter(isPresent).map((entry) => ({
359
- contributesTitle: !primaryPageHasTitle,
360
- metadata: entry
361
- }))
362
- ];
363
- const resolvedMetadataBase = metadataEntries.length > 0 ? mergeMetadataEntries(metadataEntries) : null;
535
+ const metadata = metadataWalk.resolved.then(async (accumulated) => {
536
+ const [routeResults, slotResults] = await Promise.all([Promise.all(metadataWalk.route), Promise.all(metadataWalk.slots.map((results) => Promise.all(results)))]);
537
+ const layoutMetadataResults = routeResults.slice(0, layoutInputs.length);
538
+ const pageMetadata = options.pageModule ? routeResults[layoutInputs.length] ?? null : null;
539
+ const hasMetadata = [...routeResults, ...slotResults.flat()].some(isPresent);
364
540
  const metadataSources = createMetadataSources(layoutMetadataResults, routeSegments, layoutSourcePositions, pageMetadata, Boolean(options.pageModule));
365
- metadataSources.push(...parallelMetadataSources);
366
- return finalizeAppPageMetadata(resolvedMetadataBase, metadataSources, options);
541
+ metadataSources.push(...slotResults.flatMap((results, index) => results.map((entry) => ({
542
+ metadata: entry,
543
+ routeSegments: slots[index].routeSegments
544
+ }))));
545
+ return finalizeAppPageMetadata(hasMetadata ? toShownMetadata(accumulated) : null, metadataSources, options);
367
546
  });
368
- const viewport = Promise.all([
369
- layoutViewportPromise,
370
- pageViewportPromise,
371
- parallelRouteViewportPromise
372
- ]).then(([layoutViewportResults, pageViewport, parallelRouteViewports]) => mergeViewport([
373
- ...layoutViewportResults.filter(isPresent),
374
- ...pageViewport ? [pageViewport] : [],
375
- ...parallelRouteViewports.flat().filter(isPresent)
376
- ]));
547
+ const viewport = viewportWalk.resolved;
377
548
  metadata.catch(() => null);
378
549
  viewport.catch(() => null);
550
+ const metadataHeadError = metadataWalk.resolved.then(() => metadata.then(() => null), () => null);
551
+ const headErrorOwner = outletIndex === -1 ? "route" : "slot";
552
+ const errorsOf = (owner) => {
553
+ const walkErrors = (walk, headErrors) => allInOrder([...walk.errors.flatMap((item) => item.owner === owner ? [item.error] : []), ...headErrors]).then(() => owner === "route" ? allInOrder(walk.deferredErrors) : null);
554
+ return Promise.all([walkErrors(metadataWalk, headErrorOwner === owner ? [metadataHeadError] : []), walkErrors(viewportWalk, [])]).then(() => null);
555
+ };
556
+ const hiddenErrors = errorsOf("slot");
557
+ hiddenErrors.catch(() => null);
558
+ const routeErrors = errorsOf("route");
559
+ routeErrors.catch(() => null);
379
560
  return {
380
561
  hasDynamicMetadata,
381
562
  hasSearchParams,
563
+ hiddenErrors,
382
564
  metadata,
383
565
  pageSearchParams,
566
+ routeErrors,
384
567
  viewport
385
568
  };
386
569
  }
387
570
  //#endregion
388
- export { collectAppPageSearchParams, hasAppPageDynamicMetadata, prepareAppPageHead, resolveActiveParallelRouteHeadInputs, resolveAppPageHead, resolveOrderedAppPageMetadata };
571
+ export { collectAppPageSearchParams, hasAppPageDynamicMetadata, prepareAppPageHead, resolveActiveParallelRouteHeadInputs, resolveAppPageHead, resolveInterceptLayoutsBesidePage, resolveOrderedAppPageMetadata, slotInterceptKeepsSourceHead };