@qzsy/vinext 0.1.7
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/LICENSE +21 -0
- package/README.md +773 -0
- package/dist/build/assets-ignore.d.ts +32 -0
- package/dist/build/assets-ignore.js +48 -0
- package/dist/build/clean-output.d.ts +13 -0
- package/dist/build/clean-output.js +34 -0
- package/dist/build/client-build-config.d.ts +171 -0
- package/dist/build/client-build-config.js +270 -0
- package/dist/build/css-url-assets.d.ts +29 -0
- package/dist/build/css-url-assets.js +213 -0
- package/dist/build/google-fonts/build-url.d.ts +9 -0
- package/dist/build/google-fonts/build-url.js +28 -0
- package/dist/build/google-fonts/fallback-metrics-data.js +14029 -0
- package/dist/build/google-fonts/fallback-metrics.d.ts +12 -0
- package/dist/build/google-fonts/fallback-metrics.js +44 -0
- package/dist/build/google-fonts/find-font-files-in-css.d.ts +16 -0
- package/dist/build/google-fonts/find-font-files-in-css.js +28 -0
- package/dist/build/google-fonts/font-data.js +24983 -0
- package/dist/build/google-fonts/font-metadata.d.ts +16 -0
- package/dist/build/google-fonts/font-metadata.js +5 -0
- package/dist/build/google-fonts/get-axes.d.ts +6 -0
- package/dist/build/google-fonts/get-axes.js +37 -0
- package/dist/build/google-fonts/sort-variants.d.ts +4 -0
- package/dist/build/google-fonts/sort-variants.js +12 -0
- package/dist/build/google-fonts/validate.d.ts +27 -0
- package/dist/build/google-fonts/validate.js +54 -0
- package/dist/build/inline-css.d.ts +6 -0
- package/dist/build/inline-css.js +48 -0
- package/dist/build/layout-classification-types.d.ts +61 -0
- package/dist/build/layout-classification-types.js +1 -0
- package/dist/build/layout-classification.d.ts +59 -0
- package/dist/build/layout-classification.js +98 -0
- package/dist/build/next-client-runtime-manifests.d.ts +14 -0
- package/dist/build/next-client-runtime-manifests.js +39 -0
- package/dist/build/nitro-route-rules.d.ts +49 -0
- package/dist/build/nitro-route-rules.js +79 -0
- package/dist/build/precompress.d.ts +27 -0
- package/dist/build/precompress.js +110 -0
- package/dist/build/prerender.d.ts +209 -0
- package/dist/build/prerender.js +932 -0
- package/dist/build/report.d.ts +132 -0
- package/dist/build/report.js +504 -0
- package/dist/build/route-classification-injector.d.ts +34 -0
- package/dist/build/route-classification-injector.js +59 -0
- package/dist/build/route-classification-manifest.d.ts +52 -0
- package/dist/build/route-classification-manifest.js +143 -0
- package/dist/build/run-prerender.d.ts +61 -0
- package/dist/build/run-prerender.js +224 -0
- package/dist/build/server-manifest.d.ts +18 -0
- package/dist/build/server-manifest.js +22 -0
- package/dist/build/ssr-manifest.d.ts +18 -0
- package/dist/build/ssr-manifest.js +69 -0
- package/dist/build/standalone.d.ts +31 -0
- package/dist/build/standalone.js +203 -0
- package/dist/build/static-export.d.ts +55 -0
- package/dist/build/static-export.js +60 -0
- package/dist/cache/cache-adapters-virtual.d.ts +50 -0
- package/dist/cache/cache-adapters-virtual.js +45 -0
- package/dist/cache.d.ts +2 -0
- package/dist/cache.js +2 -0
- package/dist/check.d.ts +87 -0
- package/dist/check.js +1037 -0
- package/dist/cli-args.d.ts +33 -0
- package/dist/cli-args.js +124 -0
- package/dist/cli.d.ts +1 -0
- package/dist/cli.js +744 -0
- package/dist/client/app-nav-failure-handler.d.ts +8 -0
- package/dist/client/app-nav-failure-handler.js +44 -0
- package/dist/client/empty-module.d.ts +1 -0
- package/dist/client/empty-module.js +1 -0
- package/dist/client/instrumentation-client-inject.d.ts +33 -0
- package/dist/client/instrumentation-client-inject.js +55 -0
- package/dist/client/instrumentation-client-state.d.ts +9 -0
- package/dist/client/instrumentation-client-state.js +17 -0
- package/dist/client/instrumentation-client.d.ts +7 -0
- package/dist/client/instrumentation-client.js +6 -0
- package/dist/client/navigation-runtime.d.ts +70 -0
- package/dist/client/navigation-runtime.js +169 -0
- package/dist/client/pages-router-link-navigation.d.ts +61 -0
- package/dist/client/pages-router-link-navigation.js +42 -0
- package/dist/client/validate-module-path.d.ts +17 -0
- package/dist/client/validate-module-path.js +24 -0
- package/dist/client/vinext-next-data.d.ts +44 -0
- package/dist/client/vinext-next-data.js +50 -0
- package/dist/client/window-next.d.ts +168 -0
- package/dist/client/window-next.js +57 -0
- package/dist/cloudflare/index.d.ts +3 -0
- package/dist/cloudflare/index.js +3 -0
- package/dist/cloudflare/src/cache/cdn-adapter.runtime.js +102 -0
- package/dist/cloudflare/src/cache/kv-data-adapter.runtime.d.ts +126 -0
- package/dist/cloudflare/src/cache/kv-data-adapter.runtime.js +435 -0
- package/dist/cloudflare/src/utils/cache-control-metadata.js +20 -0
- package/dist/cloudflare/tpr.d.ts +82 -0
- package/dist/cloudflare/tpr.js +558 -0
- package/dist/config/config-matchers.d.ts +257 -0
- package/dist/config/config-matchers.js +1046 -0
- package/dist/config/dotenv.d.ts +56 -0
- package/dist/config/dotenv.js +88 -0
- package/dist/config/next-config.d.ts +540 -0
- package/dist/config/next-config.js +1050 -0
- package/dist/config/tsconfig-paths.d.ts +21 -0
- package/dist/config/tsconfig-paths.js +157 -0
- package/dist/deploy.d.ts +190 -0
- package/dist/deploy.js +1033 -0
- package/dist/entries/app-browser-entry.d.ts +29 -0
- package/dist/entries/app-browser-entry.js +83 -0
- package/dist/entries/app-rsc-entry.d.ts +81 -0
- package/dist/entries/app-rsc-entry.js +943 -0
- package/dist/entries/app-rsc-manifest.d.ts +53 -0
- package/dist/entries/app-rsc-manifest.js +294 -0
- package/dist/entries/app-ssr-entry.d.ts +15 -0
- package/dist/entries/app-ssr-entry.js +24 -0
- package/dist/entries/pages-client-entry.d.ts +11 -0
- package/dist/entries/pages-client-entry.js +204 -0
- package/dist/entries/pages-entry-helpers.d.ts +2 -0
- package/dist/entries/pages-entry-helpers.js +2 -0
- package/dist/entries/pages-server-entry.d.ts +11 -0
- package/dist/entries/pages-server-entry.js +398 -0
- package/dist/entries/runtime-entry-module.d.ts +25 -0
- package/dist/entries/runtime-entry-module.js +46 -0
- package/dist/index.d.ts +115 -0
- package/dist/index.js +2661 -0
- package/dist/init.d.ts +69 -0
- package/dist/init.js +253 -0
- package/dist/plugins/ast-utils.d.ts +20 -0
- package/dist/plugins/ast-utils.js +78 -0
- package/dist/plugins/async-hooks-stub.d.ts +18 -0
- package/dist/plugins/async-hooks-stub.js +40 -0
- package/dist/plugins/client-reference-dedup.d.ts +35 -0
- package/dist/plugins/client-reference-dedup.js +189 -0
- package/dist/plugins/css-data-url.d.ts +6 -0
- package/dist/plugins/css-data-url.js +83 -0
- package/dist/plugins/dynamic-preload-metadata.d.ts +13 -0
- package/dist/plugins/dynamic-preload-metadata.js +413 -0
- package/dist/plugins/extensionless-dynamic-import.d.ts +6 -0
- package/dist/plugins/extensionless-dynamic-import.js +155 -0
- package/dist/plugins/fonts.d.ts +95 -0
- package/dist/plugins/fonts.js +711 -0
- package/dist/plugins/import-meta-url.d.ts +16 -0
- package/dist/plugins/import-meta-url.js +353 -0
- package/dist/plugins/instrumentation-client.d.ts +6 -0
- package/dist/plugins/instrumentation-client.js +27 -0
- package/dist/plugins/middleware-export-validation.d.ts +5 -0
- package/dist/plugins/middleware-export-validation.js +36 -0
- package/dist/plugins/middleware-server-only.d.ts +53 -0
- package/dist/plugins/middleware-server-only.js +90 -0
- package/dist/plugins/og-asset-ownership.d.ts +27 -0
- package/dist/plugins/og-asset-ownership.js +285 -0
- package/dist/plugins/og-assets.d.ts +50 -0
- package/dist/plugins/og-assets.js +229 -0
- package/dist/plugins/optimize-imports.d.ts +42 -0
- package/dist/plugins/optimize-imports.js +587 -0
- package/dist/plugins/postcss.d.ts +26 -0
- package/dist/plugins/postcss.js +96 -0
- package/dist/plugins/remove-console.d.ts +21 -0
- package/dist/plugins/remove-console.js +177 -0
- package/dist/plugins/require-context.d.ts +6 -0
- package/dist/plugins/require-context.js +185 -0
- package/dist/plugins/rsc-client-reference-loaders.d.ts +6 -0
- package/dist/plugins/rsc-client-reference-loaders.js +46 -0
- package/dist/plugins/rsc-client-shim-excludes.d.ts +6 -0
- package/dist/plugins/rsc-client-shim-excludes.js +35 -0
- package/dist/plugins/sass.d.ts +62 -0
- package/dist/plugins/sass.js +268 -0
- package/dist/plugins/server-externals-manifest.d.ts +26 -0
- package/dist/plugins/server-externals-manifest.js +81 -0
- package/dist/plugins/strip-server-exports.d.ts +21 -0
- package/dist/plugins/strip-server-exports.js +519 -0
- package/dist/plugins/typeof-window.d.ts +14 -0
- package/dist/plugins/typeof-window.js +150 -0
- package/dist/plugins/wasm-module-import.d.ts +15 -0
- package/dist/plugins/wasm-module-import.js +50 -0
- package/dist/routing/app-route-graph.d.ts +336 -0
- package/dist/routing/app-route-graph.js +1518 -0
- package/dist/routing/app-router.d.ts +30 -0
- package/dist/routing/app-router.js +59 -0
- package/dist/routing/file-matcher.d.ts +60 -0
- package/dist/routing/file-matcher.js +147 -0
- package/dist/routing/pages-router.d.ts +48 -0
- package/dist/routing/pages-router.js +163 -0
- package/dist/routing/route-matching.d.ts +27 -0
- package/dist/routing/route-matching.js +42 -0
- package/dist/routing/route-pattern.d.ts +64 -0
- package/dist/routing/route-pattern.js +165 -0
- package/dist/routing/route-trie.d.ts +67 -0
- package/dist/routing/route-trie.js +143 -0
- package/dist/routing/route-validation.d.ts +10 -0
- package/dist/routing/route-validation.js +101 -0
- package/dist/routing/utils.d.ts +117 -0
- package/dist/routing/utils.js +242 -0
- package/dist/server/accept-encoding.d.ts +29 -0
- package/dist/server/accept-encoding.js +95 -0
- package/dist/server/api-handler.d.ts +17 -0
- package/dist/server/api-handler.js +276 -0
- package/dist/server/app-action-request.d.ts +4 -0
- package/dist/server/app-action-request.js +9 -0
- package/dist/server/app-bfcache-id.d.ts +5 -0
- package/dist/server/app-bfcache-id.js +5 -0
- package/dist/server/app-bfcache-identity.d.ts +36 -0
- package/dist/server/app-bfcache-identity.js +156 -0
- package/dist/server/app-browser-action-result.d.ts +64 -0
- package/dist/server/app-browser-action-result.js +111 -0
- package/dist/server/app-browser-client-reuse-manifest.d.ts +12 -0
- package/dist/server/app-browser-client-reuse-manifest.js +101 -0
- package/dist/server/app-browser-entry.d.ts +1 -0
- package/dist/server/app-browser-entry.js +1087 -0
- package/dist/server/app-browser-error.d.ts +13 -0
- package/dist/server/app-browser-error.js +52 -0
- package/dist/server/app-browser-history-controller.d.ts +104 -0
- package/dist/server/app-browser-history-controller.js +210 -0
- package/dist/server/app-browser-hydration.d.ts +32 -0
- package/dist/server/app-browser-hydration.js +29 -0
- package/dist/server/app-browser-interception-context.d.ts +24 -0
- package/dist/server/app-browser-interception-context.js +43 -0
- package/dist/server/app-browser-mpa-navigation.d.ts +16 -0
- package/dist/server/app-browser-mpa-navigation.js +42 -0
- package/dist/server/app-browser-navigation-controller.d.ts +109 -0
- package/dist/server/app-browser-navigation-controller.js +465 -0
- package/dist/server/app-browser-popstate.d.ts +26 -0
- package/dist/server/app-browser-popstate.js +44 -0
- package/dist/server/app-browser-rsc-redirect.d.ts +38 -0
- package/dist/server/app-browser-rsc-redirect.js +64 -0
- package/dist/server/app-browser-server-action-client.d.ts +32 -0
- package/dist/server/app-browser-server-action-client.js +128 -0
- package/dist/server/app-browser-server-action-navigation.d.ts +6 -0
- package/dist/server/app-browser-server-action-navigation.js +9 -0
- package/dist/server/app-browser-state.d.ts +140 -0
- package/dist/server/app-browser-state.js +315 -0
- package/dist/server/app-browser-stream.d.ts +28 -0
- package/dist/server/app-browser-stream.js +122 -0
- package/dist/server/app-browser-visible-commit.d.ts +78 -0
- package/dist/server/app-browser-visible-commit.js +241 -0
- package/dist/server/app-client-reference-preloader.d.ts +14 -0
- package/dist/server/app-client-reference-preloader.js +44 -0
- package/dist/server/app-elements-wire.d.ts +192 -0
- package/dist/server/app-elements-wire.js +443 -0
- package/dist/server/app-elements.d.ts +9 -0
- package/dist/server/app-elements.js +18 -0
- package/dist/server/app-fallback-renderer.d.ts +89 -0
- package/dist/server/app-fallback-renderer.js +136 -0
- package/dist/server/app-history-state.d.ts +85 -0
- package/dist/server/app-history-state.js +223 -0
- package/dist/server/app-hook-warning-suppression.d.ts +6 -0
- package/dist/server/app-hook-warning-suppression.js +10 -0
- package/dist/server/app-inline-css-client.d.ts +6 -0
- package/dist/server/app-inline-css-client.js +35 -0
- package/dist/server/app-interception-context-header.d.ts +32 -0
- package/dist/server/app-interception-context-header.js +42 -0
- package/dist/server/app-layout-param-observation.d.ts +43 -0
- package/dist/server/app-layout-param-observation.js +168 -0
- package/dist/server/app-middleware.d.ts +46 -0
- package/dist/server/app-middleware.js +168 -0
- package/dist/server/app-mounted-slots-header.d.ts +35 -0
- package/dist/server/app-mounted-slots-header.js +58 -0
- package/dist/server/app-optimistic-routing.d.ts +53 -0
- package/dist/server/app-optimistic-routing.js +227 -0
- package/dist/server/app-page-boundary-render.d.ts +85 -0
- package/dist/server/app-page-boundary-render.js +305 -0
- package/dist/server/app-page-boundary.d.ts +102 -0
- package/dist/server/app-page-boundary.js +120 -0
- package/dist/server/app-page-cache-finalizer.d.ts +62 -0
- package/dist/server/app-page-cache-finalizer.js +122 -0
- package/dist/server/app-page-cache-render.d.ts +53 -0
- package/dist/server/app-page-cache-render.js +91 -0
- package/dist/server/app-page-cache.d.ts +83 -0
- package/dist/server/app-page-cache.js +272 -0
- package/dist/server/app-page-dispatch.d.ts +223 -0
- package/dist/server/app-page-dispatch.js +610 -0
- package/dist/server/app-page-element-builder.d.ts +96 -0
- package/dist/server/app-page-element-builder.js +205 -0
- package/dist/server/app-page-execution.d.ts +138 -0
- package/dist/server/app-page-execution.js +328 -0
- package/dist/server/app-page-head.d.ts +65 -0
- package/dist/server/app-page-head.js +228 -0
- package/dist/server/app-page-method.d.ts +15 -0
- package/dist/server/app-page-method.js +25 -0
- package/dist/server/app-page-params.d.ts +8 -0
- package/dist/server/app-page-params.js +39 -0
- package/dist/server/app-page-ppr-runtime.d.ts +7 -0
- package/dist/server/app-page-ppr-runtime.js +70 -0
- package/dist/server/app-page-probe.d.ts +134 -0
- package/dist/server/app-page-probe.js +276 -0
- package/dist/server/app-page-render-identity.d.ts +21 -0
- package/dist/server/app-page-render-identity.js +40 -0
- package/dist/server/app-page-render-observation.d.ts +36 -0
- package/dist/server/app-page-render-observation.js +82 -0
- package/dist/server/app-page-render.d.ts +111 -0
- package/dist/server/app-page-render.js +602 -0
- package/dist/server/app-page-request.d.ts +137 -0
- package/dist/server/app-page-request.js +216 -0
- package/dist/server/app-page-response.d.ts +68 -0
- package/dist/server/app-page-response.js +120 -0
- package/dist/server/app-page-route-wiring.d.ts +151 -0
- package/dist/server/app-page-route-wiring.js +452 -0
- package/dist/server/app-page-search-params-observation.d.ts +10 -0
- package/dist/server/app-page-search-params-observation.js +20 -0
- package/dist/server/app-page-segment-state.d.ts +9 -0
- package/dist/server/app-page-segment-state.js +80 -0
- package/dist/server/app-page-stream.d.ts +151 -0
- package/dist/server/app-page-stream.js +143 -0
- package/dist/server/app-pages-bridge.d.ts +63 -0
- package/dist/server/app-pages-bridge.js +63 -0
- package/dist/server/app-post-middleware-context.d.ts +15 -0
- package/dist/server/app-post-middleware-context.js +26 -0
- package/dist/server/app-ppr-fallback-shell-render.d.ts +18 -0
- package/dist/server/app-ppr-fallback-shell-render.js +26 -0
- package/dist/server/app-ppr-fallback-shell.d.ts +33 -0
- package/dist/server/app-ppr-fallback-shell.js +89 -0
- package/dist/server/app-prerender-endpoints.d.ts +18 -0
- package/dist/server/app-prerender-endpoints.js +94 -0
- package/dist/server/app-prerender-static-params.d.ts +30 -0
- package/dist/server/app-prerender-static-params.js +81 -0
- package/dist/server/app-render-dependency.d.ts +14 -0
- package/dist/server/app-render-dependency.js +41 -0
- package/dist/server/app-request-context.d.ts +20 -0
- package/dist/server/app-request-context.js +29 -0
- package/dist/server/app-route-handler-cache.d.ts +46 -0
- package/dist/server/app-route-handler-cache.js +78 -0
- package/dist/server/app-route-handler-dispatch.d.ts +49 -0
- package/dist/server/app-route-handler-dispatch.js +163 -0
- package/dist/server/app-route-handler-execution.d.ts +86 -0
- package/dist/server/app-route-handler-execution.js +128 -0
- package/dist/server/app-route-handler-policy.d.ts +55 -0
- package/dist/server/app-route-handler-policy.js +58 -0
- package/dist/server/app-route-handler-response.d.ts +28 -0
- package/dist/server/app-route-handler-response.js +145 -0
- package/dist/server/app-route-handler-runtime.d.ts +39 -0
- package/dist/server/app-route-handler-runtime.js +250 -0
- package/dist/server/app-route-module-loader.d.ts +91 -0
- package/dist/server/app-route-module-loader.js +83 -0
- package/dist/server/app-router-entry.d.ts +13 -0
- package/dist/server/app-router-entry.js +49 -0
- package/dist/server/app-rsc-cache-busting.d.ts +64 -0
- package/dist/server/app-rsc-cache-busting.js +206 -0
- package/dist/server/app-rsc-embedded-chunks.d.ts +8 -0
- package/dist/server/app-rsc-embedded-chunks.js +32 -0
- package/dist/server/app-rsc-error-handler.d.ts +20 -0
- package/dist/server/app-rsc-error-handler.js +28 -0
- package/dist/server/app-rsc-errors.d.ts +40 -0
- package/dist/server/app-rsc-errors.js +60 -0
- package/dist/server/app-rsc-handler.d.ts +201 -0
- package/dist/server/app-rsc-handler.js +538 -0
- package/dist/server/app-rsc-render-mode.d.ts +11 -0
- package/dist/server/app-rsc-render-mode.js +25 -0
- package/dist/server/app-rsc-request-normalization.d.ts +48 -0
- package/dist/server/app-rsc-request-normalization.js +75 -0
- package/dist/server/app-rsc-response-finalizer.d.ts +37 -0
- package/dist/server/app-rsc-response-finalizer.js +54 -0
- package/dist/server/app-rsc-route-matching.d.ts +93 -0
- package/dist/server/app-rsc-route-matching.js +134 -0
- package/dist/server/app-segment-config.d.ts +46 -0
- package/dist/server/app-segment-config.js +113 -0
- package/dist/server/app-server-action-execution.d.ts +219 -0
- package/dist/server/app-server-action-execution.js +767 -0
- package/dist/server/app-ssr-entry.d.ts +52 -0
- package/dist/server/app-ssr-entry.js +295 -0
- package/dist/server/app-ssr-error-meta.d.ts +13 -0
- package/dist/server/app-ssr-error-meta.js +48 -0
- package/dist/server/app-ssr-router-instance.d.ts +6 -0
- package/dist/server/app-ssr-router-instance.js +24 -0
- package/dist/server/app-ssr-stream.d.ts +60 -0
- package/dist/server/app-ssr-stream.js +408 -0
- package/dist/server/app-static-generation.d.ts +15 -0
- package/dist/server/app-static-generation.js +19 -0
- package/dist/server/app-visited-response-cache.d.ts +23 -0
- package/dist/server/app-visited-response-cache.js +19 -0
- package/dist/server/artifact-compatibility.d.ts +54 -0
- package/dist/server/artifact-compatibility.js +91 -0
- package/dist/server/before-interactive-head.d.ts +17 -0
- package/dist/server/before-interactive-head.js +35 -0
- package/dist/server/cache-control.d.ts +37 -0
- package/dist/server/cache-control.js +56 -0
- package/dist/server/cache-headers.d.ts +6 -0
- package/dist/server/cache-headers.js +17 -0
- package/dist/server/cache-proof.d.ts +364 -0
- package/dist/server/cache-proof.js +794 -0
- package/dist/server/client-reuse-manifest.d.ts +104 -0
- package/dist/server/client-reuse-manifest.js +209 -0
- package/dist/server/client-trace-metadata.d.ts +30 -0
- package/dist/server/client-trace-metadata.js +81 -0
- package/dist/server/cookie-utils.d.ts +12 -0
- package/dist/server/cookie-utils.js +18 -0
- package/dist/server/csp.d.ts +10 -0
- package/dist/server/csp.js +41 -0
- package/dist/server/default-global-error-module.d.ts +19 -0
- package/dist/server/default-global-error-module.js +18 -0
- package/dist/server/default-not-found-module.d.ts +19 -0
- package/dist/server/default-not-found-module.js +18 -0
- package/dist/server/defer-until-stream-consumed.d.ts +7 -0
- package/dist/server/defer-until-stream-consumed.js +34 -0
- package/dist/server/dev-error-overlay-store.d.ts +39 -0
- package/dist/server/dev-error-overlay-store.js +86 -0
- package/dist/server/dev-error-overlay.d.ts +51 -0
- package/dist/server/dev-error-overlay.js +1341 -0
- package/dist/server/dev-initial-server-error.d.ts +9 -0
- package/dist/server/dev-initial-server-error.js +26 -0
- package/dist/server/dev-lockfile.d.ts +109 -0
- package/dist/server/dev-lockfile.js +179 -0
- package/dist/server/dev-module-runner.d.ts +30 -0
- package/dist/server/dev-module-runner.js +91 -0
- package/dist/server/dev-origin-check.d.ts +62 -0
- package/dist/server/dev-origin-check.js +156 -0
- package/dist/server/dev-route-files.d.ts +6 -0
- package/dist/server/dev-route-files.js +71 -0
- package/dist/server/dev-server.d.ts +58 -0
- package/dist/server/dev-server.js +1114 -0
- package/dist/server/dev-stack-sourcemap-endpoint.d.ts +4 -0
- package/dist/server/dev-stack-sourcemap-endpoint.js +4 -0
- package/dist/server/dev-stack-sourcemap.d.ts +43 -0
- package/dist/server/dev-stack-sourcemap.js +443 -0
- package/dist/server/document-initial-head.d.ts +6 -0
- package/dist/server/document-initial-head.js +33 -0
- package/dist/server/edge-api-runtime.d.ts +4 -0
- package/dist/server/edge-api-runtime.js +6 -0
- package/dist/server/file-based-metadata.d.ts +29 -0
- package/dist/server/file-based-metadata.js +401 -0
- package/dist/server/headers.d.ts +114 -0
- package/dist/server/headers.js +136 -0
- package/dist/server/html.d.ts +28 -0
- package/dist/server/html.js +41 -0
- package/dist/server/http-error-responses.d.ts +91 -0
- package/dist/server/http-error-responses.js +105 -0
- package/dist/server/hybrid-route-priority.d.ts +22 -0
- package/dist/server/hybrid-route-priority.js +33 -0
- package/dist/server/image-optimization.d.ts +130 -0
- package/dist/server/image-optimization.js +247 -0
- package/dist/server/implicit-tags.d.ts +6 -0
- package/dist/server/implicit-tags.js +44 -0
- package/dist/server/instrumentation-runtime.d.ts +49 -0
- package/dist/server/instrumentation-runtime.js +35 -0
- package/dist/server/instrumentation.d.ts +85 -0
- package/dist/server/instrumentation.js +130 -0
- package/dist/server/isr-cache.d.ts +127 -0
- package/dist/server/isr-cache.js +282 -0
- package/dist/server/isr-decision.d.ts +79 -0
- package/dist/server/isr-decision.js +70 -0
- package/dist/server/metadata-route-build-data.d.ts +24 -0
- package/dist/server/metadata-route-build-data.js +148 -0
- package/dist/server/metadata-route-response.d.ts +16 -0
- package/dist/server/metadata-route-response.js +205 -0
- package/dist/server/metadata-routes.d.ts +139 -0
- package/dist/server/metadata-routes.js +433 -0
- package/dist/server/middleware-matcher.d.ts +14 -0
- package/dist/server/middleware-matcher.js +111 -0
- package/dist/server/middleware-request-headers.d.ts +11 -0
- package/dist/server/middleware-request-headers.js +65 -0
- package/dist/server/middleware-response-headers.d.ts +12 -0
- package/dist/server/middleware-response-headers.js +42 -0
- package/dist/server/middleware-runtime.d.ts +67 -0
- package/dist/server/middleware-runtime.js +240 -0
- package/dist/server/middleware.d.ts +62 -0
- package/dist/server/middleware.js +114 -0
- package/dist/server/navigation-planner.d.ts +308 -0
- package/dist/server/navigation-planner.js +831 -0
- package/dist/server/navigation-trace.d.ts +68 -0
- package/dist/server/navigation-trace.js +71 -0
- package/dist/server/next-error-digest.d.ts +44 -0
- package/dist/server/next-error-digest.js +40 -0
- package/dist/server/normalize-path.d.ts +38 -0
- package/dist/server/normalize-path.js +70 -0
- package/dist/server/open-redirect.d.ts +12 -0
- package/dist/server/open-redirect.js +21 -0
- package/dist/server/operation-token.d.ts +40 -0
- package/dist/server/operation-token.js +85 -0
- package/dist/server/otel-tracer-extension.d.ts +45 -0
- package/dist/server/otel-tracer-extension.js +89 -0
- package/dist/server/pages-api-route.d.ts +83 -0
- package/dist/server/pages-api-route.js +75 -0
- package/dist/server/pages-asset-tags.d.ts +78 -0
- package/dist/server/pages-asset-tags.js +126 -0
- package/dist/server/pages-body-parser-config.d.ts +59 -0
- package/dist/server/pages-body-parser-config.js +77 -0
- package/dist/server/pages-data-route.d.ts +121 -0
- package/dist/server/pages-data-route.js +157 -0
- package/dist/server/pages-default-404.d.ts +30 -0
- package/dist/server/pages-default-404.js +38 -0
- package/dist/server/pages-dev-module-url.d.ts +4 -0
- package/dist/server/pages-dev-module-url.js +15 -0
- package/dist/server/pages-document-initial-props.d.ts +77 -0
- package/dist/server/pages-document-initial-props.js +109 -0
- package/dist/server/pages-get-initial-props.d.ts +67 -0
- package/dist/server/pages-get-initial-props.js +92 -0
- package/dist/server/pages-i18n.d.ts +106 -0
- package/dist/server/pages-i18n.js +183 -0
- package/dist/server/pages-media-type.d.ts +15 -0
- package/dist/server/pages-media-type.js +24 -0
- package/dist/server/pages-node-compat.d.ts +55 -0
- package/dist/server/pages-node-compat.js +235 -0
- package/dist/server/pages-page-data.d.ts +223 -0
- package/dist/server/pages-page-data.js +484 -0
- package/dist/server/pages-page-handler.d.ts +100 -0
- package/dist/server/pages-page-handler.js +403 -0
- package/dist/server/pages-page-method.d.ts +47 -0
- package/dist/server/pages-page-method.js +17 -0
- package/dist/server/pages-page-response.d.ts +138 -0
- package/dist/server/pages-page-response.js +285 -0
- package/dist/server/pages-readiness.d.ts +36 -0
- package/dist/server/pages-readiness.js +21 -0
- package/dist/server/pages-request-pipeline.d.ts +116 -0
- package/dist/server/pages-request-pipeline.js +311 -0
- package/dist/server/pages-revalidate.d.ts +15 -0
- package/dist/server/pages-revalidate.js +19 -0
- package/dist/server/pages-serializable-props.d.ts +24 -0
- package/dist/server/pages-serializable-props.js +67 -0
- package/dist/server/pregenerated-concrete-paths.d.ts +16 -0
- package/dist/server/pregenerated-concrete-paths.js +61 -0
- package/dist/server/prerender-manifest.d.ts +33 -0
- package/dist/server/prerender-manifest.js +54 -0
- package/dist/server/prerender-route-params.d.ts +23 -0
- package/dist/server/prerender-route-params.js +113 -0
- package/dist/server/prerender-work-unit-setup.d.ts +6 -0
- package/dist/server/prerender-work-unit-setup.js +28 -0
- package/dist/server/prod-server.d.ts +148 -0
- package/dist/server/prod-server.js +1136 -0
- package/dist/server/proxy-trust.d.ts +40 -0
- package/dist/server/proxy-trust.js +68 -0
- package/dist/server/request-log.d.ts +39 -0
- package/dist/server/request-log.js +56 -0
- package/dist/server/request-pipeline.d.ts +187 -0
- package/dist/server/request-pipeline.js +447 -0
- package/dist/server/rsc-stream-hints.d.ts +10 -0
- package/dist/server/rsc-stream-hints.js +41 -0
- package/dist/server/seed-cache.d.ts +29 -0
- package/dist/server/seed-cache.js +125 -0
- package/dist/server/server-action-not-found.d.ts +21 -0
- package/dist/server/server-action-not-found.js +62 -0
- package/dist/server/server-globals.d.ts +4 -0
- package/dist/server/server-globals.js +35 -0
- package/dist/server/skip-cache-proof.d.ts +61 -0
- package/dist/server/skip-cache-proof.js +168 -0
- package/dist/server/socket-error-backstop.d.ts +34 -0
- package/dist/server/socket-error-backstop.js +200 -0
- package/dist/server/static-file-cache.d.ts +56 -0
- package/dist/server/static-file-cache.js +231 -0
- package/dist/server/static-layout-client-reuse-proof.d.ts +15 -0
- package/dist/server/static-layout-client-reuse-proof.js +33 -0
- package/dist/server/streaming-metadata.d.ts +4 -0
- package/dist/server/streaming-metadata.js +8 -0
- package/dist/server/worker-utils.d.ts +7 -0
- package/dist/server/worker-utils.js +99 -0
- package/dist/shims/amp.d.ts +19 -0
- package/dist/shims/amp.js +23 -0
- package/dist/shims/app-router-scroll-state.d.ts +15 -0
- package/dist/shims/app-router-scroll-state.js +61 -0
- package/dist/shims/app-router-scroll.d.ts +29 -0
- package/dist/shims/app-router-scroll.js +141 -0
- package/dist/shims/app.d.ts +42 -0
- package/dist/shims/app.js +48 -0
- package/dist/shims/before-interactive-context.d.ts +40 -0
- package/dist/shims/before-interactive-context.js +8 -0
- package/dist/shims/cache-for-request.d.ts +57 -0
- package/dist/shims/cache-for-request.js +72 -0
- package/dist/shims/cache-handler.d.ts +106 -0
- package/dist/shims/cache-handler.js +176 -0
- package/dist/shims/cache-request-state.d.ts +47 -0
- package/dist/shims/cache-request-state.js +126 -0
- package/dist/shims/cache-runtime.d.ts +83 -0
- package/dist/shims/cache-runtime.js +452 -0
- package/dist/shims/cache.d.ts +145 -0
- package/dist/shims/cache.js +401 -0
- package/dist/shims/cdn-cache.d.ts +125 -0
- package/dist/shims/cdn-cache.js +100 -0
- package/dist/shims/client-hook-error.d.ts +13 -0
- package/dist/shims/client-hook-error.js +17 -0
- package/dist/shims/client-locale.d.ts +14 -0
- package/dist/shims/client-locale.js +11 -0
- package/dist/shims/client-only.d.ts +1 -0
- package/dist/shims/client-only.js +1 -0
- package/dist/shims/compat-router.d.ts +16 -0
- package/dist/shims/compat-router.js +25 -0
- package/dist/shims/config.d.ts +28 -0
- package/dist/shims/config.js +21 -0
- package/dist/shims/constants.d.ts +130 -0
- package/dist/shims/constants.js +167 -0
- package/dist/shims/default-global-error.d.ts +31 -0
- package/dist/shims/default-global-error.js +179 -0
- package/dist/shims/default-not-found.d.ts +11 -0
- package/dist/shims/default-not-found.js +59 -0
- package/dist/shims/document.d.ts +92 -0
- package/dist/shims/document.js +76 -0
- package/dist/shims/dynamic-preload-chunks.d.ts +8 -0
- package/dist/shims/dynamic-preload-chunks.js +79 -0
- package/dist/shims/dynamic.d.ts +35 -0
- package/dist/shims/dynamic.js +204 -0
- package/dist/shims/error-boundary-navigation.d.ts +7 -0
- package/dist/shims/error-boundary-navigation.js +44 -0
- package/dist/shims/error-boundary.d.ts +155 -0
- package/dist/shims/error-boundary.js +342 -0
- package/dist/shims/error.d.ts +31 -0
- package/dist/shims/error.js +123 -0
- package/dist/shims/error.react-server.d.ts +9 -0
- package/dist/shims/error.react-server.js +6 -0
- package/dist/shims/fetch-cache.d.ts +136 -0
- package/dist/shims/fetch-cache.js +766 -0
- package/dist/shims/font-google-base.d.ts +83 -0
- package/dist/shims/font-google-base.js +290 -0
- package/dist/shims/font-google.d.ts +2 -0
- package/dist/shims/font-google.js +2 -0
- package/dist/shims/font-local.d.ts +50 -0
- package/dist/shims/font-local.js +195 -0
- package/dist/shims/font-utils.d.ts +56 -0
- package/dist/shims/font-utils.js +107 -0
- package/dist/shims/form.d.ts +19 -0
- package/dist/shims/form.js +236 -0
- package/dist/shims/hash-scroll.d.ts +10 -0
- package/dist/shims/hash-scroll.js +47 -0
- package/dist/shims/head-state.d.ts +16 -0
- package/dist/shims/head-state.js +43 -0
- package/dist/shims/head.d.ts +73 -0
- package/dist/shims/head.js +340 -0
- package/dist/shims/headers.d.ts +253 -0
- package/dist/shims/headers.js +754 -0
- package/dist/shims/i18n-context.d.ts +22 -0
- package/dist/shims/i18n-context.js +42 -0
- package/dist/shims/i18n-state.d.ts +14 -0
- package/dist/shims/i18n-state.js +38 -0
- package/dist/shims/image-config.d.ts +45 -0
- package/dist/shims/image-config.js +85 -0
- package/dist/shims/image.d.ts +55 -0
- package/dist/shims/image.js +582 -0
- package/dist/shims/internal/als-registry.d.ts +14 -0
- package/dist/shims/internal/als-registry.js +80 -0
- package/dist/shims/internal/api-utils.d.ts +14 -0
- package/dist/shims/internal/api-utils.js +1 -0
- package/dist/shims/internal/app-page-props-cache-key.d.ts +5 -0
- package/dist/shims/internal/app-page-props-cache-key.js +16 -0
- package/dist/shims/internal/app-route-detection.d.ts +39 -0
- package/dist/shims/internal/app-route-detection.js +62 -0
- package/dist/shims/internal/app-router-context.d.ts +31 -0
- package/dist/shims/internal/app-router-context.js +28 -0
- package/dist/shims/internal/cookie-serialize.d.ts +45 -0
- package/dist/shims/internal/cookie-serialize.js +49 -0
- package/dist/shims/internal/cookies.d.ts +2 -0
- package/dist/shims/internal/cookies.js +2 -0
- package/dist/shims/internal/hybrid-client-route-owner.d.ts +31 -0
- package/dist/shims/internal/hybrid-client-route-owner.js +143 -0
- package/dist/shims/internal/interpolate-as.d.ts +25 -0
- package/dist/shims/internal/interpolate-as.js +196 -0
- package/dist/shims/internal/link-status-registry.d.ts +43 -0
- package/dist/shims/internal/link-status-registry.js +42 -0
- package/dist/shims/internal/make-hanging-promise.d.ts +15 -0
- package/dist/shims/internal/make-hanging-promise.js +44 -0
- package/dist/shims/internal/navigation-untracked.d.ts +35 -0
- package/dist/shims/internal/navigation-untracked.js +56 -0
- package/dist/shims/internal/pages-data-fetch-dedup.d.ts +54 -0
- package/dist/shims/internal/pages-data-fetch-dedup.js +121 -0
- package/dist/shims/internal/pages-data-target.d.ts +62 -0
- package/dist/shims/internal/pages-data-target.js +98 -0
- package/dist/shims/internal/pages-data-url.d.ts +41 -0
- package/dist/shims/internal/pages-data-url.js +71 -0
- package/dist/shims/internal/pages-router-accessor.d.ts +19 -0
- package/dist/shims/internal/pages-router-accessor.js +13 -0
- package/dist/shims/internal/route-pattern-for-warning.d.ts +27 -0
- package/dist/shims/internal/route-pattern-for-warning.js +40 -0
- package/dist/shims/internal/router-context.d.ts +7 -0
- package/dist/shims/internal/router-context.js +13 -0
- package/dist/shims/internal/utils.d.ts +52 -0
- package/dist/shims/internal/utils.js +27 -0
- package/dist/shims/internal/work-unit-async-storage.d.ts +30 -0
- package/dist/shims/internal/work-unit-async-storage.js +17 -0
- package/dist/shims/layout-segment-context.d.ts +24 -0
- package/dist/shims/layout-segment-context.js +39 -0
- package/dist/shims/legacy-image.d.ts +41 -0
- package/dist/shims/legacy-image.js +49 -0
- package/dist/shims/link-prefetch.d.ts +41 -0
- package/dist/shims/link-prefetch.js +43 -0
- package/dist/shims/link.d.ts +102 -0
- package/dist/shims/link.js +687 -0
- package/dist/shims/metadata.d.ts +285 -0
- package/dist/shims/metadata.js +820 -0
- package/dist/shims/navigation-context-state.d.ts +40 -0
- package/dist/shims/navigation-context-state.js +116 -0
- package/dist/shims/navigation-errors.d.ts +55 -0
- package/dist/shims/navigation-errors.js +110 -0
- package/dist/shims/navigation-server.d.ts +3 -0
- package/dist/shims/navigation-server.js +3 -0
- package/dist/shims/navigation-state.d.ts +25 -0
- package/dist/shims/navigation-state.js +66 -0
- package/dist/shims/navigation.d.ts +286 -0
- package/dist/shims/navigation.js +1206 -0
- package/dist/shims/navigation.react-server.d.ts +14 -0
- package/dist/shims/navigation.react-server.js +32 -0
- package/dist/shims/offline.d.ts +4 -0
- package/dist/shims/offline.js +15 -0
- package/dist/shims/og.d.ts +17 -0
- package/dist/shims/og.js +48 -0
- package/dist/shims/pages-router-runtime.d.ts +12 -0
- package/dist/shims/pages-router-runtime.js +24 -0
- package/dist/shims/ppr-fallback-shell.d.ts +33 -0
- package/dist/shims/ppr-fallback-shell.js +170 -0
- package/dist/shims/readonly-url-search-params.d.ts +13 -0
- package/dist/shims/readonly-url-search-params.js +26 -0
- package/dist/shims/request-context.d.ts +58 -0
- package/dist/shims/request-context.js +45 -0
- package/dist/shims/request-state-types.d.ts +12 -0
- package/dist/shims/request-state-types.js +1 -0
- package/dist/shims/root-params.d.ts +12 -0
- package/dist/shims/root-params.js +30 -0
- package/dist/shims/router-state.d.ts +32 -0
- package/dist/shims/router-state.js +39 -0
- package/dist/shims/router.d.ts +192 -0
- package/dist/shims/router.js +1786 -0
- package/dist/shims/script-nonce-context.d.ts +11 -0
- package/dist/shims/script-nonce-context.js +23 -0
- package/dist/shims/script.d.ts +43 -0
- package/dist/shims/script.js +370 -0
- package/dist/shims/server-only.d.ts +1 -0
- package/dist/shims/server-only.js +1 -0
- package/dist/shims/server.d.ts +323 -0
- package/dist/shims/server.js +729 -0
- package/dist/shims/slot.d.ts +45 -0
- package/dist/shims/slot.js +230 -0
- package/dist/shims/thenable-params.d.ts +11 -0
- package/dist/shims/thenable-params.js +176 -0
- package/dist/shims/unified-request-context.d.ts +68 -0
- package/dist/shims/unified-request-context.js +86 -0
- package/dist/shims/unrecognized-action-error.d.ts +34 -0
- package/dist/shims/unrecognized-action-error.js +39 -0
- package/dist/shims/url-safety.d.ts +34 -0
- package/dist/shims/url-safety.js +70 -0
- package/dist/shims/url-utils.d.ts +51 -0
- package/dist/shims/url-utils.js +156 -0
- package/dist/shims/use-merged-ref.d.ts +6 -0
- package/dist/shims/use-merged-ref.js +38 -0
- package/dist/shims/web-vitals.d.ts +8 -0
- package/dist/shims/web-vitals.js +22 -0
- package/dist/typegen.d.ts +9 -0
- package/dist/typegen.js +228 -0
- package/dist/utils/asset-prefix.d.ts +96 -0
- package/dist/utils/asset-prefix.js +122 -0
- package/dist/utils/base-path.d.ts +31 -0
- package/dist/utils/base-path.js +45 -0
- package/dist/utils/built-asset-url.d.ts +4 -0
- package/dist/utils/built-asset-url.js +11 -0
- package/dist/utils/cache-control-metadata.d.ts +4 -0
- package/dist/utils/cache-control-metadata.js +12 -0
- package/dist/utils/client-build-manifest.d.ts +21 -0
- package/dist/utils/client-build-manifest.js +87 -0
- package/dist/utils/client-entry-manifest.d.ts +11 -0
- package/dist/utils/client-entry-manifest.js +29 -0
- package/dist/utils/client-runtime-metadata.d.ts +45 -0
- package/dist/utils/client-runtime-metadata.js +63 -0
- package/dist/utils/commonjs-loader.d.ts +16 -0
- package/dist/utils/commonjs-loader.js +100 -0
- package/dist/utils/compare.d.ts +4 -0
- package/dist/utils/compare.js +8 -0
- package/dist/utils/deployment-id.d.ts +8 -0
- package/dist/utils/deployment-id.js +22 -0
- package/dist/utils/dev-error-recovery-event.d.ts +4 -0
- package/dist/utils/dev-error-recovery-event.js +4 -0
- package/dist/utils/domain-locale.d.ts +26 -0
- package/dist/utils/domain-locale.js +50 -0
- package/dist/utils/encode-cache-tag.d.ts +30 -0
- package/dist/utils/encode-cache-tag.js +36 -0
- package/dist/utils/error-cause.d.ts +4 -0
- package/dist/utils/error-cause.js +95 -0
- package/dist/utils/has-trailing-comma.d.ts +24 -0
- package/dist/utils/has-trailing-comma.js +62 -0
- package/dist/utils/hash.d.ts +24 -0
- package/dist/utils/hash.js +55 -0
- package/dist/utils/html-limited-bots.d.ts +21 -0
- package/dist/utils/html-limited-bots.js +35 -0
- package/dist/utils/lazy-chunks.d.ts +59 -0
- package/dist/utils/lazy-chunks.js +112 -0
- package/dist/utils/manifest-paths.d.ts +30 -0
- package/dist/utils/manifest-paths.js +66 -0
- package/dist/utils/mdx-scan.d.ts +9 -0
- package/dist/utils/mdx-scan.js +34 -0
- package/dist/utils/navigation-signal.d.ts +4 -0
- package/dist/utils/navigation-signal.js +12 -0
- package/dist/utils/number.d.ts +4 -0
- package/dist/utils/number.js +6 -0
- package/dist/utils/parse-cookie.d.ts +13 -0
- package/dist/utils/parse-cookie.js +52 -0
- package/dist/utils/path.d.ts +22 -0
- package/dist/utils/path.js +30 -0
- package/dist/utils/prerender-output-paths.d.ts +14 -0
- package/dist/utils/prerender-output-paths.js +22 -0
- package/dist/utils/project.d.ts +76 -0
- package/dist/utils/project.js +213 -0
- package/dist/utils/promise.d.ts +4 -0
- package/dist/utils/promise.js +6 -0
- package/dist/utils/public-routes.d.ts +4 -0
- package/dist/utils/public-routes.js +48 -0
- package/dist/utils/query.d.ts +49 -0
- package/dist/utils/query.js +122 -0
- package/dist/utils/record.d.ts +4 -0
- package/dist/utils/record.js +6 -0
- package/dist/utils/regex.d.ts +4 -0
- package/dist/utils/regex.js +6 -0
- package/dist/utils/safe-json-file.d.ts +17 -0
- package/dist/utils/safe-json-file.js +23 -0
- package/dist/utils/sorted-array.d.ts +8 -0
- package/dist/utils/sorted-array.js +20 -0
- package/dist/utils/text-stream.d.ts +28 -0
- package/dist/utils/text-stream.js +64 -0
- package/dist/utils/vinext-root.d.ts +23 -0
- package/dist/utils/vinext-root.js +29 -0
- package/dist/utils/virtual-module.d.ts +5 -0
- package/dist/utils/virtual-module.js +0 -0
- package/dist/utils/vite-version.d.ts +21 -0
- package/dist/utils/vite-version.js +42 -0
- package/package.json +145 -0
|
@@ -0,0 +1,328 @@
|
|
|
1
|
+
import { addBasePathToPathname } from "../utils/base-path.js";
|
|
2
|
+
import { VINEXT_RSC_REDIRECT_HEADER } from "./headers.js";
|
|
3
|
+
import { runWithConnectionProbe } from "../shims/headers.js";
|
|
4
|
+
import { VINEXT_RSC_CONTENT_TYPE, applyRscCompatibilityIdHeader, createRscRedirectLocation } from "./app-rsc-cache-busting.js";
|
|
5
|
+
import { mergeMiddlewareResponseHeaders } from "./middleware-response-headers.js";
|
|
6
|
+
import { applyEdgeRuntimeHeader } from "./app-page-response.js";
|
|
7
|
+
import { parseNextHttpErrorDigest, parseNextRedirectDigest } from "./next-error-digest.js";
|
|
8
|
+
import { renderSsrErrorMetaTags } from "./app-ssr-error-meta.js";
|
|
9
|
+
import { isPromiseLike } from "../utils/promise.js";
|
|
10
|
+
//#region src/server/app-page-execution.ts
|
|
11
|
+
/**
|
|
12
|
+
* Builds the canonical `NEXT_REDIRECT;<type>;<url>;<status>;` digest that
|
|
13
|
+
* Next.js encodes on `redirect()` / `permanentRedirect()` throws. Used when
|
|
14
|
+
* we synthesize a flight payload for an RSC navigation: the digest must
|
|
15
|
+
* round-trip through the client's `RedirectErrorBoundary` so the same
|
|
16
|
+
* `getURLFromRedirectError` / `getRedirectTypeFromError` helpers decode it.
|
|
17
|
+
*
|
|
18
|
+
* The URL is included verbatim, not encoded — Next.js's `getRedirectError`
|
|
19
|
+
* sets `digest = ${CODE};${type};${url};${status};` with the raw URL, and the
|
|
20
|
+
* client decodes via `error.digest.split(';').slice(2, -2).join(';')`. We
|
|
21
|
+
* default `type=replace` because `redirect()` is replace-style outside of
|
|
22
|
+
* server actions, matching Next.js's `getRedirectError` default.
|
|
23
|
+
*
|
|
24
|
+
* Reference:
|
|
25
|
+
* `.nextjs-ref/packages/next/src/client/components/redirect.ts:20-23`
|
|
26
|
+
* `.nextjs-ref/packages/next/src/client/components/redirect-error.ts`
|
|
27
|
+
*/
|
|
28
|
+
function formatNextRedirectDigest(options) {
|
|
29
|
+
return `NEXT_REDIRECT;replace;${options.url};${options.statusCode};`;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Marker we tag onto a thrown redirect/notFound error when it originates from
|
|
33
|
+
* `generateMetadata()` (vs. a server component itself). Metadata resolution is
|
|
34
|
+
* suspended/streamed in Next.js, so a redirect from metadata is not emitted as
|
|
35
|
+
* a plain HTTP-level 307. Instead the transport depends on the request:
|
|
36
|
+
* - RSC navigation requests (`Rsc: 1`) ride inside the flight payload with a
|
|
37
|
+
* 200 status; the client router decodes the redirect digest.
|
|
38
|
+
* - Streaming-capable document requests get a 200 HTML response carrying a
|
|
39
|
+
* refresh meta tag (the streamed document can't switch to a 307 after the
|
|
40
|
+
* head has flushed).
|
|
41
|
+
* - html-limited bots (which Next.js serves a blocking, non-streamed
|
|
42
|
+
* response) get the HTTP-level 307.
|
|
43
|
+
* Page-level redirect()s, by contrast, still produce a 307 for SSR document
|
|
44
|
+
* requests.
|
|
45
|
+
*
|
|
46
|
+
* See Next.js test:
|
|
47
|
+
* test/e2e/app-dir/metadata-streaming/metadata-streaming.test.ts
|
|
48
|
+
*/
|
|
49
|
+
const APP_PAGE_METADATA_ERROR_MARKER = Symbol.for("vinext.appPage.metadataError");
|
|
50
|
+
function tagAppPageMetadataError(error) {
|
|
51
|
+
if (error && typeof error === "object") try {
|
|
52
|
+
Object.defineProperty(error, APP_PAGE_METADATA_ERROR_MARKER, {
|
|
53
|
+
value: true,
|
|
54
|
+
enumerable: false,
|
|
55
|
+
configurable: true,
|
|
56
|
+
writable: false
|
|
57
|
+
});
|
|
58
|
+
} catch {}
|
|
59
|
+
return error;
|
|
60
|
+
}
|
|
61
|
+
function getAppPageStatusText(statusCode) {
|
|
62
|
+
return statusCode === 403 ? "Forbidden" : statusCode === 401 ? "Unauthorized" : "Not Found";
|
|
63
|
+
}
|
|
64
|
+
function mergeAppPageSpecialErrorHeaders(response, middlewareContext) {
|
|
65
|
+
const headers = new Headers(response.headers);
|
|
66
|
+
mergeMiddlewareResponseHeaders(headers, middlewareContext?.headers ?? null);
|
|
67
|
+
return new Response(response.body, {
|
|
68
|
+
headers,
|
|
69
|
+
status: response.status,
|
|
70
|
+
statusText: response.statusText
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
function resolveAppPageSpecialError(error) {
|
|
74
|
+
if (!(error && typeof error === "object" && "digest" in error)) return null;
|
|
75
|
+
const digest = String(error.digest);
|
|
76
|
+
const fromMetadata = error[APP_PAGE_METADATA_ERROR_MARKER] === true;
|
|
77
|
+
const redirect = parseNextRedirectDigest(digest);
|
|
78
|
+
if (redirect) return {
|
|
79
|
+
kind: "redirect",
|
|
80
|
+
location: redirect.url,
|
|
81
|
+
statusCode: redirect.status,
|
|
82
|
+
...fromMetadata ? { fromMetadata: true } : {}
|
|
83
|
+
};
|
|
84
|
+
const httpError = parseNextHttpErrorDigest(digest);
|
|
85
|
+
if (httpError) return {
|
|
86
|
+
kind: "http-access-fallback",
|
|
87
|
+
statusCode: httpError.status,
|
|
88
|
+
...fromMetadata ? { fromMetadata: true } : {}
|
|
89
|
+
};
|
|
90
|
+
return null;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Resolves a redirect() target against the request URL and prepends the
|
|
94
|
+
* configured basePath when the target is an app-internal absolute path.
|
|
95
|
+
*
|
|
96
|
+
* Mirrors Next.js's `addPathPrefix(getURLFromRedirectError(err), basePath)`
|
|
97
|
+
* in `app-render.tsx`: a `redirect("/about")` call from a page mounted at
|
|
98
|
+
* `/blog` (basePath) produces `Location: /blog/about`.
|
|
99
|
+
*
|
|
100
|
+
* Skips prefixing when:
|
|
101
|
+
* - basePath is unset / empty
|
|
102
|
+
* - the target is a full URL pointing at a different origin (external redirect)
|
|
103
|
+
* - the target already starts with the basePath (caller did the work themselves)
|
|
104
|
+
*/
|
|
105
|
+
function applyAppPageRedirectBasePath(location, requestUrl, basePath) {
|
|
106
|
+
const resolved = new URL(location, requestUrl);
|
|
107
|
+
const requestOrigin = new URL(requestUrl).origin;
|
|
108
|
+
if (!basePath || resolved.origin !== requestOrigin) return resolved.toString();
|
|
109
|
+
resolved.pathname = addBasePathToPathname(resolved.pathname, basePath);
|
|
110
|
+
return resolved.toString();
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Returns a path-relative form (`/foo?bar`) of an absolute URL when it shares
|
|
114
|
+
* the request's origin; otherwise returns the URL verbatim. Used so the digest
|
|
115
|
+
* we embed in the flight payload matches Next.js's convention — the digest
|
|
116
|
+
* stores the path the developer passed to `redirect("/about")`, not a
|
|
117
|
+
* fully-qualified URL like `https://example.com/about`.
|
|
118
|
+
*/
|
|
119
|
+
function sameOriginPathOrAbsolute(location, requestUrl) {
|
|
120
|
+
try {
|
|
121
|
+
const resolved = new URL(location, requestUrl);
|
|
122
|
+
const requestOrigin = new URL(requestUrl).origin;
|
|
123
|
+
if (resolved.origin !== requestOrigin) return resolved.toString();
|
|
124
|
+
return `${resolved.pathname}${resolved.search}${resolved.hash}`;
|
|
125
|
+
} catch {
|
|
126
|
+
return location;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
function buildMetadataRedirectHtmlResponse(options) {
|
|
130
|
+
const headers = new Headers({ "Content-Type": "text/html; charset=utf-8" });
|
|
131
|
+
applyEdgeRuntimeHeader(headers, options.isEdgeRuntime);
|
|
132
|
+
mergeMiddlewareResponseHeaders(headers, options.middlewareContext?.headers ?? null);
|
|
133
|
+
const pendingCookies = options.getAndClearPendingCookies?.() ?? [];
|
|
134
|
+
for (const cookie of pendingCookies) headers.append("Set-Cookie", cookie);
|
|
135
|
+
const errorMetaTags = renderSsrErrorMetaTags([{ digest: options.digest }]);
|
|
136
|
+
return new Response(`<!DOCTYPE html><html><head>${errorMetaTags}</head><body></body></html>`, {
|
|
137
|
+
headers,
|
|
138
|
+
status: 200
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
async function buildAppPageSpecialErrorResponse(options) {
|
|
142
|
+
if (options.specialError.kind === "redirect") {
|
|
143
|
+
options.clearRequestContext();
|
|
144
|
+
const prefixedLocation = applyAppPageRedirectBasePath(options.specialError.location, options.request.url, options.basePath);
|
|
145
|
+
const digestUrl = sameOriginPathOrAbsolute(prefixedLocation, options.request.url);
|
|
146
|
+
const digest = formatNextRedirectDigest({
|
|
147
|
+
url: digestUrl,
|
|
148
|
+
statusCode: options.specialError.statusCode
|
|
149
|
+
});
|
|
150
|
+
if (options.specialError.fromMetadata === true && !options.isRscRequest && options.serveStreamingMetadata !== false) return buildMetadataRedirectHtmlResponse({
|
|
151
|
+
digest,
|
|
152
|
+
getAndClearPendingCookies: options.getAndClearPendingCookies,
|
|
153
|
+
isEdgeRuntime: options.isEdgeRuntime,
|
|
154
|
+
middlewareContext: options.middlewareContext
|
|
155
|
+
});
|
|
156
|
+
if (Boolean(options.buildRscRedirectFlightStream) && options.isRscRequest && options.buildRscRedirectFlightStream) {
|
|
157
|
+
const stream = options.buildRscRedirectFlightStream({ digest });
|
|
158
|
+
const headers = new Headers({
|
|
159
|
+
"Content-Type": VINEXT_RSC_CONTENT_TYPE,
|
|
160
|
+
[VINEXT_RSC_REDIRECT_HEADER]: digestUrl
|
|
161
|
+
});
|
|
162
|
+
applyEdgeRuntimeHeader(headers, options.isEdgeRuntime);
|
|
163
|
+
applyRscCompatibilityIdHeader(headers);
|
|
164
|
+
mergeMiddlewareResponseHeaders(headers, options.middlewareContext?.headers ?? null);
|
|
165
|
+
const pendingCookies = options.getAndClearPendingCookies?.() ?? [];
|
|
166
|
+
for (const cookie of pendingCookies) headers.append("Set-Cookie", cookie);
|
|
167
|
+
return new Response(stream, {
|
|
168
|
+
headers,
|
|
169
|
+
status: 200
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
const location = options.isRscRequest ? await createRscRedirectLocation(prefixedLocation, options.request) : prefixedLocation;
|
|
173
|
+
const headers = new Headers({ Location: location });
|
|
174
|
+
mergeMiddlewareResponseHeaders(headers, options.middlewareContext?.headers ?? null);
|
|
175
|
+
const pendingCookies = options.getAndClearPendingCookies?.() ?? [];
|
|
176
|
+
for (const cookie of pendingCookies) headers.append("Set-Cookie", cookie);
|
|
177
|
+
return new Response(null, {
|
|
178
|
+
headers,
|
|
179
|
+
status: options.specialError.statusCode
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
if (options.renderFallbackPage) {
|
|
183
|
+
const fallbackResponse = await options.renderFallbackPage(options.specialError.statusCode);
|
|
184
|
+
if (fallbackResponse) return mergeAppPageSpecialErrorHeaders(options.specialError.fromMetadata === true && options.serveStreamingMetadata !== false ? new Response(fallbackResponse.body, {
|
|
185
|
+
headers: fallbackResponse.headers,
|
|
186
|
+
status: 200,
|
|
187
|
+
statusText: fallbackResponse.statusText
|
|
188
|
+
}) : fallbackResponse, options.middlewareContext);
|
|
189
|
+
}
|
|
190
|
+
options.clearRequestContext();
|
|
191
|
+
const responseStatus = options.specialError.fromMetadata === true && options.serveStreamingMetadata !== false ? 200 : options.specialError.statusCode;
|
|
192
|
+
return mergeAppPageSpecialErrorHeaders(new Response(getAppPageStatusText(options.specialError.statusCode), { status: responseStatus }), options.middlewareContext);
|
|
193
|
+
}
|
|
194
|
+
/** See `LayoutFlags` type docblock in app-elements.ts for lifecycle. */
|
|
195
|
+
async function probeAppPageLayouts(options) {
|
|
196
|
+
const layoutFlags = {};
|
|
197
|
+
const cls = options.classification ?? null;
|
|
198
|
+
return {
|
|
199
|
+
response: await options.runWithSuppressedHookWarning(async () => {
|
|
200
|
+
for (let layoutIndex = options.layoutCount - 1; layoutIndex >= 0; layoutIndex--) {
|
|
201
|
+
const buildTimeResult = cls?.buildTimeClassifications?.get(layoutIndex);
|
|
202
|
+
if (cls && buildTimeResult) {
|
|
203
|
+
const layoutId = cls.getLayoutId(layoutIndex);
|
|
204
|
+
layoutFlags[layoutId] = buildTimeResult === "static" ? "s" : "d";
|
|
205
|
+
const errorResponse = await probeLayoutForErrors(options, layoutIndex);
|
|
206
|
+
if (errorResponse) return errorResponse;
|
|
207
|
+
const observationDynamic = cls.isLayoutObservationDynamic?.(layoutId) === true;
|
|
208
|
+
layoutFlags[layoutId] = buildTimeResult === "dynamic" || observationDynamic ? "d" : "s";
|
|
209
|
+
if (cls.debugClassification) if (observationDynamic && buildTimeResult === "static") cls.debugClassification(layoutId, {
|
|
210
|
+
layer: "runtime-probe",
|
|
211
|
+
outcome: "dynamic"
|
|
212
|
+
});
|
|
213
|
+
else cls.debugClassification(layoutId, cls.buildTimeReasons?.get(layoutIndex) ?? { layer: "no-classifier" });
|
|
214
|
+
continue;
|
|
215
|
+
}
|
|
216
|
+
if (cls) {
|
|
217
|
+
const layoutId = cls.getLayoutId(layoutIndex);
|
|
218
|
+
try {
|
|
219
|
+
const { dynamicDetected } = await cls.runWithIsolatedDynamicScope(async () => {
|
|
220
|
+
const outcome = await runWithConnectionProbe(() => options.probeLayoutAt(layoutIndex));
|
|
221
|
+
return outcome.completed ? outcome.result : null;
|
|
222
|
+
});
|
|
223
|
+
const observationDynamic = cls.isLayoutObservationDynamic?.(layoutId) === true;
|
|
224
|
+
const layoutDynamic = dynamicDetected || observationDynamic;
|
|
225
|
+
layoutFlags[layoutId] = layoutDynamic ? "d" : "s";
|
|
226
|
+
if (cls.debugClassification) cls.debugClassification(layoutId, {
|
|
227
|
+
layer: "runtime-probe",
|
|
228
|
+
outcome: layoutDynamic ? "dynamic" : "static"
|
|
229
|
+
});
|
|
230
|
+
} catch (error) {
|
|
231
|
+
layoutFlags[layoutId] = "d";
|
|
232
|
+
if (cls.debugClassification) cls.debugClassification(layoutId, {
|
|
233
|
+
layer: "runtime-probe",
|
|
234
|
+
outcome: "dynamic",
|
|
235
|
+
error: error instanceof Error ? error.message : String(error)
|
|
236
|
+
});
|
|
237
|
+
const errorResponse = await options.onLayoutError(error, layoutIndex);
|
|
238
|
+
if (errorResponse) return errorResponse;
|
|
239
|
+
}
|
|
240
|
+
continue;
|
|
241
|
+
}
|
|
242
|
+
const errorResponse = await probeLayoutForErrors(options, layoutIndex);
|
|
243
|
+
if (errorResponse) return errorResponse;
|
|
244
|
+
}
|
|
245
|
+
return null;
|
|
246
|
+
}),
|
|
247
|
+
layoutFlags
|
|
248
|
+
};
|
|
249
|
+
}
|
|
250
|
+
async function probeLayoutForErrors(options, layoutIndex) {
|
|
251
|
+
const outcome = await runWithConnectionProbe(async () => {
|
|
252
|
+
try {
|
|
253
|
+
const layoutResult = options.probeLayoutAt(layoutIndex);
|
|
254
|
+
if (isPromiseLike(layoutResult)) await layoutResult;
|
|
255
|
+
} catch (error) {
|
|
256
|
+
return options.onLayoutError(error, layoutIndex);
|
|
257
|
+
}
|
|
258
|
+
return null;
|
|
259
|
+
});
|
|
260
|
+
return outcome.completed ? outcome.result : null;
|
|
261
|
+
}
|
|
262
|
+
async function probeAppPageComponent(options) {
|
|
263
|
+
return options.runWithSuppressedHookWarning(async () => {
|
|
264
|
+
const outcome = await runWithConnectionProbe(async () => {
|
|
265
|
+
try {
|
|
266
|
+
const pageResult = options.probePage();
|
|
267
|
+
if (isPromiseLike(pageResult)) if (options.awaitAsyncResult) await pageResult;
|
|
268
|
+
else Promise.resolve(pageResult).catch(() => {});
|
|
269
|
+
} catch (error) {
|
|
270
|
+
return options.onError(error);
|
|
271
|
+
}
|
|
272
|
+
return null;
|
|
273
|
+
});
|
|
274
|
+
return outcome.completed ? outcome.result : null;
|
|
275
|
+
});
|
|
276
|
+
}
|
|
277
|
+
async function probeAppPageThrownError(options) {
|
|
278
|
+
return options.runWithSuppressedHookWarning(async () => {
|
|
279
|
+
const outcome = await runWithConnectionProbe(async () => {
|
|
280
|
+
try {
|
|
281
|
+
const pageResult = options.probePage();
|
|
282
|
+
if (isPromiseLike(pageResult)) await pageResult;
|
|
283
|
+
} catch (error) {
|
|
284
|
+
return {
|
|
285
|
+
error,
|
|
286
|
+
thrown: true
|
|
287
|
+
};
|
|
288
|
+
}
|
|
289
|
+
return {
|
|
290
|
+
error: null,
|
|
291
|
+
thrown: false
|
|
292
|
+
};
|
|
293
|
+
});
|
|
294
|
+
return outcome.completed && outcome.result.thrown ? outcome.result.error : null;
|
|
295
|
+
});
|
|
296
|
+
}
|
|
297
|
+
async function readAppPageBinaryStream(stream) {
|
|
298
|
+
const reader = stream.getReader();
|
|
299
|
+
const chunks = [];
|
|
300
|
+
let totalLength = 0;
|
|
301
|
+
for (;;) {
|
|
302
|
+
const { done, value } = await reader.read();
|
|
303
|
+
if (done) break;
|
|
304
|
+
chunks.push(value);
|
|
305
|
+
totalLength += value.byteLength;
|
|
306
|
+
}
|
|
307
|
+
const buffer = new Uint8Array(totalLength);
|
|
308
|
+
let offset = 0;
|
|
309
|
+
for (const chunk of chunks) {
|
|
310
|
+
buffer.set(chunk, offset);
|
|
311
|
+
offset += chunk.byteLength;
|
|
312
|
+
}
|
|
313
|
+
return buffer.buffer;
|
|
314
|
+
}
|
|
315
|
+
function teeAppPageRscStreamForCapture(stream, shouldCapture) {
|
|
316
|
+
if (!shouldCapture) return { ssrStream: stream };
|
|
317
|
+
const [ssrStream, sideStream] = stream.tee();
|
|
318
|
+
return {
|
|
319
|
+
ssrStream,
|
|
320
|
+
sideStream
|
|
321
|
+
};
|
|
322
|
+
}
|
|
323
|
+
function buildAppPageFontLinkHeader(preloads) {
|
|
324
|
+
if (!preloads || preloads.length === 0) return "";
|
|
325
|
+
return preloads.map((preload) => `<${preload.href}>; rel=preload; as=font; type=${preload.type}; crossorigin`).join(", ");
|
|
326
|
+
}
|
|
327
|
+
//#endregion
|
|
328
|
+
export { buildAppPageFontLinkHeader, buildAppPageSpecialErrorResponse, probeAppPageComponent, probeAppPageLayouts, probeAppPageThrownError, readAppPageBinaryStream, resolveAppPageSpecialError, tagAppPageMetadataError, teeAppPageRscStreamForCapture };
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { MetadataFileRoute } from "./metadata-routes.js";
|
|
2
|
+
import { AppPageParams } from "./app-page-boundary.js";
|
|
3
|
+
import { Metadata, Viewport } from "../shims/metadata.js";
|
|
4
|
+
import { applyFileBasedMetadata } from "./file-based-metadata.js";
|
|
5
|
+
|
|
6
|
+
//#region src/server/app-page-head.d.ts
|
|
7
|
+
type AppPageSearchParams = Record<string, string | string[]>;
|
|
8
|
+
type AppPageHeadModule = Record<string, unknown>;
|
|
9
|
+
type ApplyAppPageFileBasedMetadata = typeof applyFileBasedMetadata;
|
|
10
|
+
type AppPageHeadParallelRoute<TModule extends AppPageHeadModule = AppPageHeadModule> = {
|
|
11
|
+
layoutModule?: TModule | null;
|
|
12
|
+
layoutModules?: readonly (TModule | null | undefined)[] | null;
|
|
13
|
+
pageModule?: TModule | null;
|
|
14
|
+
params?: AppPageParams | null;
|
|
15
|
+
routeSegments?: readonly string[] | null;
|
|
16
|
+
};
|
|
17
|
+
type AppPageHeadSlot<TModule extends AppPageHeadModule = AppPageHeadModule> = {
|
|
18
|
+
layout?: TModule | null;
|
|
19
|
+
page?: TModule | null;
|
|
20
|
+
};
|
|
21
|
+
type ResolveActiveParallelRouteHeadInputsOptions<TModule extends AppPageHeadModule = AppPageHeadModule> = {
|
|
22
|
+
interceptLayouts?: readonly (TModule | null | undefined)[] | null;
|
|
23
|
+
interceptPage?: TModule | null;
|
|
24
|
+
interceptParams?: AppPageParams | null;
|
|
25
|
+
interceptSlotKey?: string | null;
|
|
26
|
+
params: AppPageParams;
|
|
27
|
+
routeSegments: readonly string[];
|
|
28
|
+
slots?: Record<string, AppPageHeadSlot<TModule>> | null;
|
|
29
|
+
};
|
|
30
|
+
type ResolveAppPageHeadOptions<TModule extends AppPageHeadModule = AppPageHeadModule> = {
|
|
31
|
+
applyFileBasedMetadata?: ApplyAppPageFileBasedMetadata;
|
|
32
|
+
/**
|
|
33
|
+
* Configured next.config `basePath`. Threaded into `applyFileBasedMetadata`
|
|
34
|
+
* so file-based metadata route URLs (icon, opengraph-image, manifest, ...)
|
|
35
|
+
* emitted in <head> are prefixed with the basePath. Empty string when no
|
|
36
|
+
* basePath is configured.
|
|
37
|
+
*/
|
|
38
|
+
basePath?: string;
|
|
39
|
+
fallbackOnFileMetadataError?: boolean;
|
|
40
|
+
layoutModules: readonly (TModule | null | undefined)[];
|
|
41
|
+
layoutTreePositions?: readonly number[] | null;
|
|
42
|
+
metadataRoutes: readonly MetadataFileRoute[];
|
|
43
|
+
pageModule?: TModule | null;
|
|
44
|
+
parallelRoutes?: readonly AppPageHeadParallelRoute<TModule>[] | null;
|
|
45
|
+
params: AppPageParams;
|
|
46
|
+
routePath: string;
|
|
47
|
+
routeSegments?: readonly string[] | null;
|
|
48
|
+
searchParams?: URLSearchParams | null;
|
|
49
|
+
};
|
|
50
|
+
type ResolveAppPageHeadResult = {
|
|
51
|
+
hasDynamicMetadata: boolean;
|
|
52
|
+
hasSearchParams: boolean;
|
|
53
|
+
metadata: Metadata | null;
|
|
54
|
+
pageSearchParams: AppPageSearchParams;
|
|
55
|
+
viewport: Viewport;
|
|
56
|
+
};
|
|
57
|
+
type AppPageSearchParamsCollection = {
|
|
58
|
+
hasSearchParams: boolean;
|
|
59
|
+
pageSearchParams: AppPageSearchParams;
|
|
60
|
+
};
|
|
61
|
+
declare function resolveActiveParallelRouteHeadInputs<TModule extends AppPageHeadModule>(options: ResolveActiveParallelRouteHeadInputsOptions<TModule>): AppPageHeadParallelRoute<TModule>[];
|
|
62
|
+
declare function collectAppPageSearchParams(searchParams: URLSearchParams | null | undefined): AppPageSearchParamsCollection;
|
|
63
|
+
declare function resolveAppPageHead<TModule extends AppPageHeadModule>(options: ResolveAppPageHeadOptions<TModule>): Promise<ResolveAppPageHeadResult>;
|
|
64
|
+
//#endregion
|
|
65
|
+
export { AppPageSearchParams, ApplyAppPageFileBasedMetadata, collectAppPageSearchParams, resolveActiveParallelRouteHeadInputs, resolveAppPageHead };
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
import { runWithFetchDedupe } from "../shims/fetch-cache.js";
|
|
2
|
+
import { mergeMetadataEntries, mergeViewport, postProcessMetadata, resolveModuleMetadata as resolveModuleMetadata$1, resolveModuleViewport } from "../shims/metadata.js";
|
|
3
|
+
import { resolveAppPageSegmentParams } from "./app-page-params.js";
|
|
4
|
+
import { tagAppPageMetadataError } from "./app-page-execution.js";
|
|
5
|
+
//#region src/server/app-page-head.ts
|
|
6
|
+
/**
|
|
7
|
+
* Wrapped {@link _resolveModuleMetadata} that tags any thrown error with the
|
|
8
|
+
* `APP_PAGE_METADATA_ERROR_MARKER` symbol. The marker lets downstream special-
|
|
9
|
+
* error handling distinguish a `generateMetadata()` redirect/notFound from a
|
|
10
|
+
* page-component redirect/notFound, which matters because metadata is
|
|
11
|
+
* suspended/streamed in Next.js. Its redirects no longer become a plain
|
|
12
|
+
* HTTP 307: RSC navigation rides inside the flight payload (200), streaming
|
|
13
|
+
* document SSR gets an HTML refresh meta tag (200), and html-limited bots
|
|
14
|
+
* get a blocking 307 — whereas page redirects still emit a 307 for SSR.
|
|
15
|
+
* See https://github.com/cloudflare/vinext/issues/1347
|
|
16
|
+
* and Next.js test/e2e/app-dir/metadata-streaming.
|
|
17
|
+
*/
|
|
18
|
+
async function resolveModuleMetadata(...args) {
|
|
19
|
+
try {
|
|
20
|
+
return await resolveModuleMetadata$1(...args);
|
|
21
|
+
} catch (error) {
|
|
22
|
+
throw tagAppPageMetadataError(error);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
function resolveActiveParallelRouteHeadInputs(options) {
|
|
26
|
+
return Object.entries(options.slots ?? {}).map(([slotKey, slot]) => {
|
|
27
|
+
if (options.interceptSlotKey === slotKey && options.interceptPage) return {
|
|
28
|
+
layoutModules: options.interceptLayouts ?? [],
|
|
29
|
+
pageModule: options.interceptPage,
|
|
30
|
+
params: options.interceptParams ?? options.params,
|
|
31
|
+
routeSegments: options.routeSegments
|
|
32
|
+
};
|
|
33
|
+
return {
|
|
34
|
+
layoutModules: slot.layout ? [slot.layout] : [],
|
|
35
|
+
pageModule: slot.page,
|
|
36
|
+
params: options.params,
|
|
37
|
+
routeSegments: options.routeSegments
|
|
38
|
+
};
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
function isPresent(value) {
|
|
42
|
+
return value !== null && value !== void 0;
|
|
43
|
+
}
|
|
44
|
+
function hasGenerateMetadata(module) {
|
|
45
|
+
return typeof module?.generateMetadata === "function";
|
|
46
|
+
}
|
|
47
|
+
function collectAppPageSearchParams(searchParams) {
|
|
48
|
+
const pageSearchParams = Object.create(null);
|
|
49
|
+
let hasSearchParams = false;
|
|
50
|
+
searchParams?.forEach((value, key) => {
|
|
51
|
+
hasSearchParams = true;
|
|
52
|
+
const currentValue = pageSearchParams[key];
|
|
53
|
+
if (Array.isArray(currentValue)) {
|
|
54
|
+
pageSearchParams[key] = [...currentValue, value];
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
if (currentValue !== void 0) {
|
|
58
|
+
pageSearchParams[key] = [currentValue, value];
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
pageSearchParams[key] = value;
|
|
62
|
+
});
|
|
63
|
+
return {
|
|
64
|
+
hasSearchParams,
|
|
65
|
+
pageSearchParams
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
function createMetadataSources(metadataResults, routeSegments, layoutTreePositions, pageMetadata, includePageSource) {
|
|
69
|
+
const metadataSources = metadataResults.map((metadata, index) => ({
|
|
70
|
+
routeSegments: routeSegments.slice(0, layoutTreePositions[index] ?? 0),
|
|
71
|
+
metadata
|
|
72
|
+
}));
|
|
73
|
+
if (includePageSource) metadataSources.push({
|
|
74
|
+
routeSegments,
|
|
75
|
+
metadata: pageMetadata
|
|
76
|
+
});
|
|
77
|
+
return metadataSources;
|
|
78
|
+
}
|
|
79
|
+
function createLayoutInputs(layoutModules, layoutTreePositions) {
|
|
80
|
+
const layoutInputs = [];
|
|
81
|
+
for (let index = 0; index < layoutModules.length; index++) {
|
|
82
|
+
const layoutModule = layoutModules[index];
|
|
83
|
+
if (!isPresent(layoutModule)) continue;
|
|
84
|
+
layoutInputs.push({
|
|
85
|
+
module: layoutModule,
|
|
86
|
+
treePosition: layoutTreePositions[index] ?? 0
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
return layoutInputs;
|
|
90
|
+
}
|
|
91
|
+
async function resolveLayoutMetadata(layoutInputs, params, routeSegments) {
|
|
92
|
+
const layoutMetadataPromises = [];
|
|
93
|
+
let accumulatedMetadata = Promise.resolve({});
|
|
94
|
+
for (const layoutInput of layoutInputs) {
|
|
95
|
+
const parentForLayout = accumulatedMetadata;
|
|
96
|
+
const layoutParams = resolveAppPageSegmentParams(routeSegments, layoutInput.treePosition, params);
|
|
97
|
+
const metadataPromise = resolveModuleMetadata(layoutInput.module, layoutParams, void 0, parentForLayout);
|
|
98
|
+
layoutMetadataPromises.push(metadataPromise);
|
|
99
|
+
metadataPromise.catch(() => null);
|
|
100
|
+
accumulatedMetadata = metadataPromise.then(async (metadataResult) => {
|
|
101
|
+
if (metadataResult) return mergeMetadataEntries([{ metadata: await parentForLayout }, { metadata: metadataResult }]);
|
|
102
|
+
return parentForLayout;
|
|
103
|
+
});
|
|
104
|
+
accumulatedMetadata.catch(() => null);
|
|
105
|
+
}
|
|
106
|
+
return Promise.all(layoutMetadataPromises);
|
|
107
|
+
}
|
|
108
|
+
async function resolveLayoutViewport(layoutInputs, params, routeSegments) {
|
|
109
|
+
return Promise.all(layoutInputs.map((layoutInput) => {
|
|
110
|
+
const layoutParams = resolveAppPageSegmentParams(routeSegments, layoutInput.treePosition, params);
|
|
111
|
+
return resolveModuleViewport(layoutInput.module, layoutParams);
|
|
112
|
+
}));
|
|
113
|
+
}
|
|
114
|
+
async function resolveParallelRouteHead(parallelRoute, fallbackParams, fallbackRouteSegments, pageSearchParams, parent) {
|
|
115
|
+
const params = parallelRoute.params ?? fallbackParams;
|
|
116
|
+
const routeSegments = parallelRoute.routeSegments ?? fallbackRouteSegments;
|
|
117
|
+
const metadataResults = [];
|
|
118
|
+
const viewportResults = [];
|
|
119
|
+
const metadataSources = [];
|
|
120
|
+
let accumulatedMetadata = parent;
|
|
121
|
+
const layoutModules = [...parallelRoute.layoutModules ?? [], parallelRoute.layoutModule].filter(isPresent);
|
|
122
|
+
const hasDynamicMetadata = layoutModules.some(hasGenerateMetadata) || hasGenerateMetadata(parallelRoute.pageModule);
|
|
123
|
+
const layoutViewportPromises = layoutModules.map((layoutModule) => resolveModuleViewport(layoutModule, params));
|
|
124
|
+
const pageViewportPromise = parallelRoute.pageModule ? resolveModuleViewport(parallelRoute.pageModule, params) : Promise.resolve(null);
|
|
125
|
+
for (const layoutViewportPromise of layoutViewportPromises) layoutViewportPromise.catch(() => null);
|
|
126
|
+
pageViewportPromise.catch(() => null);
|
|
127
|
+
for (const layoutModule of layoutModules) {
|
|
128
|
+
const layoutMetadata = await resolveModuleMetadata(layoutModule, params, void 0, accumulatedMetadata);
|
|
129
|
+
metadataResults.push(layoutMetadata);
|
|
130
|
+
metadataSources.push({
|
|
131
|
+
metadata: layoutMetadata,
|
|
132
|
+
routeSegments
|
|
133
|
+
});
|
|
134
|
+
if (layoutMetadata) {
|
|
135
|
+
accumulatedMetadata = accumulatedMetadata.then(async (parentMetadata) => mergeMetadataEntries([{ metadata: parentMetadata }, { metadata: layoutMetadata }]));
|
|
136
|
+
accumulatedMetadata.catch(() => null);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
if (parallelRoute.pageModule) {
|
|
140
|
+
const pageMetadata = await resolveModuleMetadata(parallelRoute.pageModule, params, pageSearchParams, accumulatedMetadata);
|
|
141
|
+
metadataResults.push(pageMetadata);
|
|
142
|
+
metadataSources.push({
|
|
143
|
+
metadata: pageMetadata,
|
|
144
|
+
routeSegments
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
viewportResults.push(...await Promise.all(layoutViewportPromises));
|
|
148
|
+
const pageViewport = await pageViewportPromise;
|
|
149
|
+
if (parallelRoute.pageModule) viewportResults.push(pageViewport);
|
|
150
|
+
return {
|
|
151
|
+
hasDynamicMetadata,
|
|
152
|
+
metadataResults,
|
|
153
|
+
metadataSources,
|
|
154
|
+
viewportResults
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
async function resolveAppPageHead(options) {
|
|
158
|
+
return await runWithFetchDedupe(() => resolveAppPageHeadInner(options));
|
|
159
|
+
}
|
|
160
|
+
async function resolveAppPageHeadInner(options) {
|
|
161
|
+
const routeSegments = options.routeSegments ?? [];
|
|
162
|
+
const layoutTreePositions = options.layoutTreePositions ?? [];
|
|
163
|
+
const layoutInputs = createLayoutInputs(options.layoutModules, layoutTreePositions);
|
|
164
|
+
const layoutSourcePositions = layoutInputs.map((input) => input.treePosition);
|
|
165
|
+
const primaryHasDynamicMetadata = layoutInputs.some((input) => hasGenerateMetadata(input.module)) || hasGenerateMetadata(options.pageModule);
|
|
166
|
+
const { hasSearchParams, pageSearchParams } = collectAppPageSearchParams(options.searchParams);
|
|
167
|
+
const layoutMetadataPromise = resolveLayoutMetadata(layoutInputs, options.params, routeSegments);
|
|
168
|
+
const layoutViewportPromise = resolveLayoutViewport(layoutInputs, options.params, routeSegments);
|
|
169
|
+
const layoutMetadataResultsForParent = layoutMetadataPromise.then((metadataResults) => metadataResults.filter(isPresent));
|
|
170
|
+
layoutMetadataResultsForParent.catch(() => null);
|
|
171
|
+
const pageParentPromise = layoutMetadataResultsForParent.then((metadataResults) => metadataResults.length > 0 ? mergeMetadataEntries(metadataResults.map((metadata) => ({ metadata }))) : {});
|
|
172
|
+
pageParentPromise.catch(() => null);
|
|
173
|
+
const pageMetadataPromise = options.pageModule ? resolveModuleMetadata(options.pageModule, options.params, pageSearchParams, pageParentPromise) : Promise.resolve(null);
|
|
174
|
+
const pageViewportPromise = options.pageModule ? resolveModuleViewport(options.pageModule, options.params) : Promise.resolve(null);
|
|
175
|
+
const parallelRouteHeadPromise = Promise.all((options.parallelRoutes ?? []).map((parallelRoute) => resolveParallelRouteHead(parallelRoute, options.params, routeSegments, pageSearchParams, pageParentPromise)));
|
|
176
|
+
const [layoutMetadataResults, layoutViewportResults, pageMetadata, pageViewport, parallelRouteHeads] = await Promise.all([
|
|
177
|
+
layoutMetadataPromise,
|
|
178
|
+
layoutViewportPromise,
|
|
179
|
+
pageMetadataPromise,
|
|
180
|
+
pageViewportPromise,
|
|
181
|
+
parallelRouteHeadPromise
|
|
182
|
+
]);
|
|
183
|
+
const parallelMetadataResults = parallelRouteHeads.flatMap((head) => head.metadataResults);
|
|
184
|
+
const parallelViewportResults = parallelRouteHeads.flatMap((head) => head.viewportResults);
|
|
185
|
+
const parallelMetadataSources = parallelRouteHeads.flatMap((head) => head.metadataSources);
|
|
186
|
+
const hasDynamicMetadata = primaryHasDynamicMetadata || parallelRouteHeads.some((head) => head.hasDynamicMetadata);
|
|
187
|
+
const primaryPageHasTitle = pageMetadata != null && pageMetadata.title !== void 0;
|
|
188
|
+
const metadataEntries = [
|
|
189
|
+
...layoutMetadataResults.filter(isPresent).map((metadata) => ({ metadata })),
|
|
190
|
+
...pageMetadata ? [{
|
|
191
|
+
isPage: true,
|
|
192
|
+
metadata: pageMetadata
|
|
193
|
+
}] : [],
|
|
194
|
+
...parallelMetadataResults.filter(isPresent).map((metadata) => ({
|
|
195
|
+
contributesTitle: !primaryPageHasTitle,
|
|
196
|
+
metadata
|
|
197
|
+
}))
|
|
198
|
+
];
|
|
199
|
+
const viewportList = [
|
|
200
|
+
...layoutViewportResults.filter(isPresent),
|
|
201
|
+
...pageViewport ? [pageViewport] : [],
|
|
202
|
+
...parallelViewportResults.filter(isPresent)
|
|
203
|
+
];
|
|
204
|
+
const resolvedMetadataBase = metadataEntries.length > 0 ? mergeMetadataEntries(metadataEntries) : null;
|
|
205
|
+
const metadataSources = createMetadataSources(layoutMetadataResults, routeSegments, layoutSourcePositions, pageMetadata, Boolean(options.pageModule));
|
|
206
|
+
metadataSources.push(...parallelMetadataSources);
|
|
207
|
+
let metadata = resolvedMetadataBase;
|
|
208
|
+
if (options.applyFileBasedMetadata && options.metadataRoutes.length > 0) try {
|
|
209
|
+
metadata = await options.applyFileBasedMetadata(resolvedMetadataBase, options.routePath, options.params, options.metadataRoutes, {
|
|
210
|
+
routeSegments,
|
|
211
|
+
metadataSources,
|
|
212
|
+
basePath: options.basePath ?? ""
|
|
213
|
+
});
|
|
214
|
+
} catch (error) {
|
|
215
|
+
if (!options.fallbackOnFileMetadataError) throw error;
|
|
216
|
+
console.error(`[vinext] File-based metadata resolution failed while rendering error boundary for ${options.routePath}:`, error);
|
|
217
|
+
}
|
|
218
|
+
if (metadata) metadata = postProcessMetadata(metadata);
|
|
219
|
+
return {
|
|
220
|
+
hasDynamicMetadata,
|
|
221
|
+
hasSearchParams,
|
|
222
|
+
metadata,
|
|
223
|
+
pageSearchParams,
|
|
224
|
+
viewport: mergeViewport(viewportList)
|
|
225
|
+
};
|
|
226
|
+
}
|
|
227
|
+
//#endregion
|
|
228
|
+
export { collectAppPageSearchParams, resolveActiveParallelRouteHeadInputs, resolveAppPageHead };
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
//#region src/server/app-page-method.d.ts
|
|
2
|
+
type AppPageMethodPolicyOptions = {
|
|
3
|
+
dynamicConfig?: string;
|
|
4
|
+
hasGenerateStaticParams: boolean;
|
|
5
|
+
isDynamicRoute: boolean;
|
|
6
|
+
revalidateSeconds: number | null;
|
|
7
|
+
};
|
|
8
|
+
type ResolveAppPageMethodResponseOptions = {
|
|
9
|
+
middlewareHeaders?: Headers | null;
|
|
10
|
+
request: Pick<Request, "headers" | "method">;
|
|
11
|
+
} & AppPageMethodPolicyOptions;
|
|
12
|
+
declare function isStaticOrSsgAppPageCandidate(options: AppPageMethodPolicyOptions): boolean;
|
|
13
|
+
declare function resolveAppPageMethodResponse(options: ResolveAppPageMethodResponseOptions): Response | null;
|
|
14
|
+
//#endregion
|
|
15
|
+
export { isStaticOrSsgAppPageCandidate, resolveAppPageMethodResponse };
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { methodNotAllowedResponse } from "./http-error-responses.js";
|
|
2
|
+
import { mergeMiddlewareResponseHeaders } from "./middleware-response-headers.js";
|
|
3
|
+
import { isPossibleAppRouteActionRequest } from "./app-action-request.js";
|
|
4
|
+
//#region src/server/app-page-method.ts
|
|
5
|
+
function isNonGetOrHead(method) {
|
|
6
|
+
const normalizedMethod = method.toUpperCase();
|
|
7
|
+
return normalizedMethod !== "GET" && normalizedMethod !== "HEAD";
|
|
8
|
+
}
|
|
9
|
+
function isStaticOrSsgAppPageCandidate(options) {
|
|
10
|
+
if (options.dynamicConfig === "force-dynamic" || options.revalidateSeconds === 0) return false;
|
|
11
|
+
if (options.dynamicConfig === "force-static" || options.dynamicConfig === "error") return true;
|
|
12
|
+
if (options.revalidateSeconds !== null && options.revalidateSeconds > 0) return true;
|
|
13
|
+
if (options.hasGenerateStaticParams) return true;
|
|
14
|
+
return !options.isDynamicRoute;
|
|
15
|
+
}
|
|
16
|
+
function resolveAppPageMethodResponse(options) {
|
|
17
|
+
if (!isNonGetOrHead(options.request.method)) return null;
|
|
18
|
+
if (isPossibleAppRouteActionRequest(options.request)) return null;
|
|
19
|
+
if (!isStaticOrSsgAppPageCandidate(options)) return null;
|
|
20
|
+
const headers = new Headers();
|
|
21
|
+
mergeMiddlewareResponseHeaders(headers, options.middlewareHeaders ?? null);
|
|
22
|
+
return methodNotAllowedResponse("GET, HEAD", { headers });
|
|
23
|
+
}
|
|
24
|
+
//#endregion
|
|
25
|
+
export { isStaticOrSsgAppPageCandidate, resolveAppPageMethodResponse };
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { AppPageParams } from "./app-page-boundary.js";
|
|
2
|
+
|
|
3
|
+
//#region src/server/app-page-params.d.ts
|
|
4
|
+
declare function getAppPageSegmentParamName(segment: string): string | null;
|
|
5
|
+
declare function resolveAppPageSegmentParamScopeKeys(routeSegments: readonly string[] | null | undefined, treePosition: number): readonly string[];
|
|
6
|
+
declare function resolveAppPageSegmentParams(routeSegments: readonly string[] | null | undefined, treePosition: number, matchedParams: AppPageParams): AppPageParams;
|
|
7
|
+
//#endregion
|
|
8
|
+
export { getAppPageSegmentParamName, resolveAppPageSegmentParamScopeKeys, resolveAppPageSegmentParams };
|