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.
- package/README.md +5 -2
- package/THIRD_PARTY_LICENSES.md +47 -0
- package/dist/_virtual/_rolldown/runtime.js +4 -3
- package/dist/build/action-owner-manifest.d.ts +3 -2
- package/dist/build/action-owner-manifest.js +18 -2
- package/dist/build/app-page-static-eligibility.d.ts +17 -1
- package/dist/build/app-page-static-eligibility.js +80 -13
- package/dist/build/clean-output.d.ts +2 -1
- package/dist/build/client-build-config.d.ts +13 -3
- package/dist/build/client-build-config.js +46 -9
- package/dist/build/client-reference-async.d.ts +48 -0
- package/dist/build/client-reference-async.js +123 -0
- package/dist/build/client-reference-chunks.d.ts +32 -0
- package/dist/build/client-reference-chunks.js +111 -0
- package/dist/build/client-reference-groups.d.ts +9 -1
- package/dist/build/client-reference-groups.js +40 -2
- package/dist/build/css-url-assets.d.ts +2 -1
- package/dist/build/google-fonts/fallback-metrics.d.ts +2 -1
- package/dist/build/google-fonts/find-font-files-in-css.d.ts +1 -0
- package/dist/build/google-fonts/find-font-files-in-css.js +17 -4
- package/dist/build/google-fonts/font-metadata.d.ts +2 -1
- package/dist/build/google-fonts/validate.d.ts +2 -1
- package/dist/build/inline-css.d.ts +2 -1
- package/dist/build/module-dependency-cache.d.ts +2 -1
- package/dist/build/next-client-runtime-manifests.d.ts +2 -1
- package/dist/build/precompress.d.ts +2 -1
- package/dist/build/precompress.js +1 -1
- package/dist/build/prerender-paths.d.ts +2 -1
- package/dist/build/prerender-phase.d.ts +2 -1
- package/dist/build/prerender-server-pool.js +1 -1
- package/dist/build/prerender.d.ts +3 -2
- package/dist/build/prerender.js +6 -5
- package/dist/build/report.d.ts +2 -15
- package/dist/build/report.js +1 -51
- package/dist/build/run-prerender.d.ts +2 -1
- package/dist/build/server-actions-encryption-key.d.ts +2 -1
- package/dist/build/ssr-manifest.js +25 -2
- package/dist/build/standalone.d.ts +2 -1
- package/dist/cache/cache-adapters-virtual.d.ts +2 -1
- package/dist/cache.js +1 -2
- package/dist/check.d.ts +2 -1
- package/dist/check.js +5 -1
- package/dist/cli-args.d.ts +2 -1
- package/dist/cli.js +5 -0
- package/dist/client/client-redirect-matcher.js +2 -1
- package/dist/client/client-redirects.d.ts +4 -3
- package/dist/client/client-redirects.js +2 -1
- package/dist/client/client-rewrites.d.ts +2 -1
- package/dist/client/dev-error-overlay-store.d.ts +2 -1
- package/dist/client/dev-error-overlay.js +1 -1
- package/dist/client/index.js +1 -2
- package/dist/client/instrumentation-client-state.js +5 -5
- package/dist/client/navigation-runtime.d.ts +16 -2
- package/dist/client/navigation-runtime.js +2 -2
- package/dist/client/pages-router-link-navigation.d.ts +2 -1
- package/dist/client/vinext-next-data.d.ts +25 -1
- package/dist/client/window-next.d.ts +2 -1
- package/dist/config/config-matchers.d.ts +12 -1
- package/dist/config/config-matchers.js +111 -16
- package/dist/config/dotenv.d.ts +2 -1
- package/dist/config/next-config.d.ts +32 -1
- package/dist/config/next-config.js +93 -5
- package/dist/config/tsconfig-paths.d.ts +2 -1
- package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/dbcs-codec.js +327 -0
- package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/dbcs-data.js +123 -0
- package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/index.js +29 -0
- package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/internal.js +134 -0
- package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/sbcs-codec.js +50 -0
- package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/sbcs-data-generated.js +455 -0
- package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/sbcs-data.js +147 -0
- package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/tables/big5-added.json.js +169 -0
- package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/tables/cp936.json.js +2584 -0
- package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/tables/cp949.json.js +2220 -0
- package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/tables/cp950.json.js +227 -0
- package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/tables/eucjp.json.js +425 -0
- package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/tables/gb18030-ranges.json.js +427 -0
- package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/tables/gbk-added.json.js +229 -0
- package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/tables/shiftjis.json.js +292 -0
- package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/utf16.js +106 -0
- package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/utf7.js +182 -0
- package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/lib/bom-handling.js +42 -0
- package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/lib/extend-node.js +147 -0
- package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/lib/index.js +94 -0
- package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/lib/streams.js +95 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/detector.js +23 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/index.js +2 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/lookup.js +25 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/bmp.js +11 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/cur.js +15 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/dds.js +11 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/gif.js +12 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/heif.js +55 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/icns.js +76 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/ico.js +39 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/index.js +46 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/j2c.js +11 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/jp2.js +21 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/jpg.js +71 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/jxl-stream.js +42 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/jxl.js +46 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/ktx.js +19 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/png.js +28 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/pnm.js +54 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/psd.js +11 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/svg.js +79 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/tga.js +15 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/tiff.js +96 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/utils.js +53 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/webp.js +45 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/utils/bit-reader.js +38 -0
- package/dist/deps/.pnpm/safer-buffer@2.1.2/deps/safer-buffer/safer.js +45 -0
- package/dist/deps/.pnpm/ua-parser-js@1.0.35/deps/ua-parser-js/src/ua-parser.js +2 -2
- package/dist/entries/app-browser-entry.d.ts +20 -5
- package/dist/entries/app-browser-entry.js +79 -6
- package/dist/entries/app-rsc-entry.d.ts +2 -1
- package/dist/entries/app-rsc-entry.js +59 -60
- package/dist/entries/app-rsc-manifest.d.ts +2 -1
- package/dist/entries/app-rsc-manifest.js +56 -4
- package/dist/entries/app-ssr-entry.js +1 -0
- package/dist/entries/pages-entry-helpers.js +1 -2
- package/dist/entries/pages-server-entry.d.ts +2 -1
- package/dist/entries/pages-server-entry.js +34 -9
- package/dist/entries/runtime-entry-module.d.ts +1 -0
- package/dist/entries/runtime-entry-module.js +4 -1
- package/dist/image/image-adapters-virtual.d.ts +2 -1
- package/dist/index.js +184 -103
- package/dist/init-cloudflare.d.ts +1 -3
- package/dist/init-cloudflare.js +10 -48
- package/dist/init-platform.d.ts +2 -0
- package/dist/init-platform.js +4 -0
- package/dist/plugins/client-compile-hints.d.ts +30 -0
- package/dist/plugins/client-compile-hints.js +88 -0
- package/dist/plugins/client-reference-dedup.d.ts +2 -1
- package/dist/plugins/cloudflare-dev-module-urls.d.ts +2 -1
- package/dist/plugins/dynamic-preload-metadata.d.ts +3 -1
- package/dist/plugins/dynamic-preload-metadata.js +1 -1
- package/dist/plugins/environment.d.ts +2 -1
- package/dist/plugins/extensionless-dynamic-import.js +6 -2
- package/dist/plugins/fonts.js +9 -12
- package/dist/plugins/ignore-dynamic-requests.d.ts +2 -1
- package/dist/plugins/import-meta-url.d.ts +2 -1
- package/dist/plugins/next-intl-catalog.d.ts +12 -0
- package/dist/plugins/next-intl-catalog.js +85 -0
- package/dist/plugins/og-assets.d.ts +2 -1
- package/dist/plugins/og-assets.js +2 -3
- package/dist/plugins/optimize-imports.d.ts +2 -1
- package/dist/plugins/pages-node-externals.d.ts +3 -1
- package/dist/plugins/pages-node-externals.js +1 -1
- package/dist/plugins/remove-console.d.ts +2 -1
- package/dist/plugins/require-condition-resolution.d.ts +2 -1
- package/dist/plugins/rsc-client-reference-loaders.d.ts +8 -0
- package/dist/plugins/rsc-client-reference-loaders.js +170 -68
- package/dist/plugins/rsc-client-shim-excludes.js +2 -0
- package/dist/plugins/sass.d.ts +2 -1
- package/dist/plugins/strip-server-exports.d.ts +2 -1
- package/dist/plugins/styled-jsx.d.ts +2 -1
- package/dist/plugins/transform-result.d.ts +2 -1
- package/dist/plugins/typeof-window.d.ts +2 -1
- package/dist/plugins/use-cache-callable.d.ts +1 -1
- package/dist/plugins/use-cache-callable.js +136 -94
- package/dist/plugins/worker-image-imports.js +1 -1
- package/dist/plugins/worker-use-server.d.ts +2 -1
- package/dist/routing/app-route-graph.d.ts +46 -0
- package/dist/routing/app-route-graph.js +131 -51
- package/dist/routing/browser-route-manifest.d.ts +2 -1
- package/dist/routing/optimistic-route-trie.d.ts +2 -1
- package/dist/routing/route-matching.d.ts +2 -1
- package/dist/routing/route-pattern.d.ts +2 -1
- package/dist/server/accept-encoding.d.ts +2 -1
- package/dist/server/api-handler.js +19 -4
- package/dist/server/app-action-forwarding.d.ts +2 -1
- package/dist/server/app-bfcache-identity.d.ts +2 -1
- package/dist/server/app-bfcache-identity.js +1 -1
- package/dist/server/app-browser-action-result.d.ts +2 -1
- package/dist/server/app-browser-entry.js +106 -66
- package/dist/server/app-browser-error.d.ts +2 -1
- package/dist/server/app-browser-history-controller.d.ts +7 -5
- package/dist/server/app-browser-history-controller.js +93 -15
- package/dist/server/app-browser-hydration.d.ts +2 -1
- package/dist/server/app-browser-interception-context.d.ts +2 -1
- package/dist/server/app-browser-navigation-controller.d.ts +2 -2
- package/dist/server/app-browser-navigation-controller.js +16 -12
- package/dist/server/app-browser-popstate.d.ts +2 -1
- package/dist/server/app-browser-rsc-redirect.d.ts +2 -1
- package/dist/server/app-browser-rsc-redirect.js +4 -4
- package/dist/server/app-browser-server-action-client.d.ts +4 -1
- package/dist/server/app-browser-server-action-client.js +4 -3
- package/dist/server/app-browser-state.d.ts +2 -4
- package/dist/server/app-browser-state.js +9 -4
- package/dist/server/app-browser-stream.d.ts +2 -1
- package/dist/server/app-browser-supplemental-refresh.js +16 -1
- package/dist/server/app-browser-visible-commit.d.ts +3 -2
- package/dist/server/app-browser-visible-commit.js +2 -12
- package/dist/server/app-client-reference-manifest.d.ts +31 -0
- package/dist/server/app-client-reference-manifest.js +46 -0
- package/dist/server/app-client-reference-preloader.d.ts +25 -5
- package/dist/server/app-client-reference-preloader.js +22 -7
- package/dist/server/app-elements-wire.d.ts +8 -39
- package/dist/server/app-elements-wire.js +4 -41
- package/dist/server/app-elements.d.ts +4 -2
- package/dist/server/app-elements.js +4 -2
- package/dist/server/app-fallback-renderer.d.ts +9 -2
- package/dist/server/app-fallback-renderer.js +4 -1
- package/dist/server/app-history-state.d.ts +4 -3
- package/dist/server/app-history-state.js +5 -2
- package/dist/server/app-inline-css-client.d.ts +2 -1
- package/dist/server/app-metadata-tracing.d.ts +2 -1
- package/dist/server/app-mounted-layouts.d.ts +21 -0
- package/dist/server/app-mounted-layouts.js +67 -0
- package/dist/server/app-optimistic-routing.d.ts +37 -2
- package/dist/server/app-optimistic-routing.js +75 -2
- package/dist/server/app-page-boundary-render.d.ts +20 -2
- package/dist/server/app-page-boundary-render.js +224 -40
- package/dist/server/app-page-boundary.d.ts +34 -5
- package/dist/server/app-page-boundary.js +41 -8
- package/dist/server/app-page-cache-finalizer.d.ts +14 -2
- package/dist/server/app-page-cache-finalizer.js +71 -30
- package/dist/server/app-page-cache-render.d.ts +10 -2
- package/dist/server/app-page-cache-render.js +14 -2
- package/dist/server/app-page-cache.d.ts +13 -1
- package/dist/server/app-page-cache.js +33 -11
- package/dist/server/app-page-dispatch.d.ts +39 -11
- package/dist/server/app-page-dispatch.js +236 -177
- package/dist/server/app-page-element-builder.d.ts +19 -3
- package/dist/server/app-page-element-builder.js +193 -71
- package/dist/server/app-page-execution.d.ts +43 -51
- package/dist/server/app-page-execution.js +205 -92
- package/dist/server/app-page-head.d.ts +108 -3
- package/dist/server/app-page-head.js +337 -154
- package/dist/server/app-page-http-access-fallback-metadata.d.ts +49 -2
- package/dist/server/app-page-http-access-fallback-metadata.js +77 -2
- package/dist/server/app-page-layout-gate.d.ts +35 -0
- package/dist/server/app-page-layout-gate.js +50 -0
- package/dist/server/app-page-method.d.ts +2 -1
- package/dist/server/app-page-params.d.ts +0 -1
- package/dist/server/app-page-params.js +1 -14
- package/dist/server/app-page-probe.d.ts +5 -22
- package/dist/server/app-page-probe.js +4 -37
- package/dist/server/app-page-render-identity.d.ts +2 -1
- package/dist/server/app-page-render.d.ts +9 -13
- package/dist/server/app-page-render.js +108 -214
- package/dist/server/app-page-request.d.ts +15 -4
- package/dist/server/app-page-request.js +2 -2
- package/dist/server/app-page-response.js +3 -3
- package/dist/server/app-page-route-wiring.d.ts +65 -8
- package/dist/server/app-page-route-wiring.js +259 -103
- package/dist/server/app-page-rsc-render-status.d.ts +29 -2
- package/dist/server/app-page-rsc-render-status.js +121 -13
- package/dist/server/app-page-search-params-observation.d.ts +7 -2
- package/dist/server/app-page-search-params-observation.js +8 -1
- package/dist/server/app-page-segment-plan.d.ts +2 -1
- package/dist/server/app-page-stream.d.ts +33 -1
- package/dist/server/app-page-stream.js +25 -6
- package/dist/server/app-pages-bridge.d.ts +6 -1
- package/dist/server/app-pages-bridge.js +7 -3
- package/dist/server/app-ppr-fallback-shell-render.d.ts +2 -1
- package/dist/server/app-ppr-fallback-shell.d.ts +2 -1
- package/dist/server/app-prerender-endpoints.d.ts +2 -1
- package/dist/server/app-prerender-static-params.d.ts +2 -1
- package/dist/server/app-render-dependency.d.ts +21 -4
- package/dist/server/app-render-dependency.js +100 -33
- package/dist/server/app-request-stage-dispatch.js +1 -1
- package/dist/server/app-request-stage-independent-entry.d.ts +2 -1
- package/dist/server/app-response-stage-entry.d.ts +2 -1
- package/dist/server/app-route-handler-cache.d.ts +2 -1
- package/dist/server/app-route-handler-cache.js +2 -2
- package/dist/server/app-route-handler-dispatch.d.ts +2 -1
- package/dist/server/app-route-handler-dispatch.js +15 -10
- package/dist/server/app-route-handler-execution.d.ts +2 -1
- package/dist/server/app-route-handler-execution.js +8 -3
- package/dist/server/app-route-handler-policy.d.ts +1 -1
- package/dist/server/app-route-handler-policy.js +3 -3
- package/dist/server/app-route-handler-response.d.ts +2 -1
- package/dist/server/app-route-handler-response.js +1 -1
- package/dist/server/app-route-handler-runtime.d.ts +2 -1
- package/dist/server/app-route-handler-runtime.js +17 -4
- package/dist/server/app-route-module-loader.d.ts +18 -1
- package/dist/server/app-route-module-loader.js +8 -0
- package/dist/server/app-route-tree-prefetch.d.ts +2 -1
- package/dist/server/app-rsc-cache-busting.d.ts +2 -2
- package/dist/server/app-rsc-cache-busting.js +4 -4
- package/dist/server/app-rsc-error-handler.d.ts +4 -2
- package/dist/server/app-rsc-error-handler.js +9 -1
- package/dist/server/app-rsc-errors.d.ts +10 -1
- package/dist/server/app-rsc-errors.js +8 -1
- package/dist/server/app-rsc-handler.d.ts +7 -6
- package/dist/server/app-rsc-handler.js +36 -34
- package/dist/server/app-rsc-request-normalization.d.ts +0 -4
- package/dist/server/app-rsc-request-normalization.js +1 -4
- package/dist/server/app-rsc-response-finalizer.d.ts +2 -1
- package/dist/server/app-rsc-response-finalizer.js +2 -2
- package/dist/server/app-rsc-response-stage.js +5 -3
- package/dist/server/app-rsc-route-matching.d.ts +38 -1
- package/dist/server/app-rsc-route-matching.js +24 -0
- package/dist/server/app-segment-config.d.ts +2 -1
- package/dist/server/app-segment-config.js +1 -14
- package/dist/server/app-server-action-execution.d.ts +5 -2
- package/dist/server/app-server-action-execution.js +10 -7
- package/dist/server/app-ssr-entry.d.ts +8 -0
- package/dist/server/app-ssr-entry.js +98 -50
- package/dist/server/app-ssr-error-meta.d.ts +2 -1
- package/dist/server/app-ssr-search-params-gate.d.ts +2 -1
- package/dist/server/app-ssr-stream.d.ts +22 -10
- package/dist/server/app-ssr-stream.js +300 -68
- package/dist/server/app-static-generation.d.ts +2 -1
- package/dist/server/app-streamed-client-references.d.ts +39 -0
- package/dist/server/app-streamed-client-references.js +156 -0
- package/dist/server/app-visited-response-cache.d.ts +38 -2
- package/dist/server/app-visited-response-cache.js +46 -5
- package/dist/server/app-worker-stages.d.ts +27 -4
- package/dist/server/app-worker-stages.js +45 -6
- package/dist/server/artifact-compatibility.d.ts +2 -2
- package/dist/server/artifact-compatibility.js +1 -10
- package/dist/server/bfcache-identity.d.ts +2 -1
- package/dist/server/cache-headers.d.ts +2 -1
- package/dist/server/cache-proof.d.ts +1 -115
- package/dist/server/cache-proof.js +1 -544
- package/dist/server/cacheability-request.d.ts +2 -1
- package/dist/server/cacheability-request.js +13 -8
- package/dist/server/config-headers.d.ts +2 -1
- package/dist/server/csp.d.ts +2 -1
- package/dist/server/default-global-not-found-module.d.ts +2 -1
- package/dist/server/default-http-access-fallback-modules.d.ts +33 -0
- package/dist/server/default-http-access-fallback-modules.js +31 -0
- package/dist/server/defer-until-stream-consumed.d.ts +34 -0
- package/dist/server/defer-until-stream-consumed.js +154 -21
- package/dist/server/dev-lockfile.d.ts +32 -2
- package/dist/server/dev-lockfile.js +46 -2
- package/dist/server/dev-module-runner.d.ts +2 -1
- package/dist/server/dev-server.js +14 -6
- package/dist/server/fetch-handler.js +1 -2
- package/dist/server/file-based-metadata.d.ts +2 -1
- package/dist/server/framework-tracer.d.ts +2 -1
- package/dist/server/headers.d.ts +6 -3
- package/dist/server/headers.js +9 -5
- package/dist/server/html.d.ts +1 -0
- package/dist/server/html.js +19 -1
- package/dist/server/http-conditional.d.ts +2 -1
- package/dist/server/http-error-responses.d.ts +2 -1
- package/dist/server/implicit-tags.d.ts +2 -1
- package/dist/server/isr-cache.d.ts +8 -2
- package/dist/server/isr-cache.js +26 -1
- package/dist/server/metadata-route-build-data.d.ts +2 -1
- package/dist/server/metadata-route-build-data.js +1 -1
- package/dist/server/metadata-route-response.d.ts +2 -1
- package/dist/server/metadata-route-response.js +32 -15
- package/dist/server/metadata-routes.d.ts +2 -1
- package/dist/server/middleware-runtime.d.ts +2 -1
- package/dist/server/multi-stage.d.ts +52 -11
- package/dist/server/multi-stage.js +13 -1
- package/dist/server/navigation-planner.js +1 -1
- package/dist/server/navigation-trace.d.ts +2 -1
- package/dist/server/next-error-digest.d.ts +2 -1
- package/dist/server/nitro-public-files-plugin.d.ts +2 -1
- package/dist/server/nitro-public-files.d.ts +2 -1
- package/dist/server/opentelemetry-api.d.ts +2 -1
- package/dist/server/operation-token.d.ts +2 -1
- package/dist/server/pages-api-route.d.ts +2 -1
- package/dist/server/pages-api-route.js +28 -19
- package/dist/server/pages-asset-tags.d.ts +2 -1
- package/dist/server/pages-body-parser-config.d.ts +2 -1
- package/dist/server/pages-client-assets.d.ts +4 -0
- package/dist/server/pages-data-route.d.ts +2 -1
- package/dist/server/pages-document-asset-props.d.ts +2 -1
- package/dist/server/pages-document-initial-props.d.ts +2 -1
- package/dist/server/pages-execution-tracing.d.ts +2 -1
- package/dist/server/pages-execution-tracing.js +1 -1
- package/dist/server/pages-get-initial-props.d.ts +2 -1
- package/dist/server/pages-media-type.d.ts +21 -1
- package/dist/server/pages-media-type.js +69 -5
- package/dist/server/pages-node-compat.js +52 -27
- package/dist/server/pages-page-data.d.ts +7 -1
- package/dist/server/pages-page-data.js +35 -12
- package/dist/server/pages-page-handler.d.ts +3 -2
- package/dist/server/pages-page-handler.js +27 -27
- package/dist/server/pages-page-method.d.ts +2 -1
- package/dist/server/pages-page-response.d.ts +2 -1
- package/dist/server/pages-preview.d.ts +2 -1
- package/dist/server/pages-readiness.d.ts +2 -1
- package/dist/server/pages-request-pipeline.d.ts +10 -1
- package/dist/server/pages-request-pipeline.js +6 -7
- package/dist/server/pages-request-stage-entry.d.ts +2 -1
- package/dist/server/pages-request-stage-entry.js +14 -12
- package/dist/server/pages-response-stage-entry.d.ts +2 -1
- package/dist/server/pages-response-stage-entry.js +9 -3
- package/dist/server/pages-route-data-kind.d.ts +2 -1
- package/dist/server/prerender-cache-life-header.d.ts +2 -1
- package/dist/server/prerender-route-params.d.ts +2 -1
- package/dist/server/prod-server.js +14 -4
- package/dist/server/request-log.d.ts +2 -1
- package/dist/server/request-pipeline.d.ts +6 -0
- package/dist/server/request-pipeline.js +21 -1
- package/dist/server/request-tracing.d.ts +2 -1
- package/dist/server/request-tracing.js +1 -1
- package/dist/server/response-start-tracing.js +7 -29
- package/dist/server/rsc-render-stream.d.ts +4 -0
- package/dist/server/rsc-render-stream.js +25 -0
- package/dist/server/seed-cache.d.ts +2 -1
- package/dist/server/seed-cache.js +1 -1
- package/dist/server/shared-cache-identity.d.ts +23 -0
- package/dist/server/shared-cache-identity.js +36 -0
- package/dist/server/static-file-cache.d.ts +2 -1
- package/dist/server/static-file-cache.js +1 -0
- package/dist/server/worker-revalidation-context.d.ts +2 -1
- package/dist/server/worker-stages.d.ts +18 -4
- package/dist/server/worker-stages.js +23 -4
- package/dist/shims/app.d.ts +2 -1
- package/dist/shims/cache-callable-runtime.d.ts +2 -1
- package/dist/shims/cache-handler.d.ts +8 -3
- package/dist/shims/cache-handler.js +31 -11
- package/dist/shims/cache-request-state.d.ts +17 -20
- package/dist/shims/cache-request-state.js +16 -21
- package/dist/shims/cache-runtime.js +27 -11
- package/dist/shims/cache.d.ts +8 -7
- package/dist/shims/cache.js +17 -19
- package/dist/shims/cacheability-classification.d.ts +2 -0
- package/dist/shims/caught-not-found-boundaries.d.ts +15 -0
- package/dist/shims/caught-not-found-boundaries.js +48 -0
- package/dist/shims/cdn-cache.d.ts +22 -5
- package/dist/shims/cdn-purge-routes.d.ts +2 -1
- package/dist/shims/client-locale.js +2 -1
- package/dist/shims/client-page-root.d.ts +2 -1
- package/dist/shims/client-page-root.js +2 -2
- package/dist/shims/config.d.ts +2 -1
- package/dist/shims/default-forbidden.d.ts +4 -0
- package/dist/shims/default-forbidden.js +18 -0
- package/dist/shims/default-not-found.d.ts +0 -5
- package/dist/shims/default-not-found.js +5 -41
- package/dist/shims/default-unauthorized.d.ts +4 -0
- package/dist/shims/default-unauthorized.js +18 -0
- package/dist/shims/dynamic.js +9 -6
- package/dist/shims/error-boundary.d.ts +39 -3
- package/dist/shims/error-boundary.js +33 -18
- package/dist/shims/fetch-cache-state.d.ts +5 -1
- package/dist/shims/fetch-cache-state.js +1 -3
- package/dist/shims/fetch-cache.d.ts +2 -1
- package/dist/shims/fetch-cache.js +34 -24
- package/dist/shims/font-google.js +1 -2
- package/dist/shims/font-utils.d.ts +3 -2
- package/dist/shims/font-utils.js +5 -3
- package/dist/shims/form.js +3 -3
- package/dist/shims/headers.d.ts +8 -23
- package/dist/shims/headers.js +17 -67
- package/dist/shims/http-access-error-fallback.d.ts +7 -0
- package/dist/shims/http-access-error-fallback.js +47 -0
- package/dist/shims/image.d.ts +1 -22
- package/dist/shims/internal/app-prefetch-fetch-queue.d.ts +22 -2
- package/dist/shims/internal/app-prefetch-fetch-queue.js +71 -18
- package/dist/shims/internal/app-route-prefetch-policy.d.ts +14 -3
- package/dist/shims/internal/app-route-prefetch-policy.js +29 -4
- package/dist/shims/internal/cache-context-accessor.d.ts +2 -1
- package/dist/shims/internal/client-reference-loader.d.ts +7 -0
- package/dist/shims/internal/client-reference-loader.js +91 -0
- package/dist/shims/internal/cookie-serialize.d.ts +2 -1
- package/dist/shims/internal/cookies.js +1 -2
- package/dist/shims/internal/headers-state.d.ts +2 -0
- package/dist/shims/internal/headers-state.js +6 -1
- package/dist/shims/internal/hybrid-client-route-owner-direct.d.ts +2 -1
- package/dist/shims/internal/interpolate-as.d.ts +2 -1
- package/dist/shims/internal/navigation-untracked.js +1 -1
- package/dist/shims/internal/pages-data-target.d.ts +2 -1
- package/dist/shims/internal/pages-data-url.d.ts +2 -1
- package/dist/shims/internal/thenable-well-known-properties.d.ts +2 -1
- package/dist/shims/link.js +197 -52
- package/dist/shims/metadata.d.ts +52 -29
- package/dist/shims/metadata.js +142 -42
- package/dist/shims/navigation-errors.d.ts +2 -1
- package/dist/shims/navigation-server.js +1 -1
- package/dist/shims/navigation.d.ts +95 -8
- package/dist/shims/navigation.js +255 -47
- package/dist/shims/navigation.react-server.js +2 -2
- package/dist/shims/pages-router-runtime.d.ts +2 -1
- package/dist/shims/ppr-fallback-shell.d.ts +2 -1
- package/dist/shims/request-state-types.d.ts +2 -2
- package/dist/shims/router.js +14 -3
- package/dist/shims/slot.d.ts +12 -0
- package/dist/shims/slot.js +37 -9
- package/dist/shims/unified-request-context.d.ts +1 -1
- package/dist/shims/unified-request-context.js +5 -6
- package/dist/typegen.d.ts +2 -1
- package/dist/utils/cache-control-metadata.d.ts +5 -0
- package/dist/utils/cache-control-metadata.js +9 -1
- package/dist/utils/client-build-manifest.d.ts +4 -1
- package/dist/utils/client-build-manifest.js +9 -2
- package/dist/utils/client-entry-manifest.d.ts +13 -0
- package/dist/utils/client-entry-manifest.js +20 -1
- package/dist/utils/client-reference-chunks.d.ts +45 -0
- package/dist/utils/client-reference-chunks.js +30 -0
- package/dist/utils/client-runtime-metadata.d.ts +9 -1
- package/dist/utils/client-runtime-metadata.js +40 -9
- package/dist/utils/compare.d.ts +9 -0
- package/dist/utils/compare.js +15 -1
- package/dist/utils/lazy-chunks.d.ts +14 -0
- package/dist/utils/lazy-chunks.js +27 -1
- package/dist/utils/middleware-request-headers.d.ts +2 -1
- package/dist/utils/project.d.ts +4 -3
- package/dist/utils/project.js +12 -17
- package/dist/utils/query.d.ts +2 -1
- package/dist/utils/regex.d.ts +5 -0
- package/dist/utils/regex.js +11 -1
- package/dist/utils/text-stream.d.ts +10 -5
- package/dist/utils/text-stream.js +6 -6
- package/dist/utils/vite-cli-invocation.d.ts +2 -1
- package/package.json +6 -5
- package/dist/build/layout-classification-types.d.ts +0 -60
- package/dist/build/layout-classification-types.js +0 -1
- package/dist/build/layout-classification.d.ts +0 -61
- package/dist/build/layout-classification.js +0 -98
- package/dist/build/route-classification-injector.d.ts +0 -32
- package/dist/build/route-classification-injector.js +0 -59
- package/dist/build/route-classification-manifest.d.ts +0 -53
- package/dist/build/route-classification-manifest.js +0 -143
- package/dist/deps/.pnpm/image-size@2.0.2/deps/image-size/dist/index.js +0 -808
- package/dist/server/app-browser-client-reuse-manifest.d.ts +0 -10
- package/dist/server/app-browser-client-reuse-manifest.js +0 -101
- package/dist/server/app-layout-param-observation.d.ts +0 -41
- package/dist/server/app-layout-param-observation.js +0 -168
- package/dist/server/client-reuse-manifest.d.ts +0 -102
- package/dist/server/client-reuse-manifest.js +0 -209
- package/dist/server/default-not-found-module.d.ts +0 -19
- package/dist/server/default-not-found-module.js +0 -18
- package/dist/server/rsc-stream-hints.d.ts +0 -21
- package/dist/server/rsc-stream-hints.js +0 -227
- package/dist/server/skip-cache-proof.d.ts +0 -60
- package/dist/server/skip-cache-proof.js +0 -168
- package/dist/server/static-layout-client-reuse-proof.d.ts +0 -13
- package/dist/server/static-layout-client-reuse-proof.js +0 -33
- package/dist/utils/sorted-array.d.ts +0 -7
- 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
|
-
|
|
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
|
-
|
|
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.
|
|
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
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
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
|
-
|
|
183
|
-
|
|
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
|
-
|
|
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
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
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
|
-
|
|
225
|
-
|
|
291
|
+
routeSegments,
|
|
292
|
+
segments
|
|
226
293
|
};
|
|
227
294
|
}
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
const
|
|
231
|
-
const
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
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
|
-
|
|
254
|
-
|
|
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 ?
|
|
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
|
-
|
|
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
|
|
329
|
-
const
|
|
330
|
-
|
|
331
|
-
const
|
|
332
|
-
const
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
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 =
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
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(...
|
|
366
|
-
|
|
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 =
|
|
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 };
|