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
|
@@ -3,8 +3,7 @@ import { AppElements } from "./app-elements-wire.js";
|
|
|
3
3
|
import "./app-elements.js";
|
|
4
4
|
import { AppRscRenderMode } from "./app-rsc-render-mode.js";
|
|
5
5
|
import { AppPageParams } from "./app-page-boundary.js";
|
|
6
|
-
import { ApplyAppPageFileBasedMetadata } from "./app-page-head.js";
|
|
7
|
-
import { AppLayoutParamAccessTracker } from "./app-layout-param-observation.js";
|
|
6
|
+
import { AppPagePreparedRouteHead, ApplyAppPageFileBasedMetadata } from "./app-page-head.js";
|
|
8
7
|
import { AppPageSemanticSegment } from "./app-page-segment-state.js";
|
|
9
8
|
import { AppPageErrorModule, AppPageModule, AppPageRouteWiringRoute } from "./app-page-route-wiring.js";
|
|
10
9
|
//#region src/server/app-page-element-builder.d.ts
|
|
@@ -31,6 +30,14 @@ export type AppPageInterceptOptions<TModule extends AppPageModule = AppPageModul
|
|
|
31
30
|
interceptNotFoundBranchSegments?: readonly string[] | null;
|
|
32
31
|
interceptNotFound?: TModule | null;
|
|
33
32
|
interceptNotFoundTreePosition?: number | null;
|
|
33
|
+
interceptForbiddens?: readonly (TModule | null | undefined)[] | null;
|
|
34
|
+
interceptForbiddenTreePositions?: readonly number[] | null;
|
|
35
|
+
interceptUnauthorizeds?: readonly (TModule | null | undefined)[] | null;
|
|
36
|
+
interceptUnauthorizedTreePositions?: readonly number[] | null;
|
|
37
|
+
interceptErrors?: readonly (AppPageErrorModule | null | undefined)[] | null;
|
|
38
|
+
interceptErrorTreePositions?: readonly number[] | null;
|
|
39
|
+
interceptNotFounds?: readonly (TModule | null | undefined)[] | null;
|
|
40
|
+
interceptNotFoundTreePositions?: readonly number[] | null;
|
|
34
41
|
interceptPage?: TModule | null;
|
|
35
42
|
interceptParams?: AppPageParams | null;
|
|
36
43
|
interceptSlotId?: string | null;
|
|
@@ -57,6 +64,10 @@ export type AppPagePageRequest<TModule extends AppPageModule = AppPageModule> =
|
|
|
57
64
|
observePageSearchParamsAccess?: boolean;
|
|
58
65
|
/** The route is `dynamic = "force-static"`, so pages read an empty query. */
|
|
59
66
|
isForceStatic?: boolean;
|
|
67
|
+
/** The render can never be stored (see buildAppPageElements). */
|
|
68
|
+
isUncacheableRender?: boolean;
|
|
69
|
+
/** Layouts the navigating client holds (see buildAppPageElements). */
|
|
70
|
+
mountedLayouts?: ReadonlySet<string> | null;
|
|
60
71
|
/** Observe page metadata `searchParams` access for cache-safety classification. */
|
|
61
72
|
observeMetadataSearchParamsAccess?: boolean;
|
|
62
73
|
/** Whether generated metadata may stream into the response body. */
|
|
@@ -70,6 +81,12 @@ export type AppPagePageRequest<TModule extends AppPageModule = AppPageModule> =
|
|
|
70
81
|
placeStreamedMetadataInHead?: boolean;
|
|
71
82
|
/** Whether streamed render errors must be sanitized for client transport. */
|
|
72
83
|
isProduction?: boolean;
|
|
84
|
+
/**
|
|
85
|
+
* Receives the route's head once this render starts resolving it, so a
|
|
86
|
+
* special-error fallback after the render can reuse it rather than calling
|
|
87
|
+
* generateMetadata() again.
|
|
88
|
+
*/
|
|
89
|
+
onHeadPrepared?: (head: AppPagePreparedRouteHead) => void;
|
|
73
90
|
};
|
|
74
91
|
export type BuildPageElementsOptions<TModule extends AppPageModule = AppPageModule, TErrorModule extends AppPageErrorModule = AppPageErrorModule> = {
|
|
75
92
|
applyFileBasedMetadata?: ApplyAppPageFileBasedMetadata;
|
|
@@ -88,7 +105,6 @@ export type BuildPageElementsOptions<TModule extends AppPageModule = AppPageModu
|
|
|
88
105
|
rootUnauthorizedModule?: TModule | null;
|
|
89
106
|
/** File-based metadata routes (favicon, manifest, sitemap, etc.). */
|
|
90
107
|
metadataRoutes: readonly MetadataFileRoute[];
|
|
91
|
-
layoutParamAccess?: AppLayoutParamAccessTracker;
|
|
92
108
|
/**
|
|
93
109
|
* Configured next.config `basePath`. Threaded through `resolveAppPageHead`
|
|
94
110
|
* so file-based metadata route URLs emitted in <head> are prefixed.
|
|
@@ -1,28 +1,75 @@
|
|
|
1
1
|
import { isPromiseLike } from "../utils/promise.js";
|
|
2
2
|
import { APP_RSC_RENDER_MODE_NAVIGATION } from "./app-rsc-render-mode.js";
|
|
3
3
|
import { matchRoutePattern } from "../routing/route-pattern.js";
|
|
4
|
-
import { createAppPageRenderDependency, invokeAppComponent, isAppClientReference, isAppRenderSuspension, isReactOwnedAppComponent, renderAfterAppDependencies } from "./app-render-dependency.js";
|
|
5
4
|
import { AppElementsWire } from "./app-elements-wire.js";
|
|
6
5
|
import "./app-elements.js";
|
|
6
|
+
import { APP_PAGE_SEGMENT_KEY, isAppPageRouteGroupSegment, resolveAppPagePatternStateKey, resolveAppPageRouteStateKey } from "./app-page-segment-state.js";
|
|
7
|
+
import { ErrorBoundary, ForbiddenBoundary, NotFoundBoundary, UnauthorizedBoundary } from "../shims/error-boundary.js";
|
|
7
8
|
import { withUseCacheLayoutMarker, withUseCachePageMarker } from "../shims/internal/app-page-props-cache-key.js";
|
|
8
9
|
import { makeThenableParams } from "../shims/thenable-params.js";
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
10
|
+
import { tagAppPagePageError, tagAppPageSlotError } from "./app-page-execution.js";
|
|
11
|
+
import { createAppPageMetadataSearchParamsObserver, makeObservedAppPageSearchParamsThenable } from "./app-page-search-params-observation.js";
|
|
12
|
+
import { resolveAppPageBranchParams } from "./app-page-params.js";
|
|
13
|
+
import { collectAppPageSearchParams, hasAppPageDynamicMetadata, prepareAppPageHead, resolveActiveParallelRouteHeadInputs, resolveInterceptLayoutsBesidePage, slotInterceptKeepsSourceHead } from "./app-page-head.js";
|
|
14
|
+
import { createRouteNotFoundHeadPlanOptions, recoverAppPageRouteHead } from "./app-page-http-access-fallback-metadata.js";
|
|
15
|
+
import { ClientPageRoot } from "../shims/client-page-root.js";
|
|
16
|
+
import "./app-rsc-route-matching.js";
|
|
17
|
+
import { createAppPageRenderDependency, invokeAppComponent, isAppClientReference, isAppRenderSuspension, isReactOwnedAppComponent, renderAfterAppDependencies } from "./app-render-dependency.js";
|
|
12
18
|
import { sanitizeErrorForClient } from "./app-rsc-errors.js";
|
|
13
19
|
import { resolveAppPageModuleTraceSegment, traceCreateComponentTree, traceGetLayoutOrPageModule } from "./app-page-tracing.js";
|
|
14
20
|
import { buildAppPageElements, createAppPageSourcePage, createAppPageTreePath, resolveAppPageLoadingModuleAtOrAbove } from "./app-page-route-wiring.js";
|
|
15
|
-
import { collectAppPageSearchParams, hasAppPageDynamicMetadata, prepareAppPageHead, resolveActiveParallelRouteHeadInputs } from "./app-page-head.js";
|
|
16
|
-
import { resolveHttpAccessFallbackMetadata, resolveHttpAccessFallbackViewport } from "./app-page-http-access-fallback-metadata.js";
|
|
17
|
-
import { ClientPageRoot } from "../shims/client-page-root.js";
|
|
18
|
-
import "./app-rsc-route-matching.js";
|
|
19
|
-
import { resolveAppPageParentHttpAccessBoundary } from "./app-page-boundary.js";
|
|
20
21
|
import { DEFAULT_GLOBAL_ERROR_MODULE } from "./default-global-error-module.js";
|
|
21
22
|
import { createAppPageRenderIdentity } from "./app-page-render-identity.js";
|
|
22
|
-
import { createAppPageSearchParamsObserver, makeObservedAppPageSearchParamsThenable } from "./app-page-search-params-observation.js";
|
|
23
23
|
import { shouldServeStreamingMetadata } from "./streaming-metadata.js";
|
|
24
|
-
import { Suspense, cache, createElement } from "react";
|
|
24
|
+
import { Fragment, Suspense, cache, createElement } from "react";
|
|
25
25
|
//#region src/server/app-page-element-builder.ts
|
|
26
|
+
/**
|
|
27
|
+
* A sibling intercepting page that renders beside its intercepting layouts,
|
|
28
|
+
* as Next.js renders each segment. The source route's layouts wait for the
|
|
29
|
+
* page, so `Starter` invokes it ahead of the layouts, even when one of them
|
|
30
|
+
* never renders its children, and `Outlet` renders its result where the
|
|
31
|
+
* innermost layout renders its children.
|
|
32
|
+
*/
|
|
33
|
+
function createSiblingInterceptPageSlot(invokePage, releaseRenderDependency) {
|
|
34
|
+
let outcome = null;
|
|
35
|
+
function Starter() {
|
|
36
|
+
try {
|
|
37
|
+
const result = invokePage();
|
|
38
|
+
if (isPromiseLike(result)) Promise.resolve(result).catch(() => {});
|
|
39
|
+
outcome = { result };
|
|
40
|
+
} catch (error) {
|
|
41
|
+
if (!isAppRenderSuspension(error)) outcome = { error };
|
|
42
|
+
else {
|
|
43
|
+
Promise.resolve().then(releaseRenderDependency);
|
|
44
|
+
outcome = { suspended: true };
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
function readOutcome(current) {
|
|
50
|
+
if ("error" in current) throw current.error;
|
|
51
|
+
return "result" in current ? current.result : invokePage();
|
|
52
|
+
}
|
|
53
|
+
function Outlet() {
|
|
54
|
+
return outcome ? readOutcome(outcome) : invokePage();
|
|
55
|
+
}
|
|
56
|
+
return {
|
|
57
|
+
Outlet,
|
|
58
|
+
Starter
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
/** How many leading layouts two branches of one slot have in common. */
|
|
62
|
+
function countSharedLeadingLayouts(visibleLayouts, hiddenLayouts) {
|
|
63
|
+
const visible = visibleLayouts ?? [];
|
|
64
|
+
const hidden = hiddenLayouts ?? [];
|
|
65
|
+
let count = 0;
|
|
66
|
+
while (count < visible.length && count < hidden.length && visible[count] === hidden[count]) count++;
|
|
67
|
+
return count;
|
|
68
|
+
}
|
|
69
|
+
async function AppPageInterceptMetadataOutlet(props) {
|
|
70
|
+
return props.resolveHead().interceptOutlet;
|
|
71
|
+
}
|
|
72
|
+
AppPageInterceptMetadataOutlet.displayName = "Vinext.InterceptMetadataOutlet";
|
|
26
73
|
function resolveInterceptLayoutParams(branchSegments, layoutSegments, params) {
|
|
27
74
|
return resolveAppPageBranchParams(branchSegments, layoutSegments.length, params, layoutSegments);
|
|
28
75
|
}
|
|
@@ -60,7 +107,7 @@ function traceAppPageInterceptLayoutModules(modules, branchSegments, layoutSegme
|
|
|
60
107
|
async function buildPageElements(options) {
|
|
61
108
|
const { route, params, routePath, displayPathname = routePath, pageRequest, globalErrorModule, rootNotFoundModule, rootForbiddenModule, rootUnauthorizedModule, metadataRoutes } = options;
|
|
62
109
|
const slotParamOverrides = resolveSlotParamOverrides(route, routePath);
|
|
63
|
-
const { opts, searchParams, isRscRequest, mountedSlotsHeader, renderMode = APP_RSC_RENDER_MODE_NAVIGATION, observeMetadataSearchParamsAccess = false, observePageSearchParamsAccess = false, isForceStatic = false, serveStreamingMetadata, placeStreamedMetadataInHead = false, isProduction = process.env.NODE_ENV === "production" } = pageRequest;
|
|
110
|
+
const { opts, searchParams, isRscRequest, mountedSlotsHeader, renderMode = APP_RSC_RENDER_MODE_NAVIGATION, observeMetadataSearchParamsAccess = false, observePageSearchParamsAccess = false, isForceStatic = false, isUncacheableRender = false, mountedLayouts = null, serveStreamingMetadata, placeStreamedMetadataInHead = false, isProduction = process.env.NODE_ENV === "production", onHeadPrepared } = pageRequest;
|
|
64
111
|
const pageModule = route.page;
|
|
65
112
|
const isSiblingIntercept = opts?.interceptSlotKey === "__vinext_page_intercept" && !!opts?.interceptPage;
|
|
66
113
|
const effectivePageModule = isSiblingIntercept ? opts.interceptPage : pageModule;
|
|
@@ -127,6 +174,7 @@ async function buildPageElements(options) {
|
|
|
127
174
|
head: {
|
|
128
175
|
layoutModules: opts?.interceptLayouts ?? [],
|
|
129
176
|
layoutParams: (opts?.interceptLayoutSegments ?? []).map((segments) => resolveInterceptLayoutParams(opts?.interceptBranchSegments ?? segments, segments, effectiveParams)),
|
|
177
|
+
layoutsBesidePage: resolveInterceptLayoutsBesidePage(opts?.interceptLayoutSegments, opts?.interceptBranchSegments),
|
|
130
178
|
pageModule: effectivePageModule ?? null,
|
|
131
179
|
params: effectiveParams,
|
|
132
180
|
routeSegments: opts?.interceptSourcePageSegments ?? route.routeSegments ?? []
|
|
@@ -138,14 +186,39 @@ async function buildPageElements(options) {
|
|
|
138
186
|
} : {},
|
|
139
187
|
ownerTreePosition: route.routeSegments?.length ?? 0
|
|
140
188
|
} : null;
|
|
141
|
-
const
|
|
142
|
-
const
|
|
189
|
+
const interceptSlotKey = opts?.interceptPage != null && !isSiblingIntercept ? opts?.interceptSlotKey ?? null : null;
|
|
190
|
+
const sourceParallelRouteInputs = interceptSlotKey ? resolveActiveParallelRouteHeadInputs({
|
|
191
|
+
layoutTreePositions: route.layoutTreePositions,
|
|
192
|
+
params,
|
|
193
|
+
routeSegments: route.routeSegments ?? [],
|
|
194
|
+
slotParams: slotParamOverrides,
|
|
195
|
+
slots: route.slots ?? null
|
|
196
|
+
}) : null;
|
|
197
|
+
const keepsSourceHead = interceptSlotKey !== null && sourceParallelRouteInputs !== null && slotInterceptKeepsSourceHead({
|
|
198
|
+
interceptSlotKey,
|
|
199
|
+
route,
|
|
200
|
+
sourceParallelRoutes: sourceParallelRouteInputs
|
|
201
|
+
});
|
|
202
|
+
const headParallelRouteInputs = keepsSourceHead && sourceParallelRouteInputs ? sourceParallelRouteInputs : activeParallelRouteHeadInputs;
|
|
203
|
+
const parallelRoutes = [...primaryParallelRouteHeadInput ? [primaryParallelRouteHeadInput.head] : [], ...headParallelRouteInputs.map((input) => input.head)];
|
|
204
|
+
const interceptHeadInput = keepsSourceHead && interceptSlotKey ? activeParallelRouteHeadInputs.find((input) => input.slotKey === interceptSlotKey) : void 0;
|
|
205
|
+
const interceptSlotIndex = interceptHeadInput ? headParallelRouteInputs.findIndex((input) => input.slotKey === interceptSlotKey) : -1;
|
|
206
|
+
const hiddenParallelRoutes = interceptHeadInput ? [{
|
|
207
|
+
parallelRouteIndex: interceptSlotIndex === -1 ? -1 : interceptSlotIndex + (primaryParallelRouteHeadInput ? 1 : 0),
|
|
208
|
+
route: interceptHeadInput.head,
|
|
209
|
+
sharedLayoutCount: interceptSlotIndex === -1 ? 0 : countSharedLeadingLayouts(headParallelRouteInputs[interceptSlotIndex].head.layoutModules, interceptHeadInput.head.layoutModules)
|
|
210
|
+
}] : null;
|
|
211
|
+
const outletSlotIndex = interceptSlotKey !== null && !keepsSourceHead ? headParallelRouteInputs.findIndex((input) => input.slotKey === interceptSlotKey) : -1;
|
|
212
|
+
const outletParallelRouteIndex = outletSlotIndex === -1 ? null : outletSlotIndex + (primaryParallelRouteHeadInput ? 1 : 0);
|
|
213
|
+
const metadataSearchParamsObserver = createAppPageMetadataSearchParamsObserver(observeMetadataSearchParamsAccess);
|
|
143
214
|
const headOptions = {
|
|
144
215
|
applyFileBasedMetadata: options.applyFileBasedMetadata,
|
|
145
216
|
basePath: options.basePath ?? "",
|
|
217
|
+
hiddenParallelRoutes,
|
|
146
218
|
layoutModules: route.layouts,
|
|
147
219
|
layoutTreePositions: route.layoutTreePositions,
|
|
148
220
|
metadataRoutes,
|
|
221
|
+
outletParallelRouteIndex,
|
|
149
222
|
pageModule: isSiblingIntercept ? null : effectivePageModule ?? null,
|
|
150
223
|
parallelRoutes,
|
|
151
224
|
params: effectiveParams,
|
|
@@ -158,54 +231,38 @@ async function buildPageElements(options) {
|
|
|
158
231
|
const { pageSearchParams } = collectAppPageSearchParams(searchParams);
|
|
159
232
|
const streamGeneratedHead = serveStreamingMetadata ?? shouldServeStreamingMetadata(pageRequest.request.headers.get("user-agent") ?? "", options.htmlLimitedBots);
|
|
160
233
|
const metadataPlacement = hasDynamicMetadata && streamGeneratedHead && !placeStreamedMetadataInHead ? "body" : "head";
|
|
161
|
-
const
|
|
162
|
-
|
|
163
|
-
const
|
|
164
|
-
|
|
165
|
-
rootForbiddenModule,
|
|
166
|
-
rootNotFoundModule,
|
|
167
|
-
rootUnauthorizedModule,
|
|
168
|
-
routeForbiddenModules: route.forbiddens,
|
|
169
|
-
routeNotFoundModules: route.notFounds,
|
|
170
|
-
routeUnauthorizedModules: route.unauthorizeds,
|
|
171
|
-
statusCode: 404
|
|
172
|
-
});
|
|
173
|
-
const boundaryModule = routeBoundaryModule ?? parentBoundary.module;
|
|
174
|
-
const boundaryTreePosition = routeBoundaryModule ? route.notFoundTreePosition : parentBoundary.layoutIndex === null ? null : route.layoutTreePositions?.[parentBoundary.layoutIndex];
|
|
175
|
-
return {
|
|
176
|
-
boundaryModule,
|
|
177
|
-
boundaryParams: boundaryModule && boundaryTreePosition != null ? resolveAppPageSegmentParams(route.routeSegments ?? [], boundaryTreePosition, effectiveParams) : {},
|
|
178
|
-
boundaryRouteSegments: (route.routeSegments ?? []).slice(0, boundaryTreePosition ?? 0),
|
|
179
|
-
errorConvention: "not-found",
|
|
180
|
-
layoutModules: route.layouts,
|
|
181
|
-
layoutTreePositions: route.layoutTreePositions,
|
|
182
|
-
parallelBranches: activeParallelRouteHeadInputs,
|
|
183
|
-
params: effectiveParams,
|
|
184
|
-
primaryParallelBranch: primaryParallelRouteHeadInput,
|
|
185
|
-
routeSegments: route.routeSegments ?? null
|
|
186
|
-
};
|
|
187
|
-
};
|
|
188
|
-
const resolveMetadataErrorTags = async (error) => {
|
|
189
|
-
if (resolveAppPageSpecialError(error)?.kind !== "http-access-fallback") return null;
|
|
190
|
-
return resolveHttpAccessFallbackMetadata({
|
|
234
|
+
const toClientError = (error) => isProduction ? sanitizeErrorForClient(error, "production") : error;
|
|
235
|
+
const resolveHead = cache(() => {
|
|
236
|
+
const preparedHead = prepareAppPageHead(headOptions);
|
|
237
|
+
const recoveredHead = recoverAppPageRouteHead(preparedHead, {
|
|
191
238
|
applyFileBasedMetadata: options.applyFileBasedMetadata,
|
|
192
239
|
basePath: options.basePath ?? "",
|
|
193
|
-
...resolveNotFoundFallbackPlanOptions(),
|
|
194
240
|
metadataRoutes,
|
|
241
|
+
resolvePlanOptions: () => createRouteNotFoundHeadPlanOptions({
|
|
242
|
+
parallelBranches: headParallelRouteInputs,
|
|
243
|
+
params: effectiveParams,
|
|
244
|
+
primaryParallelBranch: primaryParallelRouteHeadInput,
|
|
245
|
+
rootNotFoundModule,
|
|
246
|
+
route
|
|
247
|
+
}),
|
|
195
248
|
routePath: route.pattern
|
|
196
|
-
})
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
const outlet =
|
|
249
|
+
});
|
|
250
|
+
onHeadPrepared?.({
|
|
251
|
+
...recoveredHead,
|
|
252
|
+
metadataPlacement
|
|
253
|
+
});
|
|
254
|
+
const outlet = preparedHead.routeErrors.then(null, (error) => {
|
|
202
255
|
throw toClientError(error);
|
|
203
256
|
});
|
|
204
257
|
outlet.catch(() => null);
|
|
258
|
+
const interceptOutlet = preparedHead.hiddenErrors.then(null, (error) => {
|
|
259
|
+
throw toClientError(error);
|
|
260
|
+
});
|
|
261
|
+
interceptOutlet.catch(() => null);
|
|
205
262
|
return {
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
263
|
+
...recoveredHead,
|
|
264
|
+
interceptOutlet,
|
|
265
|
+
outlet
|
|
209
266
|
};
|
|
210
267
|
});
|
|
211
268
|
const pageProps = { params: makeThenableParams(effectiveParams) };
|
|
@@ -217,7 +274,7 @@ async function buildPageElements(options) {
|
|
|
217
274
|
}, pageTreePosition) !== null;
|
|
218
275
|
const hasEmptyClientPageSearchParams = isForceStatic || isProduction && process.env.__NEXT_CONFIG_OUTPUT === "export";
|
|
219
276
|
const pageRenderDependency = EffectivePageComponent && !isReactOwnedAppComponent(EffectivePageComponent) ? createAppPageRenderDependency() : null;
|
|
220
|
-
const createPageElement = (PageComponent, props, renderDependency) => {
|
|
277
|
+
const createPageElement = (PageComponent, props, renderDependency, tagError) => {
|
|
221
278
|
if (searchParams && isAppClientReference(PageComponent)) {
|
|
222
279
|
const { searchParams: _slotSearchParams, ...pageProps } = props;
|
|
223
280
|
return createElement(ClientPageRoot, {
|
|
@@ -231,14 +288,19 @@ async function buildPageElements(options) {
|
|
|
231
288
|
if (searchParams) invocationProps.searchParams = observePageSearchParamsAccess ? makeObservedAppPageSearchParamsThenable(pageSearchParams) : makeThenableParams(pageSearchParams);
|
|
232
289
|
return createElement(PageComponent, withUseCachePageMarker(PageComponent, invocationProps));
|
|
233
290
|
}
|
|
291
|
+
return createElement(createPageInvoker(PageComponent, props, renderDependency, tagError));
|
|
292
|
+
};
|
|
293
|
+
const createPageInvoker = (PageComponent, props, renderDependency, tagError) => {
|
|
234
294
|
const PageInvoker = () => {
|
|
235
295
|
const invocationProps = { ...props };
|
|
236
296
|
if (searchParams) invocationProps.searchParams = observePageSearchParamsAccess ? makeObservedAppPageSearchParamsThenable(pageSearchParams) : makeThenableParams(pageSearchParams);
|
|
237
297
|
try {
|
|
238
|
-
const result = invokeAppComponent(PageComponent, withUseCachePageMarker(PageComponent, invocationProps));
|
|
298
|
+
const result = invokeAppComponent(PageComponent, withUseCachePageMarker(PageComponent, invocationProps), tagError);
|
|
239
299
|
if (isPromiseLike(result)) {
|
|
240
300
|
if (renderDependency) Promise.resolve().then(() => renderDependency.release());
|
|
241
|
-
return Promise.resolve(result).then((resolvedResult) => renderDependency ? renderAfterAppDependencies(resolvedResult, renderDependency.resultDependencies) : resolvedResult)
|
|
301
|
+
return Promise.resolve(result).then((resolvedResult) => renderDependency ? renderAfterAppDependencies(resolvedResult, renderDependency.resultDependencies) : resolvedResult, tagError === void 0 ? void 0 : (error) => {
|
|
302
|
+
throw tagError(error);
|
|
303
|
+
});
|
|
242
304
|
}
|
|
243
305
|
renderDependency?.release();
|
|
244
306
|
return renderDependency ? renderAfterAppDependencies(result, renderDependency.resultDependencies) : result;
|
|
@@ -248,17 +310,21 @@ async function buildPageElements(options) {
|
|
|
248
310
|
throw error;
|
|
249
311
|
}
|
|
250
312
|
renderDependency?.release();
|
|
251
|
-
throw error;
|
|
313
|
+
throw tagError === void 0 ? error : tagError(error);
|
|
252
314
|
}
|
|
253
315
|
};
|
|
254
|
-
return
|
|
316
|
+
return PageInvoker;
|
|
255
317
|
};
|
|
256
318
|
const pageSearchParamsThenable = searchParams ? makeThenableParams(pageSearchParams) : void 0;
|
|
257
319
|
const mountedSlotIds = mountedSlotsHeader ? new Set(mountedSlotsHeader.split(" ")) : null;
|
|
258
|
-
const slotOverrides = buildSlotOverrides(route, params, routePath, opts)
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
320
|
+
const slotOverrides = buildSlotOverrides(route, params, routePath, opts, hiddenParallelRoutes || outletParallelRouteIndex !== null ? (() => {
|
|
321
|
+
const outlet = createElement(AppPageInterceptMetadataOutlet, { resolveHead });
|
|
322
|
+
return streamGeneratedHead ? createElement(Suspense, { fallback: null }, outlet) : outlet;
|
|
323
|
+
})() : null);
|
|
324
|
+
const createSiblingInterceptElement = (metadataOutlet) => {
|
|
325
|
+
if (!isSiblingIntercept || !EffectivePageComponent) return null;
|
|
326
|
+
const pageSlot = pageRenderDependency && opts?.interceptLayouts?.some((layoutModule) => layoutModule?.default) ? createSiblingInterceptPageSlot(createPageInvoker(EffectivePageComponent, pageProps, pageRenderDependency), pageRenderDependency.release) : null;
|
|
327
|
+
let element = createElement(Fragment, null, pageSlot ? createElement(pageSlot.Outlet) : createPageElement(EffectivePageComponent, pageProps, pageRenderDependency), metadataOutlet);
|
|
262
328
|
const layoutIndexesByTreePosition = /* @__PURE__ */ new Map();
|
|
263
329
|
for (const [index, layoutModule] of (opts?.interceptLayouts ?? []).entries()) {
|
|
264
330
|
if (!layoutModule) continue;
|
|
@@ -273,12 +339,56 @@ async function buildPageElements(options) {
|
|
|
273
339
|
const treePosition = opts?.interceptLoadingTreePositions?.[index];
|
|
274
340
|
if (treePosition !== void 0) loadingIndexesByTreePosition.set(treePosition, index);
|
|
275
341
|
}
|
|
276
|
-
const
|
|
342
|
+
const notFoundsByTreePosition = /* @__PURE__ */ new Map();
|
|
343
|
+
for (const [index, notFoundModule] of (opts?.interceptNotFounds ?? []).entries()) {
|
|
344
|
+
const treePosition = opts?.interceptNotFoundTreePositions?.[index];
|
|
345
|
+
if (notFoundModule?.default && treePosition !== void 0) notFoundsByTreePosition.set(treePosition, notFoundModule.default);
|
|
346
|
+
}
|
|
347
|
+
const accessBoundaries = [...(opts?.interceptForbiddens ?? []).map((module, index) => [
|
|
348
|
+
module,
|
|
349
|
+
opts?.interceptForbiddenTreePositions?.[index],
|
|
350
|
+
ForbiddenBoundary
|
|
351
|
+
]), ...(opts?.interceptUnauthorizeds ?? []).map((module, index) => [
|
|
352
|
+
module,
|
|
353
|
+
opts?.interceptUnauthorizedTreePositions?.[index],
|
|
354
|
+
UnauthorizedBoundary
|
|
355
|
+
])];
|
|
356
|
+
const accessBoundaryTreePositions = accessBoundaries.flatMap(([module, treePosition]) => module?.default && treePosition != null ? [treePosition] : []);
|
|
357
|
+
const errorsByTreePosition = /* @__PURE__ */ new Map();
|
|
358
|
+
for (const [index, errorModule] of (opts?.interceptErrors ?? []).entries()) {
|
|
359
|
+
const treePosition = opts?.interceptErrorTreePositions?.[index];
|
|
360
|
+
if (errorModule?.default && treePosition !== void 0) errorsByTreePosition.set(treePosition, errorModule.default);
|
|
361
|
+
}
|
|
362
|
+
const treePositions = Array.from(/* @__PURE__ */ new Set([
|
|
363
|
+
...layoutIndexesByTreePosition.keys(),
|
|
364
|
+
...loadingIndexesByTreePosition.keys(),
|
|
365
|
+
...accessBoundaryTreePositions,
|
|
366
|
+
...notFoundsByTreePosition.keys(),
|
|
367
|
+
...errorsByTreePosition.keys()
|
|
368
|
+
])).sort((left, right) => left - right);
|
|
277
369
|
for (let index = treePositions.length - 1; index >= 0; index--) {
|
|
278
370
|
const treePosition = treePositions[index];
|
|
279
371
|
const loadingIndex = loadingIndexesByTreePosition.get(treePosition);
|
|
280
372
|
const LoadingComponent = loadingIndex === void 0 ? null : opts?.interceptLoadings?.[loadingIndex]?.default;
|
|
281
373
|
if (LoadingComponent) element = createElement(Suspense, { fallback: createElement(LoadingComponent) }, element);
|
|
374
|
+
const NotFoundComponent = notFoundsByTreePosition.get(treePosition);
|
|
375
|
+
if (NotFoundComponent) element = createElement(NotFoundBoundary, {
|
|
376
|
+
fallback: createElement(NotFoundComponent),
|
|
377
|
+
children: element
|
|
378
|
+
});
|
|
379
|
+
for (const [module, boundaryTreePosition, AccessBoundary] of accessBoundaries) {
|
|
380
|
+
const FallbackComponent = module?.default;
|
|
381
|
+
if (!FallbackComponent || boundaryTreePosition !== treePosition) continue;
|
|
382
|
+
element = createElement(AccessBoundary, {
|
|
383
|
+
fallback: createElement(FallbackComponent),
|
|
384
|
+
children: element
|
|
385
|
+
});
|
|
386
|
+
}
|
|
387
|
+
const ErrorComponent = errorsByTreePosition.get(treePosition);
|
|
388
|
+
if (ErrorComponent) element = createElement(ErrorBoundary, {
|
|
389
|
+
fallback: ErrorComponent,
|
|
390
|
+
children: element
|
|
391
|
+
});
|
|
282
392
|
const layoutIndexes = layoutIndexesByTreePosition.get(treePosition) ?? [];
|
|
283
393
|
for (let layoutOffset = layoutIndexes.length - 1; layoutOffset >= 0; layoutOffset--) {
|
|
284
394
|
const layoutIndex = layoutIndexes[layoutOffset];
|
|
@@ -291,18 +401,21 @@ async function buildPageElements(options) {
|
|
|
291
401
|
element = createElement(LayoutComponent, withUseCacheLayoutMarker(LayoutComponent, { params: makeThenableParams(interceptLayoutParams) }), element);
|
|
292
402
|
}
|
|
293
403
|
}
|
|
294
|
-
return element;
|
|
404
|
+
return pageSlot ? createElement(Fragment, null, createElement(pageSlot.Starter), element) : element;
|
|
295
405
|
};
|
|
296
406
|
return traceCreateComponentTree(() => {
|
|
297
407
|
if (effectivePageModule) traceGetLayoutOrPageModule(APP_PAGE_SEGMENT_KEY, () => effectivePageModule);
|
|
298
|
-
const siblingInterceptElement = createSiblingInterceptElement();
|
|
299
408
|
return buildAppPageElements({
|
|
300
|
-
element: isSiblingIntercept
|
|
301
|
-
|
|
409
|
+
element: !isSiblingIntercept && EffectivePageComponent ? createPageElement(EffectivePageComponent, pageProps, pageRenderDependency, tagAppPagePageError) : null,
|
|
410
|
+
renderElementWithMetadataOutlet: isSiblingIntercept && EffectivePageComponent ? createSiblingInterceptElement : null,
|
|
411
|
+
createPageElement(component, props, slotLayoutIndex, slotNotFoundBoundary) {
|
|
412
|
+
return createPageElement(component, props, null, slotLayoutIndex === void 0 ? void 0 : (error) => tagAppPageSlotError(error, slotLayoutIndex, slotNotFoundBoundary));
|
|
413
|
+
},
|
|
302
414
|
globalErrorModule: globalErrorModule ?? DEFAULT_GLOBAL_ERROR_MODULE,
|
|
303
415
|
isRscRequest,
|
|
416
|
+
isUncacheableRender,
|
|
304
417
|
interceptionId: opts?.interceptionId ?? null,
|
|
305
|
-
|
|
418
|
+
mountedLayouts,
|
|
306
419
|
mountedSlotIds,
|
|
307
420
|
makeThenableParams,
|
|
308
421
|
matchedParams: params,
|
|
@@ -342,18 +455,27 @@ async function buildPageElements(options) {
|
|
|
342
455
|
* RSC suffix removed). Re-parsing `request.url` here would re-introduce the
|
|
343
456
|
* basePath and silently break the match for any app that configures one.
|
|
344
457
|
*/
|
|
345
|
-
function buildSlotOverrides(route, routeParams, routePath, opts) {
|
|
458
|
+
function buildSlotOverrides(route, routeParams, routePath, opts, interceptMetadataOutlet) {
|
|
346
459
|
const overrides = {};
|
|
347
460
|
if (opts && opts.interceptSlotKey && opts.interceptPage && opts.interceptSlotKey !== "__vinext_page_intercept") overrides[opts.interceptSlotKey] = {
|
|
348
461
|
branchSegments: opts.interceptBranchSegments ?? null,
|
|
349
462
|
identitySegments: resolveInterceptedSlotIdentitySegments(opts.interceptSourcePageSegments, opts.interceptSlotKey),
|
|
463
|
+
forbiddenModules: opts.interceptForbiddens ?? null,
|
|
464
|
+
forbiddenTreePositions: opts.interceptForbiddenTreePositions ?? null,
|
|
350
465
|
layoutModules: opts.interceptLayouts || null,
|
|
351
466
|
layoutSegments: opts.interceptLayoutSegments ?? null,
|
|
352
467
|
loadingModules: opts.interceptLoadings || null,
|
|
353
468
|
loadingTreePositions: opts.interceptLoadingTreePositions ?? null,
|
|
469
|
+
metadataOutlet: interceptMetadataOutlet ?? null,
|
|
470
|
+
notFoundModules: opts.interceptNotFounds ?? null,
|
|
471
|
+
notFoundTreePositions: opts.interceptNotFoundTreePositions ?? null,
|
|
354
472
|
pageModule: opts.interceptPage,
|
|
355
473
|
params: opts.interceptParams || routeParams,
|
|
356
|
-
routeSegments: resolveInterceptedSlotSegments(opts.interceptSourcePageSegments, opts.interceptSlotKey)
|
|
474
|
+
routeSegments: resolveInterceptedSlotSegments(opts.interceptSourcePageSegments, opts.interceptSlotKey),
|
|
475
|
+
unauthorizedModules: opts.interceptUnauthorizeds ?? null,
|
|
476
|
+
unauthorizedTreePositions: opts.interceptUnauthorizedTreePositions ?? null,
|
|
477
|
+
errorModules: opts.interceptErrors ?? null,
|
|
478
|
+
errorTreePositions: opts.interceptErrorTreePositions ?? null
|
|
357
479
|
};
|
|
358
480
|
const slotParamOverrides = resolveSlotParamOverrides(route, routePath);
|
|
359
481
|
for (const [slotKey, params] of Object.entries(slotParamOverrides ?? {})) {
|
|
@@ -1,8 +1,13 @@
|
|
|
1
|
-
import { ClassificationReason } from "../build/layout-classification-types.js";
|
|
2
|
-
import { LayoutFlags } from "./app-elements-wire.js";
|
|
3
|
-
import "./app-elements.js";
|
|
4
1
|
//#region src/server/app-page-execution.d.ts
|
|
5
2
|
export declare function tagAppPageMetadataError<T>(error: T): T;
|
|
3
|
+
export declare function tagAppPageSlotError<T>(error: T, layoutIndex: number, notFoundBoundary?: string): T;
|
|
4
|
+
export declare function tagAppPagePageError<T>(error: T): T;
|
|
5
|
+
export declare function tagAppPageLayoutError<T>(error: T, layoutIndex: number): T;
|
|
6
|
+
/**
|
|
7
|
+
* The id of the not-found boundary that catches the route page's notFound():
|
|
8
|
+
* the page-level boundary, or the segment one it passes the signal up to.
|
|
9
|
+
*/
|
|
10
|
+
export declare const APP_PAGE_NOT_FOUND_BOUNDARY_ID = "page";
|
|
6
11
|
export type AppPageSpecialError = {
|
|
7
12
|
kind: "redirect";
|
|
8
13
|
location: string;
|
|
@@ -13,6 +18,19 @@ export type AppPageSpecialError = {
|
|
|
13
18
|
kind: "http-access-fallback";
|
|
14
19
|
statusCode: number;
|
|
15
20
|
fromMetadata?: boolean;
|
|
21
|
+
/** Set when a parallel slot threw it: the layout rendering the outermost such slot. */
|
|
22
|
+
slotLayoutIndex?: number;
|
|
23
|
+
/**
|
|
24
|
+
* Set when a route layout's own component threw it, above any slot that
|
|
25
|
+
* did: the outermost such layout, whose boundary above catches it.
|
|
26
|
+
*/
|
|
27
|
+
layoutIndex?: number;
|
|
28
|
+
/**
|
|
29
|
+
* Set when the render threw a copy nothing tagged: a server component
|
|
30
|
+
* that a layout, the page or a template renders. The document's
|
|
31
|
+
* fallback then finds out whether a layout's subtree threw it.
|
|
32
|
+
*/
|
|
33
|
+
unattributed?: boolean;
|
|
16
34
|
};
|
|
17
35
|
export type AppPageFontPreload = {
|
|
18
36
|
href: string;
|
|
@@ -79,50 +97,6 @@ type BuildAppPageSpecialErrorResponseOptions = {
|
|
|
79
97
|
serveStreamingMetadata?: boolean;
|
|
80
98
|
specialError: AppPageSpecialError;
|
|
81
99
|
};
|
|
82
|
-
type ProbeAppPageLayoutsResult = {
|
|
83
|
-
response: Response | null;
|
|
84
|
-
layoutFlags: LayoutFlags;
|
|
85
|
-
};
|
|
86
|
-
export type LayoutClassificationOptions = {
|
|
87
|
-
/** Build-time classifications from segment config or module graph, keyed by layout index. */
|
|
88
|
-
buildTimeClassifications?: ReadonlyMap<number, "static" | "dynamic"> | null;
|
|
89
|
-
/**
|
|
90
|
-
* Per-layout classification reasons keyed by layout index. Requires
|
|
91
|
-
* `VINEXT_DEBUG_CLASSIFICATION` at BOTH lifecycle points: at build time so
|
|
92
|
-
* the plugin patches the `__VINEXT_CLASS_REASONS` dispatch stub, and at
|
|
93
|
-
* runtime so the route object actually calls it. Setting the flag only at
|
|
94
|
-
* runtime leaves the stub returning `null`, and every build-time classified
|
|
95
|
-
* layout will fall through to `{ layer: "no-classifier" }` in the debug
|
|
96
|
-
* channel. The hot path never reads this and the wire payload is unchanged.
|
|
97
|
-
*/
|
|
98
|
-
buildTimeReasons?: ReadonlyMap<number, ClassificationReason> | null;
|
|
99
|
-
/**
|
|
100
|
-
* Emits one log line per layout with the classification reason, keyed by
|
|
101
|
-
* layout ID. Set by the generator when `VINEXT_DEBUG_CLASSIFICATION` is
|
|
102
|
-
* active. When undefined, the probe loop skips debug emission entirely.
|
|
103
|
-
*/
|
|
104
|
-
debugClassification?: (layoutId: string, reason: ClassificationReason) => void;
|
|
105
|
-
/** Maps layout index to its layout ID (e.g. "layout:/blog"). */
|
|
106
|
-
getLayoutId: (layoutIndex: number) => string;
|
|
107
|
-
/**
|
|
108
|
-
* Returns whether the completed per-layout observation makes static reuse
|
|
109
|
-
* unsafe even if the older dynamic scope did not report dynamic usage.
|
|
110
|
-
*/
|
|
111
|
-
isLayoutObservationDynamic?: (layoutId: string) => boolean;
|
|
112
|
-
/** Runs a function with isolated dynamic usage tracking per layout. */
|
|
113
|
-
runWithIsolatedDynamicScope: <T>(fn: () => T | Promise<T>) => Promise<{
|
|
114
|
-
result: T;
|
|
115
|
-
dynamicDetected: boolean;
|
|
116
|
-
}>;
|
|
117
|
-
};
|
|
118
|
-
type ProbeAppPageLayoutsOptions = {
|
|
119
|
-
layoutCount: number;
|
|
120
|
-
onLayoutError: (error: unknown, layoutIndex: number) => Promise<Response | null>;
|
|
121
|
-
probeLayoutAt: (layoutIndex: number) => unknown;
|
|
122
|
-
runWithSuppressedHookWarning<T>(probe: () => Promise<T>): Promise<T>;
|
|
123
|
-
/** When provided, enables per-layout static/dynamic classification. */
|
|
124
|
-
classification?: LayoutClassificationOptions | null;
|
|
125
|
-
};
|
|
126
100
|
export declare function resolveAppPageSpecialError(error: unknown): AppPageSpecialError | null;
|
|
127
101
|
/**
|
|
128
102
|
* Resolve the special error that rejected an SSR shell. An error from the RSC
|
|
@@ -130,9 +104,29 @@ export declare function resolveAppPageSpecialError(error: unknown): AppPageSpeci
|
|
|
130
104
|
* generateMetadata() threw it comes from the errors the RSC render threw with
|
|
131
105
|
* that digest. When the page threw one too, the page's decides. An error a
|
|
132
106
|
* client component threw during SSR is the page's, since generateMetadata()
|
|
133
|
-
* runs only in the RSC render.
|
|
107
|
+
* runs only in the RSC render. A notFound() / forbidden() / unauthorized()
|
|
108
|
+
* a parallel slot's page threw is caught above the layout rendering it,
|
|
109
|
+
* unless the slot's own not-found catches its notFound() and every other copy
|
|
110
|
+
* is the page's or another slot's. One a route layout threw is caught above
|
|
111
|
+
* that layout, and the outermost such layout wins. A copy nothing tagged,
|
|
112
|
+
* such as a template's or one from a component a layout or the page renders,
|
|
113
|
+
* marks the error unattributed.
|
|
134
114
|
*/
|
|
135
115
|
export declare function resolveAppPageShellSpecialError(error: unknown, renderedSpecialErrors: readonly unknown[]): AppPageSpecialError | null;
|
|
116
|
+
/**
|
|
117
|
+
* The parallel slot not-found boundaries that catch the `notFound()` that
|
|
118
|
+
* rejected an SSR shell, or null when any copy the RSC render threw isn't
|
|
119
|
+
* caught inside its slot. On the client, each slot's own not-found boundary
|
|
120
|
+
* catches its signal while the rest of the route renders, as in Next.js,
|
|
121
|
+
* which sends an empty error shell and renders them in the browser. A copy
|
|
122
|
+
* no slot threw is caught by the page's boundary beside them when the page
|
|
123
|
+
* threw it, including from a component the page renders, which nothing tags.
|
|
124
|
+
* One a layout or a template threw renders outside the caught boundaries, so
|
|
125
|
+
* the document's render from the same payload throws it again and takes the
|
|
126
|
+
* fallback, which keeps it above the slot's layout (see
|
|
127
|
+
* `resolveAppPageShellSpecialError`). Without a slot's, that fallback renders.
|
|
128
|
+
*/
|
|
129
|
+
export declare function resolveAppPageCaughtNotFoundBoundaries(error: unknown, renderedSpecialErrors: readonly unknown[]): readonly string[] | null;
|
|
136
130
|
/**
|
|
137
131
|
* The response headers stored with a page's special-error entries: a
|
|
138
132
|
* redirect's own `location`, not the response's, which middleware may have
|
|
@@ -140,11 +134,9 @@ export declare function resolveAppPageShellSpecialError(error: unknown, rendered
|
|
|
140
134
|
*/
|
|
141
135
|
export declare function resolveAppPageSpecialErrorStoredHeaders(specialError: AppPageSpecialError, basePath: string | undefined): Record<string, string> | undefined;
|
|
142
136
|
export declare function buildAppPageSpecialErrorResponse(options: BuildAppPageSpecialErrorResponseOptions): Promise<Response>;
|
|
143
|
-
/** See `LayoutFlags` type docblock in app-elements.ts for lifecycle. */
|
|
144
|
-
export declare function probeAppPageLayouts(options: ProbeAppPageLayoutsOptions): Promise<ProbeAppPageLayoutsResult>;
|
|
145
137
|
export declare function readAppPageBinaryStream(stream: ReadableStream<Uint8Array>): Promise<ArrayBuffer>;
|
|
146
138
|
export declare function bufferAppPageBinaryStream(stream: ReadableStream<Uint8Array>): Promise<ReadableStream<Uint8Array>>;
|
|
147
139
|
export declare function teeAppPageRscStreamForCapture(stream: ReadableStream<Uint8Array>, shouldCapture: boolean): AppPageRscStreamCapture;
|
|
148
140
|
export declare function buildAppPageFontLinkHeader(preloads: readonly AppPageFontPreload[] | null | undefined): string;
|
|
149
141
|
//#endregion
|
|
150
|
-
export
|
|
142
|
+
export {};
|