vinext 1.0.0-beta.8 → 1.0.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 +158 -84
- package/THIRD_PARTY_LICENSES.md +25 -0
- package/dist/_virtual/_rolldown/runtime.js +25 -0
- package/dist/build/action-owner-manifest.d.ts +8 -9
- package/dist/build/action-owner-manifest.js +23 -5
- package/dist/build/assets-ignore.d.ts +3 -4
- package/dist/build/clean-output.d.ts +2 -3
- package/dist/build/client-build-config.d.ts +40 -12
- package/dist/build/client-build-config.js +76 -6
- package/dist/build/css-url-assets.d.ts +4 -5
- package/dist/build/css-url-assets.js +5 -2
- package/dist/build/google-fonts/build-url.d.ts +3 -4
- package/dist/build/google-fonts/fallback-metrics.d.ts +3 -4
- package/dist/build/google-fonts/find-font-files-in-css.d.ts +2 -3
- package/dist/build/google-fonts/font-metadata.d.ts +2 -3
- package/dist/build/google-fonts/get-axes.d.ts +2 -3
- package/dist/build/google-fonts/sort-variants.d.ts +2 -3
- package/dist/build/google-fonts/validate.d.ts +2 -3
- package/dist/build/google-fonts/validate.js +8 -4
- package/dist/build/inject-pregenerated-paths.d.ts +2 -3
- package/dist/build/inject-pregenerated-paths.js +16 -14
- package/dist/build/inline-css.d.ts +3 -4
- package/dist/build/layout-classification-types.d.ts +4 -5
- package/dist/build/layout-classification.d.ts +7 -8
- package/dist/build/lifecycle.d.ts +42 -0
- package/dist/build/lifecycle.js +253 -0
- package/dist/build/module-dependency-cache.d.ts +2 -3
- package/dist/build/next-client-runtime-manifests.d.ts +4 -5
- package/dist/build/nitro-route-rules.d.ts +6 -7
- package/dist/build/nitro-route-rules.js +1 -1
- package/dist/build/pages-client-assets-module.d.ts +4 -8
- package/dist/build/pages-client-assets-module.js +1 -13
- package/dist/build/precompress.d.ts +2 -3
- package/dist/build/prerender-cloudflare-loader.d.ts +4 -0
- package/dist/build/prerender-cloudflare-loader.js +49 -0
- package/dist/build/prerender-paths.d.ts +82 -8
- package/dist/build/prerender-paths.js +814 -99
- package/dist/build/prerender-phase.d.ts +2 -3
- package/dist/build/prerender-server-entry.js +11 -3
- package/dist/build/prerender-server-pool.d.ts +9 -6
- package/dist/build/prerender-server-pool.js +8 -5
- package/dist/build/prerender.d.ts +67 -15
- package/dist/build/prerender.js +177 -64
- package/dist/build/preview-credentials.d.ts +5 -6
- package/dist/build/preview-credentials.js +2 -2
- package/dist/build/public-dir-conflict.d.ts +5 -6
- package/dist/build/public-dir-conflict.js +2 -1
- package/dist/build/report.d.ts +38 -19
- package/dist/build/report.js +73 -4
- package/dist/build/route-classification-injector.d.ts +2 -3
- package/dist/build/route-classification-manifest.d.ts +5 -6
- package/dist/build/run-prerender.d.ts +11 -9
- package/dist/build/run-prerender.js +25 -16
- package/dist/build/server-entry.d.ts +4 -0
- package/dist/build/server-entry.js +28 -0
- package/dist/build/server-manifest.d.ts +8 -3
- package/dist/build/server-manifest.js +14 -2
- package/dist/build/ssr-manifest.d.ts +5 -6
- package/dist/build/standalone.d.ts +2 -3
- package/dist/build/standalone.js +2 -2
- package/dist/build/static-export.d.ts +7 -8
- package/dist/cache/cache-adapters-virtual.d.ts +95 -9
- package/dist/cache/cache-adapters-virtual.js +58 -6
- package/dist/check.d.ts +11 -10
- package/dist/check.js +467 -176
- package/dist/cli-args.d.ts +7 -16
- package/dist/cli-args.js +2 -45
- package/dist/cli-dev-config.d.ts +10 -7
- package/dist/cli-dev-config.js +160 -3
- package/dist/cli.js +124 -435
- package/dist/client/app-nav-failure-handler.d.ts +6 -7
- package/dist/client/client-rewrite-matcher.d.ts +2 -3
- package/dist/client/client-rewrites.d.ts +4 -5
- package/dist/client/dev-error-overlay-store.d.ts +13 -14
- package/dist/client/dev-error-overlay.d.ts +15 -15
- package/dist/client/dev-error-overlay.js +8 -5
- package/dist/client/instrumentation-client-inject.d.ts +3 -4
- package/dist/client/instrumentation-client-state.d.ts +5 -6
- package/dist/client/instrumentation-client.d.ts +3 -4
- package/dist/client/navigation-runtime.d.ts +21 -17
- package/dist/client/navigation-runtime.js +2 -1
- package/dist/client/pages-router-link-navigation.d.ts +4 -5
- package/dist/client/react-instance.d.ts +2 -3
- package/dist/client/validate-module-path.d.ts +2 -3
- package/dist/client/vinext-next-data.d.ts +7 -8
- package/dist/client/window-next.d.ts +4 -5
- package/dist/config/config-matchers.d.ts +16 -16
- package/dist/config/config-matchers.js +10 -7
- package/dist/config/dotenv.d.ts +3 -4
- package/dist/config/dotenv.js +2 -1
- package/dist/config/next-config.d.ts +31 -27
- package/dist/config/next-config.js +163 -16
- package/dist/config/prerender.d.ts +20 -16
- package/dist/config/prerender.js +10 -4
- package/dist/config/request-context.d.ts +5 -6
- package/dist/config/server-external-packages.d.ts +14 -3
- package/dist/config/server-external-packages.js +37 -3
- package/dist/config/tsconfig-paths.d.ts +3 -4
- package/dist/deps/.pnpm/ignore@5.3.2/deps/ignore/index.js +189 -0
- package/dist/deps/.pnpm/ua-parser-js@1.0.35/deps/ua-parser-js/src/ua-parser.js +1057 -0
- package/dist/entries/app-browser-entry.d.ts +5 -6
- package/dist/entries/app-browser-entry.js +3 -2
- package/dist/entries/app-rsc-entry.d.ts +12 -3
- package/dist/entries/app-rsc-entry.js +530 -55
- package/dist/entries/app-rsc-manifest.d.ts +4 -3
- package/dist/entries/app-rsc-manifest.js +27 -8
- package/dist/entries/app-ssr-entry.d.ts +2 -3
- package/dist/entries/app-ssr-entry.js +8 -1
- package/dist/entries/pages-client-entry.d.ts +3 -3
- package/dist/entries/pages-client-entry.js +17 -2
- package/dist/entries/pages-server-entry.d.ts +13 -3
- package/dist/entries/pages-server-entry.js +237 -33
- package/dist/entries/runtime-entry-module.d.ts +4 -5
- package/dist/image/image-adapters-virtual.d.ts +4 -5
- package/dist/index.d.ts +10 -11
- package/dist/index.js +832 -199
- package/dist/init-cloudflare.d.ts +27 -16
- package/dist/init-cloudflare.js +754 -113
- package/dist/init-platform.d.ts +26 -22
- package/dist/init-platform.js +85 -29
- package/dist/init.d.ts +19 -13
- package/dist/init.js +123 -41
- package/dist/plugins/action-owner-manifest.d.ts +3 -4
- package/dist/plugins/action-owner-manifest.js +10 -3
- package/dist/plugins/ast-scope.d.ts +10 -11
- package/dist/plugins/ast-scope.js +10 -22
- package/dist/plugins/ast-utils.d.ts +16 -29
- package/dist/plugins/ast-utils.js +27 -71
- package/dist/plugins/async-hooks-stub.d.ts +2 -3
- package/dist/plugins/client-reference-dedup.d.ts +4 -5
- package/dist/plugins/css-data-url.d.ts +2 -3
- package/dist/plugins/css-module-imports.d.ts +3 -4
- package/dist/plugins/css-module-imports.js +1 -1
- package/dist/plugins/dynamic-preload-metadata.d.ts +3 -4
- package/dist/plugins/dynamic-preload-metadata.js +55 -154
- package/dist/plugins/environment.d.ts +2 -3
- package/dist/plugins/extensionless-dynamic-import.d.ts +2 -3
- package/dist/plugins/extensionless-dynamic-import.js +6 -10
- package/dist/plugins/fonts.d.ts +10 -11
- package/dist/plugins/fonts.js +4 -3
- package/dist/plugins/ignore-dynamic-requests.d.ts +3 -4
- package/dist/plugins/ignore-dynamic-requests.js +60 -89
- package/dist/plugins/import-meta-url.d.ts +6 -7
- package/dist/plugins/import-meta-url.js +31 -43
- package/dist/plugins/instrumentation-client.d.ts +3 -3
- package/dist/plugins/instrumentation-client.js +46 -10
- package/dist/plugins/middleware-export-validation.d.ts +3 -4
- package/dist/plugins/middleware-export-validation.js +3 -3
- package/dist/plugins/middleware-server-only.d.ts +2 -3
- package/dist/plugins/og-asset-ownership.d.ts +3 -4
- package/dist/plugins/og-assets.d.ts +4 -5
- package/dist/plugins/og-assets.js +32 -13
- package/dist/plugins/og-harfbuzz.d.ts +24 -0
- package/dist/plugins/og-harfbuzz.js +260 -0
- package/dist/plugins/optimize-imports.d.ts +7 -7
- package/dist/plugins/optimize-imports.js +32 -44
- package/dist/plugins/pages-node-externals.d.ts +2 -3
- package/dist/plugins/pages-node-externals.js +6 -11
- package/dist/plugins/postcss.d.ts +8 -4
- package/dist/plugins/postcss.js +1 -1
- package/dist/plugins/remove-console.d.ts +2 -3
- package/dist/plugins/remove-console.js +0 -1
- package/dist/plugins/require-condition-resolution.d.ts +3 -4
- package/dist/plugins/require-condition-resolution.js +17 -18
- package/dist/plugins/require-context.d.ts +2 -3
- package/dist/plugins/require-context.js +13 -21
- package/dist/plugins/rsc-client-reference-loaders.d.ts +2 -3
- package/dist/plugins/rsc-client-shim-excludes.d.ts +4 -5
- package/dist/plugins/rsc-client-shim-excludes.js +1 -0
- package/dist/plugins/rsc-reference-validation-normalizer.d.ts +2 -3
- package/dist/plugins/sass.d.ts +7 -8
- package/dist/plugins/sass.js +7 -4
- package/dist/plugins/server-externals-manifest.d.ts +2 -3
- package/dist/plugins/strip-server-exports.d.ts +5 -6
- package/dist/plugins/strip-server-exports.js +1 -1
- package/dist/plugins/styled-jsx.d.ts +2 -3
- package/dist/plugins/styled-jsx.js +7 -7
- package/dist/plugins/transform-cache.d.ts +2 -3
- package/dist/plugins/transform-result.d.ts +3 -4
- package/dist/plugins/transitive-externals.d.ts +2 -3
- package/dist/plugins/typeof-window.d.ts +6 -7
- package/dist/plugins/typeof-window.js +30 -31
- package/dist/plugins/use-cache-callable.d.ts +2 -5
- package/dist/plugins/use-cache-callable.js +43 -22
- package/dist/plugins/wasm-module-import.d.ts +2 -3
- package/dist/plugins/worker-image-imports.d.ts +2 -3
- package/dist/plugins/worker-image-imports.js +6 -8
- package/dist/routing/app-route-graph.d.ts +19 -19
- package/dist/routing/app-route-graph.js +3 -2
- package/dist/routing/app-router.d.ts +20 -5
- package/dist/routing/app-router.js +28 -2
- package/dist/routing/file-matcher.d.ts +9 -10
- package/dist/routing/pages-router.d.ts +6 -6
- package/dist/routing/pages-router.js +1 -1
- package/dist/routing/route-matching.d.ts +4 -5
- package/dist/routing/route-matching.js +4 -2
- package/dist/routing/route-pattern.d.ts +13 -14
- package/dist/routing/route-trie.d.ts +5 -6
- package/dist/routing/route-validation.d.ts +3 -4
- package/dist/routing/route-validation.js +12 -11
- package/dist/routing/utils.d.ts +13 -14
- package/dist/server/accept-encoding.d.ts +9 -10
- package/dist/server/api-handler.d.ts +2 -3
- package/dist/server/api-handler.js +9 -6
- package/dist/server/app-action-forwarding.d.ts +3 -4
- package/dist/server/app-action-forwarding.js +1 -1
- package/dist/server/app-action-request.d.ts +2 -3
- package/dist/server/app-bfcache-id.d.ts +3 -4
- package/dist/server/app-bfcache-identity.d.ts +8 -9
- package/dist/server/app-browser-action-result.d.ts +15 -16
- package/dist/server/app-browser-client-reuse-manifest.d.ts +2 -3
- package/dist/server/app-browser-entry.js +121 -40
- package/dist/server/app-browser-error.d.ts +5 -6
- package/dist/server/app-browser-error.js +9 -3
- package/dist/server/app-browser-history-controller.d.ts +4 -5
- package/dist/server/app-browser-hydration.d.ts +16 -6
- package/dist/server/app-browser-hydration.js +14 -1
- package/dist/server/app-browser-interception-context.d.ts +3 -4
- package/dist/server/app-browser-mpa-navigation.d.ts +4 -5
- package/dist/server/app-browser-navigation-abort.d.ts +3 -4
- package/dist/server/app-browser-navigation-controller.d.ts +8 -8
- package/dist/server/app-browser-navigation-controller.js +9 -5
- package/dist/server/app-browser-navigation-response.d.ts +2 -3
- package/dist/server/app-browser-popstate.d.ts +4 -5
- package/dist/server/app-browser-prefetch-response.d.ts +5 -6
- package/dist/server/app-browser-rsc-redirect.d.ts +4 -5
- package/dist/server/app-browser-server-action-client.d.ts +7 -6
- package/dist/server/app-browser-server-action-client.js +9 -5
- package/dist/server/app-browser-server-action-navigation.d.ts +2 -3
- package/dist/server/app-browser-state.d.ts +17 -17
- package/dist/server/app-browser-state.js +7 -3
- package/dist/server/app-browser-stream.d.ts +4 -5
- package/dist/server/app-browser-stream.js +8 -6
- package/dist/server/app-browser-supplemental-refresh.d.ts +11 -12
- package/dist/server/app-browser-visible-commit.d.ts +6 -7
- package/dist/server/app-browser-visible-commit.js +1 -1
- package/dist/server/app-client-reference-preloader.d.ts +2 -3
- package/dist/server/app-elements-wire-key.d.ts +25 -0
- package/dist/server/app-elements-wire-key.js +69 -0
- package/dist/server/app-elements-wire.d.ts +34 -53
- package/dist/server/app-elements-wire.js +4 -75
- package/dist/server/app-elements.d.ts +5 -5
- package/dist/server/app-elements.js +1 -1
- package/dist/server/app-fallback-renderer.d.ts +4 -4
- package/dist/server/app-fallback-renderer.js +6 -6
- package/dist/server/app-fetch-tracing.d.ts +15 -0
- package/dist/server/app-fetch-tracing.js +38 -0
- package/dist/server/app-history-state.d.ts +26 -27
- package/dist/server/app-history-state.js +19 -11
- package/dist/server/app-hook-warning-suppression.d.ts +2 -3
- package/dist/server/app-hydration-cache-publication.d.ts +3 -4
- package/dist/server/app-inline-css-client.d.ts +3 -4
- package/dist/server/app-interception-context-header.d.ts +2 -3
- package/dist/server/app-layout-param-observation.d.ts +7 -8
- package/dist/server/app-metadata-tracing.d.ts +12 -0
- package/dist/server/app-metadata-tracing.js +17 -0
- package/dist/server/app-middleware.d.ts +15 -7
- package/dist/server/app-middleware.js +30 -5
- package/dist/server/app-mounted-slots-header.d.ts +2 -3
- package/dist/server/app-mounted-slots-header.js +2 -2
- package/dist/server/app-optimistic-routing.d.ts +14 -10
- package/dist/server/app-optimistic-routing.js +16 -3
- package/dist/server/app-page-boundary-render.d.ts +6 -6
- package/dist/server/app-page-boundary-render.js +10 -4
- package/dist/server/app-page-boundary.d.ts +9 -10
- package/dist/server/app-page-boundary.js +2 -1
- package/dist/server/app-page-cache-finalizer.d.ts +32 -8
- package/dist/server/app-page-cache-finalizer.js +118 -14
- package/dist/server/app-page-cache-render.d.ts +8 -5
- package/dist/server/app-page-cache-render.js +22 -5
- package/dist/server/app-page-cache.d.ts +28 -9
- package/dist/server/app-page-cache.js +96 -25
- package/dist/server/app-page-dispatch.d.ts +36 -12
- package/dist/server/app-page-dispatch.js +188 -63
- package/dist/server/app-page-element-builder.d.ts +13 -11
- package/dist/server/app-page-element-builder.js +104 -61
- package/dist/server/app-page-execution.d.ts +14 -14
- package/dist/server/app-page-execution.js +12 -8
- package/dist/server/app-page-head.d.ts +19 -16
- package/dist/server/app-page-head.js +25 -25
- package/dist/server/app-page-http-access-fallback-metadata.d.ts +6 -5
- package/dist/server/app-page-http-access-fallback-metadata.js +9 -2
- package/dist/server/app-page-method.d.ts +5 -11
- package/dist/server/app-page-method.js +2 -9
- package/dist/server/app-page-params.d.ts +5 -6
- package/dist/server/app-page-ppr-runtime.d.ts +2 -2
- package/dist/server/app-page-probe.d.ts +5 -6
- package/dist/server/app-page-probe.js +5 -4
- package/dist/server/app-page-render-identity.d.ts +4 -5
- package/dist/server/app-page-render-observation.d.ts +8 -9
- package/dist/server/app-page-render-observation.js +1 -1
- package/dist/server/app-page-render.d.ts +42 -6
- package/dist/server/app-page-render.js +192 -28
- package/dist/server/app-page-request.d.ts +10 -9
- package/dist/server/app-page-request.js +16 -12
- package/dist/server/app-page-response.d.ts +20 -9
- package/dist/server/app-page-response.js +31 -13
- package/dist/server/app-page-route-wiring.d.ts +15 -15
- package/dist/server/app-page-route-wiring.js +31 -24
- package/dist/server/app-page-search-params-observation.d.ts +26 -5
- package/dist/server/app-page-search-params-observation.js +42 -6
- package/dist/server/app-page-segment-plan.d.ts +2 -3
- package/dist/server/app-page-segment-state.d.ts +11 -12
- package/dist/server/app-page-stream.d.ts +27 -11
- package/dist/server/app-page-stream.js +35 -6
- package/dist/server/app-page-tracing.d.ts +33 -0
- package/dist/server/app-page-tracing.js +49 -0
- package/dist/server/app-pages-bridge.d.ts +6 -6
- package/dist/server/app-pages-bridge.js +19 -4
- package/dist/server/app-post-middleware-context.d.ts +2 -3
- package/dist/server/app-ppr-fallback-shell-render.d.ts +3 -4
- package/dist/server/app-ppr-fallback-shell-render.js +3 -2
- package/dist/server/app-ppr-fallback-shell.d.ts +6 -7
- package/dist/server/app-prerender-endpoints.d.ts +5 -5
- package/dist/server/app-prerender-endpoints.js +26 -12
- package/dist/server/app-prerender-static-params.d.ts +15 -7
- package/dist/server/app-prerender-static-params.js +33 -11
- package/dist/server/app-render-dependency.d.ts +14 -13
- package/dist/server/app-render-dependency.js +5 -1
- package/dist/server/app-request-context.d.ts +3 -4
- package/dist/server/app-request-stage-context.d.ts +5 -0
- package/dist/server/app-request-stage-context.js +11 -0
- package/dist/server/app-request-stage-dispatch.d.ts +25 -0
- package/dist/server/app-request-stage-dispatch.js +54 -0
- package/dist/server/app-request-stage-independent-entry.d.ts +8 -0
- package/dist/server/app-request-stage-independent-entry.js +115 -0
- package/dist/server/app-response-header-provenance.d.ts +13 -7
- package/dist/server/app-response-header-provenance.js +34 -1
- package/dist/server/app-response-stage-entry.d.ts +9 -0
- package/dist/server/app-response-stage-entry.js +87 -0
- package/dist/server/app-route-handler-cache.d.ts +2 -3
- package/dist/server/app-route-handler-cache.js +46 -34
- package/dist/server/app-route-handler-dispatch.d.ts +3 -3
- package/dist/server/app-route-handler-dispatch.js +75 -57
- package/dist/server/app-route-handler-execution.d.ts +18 -13
- package/dist/server/app-route-handler-execution.js +189 -25
- package/dist/server/app-route-handler-middleware-context.d.ts +8 -0
- package/dist/server/app-route-handler-middleware-context.js +15 -0
- package/dist/server/app-route-handler-policy.d.ts +22 -10
- package/dist/server/app-route-handler-policy.js +19 -4
- package/dist/server/app-route-handler-response.d.ts +9 -10
- package/dist/server/app-route-handler-response.js +2 -0
- package/dist/server/app-route-handler-runtime.d.ts +9 -10
- package/dist/server/app-route-handler-runtime.js +20 -16
- package/dist/server/app-route-module-loader.d.ts +6 -7
- package/dist/server/app-route-request-built-ins.d.ts +3 -4
- package/dist/server/app-route-tree-prefetch.d.ts +6 -7
- package/dist/server/app-route-tree-prefetch.js +2 -1
- package/dist/server/app-router-entry.d.ts +2 -0
- package/dist/server/app-router-entry.js +76 -12
- package/dist/server/app-rsc-cache-busting.d.ts +47 -22
- package/dist/server/app-rsc-cache-busting.js +80 -18
- package/dist/server/app-rsc-combined-handler.d.ts +9 -0
- package/dist/server/app-rsc-combined-handler.js +11 -0
- package/dist/server/app-rsc-embedded-chunks.d.ts +6 -7
- package/dist/server/app-rsc-error-handler.d.ts +12 -6
- package/dist/server/app-rsc-error-handler.js +15 -6
- package/dist/server/app-rsc-errors.d.ts +12 -9
- package/dist/server/app-rsc-errors.js +15 -13
- package/dist/server/app-rsc-handler.d.ts +33 -6
- package/dist/server/app-rsc-handler.js +498 -83
- package/dist/server/app-rsc-redirect-flight.d.ts +4 -5
- package/dist/server/app-rsc-render-mode.d.ts +8 -9
- package/dist/server/app-rsc-request-normalization.d.ts +3 -3
- package/dist/server/app-rsc-request-normalization.js +2 -1
- package/dist/server/app-rsc-response-finalizer.d.ts +8 -5
- package/dist/server/app-rsc-response-finalizer.js +24 -7
- package/dist/server/app-rsc-response-stage.d.ts +6 -0
- package/dist/server/app-rsc-response-stage.js +251 -0
- package/dist/server/app-rsc-route-matching.d.ts +4 -4
- package/dist/server/app-rsc-route-matching.js +4 -2
- package/dist/server/app-rsc-state-fingerprint.d.ts +3 -4
- package/dist/server/app-rsc-vary.d.ts +16 -0
- package/dist/server/app-rsc-vary.js +31 -0
- package/dist/server/app-segment-config.d.ts +120 -6
- package/dist/server/app-segment-config.js +264 -12
- package/dist/server/app-server-action-execution.d.ts +16 -12
- package/dist/server/app-server-action-execution.js +88 -35
- package/dist/server/app-ssr-entry.d.ts +14 -4
- package/dist/server/app-ssr-entry.js +64 -17
- package/dist/server/app-ssr-error-meta.d.ts +3 -4
- package/dist/server/app-ssr-error-meta.js +2 -1
- package/dist/server/app-ssr-router-instance.d.ts +2 -3
- package/dist/server/app-ssr-search-params-gate.d.ts +20 -0
- package/dist/server/app-ssr-search-params-gate.js +54 -0
- package/dist/server/app-ssr-stream.d.ts +13 -9
- package/dist/server/app-ssr-stream.js +33 -7
- package/dist/server/app-static-generation.d.ts +4 -5
- package/dist/server/app-visited-response-cache.d.ts +11 -12
- package/dist/server/app-visited-response-cache.js +2 -2
- package/dist/server/app-worker-stages.d.ts +112 -0
- package/dist/server/app-worker-stages.js +105 -0
- package/dist/server/artifact-compatibility.d.ts +11 -12
- package/dist/server/before-interactive-head.d.ts +2 -3
- package/dist/server/bfcache-identity.d.ts +7 -8
- package/dist/server/cache-control.d.ts +39 -11
- package/dist/server/cache-control.js +104 -7
- package/dist/server/cache-headers.d.ts +3 -4
- package/dist/server/cache-proof.d.ts +75 -70
- package/dist/server/cache-proof.js +9 -1
- package/dist/server/cacheability-limits.d.ts +8 -0
- package/dist/server/cacheability-limits.js +9 -0
- package/dist/server/cacheability-manifest.d.ts +68 -0
- package/dist/server/cacheability-manifest.js +241 -0
- package/dist/server/cacheability-request.d.ts +49 -0
- package/dist/server/cacheability-request.js +559 -0
- package/dist/server/client-reuse-manifest.d.ts +17 -18
- package/dist/server/client-reuse-manifest.js +2 -2
- package/dist/server/client-trace-metadata.d.ts +9 -6
- package/dist/server/client-trace-metadata.js +27 -15
- package/dist/server/cloudflare-workers-tracing.d.ts +1 -0
- package/dist/server/cloudflare-workers-tracing.js +8 -0
- package/dist/server/config-headers.d.ts +19 -5
- package/dist/server/config-headers.js +39 -5
- package/dist/server/cookie-utils.d.ts +2 -3
- package/dist/server/csp.d.ts +5 -6
- package/dist/server/default-global-error-module.d.ts +2 -3
- package/dist/server/default-global-not-found-module.d.ts +2 -3
- package/dist/server/default-not-found-module.d.ts +2 -3
- package/dist/server/defer-until-stream-consumed.d.ts +2 -3
- package/dist/server/defer-until-stream-consumed.js +2 -1
- package/dist/server/dev-initial-server-error.d.ts +3 -4
- package/dist/server/dev-initial-server-error.js +2 -1
- package/dist/server/dev-lockfile.d.ts +7 -8
- package/dist/server/dev-lockfile.js +4 -1
- package/dist/server/dev-module-runner.d.ts +2 -3
- package/dist/server/dev-origin-check.d.ts +5 -6
- package/dist/server/dev-route-files.d.ts +2 -3
- package/dist/server/dev-server.d.ts +4 -5
- package/dist/server/dev-server.js +130 -61
- package/dist/server/dev-stack-sourcemap.d.ts +7 -7
- package/dist/server/dev-stack-sourcemap.js +1 -1
- package/dist/server/document-initial-head.d.ts +3 -4
- package/dist/server/edge-api-runtime.d.ts +4 -5
- package/dist/server/fetch-handler.d.ts +3 -2
- package/dist/server/fetch-handler.js +3 -18
- package/dist/server/file-based-metadata.d.ts +2 -3
- package/dist/server/framework-tracer.d.ts +46 -0
- package/dist/server/framework-tracer.js +125 -0
- package/dist/server/fully-buffered-response.d.ts +11 -0
- package/dist/server/fully-buffered-response.js +19 -0
- package/dist/server/headers.d.ts +62 -56
- package/dist/server/headers.js +33 -20
- package/dist/server/html.d.ts +6 -27
- package/dist/server/html.js +16 -1
- package/dist/server/http-conditional.d.ts +5 -6
- package/dist/server/http-date.d.ts +2 -3
- package/dist/server/http-error-responses.d.ts +9 -10
- package/dist/server/http-range.d.ts +4 -5
- package/dist/server/hybrid-route-priority.d.ts +4 -5
- package/dist/server/image-optimization.d.ts +20 -21
- package/dist/server/implicit-tags.d.ts +3 -4
- package/dist/server/instrumentation-runtime.d.ts +17 -21
- package/dist/server/instrumentation-runtime.js +26 -8
- package/dist/server/instrumentation.d.ts +26 -30
- package/dist/server/instrumentation.js +18 -23
- package/dist/server/isr-cache.d.ts +28 -27
- package/dist/server/isr-cache.js +18 -70
- package/dist/server/isr-decision.d.ts +4 -4
- package/dist/server/metadata-route-build-data.d.ts +4 -5
- package/dist/server/metadata-route-cache-policy.d.ts +2 -3
- package/dist/server/metadata-route-response.d.ts +7 -7
- package/dist/server/metadata-route-response.js +68 -2
- package/dist/server/metadata-routes.d.ts +18 -19
- package/dist/server/middleware-matcher-pattern.d.ts +6 -7
- package/dist/server/middleware-matcher.d.ts +13 -6
- package/dist/server/middleware-matcher.js +22 -1
- package/dist/server/middleware-path-to-regexp.d.ts +6 -7
- package/dist/server/middleware-path-to-regexp.js +11 -9
- package/dist/server/middleware-response-headers.d.ts +3 -4
- package/dist/server/middleware-runtime.d.ts +13 -8
- package/dist/server/middleware-runtime.js +54 -10
- package/dist/server/middleware.d.ts +5 -5
- package/dist/server/multi-stage.d.ts +141 -0
- package/dist/server/multi-stage.js +8 -0
- package/dist/server/navigation-planner.d.ts +26 -26
- package/dist/server/navigation-trace.d.ts +11 -12
- package/dist/server/next-error-digest.d.ts +4 -5
- package/dist/server/normalize-path.d.ts +5 -6
- package/dist/server/normalize-path.js +1 -1
- package/dist/server/open-redirect.d.ts +2 -3
- package/dist/server/opentelemetry-api.d.ts +59 -0
- package/dist/server/opentelemetry-api.js +53 -0
- package/dist/server/opentelemetry-tracing.d.ts +5 -0
- package/dist/server/opentelemetry-tracing.js +83 -0
- package/dist/server/operation-token.d.ts +11 -12
- package/dist/server/otel-tracer-extension.d.ts +7 -9
- package/dist/server/otel-tracer-extension.js +37 -36
- package/dist/server/pages-api-route.d.ts +5 -4
- package/dist/server/pages-api-route.js +21 -8
- package/dist/server/pages-asset-tags.d.ts +6 -6
- package/dist/server/pages-asset-tags.js +37 -2
- package/dist/server/pages-body-parser-config.d.ts +4 -5
- package/dist/server/pages-body-parser-config.js +4 -4
- package/dist/server/pages-client-assets.d.ts +11 -5
- package/dist/server/pages-data-route.d.ts +11 -12
- package/dist/server/pages-data-route.js +1 -1
- package/dist/server/pages-default-404.d.ts +3 -4
- package/dist/server/pages-dev-hydration.d.ts +9 -4
- package/dist/server/pages-dev-hydration.js +19 -7
- package/dist/server/pages-dev-module-url.d.ts +3 -4
- package/dist/server/pages-dev-stylesheets.d.ts +5 -6
- package/dist/server/pages-document-asset-props.d.ts +6 -7
- package/dist/server/pages-document-initial-props.d.ts +5 -5
- package/dist/server/pages-document-initial-props.js +4 -2
- package/dist/server/pages-execution-tracing.d.ts +40 -0
- package/dist/server/pages-execution-tracing.js +80 -0
- package/dist/server/pages-get-initial-props.d.ts +9 -10
- package/dist/server/pages-i18n.d.ts +8 -8
- package/dist/server/pages-i18n.js +3 -2
- package/dist/server/pages-media-type.d.ts +4 -5
- package/dist/server/pages-node-compat.d.ts +11 -10
- package/dist/server/pages-node-compat.js +12 -4
- package/dist/server/pages-page-data.d.ts +18 -19
- package/dist/server/pages-page-data.js +11 -10
- package/dist/server/pages-page-handler.d.ts +7 -6
- package/dist/server/pages-page-handler.js +98 -47
- package/dist/server/pages-page-method.d.ts +2 -3
- package/dist/server/pages-page-response.d.ts +14 -10
- package/dist/server/pages-page-response.js +49 -31
- package/dist/server/pages-preview.d.ts +10 -11
- package/dist/server/pages-readiness.d.ts +2 -3
- package/dist/server/pages-request-pipeline.d.ts +16 -12
- package/dist/server/pages-request-pipeline.js +69 -28
- package/dist/server/pages-request-stage-entry.d.ts +23 -0
- package/dist/server/pages-request-stage-entry.js +314 -0
- package/dist/server/pages-response-stage-entry.d.ts +11 -0
- package/dist/server/pages-response-stage-entry.js +106 -0
- package/dist/server/pages-response-stage.d.ts +31 -0
- package/dist/server/pages-response-stage.js +49 -0
- package/dist/server/pages-revalidate.d.ts +3 -4
- package/dist/server/pages-revalidate.js +9 -4
- package/dist/server/pages-route-data-kind.d.ts +18 -0
- package/dist/server/pages-route-data-kind.js +11 -0
- package/dist/server/pages-router-entry.d.ts +1 -25
- package/dist/server/pages-router-entry.js +48 -114
- package/dist/server/pages-serializable-props.d.ts +3 -4
- package/dist/server/pregenerated-concrete-paths.d.ts +9 -7
- package/dist/server/pregenerated-concrete-paths.js +12 -6
- package/dist/server/prerender-cache-life-header.d.ts +3 -4
- package/dist/server/prerender-manifest.d.ts +11 -11
- package/dist/server/prerender-manifest.js +6 -3
- package/dist/server/prerender-route-params.d.ts +16 -9
- package/dist/server/prerender-route-params.js +18 -2
- package/dist/server/prerender-work-unit-setup.d.ts +4 -4
- package/dist/server/prerender-work-unit-setup.js +37 -14
- package/dist/server/prod-server.d.ts +12 -9
- package/dist/server/prod-server.js +129 -36
- package/dist/server/proxy-trust.d.ts +5 -6
- package/dist/server/request-log.d.ts +3 -4
- package/dist/server/request-pipeline.d.ts +17 -21
- package/dist/server/request-pipeline.js +8 -10
- package/dist/server/request-stage.d.ts +5 -0
- package/dist/server/request-stage.js +7 -0
- package/dist/server/request-tracing.d.ts +22 -0
- package/dist/server/request-tracing.js +180 -0
- package/dist/server/response-stage-cacheability.d.ts +37 -0
- package/dist/server/response-stage-cacheability.js +55 -0
- package/dist/server/response-stage-policy.d.ts +23 -0
- package/dist/server/response-stage-policy.js +89 -0
- package/dist/server/response-stage.d.ts +5 -0
- package/dist/server/response-stage.js +7 -0
- package/dist/server/response-start-tracing.d.ts +14 -0
- package/dist/server/response-start-tracing.js +80 -0
- package/dist/server/revalidation-host.d.ts +2 -3
- package/dist/server/revalidation-host.js +2 -1
- package/dist/server/revalidation-request.d.ts +8 -0
- package/dist/server/revalidation-request.js +37 -0
- package/dist/server/rsc-completion-metadata.d.ts +6 -7
- package/dist/server/rsc-stream-hints.d.ts +18 -7
- package/dist/server/rsc-stream-hints.js +70 -35
- package/dist/server/seed-cache.d.ts +2 -3
- package/dist/server/seed-cache.js +8 -7
- package/dist/server/server-action-not-found.d.ts +5 -6
- package/dist/server/server-globals.d.ts +2 -3
- package/dist/server/server-globals.js +13 -0
- package/dist/server/skip-cache-proof.d.ts +4 -4
- package/dist/server/socket-error-backstop.d.ts +5 -6
- package/dist/server/socket-error-backstop.js +1 -1
- package/dist/server/static-file-cache.d.ts +5 -6
- package/dist/server/static-file-cache.js +9 -7
- package/dist/server/static-file-signal.d.ts +16 -0
- package/dist/server/static-file-signal.js +82 -0
- package/dist/server/static-layout-client-reuse-proof.d.ts +4 -5
- package/dist/server/streaming-metadata.d.ts +2 -3
- package/dist/server/tracer.d.ts +5 -0
- package/dist/server/tracer.js +13 -0
- package/dist/server/worker-prerender-discovery.d.ts +18 -0
- package/dist/server/worker-prerender-discovery.js +55 -0
- package/dist/server/worker-revalidation-context.d.ts +2 -3
- package/dist/server/worker-revalidation-context.js +5 -5
- package/dist/server/worker-stages.d.ts +43 -0
- package/dist/server/worker-stages.js +25 -0
- package/dist/server/worker-utils.d.ts +5 -6
- package/dist/server/worker-utils.js +4 -4
- package/dist/server/workers-tracing.d.ts +17 -0
- package/dist/server/workers-tracing.js +27 -0
- package/dist/shims/amp.d.ts +3 -4
- package/dist/shims/app-router-scroll-state.d.ts +9 -10
- package/dist/shims/app-router-scroll.d.ts +4 -5
- package/dist/shims/app-router-scroll.js +2 -1
- package/dist/shims/app.d.ts +5 -6
- package/dist/shims/before-interactive-context.d.ts +5 -6
- package/dist/shims/cache-callable-runtime.d.ts +44 -4
- package/dist/shims/cache-callable-runtime.js +168 -8
- package/dist/shims/cache-for-request.d.ts +2 -3
- package/dist/shims/cache-handler.d.ts +33 -20
- package/dist/shims/cache-handler.js +61 -2
- package/dist/shims/cache-request-state.d.ts +28 -29
- package/dist/shims/cache-runtime.d.ts +23 -21
- package/dist/shims/cache-runtime.js +239 -121
- package/dist/shims/cache.d.ts +15 -15
- package/dist/shims/cache.js +25 -13
- package/dist/shims/cacheability-classification.d.ts +106 -0
- package/dist/shims/cacheability-classification.js +161 -0
- package/dist/shims/cdn-cache-state.d.ts +13 -0
- package/dist/shims/cdn-cache-state.js +23 -0
- package/dist/shims/cdn-cache.d.ts +76 -18
- package/dist/shims/cdn-cache.js +40 -39
- package/dist/shims/client-hook-error.d.ts +3 -4
- package/dist/shims/client-locale.d.ts +2 -3
- package/dist/shims/client-page-root.d.ts +24 -0
- package/dist/shims/client-page-root.js +121 -0
- package/dist/shims/compat-router.d.ts +2 -3
- package/dist/shims/config.d.ts +3 -4
- package/dist/shims/constants.d.ts +73 -74
- package/dist/shims/constants.js +1 -1
- package/dist/shims/default-not-found.d.ts +2 -3
- package/dist/shims/document.d.ts +9 -9
- package/dist/shims/dynamic-preload-chunks.d.ts +2 -3
- package/dist/shims/dynamic-preload-chunks.js +17 -13
- package/dist/shims/dynamic.d.ts +3 -3
- package/dist/shims/error-boundary-navigation.d.ts +3 -4
- package/dist/shims/error-boundary.d.ts +17 -18
- package/dist/shims/error-boundary.js +17 -11
- package/dist/shims/error.d.ts +4 -4
- package/dist/shims/error.js +1 -1
- package/dist/shims/error.react-server.d.ts +3 -4
- package/dist/shims/fetch-cache.d.ts +22 -22
- package/dist/shims/fetch-cache.js +50 -20
- package/dist/shims/font-google-base.d.ts +9 -9
- package/dist/shims/font-google-base.js +2 -1
- package/dist/shims/font-local.d.ts +3 -3
- package/dist/shims/font-local.js +1 -1
- package/dist/shims/font-utils.d.ts +14 -15
- package/dist/shims/form.d.ts +2 -2
- package/dist/shims/form.js +10 -7
- package/dist/shims/hash-scroll.d.ts +5 -6
- package/dist/shims/head-state.d.ts +4 -5
- package/dist/shims/head.d.ts +16 -16
- package/dist/shims/head.js +5 -4
- package/dist/shims/headers.d.ts +68 -32
- package/dist/shims/headers.js +101 -10
- package/dist/shims/i18n-context.d.ts +5 -6
- package/dist/shims/i18n-state.d.ts +4 -5
- package/dist/shims/image-config.d.ts +5 -6
- package/dist/shims/image-config.js +2 -0
- package/dist/shims/image.d.ts +5 -5
- package/dist/shims/image.js +12 -8
- package/dist/shims/internal/als-registry.d.ts +4 -5
- package/dist/shims/internal/api-utils.d.ts +3 -4
- package/dist/shims/internal/app-page-props-cache-key.d.ts +32 -4
- package/dist/shims/internal/app-page-props-cache-key.js +53 -1
- package/dist/shims/internal/app-prefetch-fetch-queue.d.ts +5 -6
- package/dist/shims/internal/app-prefetch-rsc-request.d.ts +13 -0
- package/dist/shims/internal/app-prefetch-rsc-request.js +12 -0
- package/dist/shims/internal/app-route-detection.d.ts +2 -2
- package/dist/shims/internal/app-route-prefetch-policy.d.ts +5 -6
- package/dist/shims/internal/app-route-prefetch-policy.js +1 -0
- package/dist/shims/internal/app-router-context.d.ts +9 -10
- package/dist/shims/internal/cookie-serialize.d.ts +4 -5
- package/dist/shims/internal/format-url-object.d.ts +7 -0
- package/dist/shims/internal/format-url-object.js +53 -0
- package/dist/shims/internal/hybrid-client-route-owner-direct.d.ts +6 -7
- package/dist/shims/internal/hybrid-client-route-owner-direct.js +29 -11
- package/dist/shims/internal/hybrid-client-route-owner.d.ts +3 -3
- package/dist/shims/internal/hybrid-client-route-owner.js +5 -4
- package/dist/shims/internal/interpolate-as.d.ts +5 -6
- package/dist/shims/internal/interpolate-as.js +4 -2
- package/dist/shims/internal/link-status-registry.d.ts +5 -6
- package/dist/shims/internal/make-hanging-promise.d.ts +8 -3
- package/dist/shims/internal/make-hanging-promise.js +13 -2
- package/dist/shims/internal/navigation-untracked.d.ts +2 -3
- package/dist/shims/internal/normalize-router-href.d.ts +15 -0
- package/dist/shims/internal/normalize-router-href.js +41 -0
- package/dist/shims/internal/pages-data-fetch-dedup.d.ts +8 -9
- package/dist/shims/internal/pages-data-target.d.ts +8 -6
- package/dist/shims/internal/pages-data-target.js +32 -36
- package/dist/shims/internal/pages-data-url.d.ts +4 -5
- package/dist/shims/internal/pages-data-url.js +2 -1
- package/dist/shims/internal/pages-router-accessor.d.ts +3 -4
- package/dist/shims/internal/pages-router-components.d.ts +3 -4
- package/dist/shims/internal/route-pattern-for-warning.d.ts +5 -6
- package/dist/shims/internal/route-pattern-for-warning.js +3 -3
- package/dist/shims/internal/router-context.d.ts +2 -3
- package/dist/shims/internal/thenable-well-known-properties.d.ts +10 -0
- package/dist/shims/internal/thenable-well-known-properties.js +33 -0
- package/dist/shims/internal/utils.d.ts +7 -8
- package/dist/shims/internal/work-unit-async-storage.d.ts +12 -11
- package/dist/shims/layout-segment-context.d.ts +3 -4
- package/dist/shims/link-prefetch.d.ts +9 -10
- package/dist/shims/link.d.ts +4 -4
- package/dist/shims/link.js +67 -116
- package/dist/shims/metadata.d.ts +15 -16
- package/dist/shims/metadata.js +40 -36
- package/dist/shims/navigation-context-accessors.d.ts +9 -0
- package/dist/shims/navigation-context-accessors.js +19 -0
- package/dist/shims/navigation-context-state.d.ts +27 -18
- package/dist/shims/navigation-errors.d.ts +18 -19
- package/dist/shims/navigation-state.d.ts +6 -7
- package/dist/shims/navigation.d.ts +80 -68
- package/dist/shims/navigation.js +45 -17
- package/dist/shims/navigation.react-server.d.ts +9 -9
- package/dist/shims/navigation.react-server.js +1 -1
- package/dist/shims/offline.d.ts +2 -3
- package/dist/shims/og.d.ts +2 -2
- package/dist/shims/pages-router-runtime.d.ts +4 -5
- package/dist/shims/ppr-fallback-shell.d.ts +13 -14
- package/dist/shims/readonly-url-search-params.d.ts +2 -3
- package/dist/shims/request-context.d.ts +7 -6
- package/dist/shims/root-params.d.ts +14 -15
- package/dist/shims/router-state.d.ts +5 -6
- package/dist/shims/router-state.js +1 -1
- package/dist/shims/router.d.ts +22 -21
- package/dist/shims/router.js +339 -164
- package/dist/shims/script-nonce-context.d.ts +8 -6
- package/dist/shims/script-nonce-context.js +15 -6
- package/dist/shims/script.d.ts +4 -4
- package/dist/shims/script.js +9 -7
- package/dist/shims/search-params-gate.d.ts +35 -0
- package/dist/shims/search-params-gate.js +32 -0
- package/dist/shims/server.d.ts +19 -51
- package/dist/shims/server.js +14 -28
- package/dist/shims/slot.d.ts +33 -15
- package/dist/shims/slot.js +41 -9
- package/dist/shims/streamed-icons.d.ts +3 -4
- package/dist/shims/thenable-params.d.ts +5 -7
- package/dist/shims/thenable-params.js +3 -24
- package/dist/shims/unified-request-context.d.ts +34 -31
- package/dist/shims/unified-request-context.js +34 -24
- package/dist/shims/unrecognized-action-error.d.ts +3 -4
- package/dist/shims/url-safety.d.ts +5 -6
- package/dist/shims/url-utils.d.ts +18 -12
- package/dist/shims/url-utils.js +10 -1
- package/dist/shims/use-merged-ref.d.ts +2 -3
- package/dist/shims/user-agent.d.ts +31 -0
- package/dist/shims/user-agent.js +16 -0
- package/dist/shims/web-vitals.d.ts +2 -2
- package/dist/typegen.d.ts +3 -4
- package/dist/utils/asset-prefix.d.ts +7 -8
- package/dist/utils/base-path.d.ts +5 -6
- package/dist/utils/built-asset-url.d.ts +2 -3
- package/dist/utils/built-asset-url.js +1 -1
- package/dist/utils/cache-control-metadata.d.ts +4 -5
- package/dist/utils/client-build-manifest.d.ts +6 -7
- package/dist/utils/client-build-manifest.js +2 -1
- package/dist/utils/client-entry-manifest.d.ts +6 -7
- package/dist/utils/client-runtime-metadata.d.ts +8 -3
- package/dist/utils/client-runtime-metadata.js +18 -1
- package/dist/utils/commonjs-loader.d.ts +4 -5
- package/dist/utils/compare.d.ts +2 -3
- package/dist/utils/deployment-id.d.ts +6 -7
- package/dist/utils/dev-error-recovery-event.d.ts +2 -3
- package/dist/utils/dev-stack-sourcemap-endpoint.d.ts +2 -3
- package/dist/utils/domain-locale.d.ts +7 -8
- package/dist/utils/encode-cache-tag.d.ts +3 -4
- package/dist/utils/error-cause.d.ts +2 -3
- package/dist/utils/external-url.d.ts +2 -3
- package/dist/utils/has-trailing-comma.d.ts +3 -4
- package/dist/utils/hash.d.ts +3 -4
- package/dist/utils/html-limited-bots.d.ts +3 -4
- package/dist/utils/lazy-chunks.d.ts +8 -9
- package/dist/utils/lazy-chunks.js +4 -4
- package/dist/utils/manifest-paths.d.ts +5 -6
- package/dist/utils/mdx-scan.d.ts +11 -4
- package/dist/utils/mdx-scan.js +27 -1
- package/dist/utils/middleware-request-headers.d.ts +7 -6
- package/dist/utils/middleware-request-headers.js +6 -1
- package/dist/utils/navigation-signal.d.ts +3 -3
- package/dist/utils/navigation-signal.js +16 -1
- package/dist/utils/number.d.ts +2 -3
- package/dist/utils/package-name.d.ts +3 -4
- package/dist/utils/parse-cookie.d.ts +4 -5
- package/dist/utils/path.d.ts +8 -9
- package/dist/utils/plugin-options.d.ts +2 -3
- package/dist/utils/precompressed-variant.d.ts +3 -4
- package/dist/utils/prerender-output-paths.d.ts +9 -10
- package/dist/utils/prerender-output-paths.js +16 -9
- package/dist/utils/project.d.ts +19 -30
- package/dist/utils/project.js +20 -29
- package/dist/utils/promise.d.ts +2 -3
- package/dist/utils/protocol-headers.d.ts +14 -15
- package/dist/utils/public-file-path.d.ts +2 -3
- package/dist/utils/public-routes.d.ts +2 -3
- package/dist/utils/query.d.ts +14 -9
- package/dist/utils/query.js +22 -1
- package/dist/utils/react-compiler-support.d.ts +6 -7
- package/dist/utils/react-version.d.ts +4 -3
- package/dist/utils/react-version.js +19 -1
- package/dist/utils/record.d.ts +2 -3
- package/dist/utils/redirect-digest.d.ts +3 -4
- package/dist/utils/regex-safety.d.ts +4 -5
- package/dist/utils/regex.d.ts +2 -3
- package/dist/utils/safe-json-file.d.ts +2 -3
- package/dist/utils/sorted-array.d.ts +2 -3
- package/dist/utils/text-stream.d.ts +3 -4
- package/dist/utils/vinext-root.d.ts +2 -3
- package/dist/utils/virtual-module.d.ts +3 -4
- package/dist/utils/vite-cli-invocation.d.ts +21 -0
- package/dist/utils/vite-cli-invocation.js +144 -0
- package/dist/utils/vite-version.d.ts +5 -6
- package/next-package.json +4 -0
- package/package.json +55 -6
|
@@ -1,43 +1,64 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { preserveFullyBufferedBodyMetadata } from "./fully-buffered-response.js";
|
|
2
|
+
import { closeAfterResponse, closeAfterResponseWithBody, createRequestContext, runWithRequestContext } from "../shims/unified-request-context.js";
|
|
3
|
+
import { PRERENDER_REVALIDATE_HEADER, VINEXT_MW_CTX_HEADER, VINEXT_PRERENDER_ROUTE_PARAMS_HEADER, VINEXT_PRERENDER_SPECULATIVE_HEADER, VINEXT_REVALIDATE_HOST_HEADER } from "../utils/protocol-headers.js";
|
|
4
|
+
import { hasMiddlewareRequestHeaderOverrides } from "../utils/middleware-request-headers.js";
|
|
5
|
+
import { requestContextFromRequest } from "../config/request-context.js";
|
|
6
|
+
import { isExternalUrl } from "../utils/external-url.js";
|
|
2
7
|
import { normalizePathnameForRouteMatchStrict } from "../routing/utils.js";
|
|
3
8
|
import { addBasePathToPathname, hasBasePath, stripBasePath } from "../utils/base-path.js";
|
|
4
|
-
import {
|
|
9
|
+
import { patternToNextFormat } from "../routing/route-validation.js";
|
|
5
10
|
import { getRequestExecutionContext } from "../shims/request-context.js";
|
|
6
|
-
import
|
|
7
|
-
import { ACTION_REVALIDATED_HEADER, FLIGHT_HEADERS } from "./headers.js";
|
|
11
|
+
import "./app-rsc-vary.js";
|
|
12
|
+
import { ACTION_REVALIDATED_HEADER, FLIGHT_HEADERS, VINEXT_PARAMS_HEADER, VINEXT_RENDERED_PATH_AND_SEARCH_HEADER } from "./headers.js";
|
|
8
13
|
import { isInterceptionMatchedUrlPath, normalizePath } from "./normalize-path.js";
|
|
9
|
-
import { isExternalUrl } from "../utils/external-url.js";
|
|
10
14
|
import { badRequestResponse, notFoundResponse } from "./http-error-responses.js";
|
|
11
15
|
import { cloneRequestWithHeaders, cloneRequestWithUrl, filterInternalHeaders, normalizeTrailingSlash, resolvePublicFileRoute } from "./request-pipeline.js";
|
|
12
16
|
import { normalizeDefaultLocalePathname } from "./pages-i18n.js";
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
17
|
+
import { getCdnCacheAdapter } from "../shims/cdn-cache.js";
|
|
18
|
+
import { markRouteCacheabilityDynamic, preserveRouteCacheabilityResponsePolicy } from "../shims/cacheability-classification.js";
|
|
19
|
+
import { NEVER_CACHE_CONTROL, applyCdnResponseHeaders, captureCdnResponsePolicyOverrides, isCdnResponsePolicyHeader, reconcileCdnResponseHeadersAfterOuterPolicy } from "./cache-control.js";
|
|
20
|
+
import { isOnDemandRevalidateRequest } from "./revalidation-request.js";
|
|
21
|
+
import { getDraftModeCookieHeader, getEffectiveRequestCookieHeader, getHeadersContext, hasEffectiveRequestCookieChanges, headersContextFromRequest, isDraftModeEnabled, isDraftModeRequest, runWithHeadersContext } from "../shims/headers.js";
|
|
17
22
|
import { mergeRewriteQuery } from "../utils/query.js";
|
|
18
23
|
import { getScriptNonceFromHeaderSources } from "./csp.js";
|
|
19
24
|
import { buildNextDataNotFoundResponse, normalizePagesDataRequest } from "./pages-data-route.js";
|
|
25
|
+
import { traceFindPageComponents } from "./pages-execution-tracing.js";
|
|
20
26
|
import { DEFAULT_DEVICE_SIZES, DEFAULT_IMAGE_SIZES, isImageOptimizationPath, resolveDevImageRedirect } from "./image-optimization.js";
|
|
21
|
-
import {
|
|
27
|
+
import { parseCacheabilityManifest } from "./cacheability-manifest.js";
|
|
28
|
+
import { getRenderedConcreteUrlPathsForRoute } from "./pregenerated-concrete-paths.js";
|
|
29
|
+
import { VINEXT_RSC_CACHE_BUSTING_SEARCH_PARAM, canonicalizeLoadingShellRscRequestHeaders, canonicalizePrewarmableRscRequestHeaders, createCanonicalRscRequestUrl, createRscRedirectLocation, createRscRequestUrl, hasRscCacheBustingSearchParam, resolveInvalidRscCacheBustingRequest, stripRscCacheBustingSearchParam, stripRscSuffix } from "./app-rsc-cache-busting.js";
|
|
22
30
|
import { mergeMiddlewareResponseHeaders } from "./middleware-response-headers.js";
|
|
31
|
+
import { consumeResponseStageLinkProvenance, copyLinkHeaderProvenance } from "./app-response-header-provenance.js";
|
|
23
32
|
import "./app-page-response.js";
|
|
24
33
|
import { parseNextHttpErrorDigest } from "./next-error-digest.js";
|
|
34
|
+
import { traceAppPageRender } from "./app-page-tracing.js";
|
|
35
|
+
import { setFrameworkRequestRoute, traceFrameworkRequest } from "./request-tracing.js";
|
|
25
36
|
import { matchPrerenderRouteParamsPayload, readTrustedPrerenderRouteParams, serializePrerenderRouteParamsHeader } from "./prerender-route-params.js";
|
|
26
37
|
import { buildPageCacheTags } from "./implicit-tags.js";
|
|
27
|
-
import { getRenderedConcreteUrlPathsForRoute } from "./pregenerated-concrete-paths.js";
|
|
28
|
-
import { pickRootParams, setRootParams } from "../shims/root-params.js";
|
|
29
|
-
import { flattenErrorCauses } from "../utils/error-cause.js";
|
|
30
38
|
import { createServerActionNotFoundResponse, getServerActionNotFoundMessage } from "./server-action-not-found.js";
|
|
31
39
|
import { buildPostMwRequestContext } from "./app-post-middleware-context.js";
|
|
40
|
+
import { pickRootParams, setRootParams } from "../shims/root-params.js";
|
|
32
41
|
import { createRouteTreePrefetchResponse, isRouteTreePrefetchRequest } from "./app-route-tree-prefetch.js";
|
|
33
|
-
import {
|
|
42
|
+
import { createSharedAppPageCacheIdentity, isStaticCandidateAppPageDispatch, prepareSharedAppPageDispatch, withoutAppPageDispatchQuery } from "./app-worker-stages.js";
|
|
43
|
+
import { flattenErrorCauses } from "../utils/error-cause.js";
|
|
44
|
+
import { applyAppRscConfigHeaders, finalizeAppRscResponse, markAppRscResponseConfigHeadersApplied } from "./app-rsc-response-finalizer.js";
|
|
34
45
|
import { normalizeRscRequest } from "./app-rsc-request-normalization.js";
|
|
46
|
+
import { hasPagesPreviewCookie } from "./pages-response-stage.js";
|
|
35
47
|
import { runWithPrerenderWorkUnit } from "./prerender-work-unit-setup.js";
|
|
48
|
+
import { consumePagesResponseStagePolicyOwner, withoutResponseStageVary } from "./response-stage-policy.js";
|
|
36
49
|
//#region src/server/app-rsc-handler.ts
|
|
37
|
-
const STATIC_METADATA_CONFIG_HEADER_OVERRIDES = /* @__PURE__ */ new Set(["cache-control"]);
|
|
38
50
|
const HAS_CONFIG_HEADERS = process.env.__VINEXT_HAS_CONFIG_HEADERS !== "false";
|
|
39
51
|
const HAS_CONFIG_REDIRECTS = process.env.__VINEXT_HAS_CONFIG_REDIRECTS !== "false";
|
|
40
52
|
const HAS_CONFIG_REWRITES = process.env.__VINEXT_HAS_CONFIG_REWRITES !== "false";
|
|
53
|
+
function ruleUsesUnkeyedRequestCondition(rule) {
|
|
54
|
+
return [...rule.has ?? [], ...rule.missing ?? []].some((condition) => condition.type === "header" || condition.type === "cookie" || condition.type === "host");
|
|
55
|
+
}
|
|
56
|
+
function markConditionalRewriteCacheability(rewrite) {
|
|
57
|
+
if (ruleUsesUnkeyedRequestCondition(rewrite)) markRouteCacheabilityDynamic("next.config rewrite depends on request headers, cookies, or hostnames");
|
|
58
|
+
}
|
|
59
|
+
function markConditionalRedirectCacheability(redirect) {
|
|
60
|
+
if (ruleUsesUnkeyedRequestCondition(redirect)) markRouteCacheabilityDynamic("next.config redirect depends on request headers, cookies, or hostnames");
|
|
61
|
+
}
|
|
41
62
|
function haveSameRequestCookies(first, second) {
|
|
42
63
|
if (first.size !== second.size) return false;
|
|
43
64
|
for (const [name, value] of first) if (second.get(name) !== value) return false;
|
|
@@ -56,10 +77,45 @@ function haveSamePageParams(first, second) {
|
|
|
56
77
|
}
|
|
57
78
|
return true;
|
|
58
79
|
}
|
|
59
|
-
function
|
|
80
|
+
function rewriteCachePathname(sourcePathname, resolvedPathname) {
|
|
81
|
+
return `${sourcePathname}?__vinext_rewrite=${encodeURIComponent(resolvedPathname)}`;
|
|
82
|
+
}
|
|
83
|
+
function requestOptsOutOfWorkerResponseStage(request, options, scriptNonce, allowInternalRscDocumentFallback) {
|
|
84
|
+
if (request.method !== "GET" && request.method !== "HEAD") return true;
|
|
85
|
+
if (allowInternalRscDocumentFallback || scriptNonce !== void 0) return true;
|
|
86
|
+
if (isDraftModeRequest(request, options.draftModeSecret) || isDraftModeEnabled()) return true;
|
|
87
|
+
if (isOnDemandRevalidateRequest(request.headers.get("x-prerender-revalidate"))) return true;
|
|
88
|
+
if (request.headers.has("x-vinext-prerender-route-params")) return true;
|
|
89
|
+
return false;
|
|
90
|
+
}
|
|
91
|
+
let parsedCacheabilityRequestProjection;
|
|
92
|
+
function readCacheabilityRequestProjection(options) {
|
|
93
|
+
const raw = options.cacheabilityRequestProjection;
|
|
94
|
+
if (!raw || !options.buildId) return null;
|
|
95
|
+
if (parsedCacheabilityRequestProjection?.raw !== raw || parsedCacheabilityRequestProjection.buildId !== options.buildId) parsedCacheabilityRequestProjection = {
|
|
96
|
+
buildId: options.buildId,
|
|
97
|
+
manifest: parseCacheabilityManifest(raw, options.buildId),
|
|
98
|
+
raw
|
|
99
|
+
};
|
|
100
|
+
return parsedCacheabilityRequestProjection.manifest;
|
|
101
|
+
}
|
|
102
|
+
function adapterUsesQueryFreeCacheIdentity() {
|
|
103
|
+
const adapter = getCdnCacheAdapter();
|
|
104
|
+
return adapter.requiresCompletedResponseAdmission === true && adapter.responseStageCacheIdentity === "query-free";
|
|
105
|
+
}
|
|
106
|
+
function hasUrlParserDotSegment(pathname) {
|
|
107
|
+
return pathname.split("/").some((segment) => {
|
|
108
|
+
const decodedDots = segment.replaceAll(/%2e/gi, ".");
|
|
109
|
+
return decodedDots === "." || decodedDots === "..";
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
function applyMiddlewareContextToResponse(response, middlewareContext, appendToPostConfigLink = false) {
|
|
60
113
|
if (!middlewareContext.headers && middlewareContext.status == null) return response;
|
|
61
114
|
const headers = new Headers(response.headers);
|
|
115
|
+
const responseLink = appendToPostConfigLink ? headers.get("link") : null;
|
|
62
116
|
mergeMiddlewareResponseHeaders(headers, middlewareContext.headers);
|
|
117
|
+
const middlewareLink = middlewareContext.headers?.get("link");
|
|
118
|
+
if (responseLink && middlewareLink) headers.set("link", `${middlewareLink}, ${responseLink}`);
|
|
63
119
|
return preserveFullyBufferedBodyMetadata(response, new Response(response.body, {
|
|
64
120
|
status: middlewareContext.status ?? response.status,
|
|
65
121
|
statusText: response.statusText,
|
|
@@ -89,11 +145,11 @@ function redirectDestinationWithBasePath(destination, basePath, hadBasePath) {
|
|
|
89
145
|
if (!basePath || !hadBasePath || isExternalUrl(destination) || hasBasePath(destination, basePath)) return destination;
|
|
90
146
|
return basePath + destination;
|
|
91
147
|
}
|
|
92
|
-
async function applyRewrite(options, cleanPathname) {
|
|
148
|
+
async function applyRewrite(options, cleanPathname, recordCacheability = true) {
|
|
93
149
|
if (!HAS_CONFIG_REWRITES || !options.rewrites.length) return null;
|
|
94
150
|
const sourcePathname = options.paramsPathname ?? cleanPathname;
|
|
95
151
|
const configMatchers = await import("../config/config-matchers.js");
|
|
96
|
-
const rewritten = configMatchers.matchRewrite(sourcePathname, options.rewrites, options.requestContext, options.basePathState, options.paramsPathname);
|
|
152
|
+
const rewritten = configMatchers.matchRewrite(sourcePathname, options.rewrites, options.requestContext, options.basePathState, options.paramsPathname, recordCacheability ? markConditionalRewriteCacheability : void 0);
|
|
97
153
|
if (!rewritten) return null;
|
|
98
154
|
if (isExternalUrl(rewritten)) {
|
|
99
155
|
const validationResponse = await options.validateExternalRewriteRequest();
|
|
@@ -123,7 +179,8 @@ async function applyConfigHeadersToMiddlewareRedirect(response, options) {
|
|
|
123
179
|
configHeaders: options.configHeaders,
|
|
124
180
|
pathname: options.pathname,
|
|
125
181
|
requestContext: options.requestContext,
|
|
126
|
-
basePathState: options.basePathState
|
|
182
|
+
basePathState: options.basePathState,
|
|
183
|
+
recordCacheability: options.recordCacheability
|
|
127
184
|
});
|
|
128
185
|
if (!headers.entries().next().done) {
|
|
129
186
|
mergeMiddlewareResponseHeaders(headers, response.headers);
|
|
@@ -148,7 +205,7 @@ function requestWithoutRscSuffix(request) {
|
|
|
148
205
|
url.pathname = pathname;
|
|
149
206
|
return cloneRequestWithUrl(request, url.toString());
|
|
150
207
|
}
|
|
151
|
-
function
|
|
208
|
+
function markUnverifiedInterceptionResponseUncacheable(response) {
|
|
152
209
|
const applyNoStore = (headers) => {
|
|
153
210
|
applyCdnResponseHeaders(headers, { cacheControl: NEVER_CACHE_CONTROL });
|
|
154
211
|
};
|
|
@@ -166,7 +223,7 @@ function markInvalidInterceptionIdResponseUncacheable(response) {
|
|
|
166
223
|
}
|
|
167
224
|
return markedResponse;
|
|
168
225
|
}
|
|
169
|
-
async function handleAppRscRequest(options, request, preMiddlewareRequestContext, middlewareContext, isDataRequest, isMiddlewareDataRequest, pagesDataRequest, dispatchInternalRequest, allowInternalRscDocumentFallback,
|
|
226
|
+
async function handleAppRscRequest(options, request, preMiddlewareRequestContext, middlewareContext, isDataRequest, isMiddlewareDataRequest, pagesDataRequest, dispatchInternalRequest, allowInternalRscDocumentFallback, dispatchResponseStage, responseStageProbeMode = null, setInterceptionResponseUncacheable = () => {}) {
|
|
170
227
|
const handlerStart = process.env.NODE_ENV !== "production" ? performance.now() : 0;
|
|
171
228
|
if (process.env.NODE_ENV !== "production") {
|
|
172
229
|
const originBlock = options.validateDevRequestOrigin?.(request);
|
|
@@ -181,10 +238,26 @@ async function handleAppRscRequest(options, request, preMiddlewareRequestContext
|
|
|
181
238
|
].some((rule) => rule.basePath === false);
|
|
182
239
|
const normalized = normalizeRscRequest(request, options.basePath, canHandleOutsideBasePath);
|
|
183
240
|
if (normalized instanceof Response) {
|
|
184
|
-
if (request.headers.has("X-Vinext-Interception-Id"))
|
|
241
|
+
if (request.headers.has("X-Vinext-Interception-Context") || request.headers.has("X-Vinext-Interception-Id")) setInterceptionResponseUncacheable(true);
|
|
185
242
|
return normalized;
|
|
186
243
|
}
|
|
187
244
|
const { url, isRscRequest, interceptionContextHeader, interceptionIdHeader, mountedSlotsHeader, renderMode, clientReuseManifest, hadBasePath } = normalized;
|
|
245
|
+
setFrameworkRequestRoute(void 0, isRscRequest);
|
|
246
|
+
const hasRawInterceptionContext = isRscRequest && request.headers.has("X-Vinext-Interception-Context");
|
|
247
|
+
if (hasRawInterceptionContext) setInterceptionResponseUncacheable(true);
|
|
248
|
+
let interceptionSourcePathname = null;
|
|
249
|
+
if (isRscRequest && interceptionContextHeader !== null) try {
|
|
250
|
+
if (!isInterceptionMatchedUrlPath(interceptionContextHeader)) throw new Error("Invalid interception source pathname");
|
|
251
|
+
const decodedInterceptionSourcePathname = normalizePathnameForRouteMatchStrict(interceptionContextHeader);
|
|
252
|
+
if (/[\t\n\r]/.test(decodedInterceptionSourcePathname)) throw new Error("Interception source contains a stripped URL character");
|
|
253
|
+
if (hasUrlParserDotSegment(decodedInterceptionSourcePathname)) throw new Error("Interception source contains a URL dot segment");
|
|
254
|
+
interceptionSourcePathname = normalizePath(decodedInterceptionSourcePathname);
|
|
255
|
+
if (interceptionSourcePathname !== decodedInterceptionSourcePathname) throw new Error("Non-canonical interception source pathname");
|
|
256
|
+
} catch {
|
|
257
|
+
options.clearRequestContext();
|
|
258
|
+
setInterceptionResponseUncacheable(true);
|
|
259
|
+
return badRequestResponse();
|
|
260
|
+
}
|
|
188
261
|
const { requestCleanPathname } = normalized;
|
|
189
262
|
let { pathname, cleanPathname } = normalized;
|
|
190
263
|
let resolvedUrl = cleanPathname + url.search;
|
|
@@ -197,8 +270,8 @@ async function handleAppRscRequest(options, request, preMiddlewareRequestContext
|
|
|
197
270
|
};
|
|
198
271
|
let cleanPathnameIsRequestPathname = true;
|
|
199
272
|
const matchCleanPathname = () => cleanPathnameIsRequestPathname && options.matchRequestRoute ? options.matchRequestRoute(requestCleanPathname) : options.matchRoute(cleanPathname);
|
|
200
|
-
if (interceptionIdHeader !== null && (!isRscRequest || interceptionContextHeader === null || !options.hasInterceptionId(interceptionIdHeader))) {
|
|
201
|
-
|
|
273
|
+
if (interceptionIdHeader !== null && (!isRscRequest || interceptionContextHeader === null || request.method !== "GET" && request.method !== "HEAD" || !options.hasInterceptionId(interceptionIdHeader))) {
|
|
274
|
+
setInterceptionResponseUncacheable(true);
|
|
202
275
|
return badRequestResponse();
|
|
203
276
|
}
|
|
204
277
|
if (interceptionIdHeader !== null) {
|
|
@@ -208,11 +281,17 @@ async function handleAppRscRequest(options, request, preMiddlewareRequestContext
|
|
|
208
281
|
});
|
|
209
282
|
if (selectorCacheBustingRedirect) return selectorCacheBustingRedirect;
|
|
210
283
|
}
|
|
284
|
+
const provesConcreteInterceptionSource = (sourceMatch) => {
|
|
285
|
+
if (sourceMatch === null) return false;
|
|
286
|
+
if (sourceMatch.interceptionSourceIsConcrete !== void 0) return sourceMatch.interceptionSourceIsConcrete;
|
|
287
|
+
return interceptionSourcePathname !== null && options.matchRoute(interceptionSourcePathname)?.route === sourceMatch.route;
|
|
288
|
+
};
|
|
289
|
+
if (provesConcreteInterceptionSource(hadBasePath && hasRawInterceptionContext && interceptionContextHeader !== null ? options.matchInterceptRoute?.(requestCleanPathname, interceptionContextHeader, interceptionIdHeader) ?? null : null)) setInterceptionResponseUncacheable(false);
|
|
211
290
|
if (pathname === "/__vinext/prerender/static-params" || pathname === "/__vinext/prerender/pages-static-paths" || pathname === "/__vinext/prerender/metadata-routes") {
|
|
212
291
|
const { handleAppPrerenderEndpoint } = await import("./app-prerender-endpoints.js");
|
|
213
292
|
const prerenderEndpointResponse = await handleAppPrerenderEndpoint(request, {
|
|
214
293
|
isPrerenderEnabled() {
|
|
215
|
-
return process.env.VINEXT_PRERENDER === "1";
|
|
294
|
+
return process.env.VINEXT_PRERENDER === "1" || getRequestExecutionContext()?.isPrerenderPathDiscovery === true;
|
|
216
295
|
},
|
|
217
296
|
getMetadataRoutePaths: options.getPrerenderMetadataRoutePaths,
|
|
218
297
|
loadPagesRoutes: options.loadPrerenderPagesRoutes,
|
|
@@ -227,7 +306,7 @@ async function handleAppRscRequest(options, request, preMiddlewareRequestContext
|
|
|
227
306
|
const matchPathname = (p) => normalizeDefaultLocalePathname(p, options.i18nConfig, { hostname: url.hostname });
|
|
228
307
|
const redirectPathname = matchPathname(requestCleanPathname);
|
|
229
308
|
const configMatchers = HAS_CONFIG_REDIRECTS && options.configRedirects.length ? await import("../config/config-matchers.js") : null;
|
|
230
|
-
const redirect = configMatchers ? configMatchers.matchRedirect(redirectPathname, options.configRedirects, preMiddlewareRequestContext, basePathState) : null;
|
|
309
|
+
const redirect = configMatchers ? configMatchers.matchRedirect(redirectPathname, options.configRedirects, preMiddlewareRequestContext, basePathState, dispatchResponseStage ? void 0 : markConditionalRedirectCacheability) : null;
|
|
231
310
|
if (configMatchers && redirect) {
|
|
232
311
|
const destination = configMatchers.sanitizeDestination(redirectDestinationWithBasePath(redirect.destination, options.basePath, hadBasePath));
|
|
233
312
|
const location = isRscRequest && request.headers.get("RSC") === "1" ? await createRscRedirectLocation(destination, request) : configMatchers.preserveRedirectDestinationQuery(destination, url.search);
|
|
@@ -267,12 +346,14 @@ async function handleAppRscRequest(options, request, preMiddlewareRequestContext
|
|
|
267
346
|
request: userlandRequest,
|
|
268
347
|
validateExternalRewriteRequest: () => validateClaimedOutsideBasePathRsc(true)
|
|
269
348
|
});
|
|
349
|
+
if (!dispatchResponseStage && middlewareResult.pathnameEligible) markRouteCacheabilityDynamic(middlewareResult.matched ? "middleware matched this request" : "middleware is eligible for this pathname");
|
|
270
350
|
if (middlewareResult.kind === "response") {
|
|
271
351
|
if (request.body && !request.body.locked) request.body.cancel().catch(() => {});
|
|
272
352
|
return applyConfigHeadersToMiddlewareRedirect(middlewareResult.response, {
|
|
273
353
|
basePathState,
|
|
274
354
|
configHeaders: options.configHeaders,
|
|
275
355
|
pathname: matchPathname(requestCleanPathname),
|
|
356
|
+
recordCacheability: dispatchResponseStage === void 0,
|
|
276
357
|
requestContext: preMiddlewareRequestContext
|
|
277
358
|
});
|
|
278
359
|
}
|
|
@@ -284,6 +365,158 @@ async function handleAppRscRequest(options, request, preMiddlewareRequestContext
|
|
|
284
365
|
resolvedUrl = cleanPathname + url.search;
|
|
285
366
|
}
|
|
286
367
|
const scriptNonce = getScriptNonceFromHeaderSources(request.headers, middlewareContext.headers);
|
|
368
|
+
const hasMiddlewareCookieOverlay = hasEffectiveRequestCookieChanges(request.headers.get("cookie"));
|
|
369
|
+
const middlewareCookieOverlay = hasMiddlewareCookieOverlay ? getEffectiveRequestCookieHeader() ?? "" : null;
|
|
370
|
+
const draftModeCookie = dispatchResponseStage || options.renderResponseStageLocally ? getDraftModeCookieHeader() : null;
|
|
371
|
+
const responseStageCacheability = (resolvedRouteUrl) => ({
|
|
372
|
+
policyHeaders: null,
|
|
373
|
+
probeMode: responseStageProbeMode,
|
|
374
|
+
resolvedRoutePathname: pathnameForResolvedUrl(resolvedRouteUrl)
|
|
375
|
+
});
|
|
376
|
+
let responseStagePolicyPromise;
|
|
377
|
+
const loadResponseStagePolicy = () => responseStagePolicyPromise ??= options.configHeaders.length ? import("./config-headers.js").then(({ resolveResponseStageCachePolicy }) => withoutResponseStageVary(resolveResponseStageCachePolicy({
|
|
378
|
+
basePathState,
|
|
379
|
+
configHeaders: options.configHeaders,
|
|
380
|
+
pathname: matchPathname(requestCleanPathname),
|
|
381
|
+
requestContext: preMiddlewareRequestContext
|
|
382
|
+
}))) : Promise.resolve(null);
|
|
383
|
+
let canUseSharedWorkerResponseStage = draftModeCookie === null && !hasMiddlewareCookieOverlay && !hasMiddlewareRequestHeaderOverrides(middlewareContext.requestHeaders ?? middlewareContext.headers) && !requestOptsOutOfWorkerResponseStage(request, options, scriptNonce, allowInternalRscDocumentFallback);
|
|
384
|
+
const isOnDemandRevalidate = isOnDemandRevalidateRequest(request.headers.get(PRERENDER_REVALIDATE_HEADER));
|
|
385
|
+
const transportedResponseStage = dispatchResponseStage ? async (stageRequest, props) => {
|
|
386
|
+
const responseStagePolicy = await loadResponseStagePolicy();
|
|
387
|
+
const cache = responseStageProbeMode || isOnDemandRevalidate || (props.kind === "app-page" || props.kind === "app-route-handler") && (props.bypassInterceptionContextCache || props.forceDynamic === true && responseStagePolicy === null) ? "bypass" : canUseSharedWorkerResponseStage ? "shared" : "bypass";
|
|
388
|
+
let dispatchRequest = props.kind === "app-page" ? prepareSharedAppPageDispatch(stageRequest, cache) : stageRequest;
|
|
389
|
+
let canonicalRsc = null;
|
|
390
|
+
if (cache === "shared" && props.kind === "app-page" && props.isRscRequest && props.matchKind === "request" && props.interceptionContext === null && props.interceptionId === null && props.mountedSlotsHeader === null) {
|
|
391
|
+
const headers = new Headers(dispatchRequest.headers);
|
|
392
|
+
if (props.renderMode === "navigation" ? canonicalizePrewarmableRscRequestHeaders(headers) : props.renderMode === "prefetch-loading-shell" && props.canUseCanonicalLoadingShell ? canonicalizeLoadingShellRscRequestHeaders(headers) : false) {
|
|
393
|
+
canonicalRsc = {
|
|
394
|
+
headers,
|
|
395
|
+
navigation: props.renderMode === "navigation"
|
|
396
|
+
};
|
|
397
|
+
dispatchRequest = cloneRequestWithHeaders(dispatchRequest, headers);
|
|
398
|
+
}
|
|
399
|
+
}
|
|
400
|
+
let stageProps = {
|
|
401
|
+
...props,
|
|
402
|
+
cacheability: {
|
|
403
|
+
...props.cacheability,
|
|
404
|
+
policyHeaders: responseStagePolicy
|
|
405
|
+
}
|
|
406
|
+
};
|
|
407
|
+
if (cache === "shared" && responseStagePolicy === null && stageProps.kind === "app-page") {
|
|
408
|
+
const projection = readCacheabilityRequestProjection(options);
|
|
409
|
+
if (projection && isStaticCandidateAppPageDispatch(projection, dispatchRequest, stageProps)) {
|
|
410
|
+
const queryFree = withoutAppPageDispatchQuery(dispatchRequest.url, stageProps);
|
|
411
|
+
dispatchRequest = cloneRequestWithUrl(dispatchRequest, queryFree.url);
|
|
412
|
+
stageProps = queryFree.props;
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
if (canonicalRsc) {
|
|
416
|
+
const rscPath = canonicalRsc.navigation ? createCanonicalRscRequestUrl(dispatchRequest.url) : await createRscRequestUrl(dispatchRequest.url, canonicalRsc.headers);
|
|
417
|
+
dispatchRequest = cloneRequestWithUrl(dispatchRequest, new URL(rscPath, dispatchRequest.url).toString());
|
|
418
|
+
}
|
|
419
|
+
const cacheIdentity = cache === "shared" && responseStagePolicy === null && stageProps.kind === "app-page" && stageProps.matchKind !== "interception" && stageProps.interceptionContext === null && stageProps.interceptionId === null && stageProps.mountedSlotsHeader === null && adapterUsesQueryFreeCacheIdentity() ? createSharedAppPageCacheIdentity(dispatchRequest, stageProps) : void 0;
|
|
420
|
+
let response = await dispatchResponseStage(dispatchRequest, stageProps, cacheIdentity ? {
|
|
421
|
+
cache,
|
|
422
|
+
cacheIdentity
|
|
423
|
+
} : { cache });
|
|
424
|
+
if (stageRequest.method.toUpperCase() === "HEAD" && response.body) {
|
|
425
|
+
await response.body.cancel();
|
|
426
|
+
response = new Response(null, {
|
|
427
|
+
headers: response.headers,
|
|
428
|
+
status: response.status,
|
|
429
|
+
statusText: response.statusText
|
|
430
|
+
});
|
|
431
|
+
}
|
|
432
|
+
if (props.kind !== "app-page" || !props.isRscRequest) return response;
|
|
433
|
+
const headers = new Headers(response.headers);
|
|
434
|
+
if (Object.keys(props.params).length > 0) headers.set(VINEXT_PARAMS_HEADER, encodeURIComponent(JSON.stringify(props.params)));
|
|
435
|
+
else headers.delete(VINEXT_PARAMS_HEADER);
|
|
436
|
+
headers.set(VINEXT_RENDERED_PATH_AND_SEARCH_HEADER, encodeURIComponent(props.resolvedUrl));
|
|
437
|
+
return preserveFullyBufferedBodyMetadata(response, new Response(response.body, {
|
|
438
|
+
headers,
|
|
439
|
+
status: response.status,
|
|
440
|
+
statusText: response.statusText
|
|
441
|
+
}));
|
|
442
|
+
} : void 0;
|
|
443
|
+
const responseStageRequest = (stageRequest = request) => {
|
|
444
|
+
const activeHeaders = getHeadersContext()?.headers;
|
|
445
|
+
if (!activeHeaders) return stageRequest;
|
|
446
|
+
return cloneRequestWithHeaders(stageRequest, new Headers(activeHeaders));
|
|
447
|
+
};
|
|
448
|
+
const renderMetadataRouteIfMatched = async () => {
|
|
449
|
+
if (!filesystemRouteEligible || (options.isMetadataRoute ? !options.isMetadataRoute(cleanPathname) : !options.handleMetadataRouteRequest)) return null;
|
|
450
|
+
const metadataRoutePathname = cleanPathnameIsRequestPathname ? requestCleanPathname : cleanPathname;
|
|
451
|
+
const metadataResponseStage = transportedResponseStage ?? options.renderResponseStageLocally;
|
|
452
|
+
if (metadataResponseStage) {
|
|
453
|
+
const response = await metadataResponseStage(responseStageRequest(), {
|
|
454
|
+
kind: "app-metadata",
|
|
455
|
+
buildId: options.buildId,
|
|
456
|
+
cacheability: responseStageCacheability(resolvedUrl),
|
|
457
|
+
canonicalPathname,
|
|
458
|
+
cleanPathname,
|
|
459
|
+
draftModeCookie,
|
|
460
|
+
isRscRequest,
|
|
461
|
+
middlewareCookieOverlay,
|
|
462
|
+
mountedSlotsHeader,
|
|
463
|
+
protocolVersion: 10,
|
|
464
|
+
requestOrigin: url.origin,
|
|
465
|
+
renderMode,
|
|
466
|
+
resolvedUrl,
|
|
467
|
+
routePathname: metadataRoutePathname,
|
|
468
|
+
scriptNonce: scriptNonce ?? null
|
|
469
|
+
});
|
|
470
|
+
if (response.headers.get("x-vinext-app-metadata-stage-no-match") === "1") {
|
|
471
|
+
await response.body?.cancel();
|
|
472
|
+
return null;
|
|
473
|
+
}
|
|
474
|
+
return response;
|
|
475
|
+
}
|
|
476
|
+
return options.handleMetadataRouteRequest?.(cleanPathname, metadataRoutePathname) ?? null;
|
|
477
|
+
};
|
|
478
|
+
const applyConfigHeadersToResponseStage = async (response, preserveExistingPolicy = false) => {
|
|
479
|
+
const headers = new Headers(response.headers);
|
|
480
|
+
copyLinkHeaderProvenance(response.headers, headers);
|
|
481
|
+
await applyAppRscConfigHeaders(headers, request, {
|
|
482
|
+
basePath: options.basePath,
|
|
483
|
+
configHeaders: options.configHeaders,
|
|
484
|
+
i18nConfig: options.i18nConfig,
|
|
485
|
+
middlewareHeaders: middlewareContext.headers,
|
|
486
|
+
overwriteExisting: preserveExistingPolicy ? /* @__PURE__ */ new Set() : isCdnResponsePolicyHeader,
|
|
487
|
+
recordCacheability: dispatchResponseStage === void 0,
|
|
488
|
+
requestContext: preMiddlewareRequestContext
|
|
489
|
+
});
|
|
490
|
+
return preserveFullyBufferedBodyMetadata(response, new Response(response.body, {
|
|
491
|
+
headers,
|
|
492
|
+
status: response.status,
|
|
493
|
+
statusText: response.statusText
|
|
494
|
+
}));
|
|
495
|
+
};
|
|
496
|
+
let preHandlerResponseHeadersPromise;
|
|
497
|
+
const loadPreHandlerResponseHeaders = () => preHandlerResponseHeadersPromise ??= (async () => {
|
|
498
|
+
const headers = new Headers();
|
|
499
|
+
await applyAppRscConfigHeaders(headers, request, {
|
|
500
|
+
basePath: options.basePath,
|
|
501
|
+
configHeaders: options.configHeaders,
|
|
502
|
+
i18nConfig: options.i18nConfig,
|
|
503
|
+
overwriteExisting: isCdnResponsePolicyHeader,
|
|
504
|
+
recordCacheability: false,
|
|
505
|
+
requestContext: preMiddlewareRequestContext
|
|
506
|
+
});
|
|
507
|
+
mergeMiddlewareResponseHeaders(headers, middlewareContext.headers);
|
|
508
|
+
return headers;
|
|
509
|
+
})();
|
|
510
|
+
let outerResponsePolicyPromise;
|
|
511
|
+
const loadOuterResponsePolicy = () => outerResponsePolicyPromise ??= Promise.all([loadPreHandlerResponseHeaders(), loadResponseStagePolicy()]).then(([headers, responseStagePolicy]) => captureCdnResponsePolicyOverrides(headers, new Headers(responseStagePolicy ?? [])));
|
|
512
|
+
const composeResponseStageResponse = async (response) => {
|
|
513
|
+
const transportedLink = consumeResponseStageLinkProvenance(response);
|
|
514
|
+
response = transportedLink.response;
|
|
515
|
+
response = await applyConfigHeadersToResponseStage(response, Boolean(dispatchResponseStage || options.renderResponseStageLocally));
|
|
516
|
+
response = applyMiddlewareContextToResponse(response, middlewareContext, transportedLink.appendToPostConfigLink);
|
|
517
|
+
reconcileCdnResponseHeadersAfterOuterPolicy(response.headers, await loadOuterResponsePolicy());
|
|
518
|
+
return markAppRscResponseConfigHeadersApplied(response);
|
|
519
|
+
};
|
|
287
520
|
const postMiddlewareRequestContext = buildPostMwRequestContext(userlandRequest);
|
|
288
521
|
filesystemRouteEligible ||= didMiddlewareRewrite;
|
|
289
522
|
for (const rewrite of options.configRewrites.beforeFiles) {
|
|
@@ -295,7 +528,7 @@ async function handleAppRscRequest(options, request, preMiddlewareRequestContext
|
|
|
295
528
|
paramsPathname: matchPathname(cleanPathnameIsRequestPathname ? requestCleanPathname : cleanPathname),
|
|
296
529
|
rewrites: [rewrite],
|
|
297
530
|
validateExternalRewriteRequest: () => validateClaimedOutsideBasePathRsc(true)
|
|
298
|
-
}, matchPathname(cleanPathname));
|
|
531
|
+
}, matchPathname(cleanPathname), dispatchResponseStage === void 0);
|
|
299
532
|
if (beforeFilesRewrite instanceof Response) return beforeFilesRewrite;
|
|
300
533
|
if (beforeFilesRewrite) {
|
|
301
534
|
resolvedUrl = mergeRewriteQuery(resolvedUrl, beforeFilesRewrite);
|
|
@@ -322,7 +555,7 @@ async function handleAppRscRequest(options, request, preMiddlewareRequestContext
|
|
|
322
555
|
paramsPathname: matchPathname(cleanPathnameIsRequestPathname ? requestCleanPathname : cleanPathname),
|
|
323
556
|
rewrites: [rewrite],
|
|
324
557
|
validateExternalRewriteRequest: () => validateClaimedOutsideBasePathRsc(true)
|
|
325
|
-
}, matchPathname(cleanPathname));
|
|
558
|
+
}, matchPathname(cleanPathname), dispatchResponseStage === void 0);
|
|
326
559
|
if (rewritten instanceof Response) return rewritten;
|
|
327
560
|
if (!rewritten) continue;
|
|
328
561
|
resolvedUrl = mergeRewriteQuery(resolvedUrl, rewritten);
|
|
@@ -341,7 +574,7 @@ async function handleAppRscRequest(options, request, preMiddlewareRequestContext
|
|
|
341
574
|
paramsPathname: matchPathname(cleanPathnameIsRequestPathname ? requestCleanPathname : cleanPathname),
|
|
342
575
|
rewrites: [rewrite],
|
|
343
576
|
validateExternalRewriteRequest: () => validateClaimedOutsideBasePathRsc(true)
|
|
344
|
-
}, matchPathname(cleanPathname));
|
|
577
|
+
}, matchPathname(cleanPathname), dispatchResponseStage === void 0);
|
|
345
578
|
if (rewritten instanceof Response) return rewritten;
|
|
346
579
|
if (!rewritten) continue;
|
|
347
580
|
resolvedUrl = mergeRewriteQuery(resolvedUrl, rewritten);
|
|
@@ -360,20 +593,8 @@ async function handleAppRscRequest(options, request, preMiddlewareRequestContext
|
|
|
360
593
|
if (!imageRedirect) return new Response("Invalid image optimization parameters", { status: 400 });
|
|
361
594
|
return Response.redirect(new URL(imageRedirect, url.origin).href, 302);
|
|
362
595
|
}
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
if (metadataRouteResponse && HAS_CONFIG_HEADERS && options.configHeaders.length) {
|
|
366
|
-
const { applyConfigHeadersToResponse } = await import("./config-headers.js");
|
|
367
|
-
applyConfigHeadersToResponse(metadataRouteResponse.headers, {
|
|
368
|
-
basePathState,
|
|
369
|
-
configHeaders: options.configHeaders,
|
|
370
|
-
overwriteExisting: STATIC_METADATA_CONFIG_HEADER_OVERRIDES,
|
|
371
|
-
pathname: matchPathname(cleanPathnameIsRequestPathname ? requestCleanPathname : cleanPathname),
|
|
372
|
-
requestContext: preMiddlewareRequestContext
|
|
373
|
-
});
|
|
374
|
-
}
|
|
375
|
-
if (metadataRouteResponse) return applyMiddlewareContextToResponse(metadataRouteResponse, middlewareContext);
|
|
376
|
-
}
|
|
596
|
+
const metadataRouteResponse = await renderMetadataRouteIfMatched();
|
|
597
|
+
if (metadataRouteResponse) return composeResponseStageResponse(metadataRouteResponse);
|
|
377
598
|
const publicFileResponse = filesystemRouteEligible ? resolvePublicFileRoute({
|
|
378
599
|
cleanPathname,
|
|
379
600
|
middlewareContext,
|
|
@@ -396,21 +617,22 @@ async function handleAppRscRequest(options, request, preMiddlewareRequestContext
|
|
|
396
617
|
});
|
|
397
618
|
const directPreActionMatch = filesystemRouteEligible ? matchCleanPathname() : null;
|
|
398
619
|
const preActionRoutePathname = cleanPathnameIsRequestPathname ? requestCleanPathname : cleanPathname;
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
interceptionSourcePathname = normalizePath(normalizePathnameForRouteMatchStrict(interceptionContextHeader));
|
|
403
|
-
} catch {
|
|
620
|
+
const interceptionSourceMatch = filesystemRouteEligible && interceptionSourcePathname !== null && interceptionContextHeader !== null ? options.matchInterceptRoute?.(preActionRoutePathname, interceptionContextHeader, interceptionIdHeader) ?? null : null;
|
|
621
|
+
const hasVerifiedInterceptionSource = provesConcreteInterceptionSource(interceptionSourceMatch);
|
|
622
|
+
if (interceptionIdHeader !== null && !hasVerifiedInterceptionSource) {
|
|
404
623
|
options.clearRequestContext();
|
|
405
|
-
|
|
406
|
-
return badRequestResponse();
|
|
407
|
-
}
|
|
408
|
-
const interceptionSourceMatch = interceptionSourcePathname !== null && interceptionContextHeader !== null ? options.matchInterceptRoute?.(preActionRoutePathname, interceptionContextHeader, interceptionIdHeader) ?? null : null;
|
|
409
|
-
if (interceptionIdHeader !== null && interceptionSourceMatch === null) {
|
|
410
|
-
options.clearRequestContext();
|
|
411
|
-
markInterceptionIdRejected();
|
|
624
|
+
setInterceptionResponseUncacheable(true);
|
|
412
625
|
return badRequestResponse();
|
|
413
626
|
}
|
|
627
|
+
let bypassInterceptionContextCache = hasRawInterceptionContext && !hasVerifiedInterceptionSource;
|
|
628
|
+
if (interceptionContextHeader !== null) setInterceptionResponseUncacheable(bypassInterceptionContextCache);
|
|
629
|
+
let interceptionCacheProofInvalidated = false;
|
|
630
|
+
const invalidateInterceptionCacheProof = () => {
|
|
631
|
+
if (!hasRawInterceptionContext) return;
|
|
632
|
+
interceptionCacheProofInvalidated = true;
|
|
633
|
+
bypassInterceptionContextCache = true;
|
|
634
|
+
setInterceptionResponseUncacheable(true);
|
|
635
|
+
};
|
|
414
636
|
if (interceptionSourceMatch !== null && interceptionSourcePathname !== null && runMiddleware && interceptionSourceMatch.route !== directPreActionMatch?.route) {
|
|
415
637
|
const sourceUrl = new URL(userlandRequest.url);
|
|
416
638
|
sourceUrl.search = new URL(resolvedUrl, url).search;
|
|
@@ -449,6 +671,7 @@ async function handleAppRscRequest(options, request, preMiddlewareRequestContext
|
|
|
449
671
|
if (sourceMiddlewareRequest.body && !sourceMiddlewareRequest.bodyUsed && !sourceMiddlewareRequest.body.locked) sourceMiddlewareRequest.body.cancel().catch(() => {});
|
|
450
672
|
if (sourceRequest !== userlandRequest && sourceRequest.body && !sourceRequest.bodyUsed && !sourceRequest.body.locked) sourceRequest.body.cancel().catch(() => {});
|
|
451
673
|
}
|
|
674
|
+
if (!dispatchResponseStage && sourceMiddlewareResult.pathnameEligible) markRouteCacheabilityDynamic(sourceMiddlewareResult.matched ? "middleware matched this request" : "middleware is eligible for this pathname");
|
|
452
675
|
if (sourceMiddlewareResult.kind === "response") {
|
|
453
676
|
options.clearRequestContext();
|
|
454
677
|
return sourceMiddlewareResult.response;
|
|
@@ -469,7 +692,10 @@ async function handleAppRscRequest(options, request, preMiddlewareRequestContext
|
|
|
469
692
|
targetHeadersContext.headers.set(name, value);
|
|
470
693
|
addedSourceHeader = true;
|
|
471
694
|
}
|
|
472
|
-
if (addedSourceHeader)
|
|
695
|
+
if (addedSourceHeader) {
|
|
696
|
+
targetHeadersContext.readonlyHeaders = void 0;
|
|
697
|
+
canUseSharedWorkerResponseStage = false;
|
|
698
|
+
}
|
|
473
699
|
if (sourceMiddlewareResult.rewritten) {
|
|
474
700
|
const rewrittenSourceMatch = options.matchRoute(sourceMiddlewareResult.cleanPathname);
|
|
475
701
|
if (sourceMiddlewareResult.search !== sourceUrl.search || rewrittenSourceMatch?.route !== interceptionSourceMatch.route || !haveSamePageParams(rewrittenSourceMatch.params, interceptionSourceMatch.params)) {
|
|
@@ -526,6 +752,7 @@ async function handleAppRscRequest(options, request, preMiddlewareRequestContext
|
|
|
526
752
|
basePath: options.basePath,
|
|
527
753
|
configHeaders: options.configHeaders,
|
|
528
754
|
i18nConfig: options.i18nConfig,
|
|
755
|
+
recordCacheability: dispatchResponseStage === void 0,
|
|
529
756
|
requestContext: preMiddlewareRequestContext
|
|
530
757
|
});
|
|
531
758
|
}
|
|
@@ -550,9 +777,54 @@ async function handleAppRscRequest(options, request, preMiddlewareRequestContext
|
|
|
550
777
|
let match = preActionMatch;
|
|
551
778
|
const renderPagesForMatchKind = async (matchKind) => {
|
|
552
779
|
if (!filesystemRouteEligible) return null;
|
|
780
|
+
let sharedOuterPolicyNeedsReconciliation = false;
|
|
781
|
+
const dispatchPagesResponseStage = dispatchResponseStage ? async (stageRequest, resourceKind, dataKind, hasRequestAwareDocument) => {
|
|
782
|
+
const pagesOnDemandRevalidate = resourceKind === "page" && isOnDemandRevalidateRequest(stageRequest.headers.get("x-prerender-revalidate"));
|
|
783
|
+
const cache = responseStageProbeMode || pagesOnDemandRevalidate || hasPagesPreviewCookie(stageRequest.headers.get("cookie")) || resourceKind === "page" && dataKind === "static" && hasRequestAwareDocument ? "bypass" : canUseSharedWorkerResponseStage ? "shared" : "bypass";
|
|
784
|
+
let response = await dispatchResponseStage(responseStageRequest(stageRequest), {
|
|
785
|
+
kind: "hybrid-pages",
|
|
786
|
+
buildId: options.buildId,
|
|
787
|
+
cacheability: {
|
|
788
|
+
...responseStageCacheability(resolvedUrl),
|
|
789
|
+
policyHeaders: await loadResponseStagePolicy(),
|
|
790
|
+
...isDataRequest ? { representation: "pages-data" } : {}
|
|
791
|
+
},
|
|
792
|
+
allowRscDocumentFallback: didMiddlewareRewritePathname || allowInternalRscDocumentFallback,
|
|
793
|
+
appRouteMatch: match ? {
|
|
794
|
+
isDynamic: match.route.isDynamic,
|
|
795
|
+
pattern: match.route.pattern
|
|
796
|
+
} : null,
|
|
797
|
+
canonicalPathname,
|
|
798
|
+
cleanPathname,
|
|
799
|
+
draftModeCookie,
|
|
800
|
+
isDataRequest,
|
|
801
|
+
isRscRequest,
|
|
802
|
+
matchKind,
|
|
803
|
+
middlewareCookieOverlay,
|
|
804
|
+
preHandlerHeaders: cache === "shared" && resourceKind === "page" && dataKind === "static" ? null : [...await loadPreHandlerResponseHeaders()],
|
|
805
|
+
protocolVersion: 10,
|
|
806
|
+
requestOrigin: url.origin,
|
|
807
|
+
resourceKind,
|
|
808
|
+
requestUrl: request.url,
|
|
809
|
+
resolvedUrl,
|
|
810
|
+
scriptNonce: scriptNonce ?? null
|
|
811
|
+
}, { cache });
|
|
812
|
+
const policyOwner = resourceKind === "page" ? consumePagesResponseStagePolicyOwner(response) : {
|
|
813
|
+
owner: null,
|
|
814
|
+
response
|
|
815
|
+
};
|
|
816
|
+
response = policyOwner.response;
|
|
817
|
+
const requestTimePolicyOwner = policyOwner.owner === "request-time" || policyOwner.owner === null && dataKind === "server";
|
|
818
|
+
sharedOuterPolicyNeedsReconciliation = cache === "shared" && resourceKind === "page" && !requestTimePolicyOwner;
|
|
819
|
+
const responseStageHasContentLength = response.headers.has("Content-Length");
|
|
820
|
+
response = await applyConfigHeadersToResponseStage(response, resourceKind === "api" || requestTimePolicyOwner);
|
|
821
|
+
if (!responseStageHasContentLength) response.headers.delete("Content-Length");
|
|
822
|
+
return response;
|
|
823
|
+
} : void 0;
|
|
553
824
|
const response = !isInterceptionMatch && (match === null || match.route.isDynamic) ? await options.renderPagesFallback?.({
|
|
554
825
|
appRouteMatch: match ?? null,
|
|
555
826
|
allowRscDocumentFallback: didMiddlewareRewritePathname || allowInternalRscDocumentFallback,
|
|
827
|
+
dispatchPagesResponseStage,
|
|
556
828
|
isDataRequest,
|
|
557
829
|
isRscRequest,
|
|
558
830
|
matchKind,
|
|
@@ -562,14 +834,18 @@ async function handleAppRscRequest(options, request, preMiddlewareRequestContext
|
|
|
562
834
|
request,
|
|
563
835
|
url
|
|
564
836
|
}) ?? null : null;
|
|
565
|
-
if (
|
|
837
|
+
if (response) preserveRouteCacheabilityResponsePolicy();
|
|
838
|
+
if (!response) return null;
|
|
839
|
+
if (sharedOuterPolicyNeedsReconciliation) reconcileCdnResponseHeadersAfterOuterPolicy(response.headers, await loadOuterResponsePolicy());
|
|
840
|
+
if (!pagesDataRequest || resolvedUrl === originalResolvedUrl) return dispatchPagesResponseStage ? markAppRscResponseConfigHeadersApplied(response) : response;
|
|
566
841
|
const headers = new Headers(response.headers);
|
|
567
842
|
headers.set("x-nextjs-rewrite", resolvedUrl);
|
|
568
|
-
|
|
843
|
+
const rewrittenResponse = new Response(response.body, {
|
|
569
844
|
headers,
|
|
570
845
|
status: response.status,
|
|
571
846
|
statusText: response.statusText
|
|
572
847
|
});
|
|
848
|
+
return dispatchPagesResponseStage ? markAppRscResponseConfigHeadersApplied(rewrittenResponse) : rewrittenResponse;
|
|
573
849
|
};
|
|
574
850
|
const staticPagesFallbackResponse = await renderPagesForMatchKind("static");
|
|
575
851
|
if (staticPagesFallbackResponse) {
|
|
@@ -585,15 +861,21 @@ async function handleAppRscRequest(options, request, preMiddlewareRequestContext
|
|
|
585
861
|
paramsPathname: matchPathname(cleanPathnameIsRequestPathname ? requestCleanPathname : cleanPathname),
|
|
586
862
|
rewrites: [rewrite],
|
|
587
863
|
validateExternalRewriteRequest: () => validateClaimedOutsideBasePathRsc(true)
|
|
588
|
-
}, matchPathname(cleanPathname));
|
|
589
|
-
if (afterFilesRewrite instanceof Response)
|
|
864
|
+
}, matchPathname(cleanPathname), dispatchResponseStage === void 0);
|
|
865
|
+
if (afterFilesRewrite instanceof Response) {
|
|
866
|
+
invalidateInterceptionCacheProof();
|
|
867
|
+
return afterFilesRewrite;
|
|
868
|
+
}
|
|
590
869
|
if (!afterFilesRewrite) continue;
|
|
591
870
|
resolvedUrl = mergeRewriteQuery(resolvedUrl, afterFilesRewrite);
|
|
592
871
|
cleanPathname = pathnameForResolvedUrl(resolvedUrl);
|
|
593
872
|
cleanPathnameIsRequestPathname = false;
|
|
873
|
+
invalidateInterceptionCacheProof();
|
|
594
874
|
filesystemRouteEligible = true;
|
|
595
875
|
const claimedRscCacheBustingRedirect = await validateClaimedOutsideBasePathRsc();
|
|
596
876
|
if (claimedRscCacheBustingRedirect) return claimedRscCacheBustingRedirect;
|
|
877
|
+
const rewrittenMetadataResponse = await renderMetadataRouteIfMatched();
|
|
878
|
+
if (rewrittenMetadataResponse) return composeResponseStageResponse(rewrittenMetadataResponse);
|
|
597
879
|
match = matchCleanPathname();
|
|
598
880
|
const rewrittenStaticPagesResponse = await renderPagesForMatchKind("static");
|
|
599
881
|
if (rewrittenStaticPagesResponse) {
|
|
@@ -621,15 +903,21 @@ async function handleAppRscRequest(options, request, preMiddlewareRequestContext
|
|
|
621
903
|
paramsPathname: matchPathname(cleanPathnameIsRequestPathname ? requestCleanPathname : cleanPathname),
|
|
622
904
|
rewrites: [rewrite],
|
|
623
905
|
validateExternalRewriteRequest: () => validateClaimedOutsideBasePathRsc(true)
|
|
624
|
-
}, matchPathname(cleanPathname));
|
|
625
|
-
if (fallbackRewrite instanceof Response)
|
|
906
|
+
}, matchPathname(cleanPathname), dispatchResponseStage === void 0);
|
|
907
|
+
if (fallbackRewrite instanceof Response) {
|
|
908
|
+
invalidateInterceptionCacheProof();
|
|
909
|
+
return fallbackRewrite;
|
|
910
|
+
}
|
|
626
911
|
if (!fallbackRewrite) continue;
|
|
627
912
|
resolvedUrl = mergeRewriteQuery(resolvedUrl, fallbackRewrite);
|
|
628
913
|
cleanPathname = pathnameForResolvedUrl(resolvedUrl);
|
|
629
914
|
cleanPathnameIsRequestPathname = false;
|
|
915
|
+
invalidateInterceptionCacheProof();
|
|
630
916
|
filesystemRouteEligible = true;
|
|
631
917
|
const claimedRscCacheBustingRedirect = await validateClaimedOutsideBasePathRsc();
|
|
632
918
|
if (claimedRscCacheBustingRedirect) return claimedRscCacheBustingRedirect;
|
|
919
|
+
const rewrittenMetadataResponse = await renderMetadataRouteIfMatched();
|
|
920
|
+
if (rewrittenMetadataResponse) return composeResponseStageResponse(rewrittenMetadataResponse);
|
|
633
921
|
match = matchCleanPathname();
|
|
634
922
|
const rewrittenStaticPagesResponse = await renderPagesForMatchKind("static");
|
|
635
923
|
if (rewrittenStaticPagesResponse) {
|
|
@@ -643,6 +931,18 @@ async function handleAppRscRequest(options, request, preMiddlewareRequestContext
|
|
|
643
931
|
}
|
|
644
932
|
if (match) break;
|
|
645
933
|
}
|
|
934
|
+
if (interceptionCacheProofInvalidated && interceptionContextHeader !== null) {
|
|
935
|
+
const finalInterceptionTargetPathname = cleanPathnameIsRequestPathname ? requestCleanPathname : cleanPathname;
|
|
936
|
+
const finalInterceptionSourceMatch = filesystemRouteEligible && match !== null ? options.matchInterceptRoute?.(finalInterceptionTargetPathname, interceptionContextHeader, interceptionIdHeader) ?? null : null;
|
|
937
|
+
const hasVerifiedFinalInterceptionSource = hasVerifiedInterceptionSource && interceptionSourceMatch !== null && provesConcreteInterceptionSource(finalInterceptionSourceMatch) && finalInterceptionSourceMatch?.route === interceptionSourceMatch.route && haveSamePageParams(finalInterceptionSourceMatch.params, interceptionSourceMatch.params);
|
|
938
|
+
if (interceptionIdHeader !== null && !hasVerifiedFinalInterceptionSource) {
|
|
939
|
+
options.clearRequestContext();
|
|
940
|
+
setInterceptionResponseUncacheable(true);
|
|
941
|
+
return badRequestResponse();
|
|
942
|
+
}
|
|
943
|
+
bypassInterceptionContextCache = !hasVerifiedFinalInterceptionSource;
|
|
944
|
+
setInterceptionResponseUncacheable(bypassInterceptionContextCache);
|
|
945
|
+
}
|
|
646
946
|
if (!filesystemRouteEligible) {
|
|
647
947
|
options.clearRequestContext();
|
|
648
948
|
const headers = new Headers();
|
|
@@ -669,13 +969,31 @@ async function handleAppRscRequest(options, request, preMiddlewareRequestContext
|
|
|
669
969
|
options.clearRequestContext();
|
|
670
970
|
return new Response("", { status: 404 });
|
|
671
971
|
}
|
|
672
|
-
|
|
972
|
+
setFrameworkRequestRoute("/404", isRscRequest);
|
|
973
|
+
const notFoundResponseStage = transportedResponseStage ?? options.renderResponseStageLocally;
|
|
974
|
+
if (notFoundResponseStage) return composeResponseStageResponse(await notFoundResponseStage(responseStageRequest(), {
|
|
975
|
+
kind: "app-not-found",
|
|
976
|
+
buildId: options.buildId,
|
|
977
|
+
cacheability: responseStageCacheability(resolvedUrl),
|
|
978
|
+
canonicalPathname,
|
|
979
|
+
cleanPathname,
|
|
980
|
+
draftModeCookie,
|
|
981
|
+
isRscRequest,
|
|
982
|
+
middlewareCookieOverlay,
|
|
983
|
+
mountedSlotsHeader,
|
|
984
|
+
protocolVersion: 10,
|
|
985
|
+
requestOrigin: url.origin,
|
|
986
|
+
renderMode,
|
|
987
|
+
resolvedUrl,
|
|
988
|
+
scriptNonce: scriptNonce ?? null
|
|
989
|
+
}));
|
|
990
|
+
const renderedNotFoundResponse = await traceAppPageRender("/404", "render", () => options.renderNotFound({
|
|
673
991
|
isRscRequest,
|
|
674
992
|
middlewareContext,
|
|
675
993
|
request,
|
|
676
994
|
route: null,
|
|
677
995
|
scriptNonce
|
|
678
|
-
});
|
|
996
|
+
}));
|
|
679
997
|
if (renderedNotFoundResponse) return renderedNotFoundResponse;
|
|
680
998
|
options.clearRequestContext();
|
|
681
999
|
const headers = new Headers();
|
|
@@ -683,7 +1001,18 @@ async function handleAppRscRequest(options, request, preMiddlewareRequestContext
|
|
|
683
1001
|
return notFoundResponse({ headers });
|
|
684
1002
|
}
|
|
685
1003
|
const { route, params } = match;
|
|
686
|
-
|
|
1004
|
+
const requestPathnameDiffersFromCachePath = requestCleanPathname !== cleanPathname;
|
|
1005
|
+
const rawRequestPathnameIsObservable = isInterceptionMatch || route.routeHandler != null || typeof route.__loadRouteHandler === "function";
|
|
1006
|
+
if ((!isInterceptionMatch || requestPathnameDiffersFromCachePath) && options.matchRequestRoute) {
|
|
1007
|
+
const cachePathMatch = options.matchRoute(cleanPathname);
|
|
1008
|
+
if (requestPathnameDiffersFromCachePath && rawRequestPathnameIsObservable || !cachePathMatch || cachePathMatch.route.pattern !== route.pattern || !haveSamePageParams(cachePathMatch.params, params)) {
|
|
1009
|
+
bypassInterceptionContextCache = true;
|
|
1010
|
+
setInterceptionResponseUncacheable(true);
|
|
1011
|
+
}
|
|
1012
|
+
}
|
|
1013
|
+
const cachePathname = cleanPathnameIsRequestPathname ? cleanPathname : rewriteCachePathname(canonicalPathname, cleanPathname);
|
|
1014
|
+
setFrameworkRequestRoute(patternToNextFormat(route.pattern), isRscRequest);
|
|
1015
|
+
if (options.ensureRouteLoaded) await traceFindPageComponents(route.pattern, () => options.ensureRouteLoaded(route));
|
|
687
1016
|
const resolvedSearchParams = getResolvedSearchParams();
|
|
688
1017
|
if (isRouteTreePrefetchRequest(request) && !route.routeHandler) {
|
|
689
1018
|
const response = await createRouteTreePrefetchResponse(route, {
|
|
@@ -693,10 +1022,14 @@ async function handleAppRscRequest(options, request, preMiddlewareRequestContext
|
|
|
693
1022
|
options.clearRequestContext();
|
|
694
1023
|
return applyMiddlewareContextToResponse(response, middlewareContext);
|
|
695
1024
|
}
|
|
696
|
-
const
|
|
1025
|
+
const prerenderRouteParamsPayload = readTrustedPrerenderRouteParams(request);
|
|
1026
|
+
const prerenderRouteParamsMatch = matchPrerenderRouteParamsPayload(prerenderRouteParamsPayload, route.pattern, params);
|
|
697
1027
|
const prerenderRouteParams = prerenderRouteParamsMatch?.params ?? null;
|
|
698
1028
|
const isPrerenderFallbackShell = prerenderRouteParamsMatch?.kind === "fallback-shell";
|
|
699
1029
|
const renderParams = prerenderRouteParams ?? params;
|
|
1030
|
+
const responseStageMatchKind = isInterceptionMatch ? "interception" : cleanPathnameIsRequestPathname && options.matchRequestRoute ? "request" : "resolved";
|
|
1031
|
+
const responseStageRoutePathname = isInterceptionMatch ? preActionRoutePathname : cleanPathnameIsRequestPathname ? requestCleanPathname || "/" : cleanPathname || "/";
|
|
1032
|
+
const matchedResponseStage = transportedResponseStage ?? options.renderResponseStageLocally;
|
|
700
1033
|
let runtimeFallbackShells = [];
|
|
701
1034
|
if (options.createPprFallbackShells && request.method === "GET" && !isRscRequest && !isPrerenderFallbackShell && route.params) runtimeFallbackShells = options.createPprFallbackShells({
|
|
702
1035
|
params: route.params,
|
|
@@ -711,13 +1044,42 @@ async function handleAppRscRequest(options, request, preMiddlewareRequestContext
|
|
|
711
1044
|
const rootParams = pickRootParams(renderParams, route.rootParamNames);
|
|
712
1045
|
setRootParams(rootParams);
|
|
713
1046
|
if (route.routeHandler) {
|
|
714
|
-
setCurrentFetchSoftTags(buildPageCacheTags(cleanPathname, [], [...route.routeSegments], "route"));
|
|
715
1047
|
const routeHandlerRequest = isEdgeRouteHandler(route.routeHandler) ? userlandRequest : normalizedUserlandRequest;
|
|
716
1048
|
const routeHandlerUrl = new URL(routeHandlerRequest.url);
|
|
717
1049
|
const internalRscValues = isEdgeRouteHandler(route.routeHandler) ? [] : routeHandlerUrl.searchParams.getAll(VINEXT_RSC_CACHE_BUSTING_SEARCH_PARAM);
|
|
718
1050
|
routeHandlerUrl.search = resolvedSearchParams.toString();
|
|
719
1051
|
for (const internalRscValue of internalRscValues) routeHandlerUrl.searchParams.append(VINEXT_RSC_CACHE_BUSTING_SEARCH_PARAM, internalRscValue);
|
|
1052
|
+
if (matchedResponseStage) return composeResponseStageResponse(await matchedResponseStage(responseStageRequest(), {
|
|
1053
|
+
kind: "app-route-handler",
|
|
1054
|
+
buildId: options.buildId,
|
|
1055
|
+
cacheability: responseStageCacheability(resolvedUrl),
|
|
1056
|
+
bypassInterceptionContextCache,
|
|
1057
|
+
cachePathname,
|
|
1058
|
+
canUseCanonicalLoadingShell: route.canUseCanonicalLoadingShell === true,
|
|
1059
|
+
canonicalPathname,
|
|
1060
|
+
cleanPathname,
|
|
1061
|
+
draftModeCookie,
|
|
1062
|
+
forceDynamic: route.forceDynamic === true,
|
|
1063
|
+
interceptionContext: interceptionContextHeader,
|
|
1064
|
+
interceptionId: interceptionIdHeader,
|
|
1065
|
+
isRscRequest,
|
|
1066
|
+
matchKind: responseStageMatchKind,
|
|
1067
|
+
middlewareCookieOverlay,
|
|
1068
|
+
mountedSlotsHeader,
|
|
1069
|
+
params,
|
|
1070
|
+
protocolVersion: 10,
|
|
1071
|
+
requestOrigin: url.origin,
|
|
1072
|
+
renderMode,
|
|
1073
|
+
resolvedUrl,
|
|
1074
|
+
routePattern: route.pattern,
|
|
1075
|
+
routePathname: responseStageRoutePathname,
|
|
1076
|
+
scriptNonce: scriptNonce ?? null
|
|
1077
|
+
}));
|
|
1078
|
+
const { setCurrentFetchSoftTags } = await import("../shims/fetch-cache.js");
|
|
1079
|
+
setCurrentFetchSoftTags(buildPageCacheTags(cleanPathname, [], [...route.routeSegments], "route"));
|
|
720
1080
|
return options.dispatchMatchedRouteHandler({
|
|
1081
|
+
bypassInterceptionContextCache,
|
|
1082
|
+
cachePathname,
|
|
721
1083
|
cleanPathname,
|
|
722
1084
|
middlewareContext,
|
|
723
1085
|
params: route.isDynamic ? renderParams : null,
|
|
@@ -726,7 +1088,34 @@ async function handleAppRscRequest(options, request, preMiddlewareRequestContext
|
|
|
726
1088
|
searchParams: resolvedSearchParams
|
|
727
1089
|
});
|
|
728
1090
|
}
|
|
729
|
-
const pageResponse = await
|
|
1091
|
+
const pageResponse = matchedResponseStage ? await matchedResponseStage(responseStageRequest(), {
|
|
1092
|
+
kind: "app-page",
|
|
1093
|
+
buildId: options.buildId,
|
|
1094
|
+
cacheability: responseStageCacheability(resolvedUrl),
|
|
1095
|
+
bypassInterceptionContextCache,
|
|
1096
|
+
cachePathname,
|
|
1097
|
+
canUseCanonicalLoadingShell: route.canUseCanonicalLoadingShell === true,
|
|
1098
|
+
canonicalPathname,
|
|
1099
|
+
cleanPathname,
|
|
1100
|
+
draftModeCookie,
|
|
1101
|
+
forceDynamic: route.forceDynamic === true,
|
|
1102
|
+
interceptionContext: isRscRequest ? interceptionContextHeader : null,
|
|
1103
|
+
interceptionId: interceptionIdHeader,
|
|
1104
|
+
isRscRequest,
|
|
1105
|
+
matchKind: responseStageMatchKind,
|
|
1106
|
+
middlewareCookieOverlay,
|
|
1107
|
+
mountedSlotsHeader,
|
|
1108
|
+
params,
|
|
1109
|
+
protocolVersion: 10,
|
|
1110
|
+
requestOrigin: url.origin,
|
|
1111
|
+
renderMode,
|
|
1112
|
+
resolvedUrl,
|
|
1113
|
+
routePattern: route.pattern,
|
|
1114
|
+
routePathname: responseStageRoutePathname,
|
|
1115
|
+
scriptNonce: scriptNonce ?? null
|
|
1116
|
+
}).then(composeResponseStageResponse) : await options.dispatchMatchedPage({
|
|
1117
|
+
bypassInterceptionContextCache,
|
|
1118
|
+
cachePathname,
|
|
730
1119
|
clientReuseManifest,
|
|
731
1120
|
cleanPathname,
|
|
732
1121
|
displayPathname: canonicalPathname,
|
|
@@ -734,7 +1123,7 @@ async function handleAppRscRequest(options, request, preMiddlewareRequestContext
|
|
|
734
1123
|
actionError: normalizedProgressiveActionError,
|
|
735
1124
|
actionFailed,
|
|
736
1125
|
handlerStart,
|
|
737
|
-
interceptionContext: interceptionContextHeader,
|
|
1126
|
+
interceptionContext: isRscRequest ? interceptionContextHeader : null,
|
|
738
1127
|
interceptionId: interceptionIdHeader,
|
|
739
1128
|
interceptionPathname: cleanPathnameIsRequestPathname ? requestCleanPathname : cleanPathname,
|
|
740
1129
|
isProgressiveActionRender,
|
|
@@ -793,10 +1182,9 @@ function applyProgressiveActionSideEffects(response, sideEffects) {
|
|
|
793
1182
|
});
|
|
794
1183
|
}
|
|
795
1184
|
}
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
await options.ensureInstrumentation?.();
|
|
1185
|
+
/** Build the request-only handler without retaining the response renderer graph. */
|
|
1186
|
+
function createAppRscRequestHandler(options) {
|
|
1187
|
+
const handleAppRscRequestLifecycle = async (rawRequest, ctx, allowInternalRscDocumentFallback = false, dispatchResponseStage, responseStageProbeMode = null, transportedPrerenderState) => {
|
|
800
1188
|
const mwCtx = rawRequest.headers.get(VINEXT_MW_CTX_HEADER);
|
|
801
1189
|
const pagesDataUrl = new URL(rawRequest.url);
|
|
802
1190
|
const pagesDataInScope = !options.basePath || hasBasePath(pagesDataUrl.pathname, options.basePath);
|
|
@@ -806,8 +1194,12 @@ function createAppRscHandler(options) {
|
|
|
806
1194
|
if (pagesDataNormalization?.notFoundResponse) return pagesDataNormalization.notFoundResponse;
|
|
807
1195
|
const isPagesDataRequest = pagesDataNormalization?.isDataReq === true;
|
|
808
1196
|
const executionContext = isExecutionContextLike(ctx) ? ctx : getRequestExecutionContext() ?? null;
|
|
809
|
-
const
|
|
810
|
-
|
|
1197
|
+
const trustedPrerenderState = transportedPrerenderState !== void 0 ? transportedPrerenderState : process.env.VINEXT_PRERENDER === "1" && rawRequest.headers.get("x-vinext-prerender-secret") !== null ? {
|
|
1198
|
+
routeParams: readTrustedPrerenderRouteParams(rawRequest),
|
|
1199
|
+
speculative: rawRequest.headers.get(VINEXT_PRERENDER_SPECULATIVE_HEADER) === "1"
|
|
1200
|
+
} : null;
|
|
1201
|
+
const prerenderRouteParamsPayload = trustedPrerenderState?.routeParams ?? null;
|
|
1202
|
+
const isTrustedSpeculativePrerender = trustedPrerenderState?.speculative === true;
|
|
811
1203
|
const filteredHeaders = executionContext?.isInternalPagesRevalidation ? new Headers(rawRequest.headers) : filterInternalHeaders(rawRequest.headers);
|
|
812
1204
|
filteredHeaders.delete(VINEXT_REVALIDATE_HOST_HEADER);
|
|
813
1205
|
if (isForwardedActionContext(ctx)) filteredHeaders.set("x-action-forwarded", "1");
|
|
@@ -823,14 +1215,18 @@ function createAppRscHandler(options) {
|
|
|
823
1215
|
}
|
|
824
1216
|
const request = cloneRequestWithHeaders(appRequest, filteredHeaders);
|
|
825
1217
|
const pagesDataRequest = pagesDataNormalization?.isDataReq ? cloneRequestWithHeaders(pagesDataCandidate, filteredHeaders) : null;
|
|
1218
|
+
const headersContext = headersContextFromRequest(request, { draftModeSecret: options.draftModeSecret });
|
|
826
1219
|
const requestContext = createRequestContext({
|
|
827
|
-
headersContext
|
|
1220
|
+
headersContext,
|
|
828
1221
|
executionContext,
|
|
829
1222
|
unstableCacheRevalidation: "background"
|
|
830
1223
|
});
|
|
831
|
-
let
|
|
1224
|
+
let interceptionResponseUncacheable = false;
|
|
832
1225
|
const responsePromise = runWithRequestContext(requestContext, () => runWithPrerenderWorkUnit(async () => {
|
|
833
|
-
|
|
1226
|
+
if (!dispatchResponseStage) {
|
|
1227
|
+
const { ensureFetchPatch } = await import("../shims/fetch-cache.js");
|
|
1228
|
+
ensureFetchPatch();
|
|
1229
|
+
}
|
|
834
1230
|
const preMiddlewareRequestContext = requestContextFromRequest(request);
|
|
835
1231
|
const middlewareContext = {
|
|
836
1232
|
headers: null,
|
|
@@ -839,8 +1235,8 @@ function createAppRscHandler(options) {
|
|
|
839
1235
|
};
|
|
840
1236
|
let response;
|
|
841
1237
|
try {
|
|
842
|
-
response = await handleAppRscRequest(options, request, preMiddlewareRequestContext, middlewareContext, isPagesDataRequest, isPagesDataRequest, pagesDataRequest, (internalRequest) => appRscHandler(internalRequest, ctx, true), allowInternalRscDocumentFallback, () => {
|
|
843
|
-
|
|
1238
|
+
response = await handleAppRscRequest(options, request, preMiddlewareRequestContext, middlewareContext, isPagesDataRequest, isPagesDataRequest, pagesDataRequest, (internalRequest) => appRscHandler(internalRequest, ctx, true, dispatchResponseStage, responseStageProbeMode, trustedPrerenderState, true), allowInternalRscDocumentFallback, dispatchResponseStage, responseStageProbeMode, (uncacheable) => {
|
|
1239
|
+
interceptionResponseUncacheable = uncacheable;
|
|
844
1240
|
});
|
|
845
1241
|
} catch (error) {
|
|
846
1242
|
if (process.env.NODE_ENV !== "production") flattenErrorCauses(error);
|
|
@@ -851,10 +1247,14 @@ function createAppRscHandler(options) {
|
|
|
851
1247
|
configHeaders: options.configHeaders,
|
|
852
1248
|
i18nConfig: options.i18nConfig,
|
|
853
1249
|
middlewareHeaders: middlewareContext.headers,
|
|
1250
|
+
recordCacheability: dispatchResponseStage === void 0,
|
|
854
1251
|
requestContext: preMiddlewareRequestContext
|
|
855
1252
|
});
|
|
856
|
-
return
|
|
857
|
-
}, {
|
|
1253
|
+
return interceptionResponseUncacheable ? markUnverifiedInterceptionResponseUncacheable(response) : response;
|
|
1254
|
+
}, {
|
|
1255
|
+
cacheComponents: options.createPprFallbackShells !== void 0,
|
|
1256
|
+
route: () => new URL(request.url).pathname
|
|
1257
|
+
}));
|
|
858
1258
|
let response;
|
|
859
1259
|
try {
|
|
860
1260
|
response = await responsePromise;
|
|
@@ -864,6 +1264,21 @@ function createAppRscHandler(options) {
|
|
|
864
1264
|
}
|
|
865
1265
|
return closeAfterResponseWithBody(response, requestContext);
|
|
866
1266
|
};
|
|
1267
|
+
const appRscHandler = async function appRscHandler(rawRequest, ctx, allowInternalRscDocumentFallback = false, dispatchResponseStage, responseStageProbeMode = null, transportedPrerenderState, detachedTrace = false) {
|
|
1268
|
+
options.registerCacheAdapters();
|
|
1269
|
+
await options.ensureInstrumentation?.();
|
|
1270
|
+
const traceUrl = new URL(rawRequest.url);
|
|
1271
|
+
return traceFrameworkRequest({
|
|
1272
|
+
callback: () => handleAppRscRequestLifecycle(rawRequest, ctx, allowInternalRscDocumentFallback, dispatchResponseStage, responseStageProbeMode, transportedPrerenderState),
|
|
1273
|
+
detached: detachedTrace,
|
|
1274
|
+
getStatus: (response) => response?.status,
|
|
1275
|
+
headers: rawRequest.headers,
|
|
1276
|
+
isRsc: traceUrl.pathname.endsWith(".rsc") || rawRequest.headers.get("RSC") === "1",
|
|
1277
|
+
method: rawRequest.method,
|
|
1278
|
+
target: traceUrl.pathname + traceUrl.search
|
|
1279
|
+
});
|
|
1280
|
+
};
|
|
1281
|
+
return appRscHandler;
|
|
867
1282
|
}
|
|
868
1283
|
//#endregion
|
|
869
|
-
export {
|
|
1284
|
+
export { createAppRscRequestHandler };
|