vinext 1.0.0-beta.9 → 1.0.1
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 +150 -92
- package/THIRD_PARTY_LICENSES.md +51 -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 +7 -14
- package/dist/build/precompress.d.ts +2 -3
- package/dist/build/precompress.js +1 -1
- 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 +36 -11
- package/dist/build/prerender-paths.js +274 -102
- 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 +73 -16
- package/dist/build/prerender.js +272 -80
- 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 +24 -20
- package/dist/build/report.js +10 -2
- 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 +26 -16
- package/dist/build/server-entry.d.ts +6 -0
- package/dist/build/server-entry.js +34 -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 +6 -7
- package/dist/cache/cache-adapters-virtual.d.ts +60 -20
- package/dist/cache/cache-adapters-virtual.js +50 -7
- 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 -442
- package/dist/client/app-nav-failure-handler.d.ts +6 -7
- package/dist/client/browser-globals.d.ts +4 -0
- package/dist/client/browser-globals.js +5 -0
- 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 +20 -17
- package/dist/client/navigation-runtime.js +4 -3
- 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 -10
- package/dist/client/window-next.d.ts +4 -5
- package/dist/config/config-matchers.d.ts +16 -16
- package/dist/config/config-matchers.js +2 -4
- package/dist/config/dotenv.d.ts +3 -4
- package/dist/config/dotenv.js +14 -2
- 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 +4 -5
- package/dist/entries/app-browser-entry.js +1 -3
- package/dist/entries/app-rsc-entry.d.ts +10 -3
- package/dist/entries/app-rsc-entry.js +503 -51
- package/dist/entries/app-rsc-manifest.d.ts +4 -3
- package/dist/entries/app-rsc-manifest.js +26 -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 +234 -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 +848 -255
- package/dist/init-cloudflare.d.ts +26 -17
- package/dist/init-cloudflare.js +711 -103
- 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 +126 -42
- 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/commonjs-syntax.d.ts +16 -0
- package/dist/plugins/commonjs-syntax.js +22 -0
- 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 +14 -4
- package/dist/plugins/ignore-dynamic-requests.js +113 -91
- package/dist/plugins/import-meta-url.d.ts +6 -7
- package/dist/plugins/import-meta-url.js +36 -48
- 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 +5 -4
- package/dist/plugins/og-asset-ownership.js +24 -13
- package/dist/plugins/og-assets.d.ts +22 -5
- package/dist/plugins/og-assets.js +82 -21
- package/dist/plugins/og-harfbuzz.d.ts +24 -0
- package/dist/plugins/og-harfbuzz.js +271 -0
- package/dist/plugins/optimize-imports.d.ts +7 -7
- package/dist/plugins/optimize-imports.js +34 -45
- 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 +3 -3
- package/dist/plugins/require-context.js +41 -22
- 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/scan-build-css.d.ts +12 -0
- package/dist/plugins/scan-build-css.js +39 -0
- package/dist/plugins/server-externals-manifest.d.ts +2 -3
- package/dist/plugins/strip-server-exports.d.ts +7 -6
- package/dist/plugins/strip-server-exports.js +4 -2
- 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 +21 -4
- package/dist/plugins/transform-result.js +23 -2
- package/dist/plugins/transitive-externals.d.ts +2 -3
- package/dist/plugins/typeof-window.d.ts +16 -7
- package/dist/plugins/typeof-window.js +62 -39
- 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 +18 -19
- package/dist/routing/app-route-graph.js +5 -6
- package/dist/routing/app-route-ids.d.ts +3 -0
- package/dist/routing/app-route-ids.js +6 -0
- package/dist/routing/app-router.d.ts +19 -6
- package/dist/routing/app-router.js +24 -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 +4 -4
- package/dist/server/app-bfcache-id.js +7 -1
- package/dist/server/app-bfcache-identity.d.ts +8 -9
- package/dist/server/app-bfcache-identity.js +1 -2
- 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 +91 -36
- 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 +15 -2
- 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 +5 -6
- 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-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 +25 -27
- package/dist/server/app-history-state.js +21 -16
- 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 +7 -7
- package/dist/server/app-middleware.js +2 -3
- 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 +10 -11
- package/dist/server/app-optimistic-routing.js +3 -2
- 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 +1 -1
- package/dist/server/app-page-cache-finalizer.d.ts +18 -9
- package/dist/server/app-page-cache-finalizer.js +51 -16
- package/dist/server/app-page-cache-render.d.ts +8 -5
- package/dist/server/app-page-cache-render.js +22 -4
- package/dist/server/app-page-cache.d.ts +28 -9
- package/dist/server/app-page-cache.js +95 -24
- package/dist/server/app-page-dispatch.d.ts +34 -12
- package/dist/server/app-page-dispatch.js +181 -64
- 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 +11 -7
- 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 +41 -6
- package/dist/server/app-page-render.js +171 -24
- 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 +30 -12
- 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 +43 -7
- 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 +34 -6
- package/dist/server/app-page-tracing.d.ts +33 -0
- package/dist/server/app-page-tracing.js +50 -0
- package/dist/server/app-pages-bridge.d.ts +6 -6
- package/dist/server/app-pages-bridge.js +18 -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 +3 -1
- package/dist/server/app-prerender-static-params.d.ts +15 -7
- package/dist/server/app-prerender-static-params.js +24 -9
- package/dist/server/app-render-abort-error.d.ts +3 -0
- package/dist/server/app-render-abort-error.js +8 -0
- 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 +112 -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 +4 -4
- package/dist/server/app-route-handler-cache.js +51 -35
- package/dist/server/app-route-handler-dispatch.d.ts +3 -3
- package/dist/server/app-route-handler-dispatch.js +77 -56
- package/dist/server/app-route-handler-execution.d.ts +26 -14
- package/dist/server/app-route-handler-execution.js +94 -28
- 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 +11 -11
- package/dist/server/app-route-handler-policy.js +2 -2
- package/dist/server/app-route-handler-response.d.ts +9 -10
- package/dist/server/app-route-handler-response.js +14 -3
- 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 +4 -1
- package/dist/server/app-router-entry.js +33 -17
- package/dist/server/app-rsc-cache-busting.d.ts +34 -27
- package/dist/server/app-rsc-cache-busting.js +14 -2
- 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 +11 -9
- package/dist/server/app-rsc-errors.js +14 -16
- package/dist/server/app-rsc-handler.d.ts +32 -6
- package/dist/server/app-rsc-handler.js +425 -64
- 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 +5 -3
- package/dist/server/app-rsc-response-finalizer.d.ts +8 -5
- package/dist/server/app-rsc-response-finalizer.js +10 -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 +3 -4
- package/dist/server/app-rsc-route-matching.js +3 -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 +119 -7
- package/dist/server/app-segment-config.js +242 -2
- package/dist/server/app-server-action-execution.d.ts +18 -13
- package/dist/server/app-server-action-execution.js +86 -33
- package/dist/server/app-ssr-entry.d.ts +14 -4
- package/dist/server/app-ssr-entry.js +62 -15
- 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 +34 -8
- 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 +35 -13
- package/dist/server/cache-control.js +64 -6
- 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 +4 -5
- package/dist/server/cacheability-limits.js +2 -2
- package/dist/server/cacheability-manifest.d.ts +42 -16
- package/dist/server/cacheability-manifest.js +60 -10
- package/dist/server/cacheability-request.d.ts +37 -8
- package/dist/server/cacheability-request.js +192 -90
- 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 +25 -11
- 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 +141 -64
- 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 +56 -61
- package/dist/server/headers.js +22 -31
- 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-error-responses.js +1 -0
- 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 +30 -27
- package/dist/server/isr-cache.js +23 -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-response.d.ts +7 -7
- package/dist/server/metadata-route-response.js +158 -35
- 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 +6 -7
- 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 +7 -8
- package/dist/server/middleware-runtime.js +36 -7
- 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/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 +28 -9
- package/dist/server/pages-asset-tags.d.ts +7 -6
- package/dist/server/pages-asset-tags.js +104 -18
- 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 +13 -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-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 +23 -19
- package/dist/server/pages-page-data.js +82 -75
- package/dist/server/pages-page-handler.d.ts +7 -6
- package/dist/server/pages-page-handler.js +103 -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 +52 -32
- 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 +15 -12
- package/dist/server/pages-request-pipeline.js +80 -35
- package/dist/server/pages-request-stage-entry.d.ts +23 -0
- package/dist/server/pages-request-stage-entry.js +316 -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 +35 -148
- 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 +17 -11
- package/dist/server/prerender-manifest.js +7 -4
- package/dist/server/prerender-route-params.d.ts +16 -9
- package/dist/server/prerender-route-params.js +18 -3
- package/dist/server/prerender-work-unit-setup.d.ts +2 -3
- package/dist/server/prerender-work-unit-setup.js +5 -5
- package/dist/server/prod-server.d.ts +12 -9
- package/dist/server/prod-server.js +127 -44
- 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 +16 -16
- package/dist/server/request-pipeline.js +7 -2
- 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 +1 -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/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 +9 -6
- package/dist/server/static-file-signal.js +51 -2
- 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 +5 -6
- package/dist/server/worker-revalidation-context.d.ts +4 -4
- package/dist/server/worker-revalidation-context.js +6 -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 +2 -1
- package/dist/server/workers-tracing.d.ts +34 -0
- package/dist/server/workers-tracing.js +67 -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 +26 -38
- package/dist/shims/cache-request-state.js +2 -13
- package/dist/shims/cache-runtime.d.ts +23 -21
- package/dist/shims/cache-runtime.js +110 -28
- package/dist/shims/cache.d.ts +17 -16
- package/dist/shims/cache.js +19 -15
- package/dist/shims/cacheability-classification.d.ts +50 -29
- package/dist/shims/cacheability-classification.js +29 -14
- 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 +59 -21
- package/dist/shims/cdn-cache.js +31 -47
- 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 +5 -19
- package/dist/shims/error.js +17 -10
- package/dist/shims/error.react-server.d.ts +4 -7
- package/dist/shims/error.react-server.js +4 -1
- package/dist/shims/fetch-cache.d.ts +22 -22
- package/dist/shims/fetch-cache.js +46 -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 +44 -73
- package/dist/shims/headers.js +87 -144
- 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 +5 -17
- package/dist/shims/internal/app-prefetch-rsc-request.js +5 -14
- package/dist/shims/internal/app-route-detection.d.ts +2 -2
- package/dist/shims/internal/app-route-prefetch-policy.d.ts +5 -8
- package/dist/shims/internal/app-route-prefetch-policy.js +0 -1
- package/dist/shims/internal/app-router-context.d.ts +9 -10
- package/dist/shims/internal/cache-context-accessor.d.ts +16 -0
- package/dist/shims/internal/cache-context-accessor.js +15 -0
- 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/headers-state.d.ts +74 -0
- package/dist/shims/internal/headers-state.js +157 -0
- package/dist/shims/internal/hybrid-client-route-owner-direct.d.ts +6 -7
- package/dist/shims/internal/hybrid-client-route-owner.d.ts +3 -3
- package/dist/shims/internal/hybrid-client-route-owner.js +3 -2
- 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 +3 -4
- 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 +10 -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 +56 -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 +26 -18
- package/dist/shims/navigation.react-server.d.ts +9 -9
- 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 +5 -6
- package/dist/shims/request-state-types.d.ts +2 -1
- package/dist/shims/root-params.d.ts +14 -15
- package/dist/shims/root-params.js +1 -1
- 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 +66 -30
- 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 +35 -32
- 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 +12 -13
- 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 +4 -4
- package/dist/utils/encode-cache-tag.js +11 -1
- 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 +4 -5
- 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 +151 -0
- package/dist/utils/vite-version.d.ts +5 -6
- package/next-package.json +4 -0
- package/package.json +51 -6
- package/dist/server/metadata-route-cache-policy.d.ts +0 -6
- package/dist/server/metadata-route-cache-policy.js +0 -6
|
@@ -1,7 +1,10 @@
|
|
|
1
|
-
import { NEXT_ROUTER_STATE_TREE_HEADER, NEXT_URL_HEADER, VINEXT_INTERCEPTION_CONTEXT_HEADER, VINEXT_INTERCEPTION_ID_HEADER, VINEXT_MOUNTED_SLOTS_HEADER, VINEXT_RSC_RENDER_MODE_HEADER, VINEXT_RSC_STATE_FINGERPRINT_HEADER } from "./
|
|
1
|
+
import { NEXT_ROUTER_STATE_TREE_HEADER, NEXT_URL_HEADER, VINEXT_INTERCEPTION_CONTEXT_HEADER, VINEXT_INTERCEPTION_ID_HEADER, VINEXT_MOUNTED_SLOTS_HEADER, VINEXT_RSC_RENDER_MODE_HEADER, VINEXT_RSC_STATE_FINGERPRINT_HEADER } from "./app-rsc-vary.js";
|
|
2
|
+
import "./headers.js";
|
|
2
3
|
import "./app-rsc-render-mode.js";
|
|
3
4
|
//#region src/server/cacheability-manifest.ts
|
|
4
5
|
const CACHEABILITY_MANIFEST_MODULE = "__vinext_cacheability_manifest.js";
|
|
6
|
+
/** Request-stage projection of the manifest: the App page routes that can admit a query-free entry. */
|
|
7
|
+
const CACHEABILITY_REQUEST_PROJECTION_MODULE = "__vinext_cacheability_request_projection.js";
|
|
5
8
|
function cacheabilityManifestRouteKey(kind, pattern) {
|
|
6
9
|
return JSON.stringify([kind, pattern]);
|
|
7
10
|
}
|
|
@@ -47,9 +50,10 @@ function parseRoute(key, value) {
|
|
|
47
50
|
const pathPrefix = typeof route.pathPrefix === "string" && route.pathPrefix.startsWith("/") && new URL(route.pathPrefix, "http://vinext.local").pathname === route.pathPrefix ? route.pathPrefix : void 0;
|
|
48
51
|
const runtimePaths = route.runtimePaths === void 0 ? void 0 : parsePathList(route.runtimePaths, pathPrefix);
|
|
49
52
|
const staticPaths = route.staticPaths === void 0 ? void 0 : parseStaticPaths(route.staticPaths, pathPrefix);
|
|
53
|
+
const runtimeRepresentationPaths = route.runtimeRepresentationPaths === void 0 ? void 0 : parseStaticPaths(route.runtimeRepresentationPaths, pathPrefix);
|
|
50
54
|
const staticRepresentation = isRepresentation(route.staticRepresentation) ? route.staticRepresentation : void 0;
|
|
51
55
|
const runtimeRepresentation = isRepresentation(route.runtimeRepresentation) ? route.runtimeRepresentation : void 0;
|
|
52
|
-
if (route.allowUnknown !== void 0 && route.allowUnknown !== true || route.unknownState !== void 0 && route.unknownState !== "static-candidate" || route.unknownState !== void 0 && route.allowUnknown !== true || route.pathPrefix !== void 0 && pathPrefix === void 0 || route.staticRepresentation !== void 0 && staticRepresentation === void 0 || route.runtimeRepresentation !== void 0 && runtimeRepresentation === void 0 || runtimeRepresentation !== void 0 && (route.state !== "runtime-check" || route.allowUnknown !== void 0 || pathPrefix !== void 0 || staticRepresentation !== void 0 || runtimePaths !== void 0 || staticPaths !== void 0) || staticRepresentation !== void 0 && (route.state !== "runtime-check" || /(^|\/):/.test(route.pattern) || runtimePaths !== void 0 || staticPaths !== void 0) || pathPrefix !== void 0 && !runtimePaths && !staticPaths || route.runtimePaths !== void 0 && !runtimePaths || route.staticPaths !== void 0 && !staticPaths || (runtimePaths || staticPaths || route.allowUnknown === true) && route.state !== "runtime-check") return null;
|
|
56
|
+
if (route.allowUnknown !== void 0 && route.allowUnknown !== true || route.unknownState !== void 0 && route.unknownState !== "static-candidate" || route.unknownState !== void 0 && route.allowUnknown !== true || route.pathPrefix !== void 0 && pathPrefix === void 0 || route.staticRepresentation !== void 0 && staticRepresentation === void 0 || route.runtimeRepresentation !== void 0 && runtimeRepresentation === void 0 || runtimeRepresentation !== void 0 && (route.state !== "runtime-check" || route.allowUnknown !== void 0 || pathPrefix !== void 0 || staticRepresentation !== void 0 || runtimePaths !== void 0 || staticPaths !== void 0 || runtimeRepresentationPaths !== void 0) || staticRepresentation !== void 0 && (route.state !== "runtime-check" || /(^|\/):/.test(route.pattern) || runtimePaths !== void 0 || staticPaths !== void 0 || runtimeRepresentationPaths !== void 0) || pathPrefix !== void 0 && !runtimePaths && !staticPaths && !runtimeRepresentationPaths || route.runtimePaths !== void 0 && !runtimePaths || route.staticPaths !== void 0 && !staticPaths || route.runtimeRepresentationPaths !== void 0 && !runtimeRepresentationPaths || (runtimePaths || staticPaths || runtimeRepresentationPaths || route.allowUnknown === true) && route.state !== "runtime-check") return null;
|
|
53
57
|
const parsed = {
|
|
54
58
|
kind: route.kind,
|
|
55
59
|
pattern: route.pattern,
|
|
@@ -60,13 +64,14 @@ function parseRoute(key, value) {
|
|
|
60
64
|
...runtimeRepresentation ? { runtimeRepresentation } : {},
|
|
61
65
|
...staticRepresentation ? { staticRepresentation } : {},
|
|
62
66
|
...runtimePaths ? { runtimePaths } : {},
|
|
67
|
+
...runtimeRepresentationPaths ? { runtimeRepresentationPaths } : {},
|
|
63
68
|
...staticPaths ? { staticPaths } : {}
|
|
64
69
|
};
|
|
65
|
-
const
|
|
66
|
-
for (const tokens of
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
+
const runtimePathSet = new Set((runtimePaths ?? []).map((token) => expandPathToken(pathPrefix, token)));
|
|
71
|
+
for (const tokens of Object.values(staticPaths ?? {})) for (const token of tokens ?? []) if (runtimePathSet.has(expandPathToken(pathPrefix, token))) return null;
|
|
72
|
+
for (const [representation, tokens] of Object.entries(runtimeRepresentationPaths ?? {})) {
|
|
73
|
+
const staticTokens = new Set(staticPaths?.[representation]);
|
|
74
|
+
for (const token of tokens ?? []) if (runtimePathSet.has(expandPathToken(pathPrefix, token)) || staticTokens.has(token)) return null;
|
|
70
75
|
}
|
|
71
76
|
return key === cacheabilityManifestRouteKey(parsed.kind, parsed.pattern) ? parsed : null;
|
|
72
77
|
}
|
|
@@ -100,11 +105,15 @@ const CONTEXTUAL_RSC_HEADERS = [
|
|
|
100
105
|
VINEXT_MOUNTED_SLOTS_HEADER,
|
|
101
106
|
VINEXT_RSC_STATE_FINGERPRINT_HEADER
|
|
102
107
|
];
|
|
103
|
-
function cacheabilityRequestIdentity(request) {
|
|
108
|
+
function cacheabilityRequestIdentity(request, trustedRepresentation) {
|
|
104
109
|
if (request.method !== "GET" && request.method !== "HEAD") return null;
|
|
105
110
|
if (request.headers.has("next-action") || request.headers.has("x-rsc-action")) return null;
|
|
106
111
|
const url = new URL(request.url);
|
|
107
112
|
const requestKey = `${url.pathname}${url.search}`;
|
|
113
|
+
if (trustedRepresentation) return {
|
|
114
|
+
representation: trustedRepresentation,
|
|
115
|
+
requestKey
|
|
116
|
+
};
|
|
108
117
|
if (/(?:^|\/)_next\/data\/[^/]+\/.+\.json$/.test(url.pathname)) return {
|
|
109
118
|
representation: "pages-data",
|
|
110
119
|
requestKey
|
|
@@ -176,7 +185,8 @@ function cacheabilityManifestRouteState(route, routePathname, representation) {
|
|
|
176
185
|
if (representation && includesPath(route.staticPaths?.[representation])) return "static-candidate";
|
|
177
186
|
if (representation && route.staticRepresentation === representation) return "static-candidate";
|
|
178
187
|
if (route.runtimeRepresentation !== void 0) return representation === route.runtimeRepresentation ? route.state : null;
|
|
179
|
-
if (
|
|
188
|
+
if (representation && includesPath(route.runtimeRepresentationPaths?.[representation])) return route.state;
|
|
189
|
+
if (!route.staticPaths && !route.runtimePaths && !route.runtimeRepresentationPaths && route.allowUnknown !== true) return route.state;
|
|
180
190
|
if (includesPath(route.runtimePaths)) return route.state;
|
|
181
191
|
if (route.staticPaths) {
|
|
182
192
|
for (const paths of Object.values(route.staticPaths)) if (includesPath(paths)) return route.state;
|
|
@@ -187,5 +197,45 @@ function cacheabilityManifestRouteState(route, routePathname, representation) {
|
|
|
187
197
|
function findCacheabilityManifestRoute(manifest, kind, pattern) {
|
|
188
198
|
return manifest.routes[cacheabilityManifestRouteKey(kind, pattern)] ?? null;
|
|
189
199
|
}
|
|
200
|
+
function resolveCacheabilityRepresentation(representation, routeKind) {
|
|
201
|
+
if (representation !== "html" && representation !== "app-route") return representation;
|
|
202
|
+
return routeKind === "app-route" || routeKind === "pages-api" ? "app-route" : "html";
|
|
203
|
+
}
|
|
204
|
+
/** Whether completed-response admission can store a page route under this representation. */
|
|
205
|
+
function cacheabilityRepresentationMatchesPageRoute(routeKind, representation) {
|
|
206
|
+
return routeKind === "app-page" ? representation === "html" || representation === "rsc-full" || representation === "rsc-loading-shell" : representation === "html" || representation === "pages-data";
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* The manifest state completed-response admission gives a page request, or
|
|
210
|
+
* null when admission refuses it. `requestRepresentation` is the request
|
|
211
|
+
* identity's, and `routePathname` is built from the resolved pathname with
|
|
212
|
+
* `cacheabilityRoutePathname`, as admission builds it. The Workers Cache
|
|
213
|
+
* request stage decides its query-free dispatch with this same function, so
|
|
214
|
+
* the dispatch and admission always see the same state.
|
|
215
|
+
*/
|
|
216
|
+
function cacheabilityManifestPageState(manifest, route, requestRepresentation, routePathname) {
|
|
217
|
+
const representation = resolveCacheabilityRepresentation(requestRepresentation, route.kind);
|
|
218
|
+
if (!cacheabilityRepresentationMatchesPageRoute(route.kind, representation)) return null;
|
|
219
|
+
const manifestRoute = findCacheabilityManifestRoute(manifest, route.kind, route.pattern);
|
|
220
|
+
return manifestRoute ? cacheabilityManifestRouteState(manifestRoute, routePathname, representation) : null;
|
|
221
|
+
}
|
|
222
|
+
/** Whether any path or representation of a route can resolve to `static-candidate`. */
|
|
223
|
+
function canResolveStaticCandidate(route) {
|
|
224
|
+
return route.state === "static-candidate" || route.unknownState === "static-candidate" || route.staticRepresentation !== void 0 || route.staticPaths !== void 0;
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Project the manifest onto the Workers Cache request stage, which strips the
|
|
228
|
+
* query from App page dispatches whose manifest state is `static-candidate`.
|
|
229
|
+
* The projection keeps every App page route record that can resolve to that
|
|
230
|
+
* state, unchanged, so a lookup against it returns `static-candidate` exactly
|
|
231
|
+
* when the full manifest does. Every other route is left out.
|
|
232
|
+
*/
|
|
233
|
+
function projectCacheabilityManifestForRequestStage(manifest) {
|
|
234
|
+
return {
|
|
235
|
+
buildId: manifest.buildId,
|
|
236
|
+
routes: Object.fromEntries(Object.entries(manifest.routes).filter(([, route]) => route.kind === "app-page" && canResolveStaticCandidate(route))),
|
|
237
|
+
version: 1
|
|
238
|
+
};
|
|
239
|
+
}
|
|
190
240
|
//#endregion
|
|
191
|
-
export { CACHEABILITY_MANIFEST_MODULE, cacheabilityManifestRouteKey, cacheabilityManifestRouteState, cacheabilityRequestIdentity, cacheabilityRoutePathname, findCacheabilityManifestRoute, normalizeCacheabilityRoutePathname, parseCacheabilityManifest };
|
|
241
|
+
export { CACHEABILITY_MANIFEST_MODULE, CACHEABILITY_REQUEST_PROJECTION_MODULE, cacheabilityManifestPageState, cacheabilityManifestRouteKey, cacheabilityManifestRouteState, cacheabilityRepresentationMatchesPageRoute, cacheabilityRequestIdentity, cacheabilityRoutePathname, findCacheabilityManifestRoute, normalizeCacheabilityRoutePathname, parseCacheabilityManifest, projectCacheabilityManifestForRequestStage, resolveCacheabilityRepresentation };
|
|
@@ -1,7 +1,37 @@
|
|
|
1
|
+
import { CacheabilityRepresentation, CacheabilityRouteKind } from "./cacheability-manifest.js";
|
|
1
2
|
import { ExecutionContextLike } from "../shims/request-context.js";
|
|
2
3
|
//#region src/server/cacheability-request.d.ts
|
|
3
|
-
|
|
4
|
-
|
|
4
|
+
export type WorkerCacheabilityProbeMode = "identity" | "probe";
|
|
5
|
+
export type WorkerCacheabilityProbeRoute = {
|
|
6
|
+
kind: CacheabilityRouteKind;
|
|
7
|
+
pattern: string;
|
|
8
|
+
};
|
|
9
|
+
/** Encode the trusted route identity carried by a staged probe request. */
|
|
10
|
+
export declare function serializeWorkerCacheabilityProbeRoute(route: WorkerCacheabilityProbeRoute): string;
|
|
11
|
+
/** Read route identity only after the surrounding probe request is authenticated. */
|
|
12
|
+
export declare function readWorkerCacheabilityProbeRoute(request: Request): WorkerCacheabilityProbeRoute | null;
|
|
13
|
+
/** Authenticate and read the cacheability probe mode before internal headers are filtered. */
|
|
14
|
+
export declare function readWorkerCacheabilityProbeMode(request: Request, expectedSecret: string | null | undefined): WorkerCacheabilityProbeMode | null;
|
|
15
|
+
/** Create probe state from a mode that was authenticated at the request boundary. */
|
|
16
|
+
export declare function createWorkerCacheabilityProbeContext(base: ExecutionContextLike, mode: WorkerCacheabilityProbeMode, responseVary?: "verbatim", resolvedRoutePathname?: string): ExecutionContextLike;
|
|
17
|
+
export declare function createWorkerCacheabilityContext(base: ExecutionContextLike, request: Request, expectedSecret: string | null | undefined, responseVary?: "verbatim"): ExecutionContextLike;
|
|
18
|
+
export declare function createWorkerCacheabilityAdmissionContext(base: ExecutionContextLike, request: Request, rawManifest: string | null | undefined, buildId: string | null | undefined, requiresCompletedResponseAdmission?: boolean, responseVary?: "verbatim", resolvedRoutePathname?: string, trustedRepresentation?: CacheabilityRepresentation, options?: {
|
|
19
|
+
applyCompletedResponsePolicy?: boolean;
|
|
20
|
+
}): ExecutionContextLike;
|
|
21
|
+
/** Apply request-stage-vetted positive config policy inside the admission boundary. */
|
|
22
|
+
export declare function applyResponseStageCachePolicy(response: Response, ctx: ExecutionContextLike, policyHeaders: ReadonlyArray<readonly [string, string]> | null | undefined): Response;
|
|
23
|
+
/** Record policy that a renderer applied before producing its response. */
|
|
24
|
+
export declare function recordResponseStageCachePolicy(ctx: ExecutionContextLike, policyHeaders: ReadonlyArray<readonly [string, string]> | null | undefined): void;
|
|
25
|
+
/**
|
|
26
|
+
* Convert an authenticated probe that terminated in request routing into a
|
|
27
|
+
* valid identity-scoped dynamic result. Middleware redirects, custom responses,
|
|
28
|
+
* and external rewrites never reach the reusable response stage.
|
|
29
|
+
*/
|
|
30
|
+
export declare function finalizeRequestStageCacheabilityProbe(response: Response, options: {
|
|
31
|
+
mode: WorkerCacheabilityProbeMode | null;
|
|
32
|
+
responseStageDispatched: boolean;
|
|
33
|
+
route: WorkerCacheabilityProbeRoute | null;
|
|
34
|
+
}): Response;
|
|
5
35
|
type CapturedAdmissionBody = {
|
|
6
36
|
body: ReadableStream<Uint8Array> | null;
|
|
7
37
|
kind: "captured";
|
|
@@ -9,12 +39,11 @@ type CapturedAdmissionBody = {
|
|
|
9
39
|
body: ReadableStream<Uint8Array>;
|
|
10
40
|
kind: "fallback";
|
|
11
41
|
};
|
|
12
|
-
type CacheabilityAdmissionCaptureBudget = {
|
|
42
|
+
export type CacheabilityAdmissionCaptureBudget = {
|
|
13
43
|
maxBytes: number;
|
|
14
44
|
reservedBytes: number;
|
|
15
45
|
};
|
|
16
|
-
declare function createCacheabilityAdmissionCaptureBudget(maxBytes: number): CacheabilityAdmissionCaptureBudget;
|
|
17
|
-
declare function captureCacheabilityAdmissionBody(body: ReadableStream<Uint8Array> | null, deadlineAt: number, limit?: number, budget?: CacheabilityAdmissionCaptureBudget): Promise<CapturedAdmissionBody>;
|
|
18
|
-
declare function finalizeWorkerCacheabilityResponse(response: Response, ctx: ExecutionContextLike): Promise<Response>;
|
|
19
|
-
//#endregion
|
|
20
|
-
export { CacheabilityAdmissionCaptureBudget, captureCacheabilityAdmissionBody, createCacheabilityAdmissionCaptureBudget, createWorkerCacheabilityAdmissionContext, createWorkerCacheabilityContext, finalizeWorkerCacheabilityResponse };
|
|
46
|
+
export declare function createCacheabilityAdmissionCaptureBudget(maxBytes: number): CacheabilityAdmissionCaptureBudget;
|
|
47
|
+
export declare function captureCacheabilityAdmissionBody(body: ReadableStream<Uint8Array> | null, deadlineAt: number, limit?: number, budget?: CacheabilityAdmissionCaptureBudget): Promise<CapturedAdmissionBody>;
|
|
48
|
+
export declare function finalizeWorkerCacheabilityResponse(response: Response, ctx: ExecutionContextLike): Promise<Response>;
|
|
49
|
+
//#endregion
|
|
@@ -1,30 +1,62 @@
|
|
|
1
1
|
import "../utils/protocol-headers.js";
|
|
2
|
-
import {
|
|
2
|
+
import { isVinextRscVaryField } from "./app-rsc-vary.js";
|
|
3
|
+
import { VINEXT_CACHEABILITY_PROBE_HEADER, VINEXT_CACHEABILITY_PROBE_ROUTE_HEADER } from "./headers.js";
|
|
3
4
|
import { isNonCacheableCacheControl } from "../shims/cdn-cache.js";
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import { CACHEABILITY_ADMISSION_ISOLATE_BODY_LIMIT, CACHEABILITY_ADMISSION_RESPONSE_BODY_LIMIT, CACHEABILITY_PROBE_TIMEOUT_MS } from "./cacheability-limits.js";
|
|
5
|
+
import { CACHEABILITY_REQUEST_STATE, recordConfigCdnCachePolicyHeader } from "../shims/cacheability-classification.js";
|
|
6
|
+
import { NO_STORE_CACHE_CONTROL, applyCdnResponseBuildIdentityHeaders, applyCdnResponseHeaders, hasExplicitNonCacheableResponsePolicy, isCdnResponsePolicyHeader, readCdnResponseCacheControl, readCdnResponsePolicyHeaderName } from "./cache-control.js";
|
|
7
|
+
import { cacheabilityManifestPageState, cacheabilityManifestRouteState, cacheabilityRepresentationMatchesPageRoute, cacheabilityRequestIdentity, cacheabilityRoutePathname, findCacheabilityManifestRoute, parseCacheabilityManifest, resolveCacheabilityRepresentation } from "./cacheability-manifest.js";
|
|
8
8
|
import { workerCapabilityMatches } from "./worker-prerender-discovery.js";
|
|
9
|
+
import { CACHEABILITY_ADMISSION_ISOLATE_BODY_LIMIT, CACHEABILITY_ADMISSION_RESPONSE_BODY_LIMIT, CACHEABILITY_PROBE_TIMEOUT_MS } from "./cacheability-limits.js";
|
|
10
|
+
import { applyResponseStagePolicyHeaders } from "./response-stage-policy.js";
|
|
9
11
|
//#region src/server/cacheability-request.ts
|
|
10
|
-
const FRAMEWORK_CACHEABILITY_VARY_FIELDS = new Set(VINEXT_RSC_VARY_HEADER.split(",").map((name) => name.trim().toLowerCase()));
|
|
11
12
|
function cacheabilityVaryRejectionReason(headers, state) {
|
|
12
13
|
const fields = (headers.get("Vary") ?? "").split(",").map((name) => name.trim().toLowerCase()).filter(Boolean);
|
|
13
14
|
if (fields.includes("*")) return "response uses Vary: *";
|
|
14
15
|
if (state.responseVary === "verbatim") return null;
|
|
15
|
-
return fields.some((name) => !
|
|
16
|
+
return fields.some((name) => !isVinextRscVaryField(name)) ? "response cache does not support custom Vary fields" : null;
|
|
16
17
|
}
|
|
17
|
-
|
|
18
|
+
/** Encode the trusted route identity carried by a staged probe request. */
|
|
19
|
+
function serializeWorkerCacheabilityProbeRoute(route) {
|
|
20
|
+
return encodeURIComponent(JSON.stringify([route.kind, route.pattern]));
|
|
21
|
+
}
|
|
22
|
+
/** Read route identity only after the surrounding probe request is authenticated. */
|
|
23
|
+
function readWorkerCacheabilityProbeRoute(request) {
|
|
24
|
+
const raw = request.headers.get(VINEXT_CACHEABILITY_PROBE_ROUTE_HEADER);
|
|
25
|
+
if (!raw) return null;
|
|
26
|
+
try {
|
|
27
|
+
const value = JSON.parse(decodeURIComponent(raw));
|
|
28
|
+
if (!Array.isArray(value) || value.length !== 2) return null;
|
|
29
|
+
const [kind, pattern] = value;
|
|
30
|
+
if (kind !== "app-page" && kind !== "app-route" && kind !== "pages-page" || typeof pattern !== "string" || !pattern.startsWith("/")) return null;
|
|
31
|
+
return {
|
|
32
|
+
kind,
|
|
33
|
+
pattern
|
|
34
|
+
};
|
|
35
|
+
} catch {
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
/** Authenticate and read the cacheability probe mode before internal headers are filtered. */
|
|
40
|
+
function readWorkerCacheabilityProbeMode(request, expectedSecret) {
|
|
18
41
|
const requestedMode = request.headers.get(VINEXT_CACHEABILITY_PROBE_HEADER);
|
|
19
|
-
if (requestedMode !== "1" && requestedMode !== "identity") return
|
|
20
|
-
if (!expectedSecret || !workerCapabilityMatches(request.headers.get("x-vinext-prerender-secret") ?? "", expectedSecret)) return
|
|
42
|
+
if (requestedMode !== "1" && requestedMode !== "identity") return null;
|
|
43
|
+
if (!expectedSecret || !workerCapabilityMatches(request.headers.get("x-vinext-prerender-secret") ?? "", expectedSecret)) return null;
|
|
44
|
+
return requestedMode === "identity" ? "identity" : "probe";
|
|
45
|
+
}
|
|
46
|
+
/** Create probe state from a mode that was authenticated at the request boundary. */
|
|
47
|
+
function createWorkerCacheabilityProbeContext(base, mode, responseVary, resolvedRoutePathname) {
|
|
21
48
|
const state = {
|
|
22
49
|
captureDeadlineAt: Date.now() + CACHEABILITY_PROBE_TIMEOUT_MS,
|
|
23
|
-
mode
|
|
24
|
-
responseVary
|
|
50
|
+
mode,
|
|
51
|
+
responseVary,
|
|
52
|
+
resolvedRoutePathname
|
|
25
53
|
};
|
|
26
54
|
return Object.assign(Object.create(Object.getPrototypeOf(base)), base, { [CACHEABILITY_REQUEST_STATE]: state });
|
|
27
55
|
}
|
|
56
|
+
function createWorkerCacheabilityContext(base, request, expectedSecret, responseVary) {
|
|
57
|
+
const mode = readWorkerCacheabilityProbeMode(request, expectedSecret);
|
|
58
|
+
return mode ? createWorkerCacheabilityProbeContext(base, mode, responseVary) : base;
|
|
59
|
+
}
|
|
28
60
|
let cachedManifest;
|
|
29
61
|
function readBoundManifest(raw, buildId) {
|
|
30
62
|
if (cachedManifest?.raw === raw && cachedManifest.buildId === buildId) return cachedManifest.manifest;
|
|
@@ -36,18 +68,22 @@ function readBoundManifest(raw, buildId) {
|
|
|
36
68
|
};
|
|
37
69
|
return manifest;
|
|
38
70
|
}
|
|
39
|
-
function createWorkerCacheabilityAdmissionContext(base, request, rawManifest, buildId, requiresCompletedResponseAdmission = rawManifest != null, responseVary) {
|
|
40
|
-
const identity = cacheabilityRequestIdentity(request);
|
|
71
|
+
function createWorkerCacheabilityAdmissionContext(base, request, rawManifest, buildId, requiresCompletedResponseAdmission = rawManifest != null, responseVary, resolvedRoutePathname, trustedRepresentation, options) {
|
|
72
|
+
const identity = cacheabilityRequestIdentity(request, trustedRepresentation);
|
|
73
|
+
const credentialedRequest = request.headers.has("authorization") || request.headers.has("cookie") || request.headers.has("proxy-authorization");
|
|
74
|
+
const routePathname = identity ? cacheabilityRoutePathname(resolvedRoutePathname ?? new URL(request.url).pathname, identity.representation) : void 0;
|
|
41
75
|
if (!rawManifest) {
|
|
42
76
|
if (!requiresCompletedResponseAdmission) return base;
|
|
43
77
|
const state = {
|
|
44
78
|
admission: identity ? {
|
|
45
79
|
policy: "runtime",
|
|
46
80
|
...identity,
|
|
47
|
-
routePathname
|
|
81
|
+
routePathname
|
|
48
82
|
} : { policy: "deny" },
|
|
49
83
|
captureDeadlineAt: Date.now() + CACHEABILITY_PROBE_TIMEOUT_MS,
|
|
84
|
+
credentialedRequest,
|
|
50
85
|
mode: "admit",
|
|
86
|
+
applyCompletedResponsePolicy: options?.applyCompletedResponsePolicy,
|
|
51
87
|
responseVary
|
|
52
88
|
};
|
|
53
89
|
return Object.assign(Object.create(Object.getPrototypeOf(base)), base, { [CACHEABILITY_REQUEST_STATE]: state });
|
|
@@ -58,10 +94,12 @@ function createWorkerCacheabilityAdmissionContext(base, request, rawManifest, bu
|
|
|
58
94
|
manifest,
|
|
59
95
|
policy: "manifest",
|
|
60
96
|
...identity,
|
|
61
|
-
routePathname
|
|
97
|
+
routePathname
|
|
62
98
|
} : { policy: "deny" },
|
|
63
99
|
captureDeadlineAt: Date.now() + CACHEABILITY_PROBE_TIMEOUT_MS,
|
|
100
|
+
credentialedRequest,
|
|
64
101
|
mode: "admit",
|
|
102
|
+
applyCompletedResponsePolicy: options?.applyCompletedResponsePolicy,
|
|
65
103
|
responseVary
|
|
66
104
|
};
|
|
67
105
|
return Object.assign(Object.create(Object.getPrototypeOf(base)), base, { [CACHEABILITY_REQUEST_STATE]: state });
|
|
@@ -69,13 +107,45 @@ function createWorkerCacheabilityAdmissionContext(base, request, rawManifest, bu
|
|
|
69
107
|
function readState(ctx) {
|
|
70
108
|
return Reflect.get(ctx, CACHEABILITY_REQUEST_STATE) ?? null;
|
|
71
109
|
}
|
|
72
|
-
|
|
110
|
+
/** Apply request-stage-vetted positive config policy inside the admission boundary. */
|
|
111
|
+
function applyResponseStageCachePolicy(response, ctx, policyHeaders) {
|
|
112
|
+
if (!policyHeaders?.length) return response;
|
|
113
|
+
recordConfigCachePolicy(readState(ctx), policyHeaders);
|
|
114
|
+
try {
|
|
115
|
+
applyResponseStagePolicyHeaders(response.headers, policyHeaders);
|
|
116
|
+
return response;
|
|
117
|
+
} catch {
|
|
118
|
+
const headers = new Headers(response.headers);
|
|
119
|
+
applyResponseStagePolicyHeaders(headers, policyHeaders);
|
|
120
|
+
return new Response(response.body, {
|
|
121
|
+
headers,
|
|
122
|
+
status: response.status,
|
|
123
|
+
statusText: response.statusText
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
/** Record policy that a renderer applied before producing its response. */
|
|
128
|
+
function recordResponseStageCachePolicy(ctx, policyHeaders) {
|
|
129
|
+
if (!policyHeaders?.length) return;
|
|
130
|
+
recordConfigCachePolicy(readState(ctx), policyHeaders);
|
|
131
|
+
}
|
|
132
|
+
function recordConfigCachePolicy(state, policyHeaders) {
|
|
133
|
+
if (!state) return;
|
|
134
|
+
state.explicitConfigCachePolicy = true;
|
|
135
|
+
for (const [name, value] of policyHeaders) if (isCdnResponsePolicyHeader(name)) recordConfigCdnCachePolicyHeader(state, name, value);
|
|
136
|
+
}
|
|
137
|
+
function probeResponse(state, routeState, outcome, status, renderer) {
|
|
138
|
+
const dynamicUsage = renderer?.dynamicUsage === true || outcome.dynamicUsage === true || state.patternDynamicReason !== void 0;
|
|
73
139
|
const body = {
|
|
74
140
|
cacheControl: outcome.cacheControl,
|
|
141
|
+
...dynamicUsage ? { dynamicUsage: true } : {},
|
|
142
|
+
...state.explicitConfigCachePolicy ? { explicitConfigCachePolicy: true } : {},
|
|
75
143
|
kind: state.route?.kind,
|
|
76
144
|
pattern: state.route?.pattern,
|
|
77
145
|
reason: outcome.reason,
|
|
78
|
-
...
|
|
146
|
+
...renderer ? { rendererStatic: renderer.static } : {},
|
|
147
|
+
...outcome.retryable ? { retryable: true } : {},
|
|
148
|
+
...state.resolvedRoutePathname ? { routePathname: state.resolvedRoutePathname } : {},
|
|
79
149
|
...routeState === "dynamic" ? { scope: state.patternDynamicReason ? "pattern" : "identity" } : {},
|
|
80
150
|
state: routeState,
|
|
81
151
|
status,
|
|
@@ -83,6 +153,26 @@ function probeResponse(state, routeState, outcome, status, rendererStatic) {
|
|
|
83
153
|
};
|
|
84
154
|
return applyCdnResponseBuildIdentityHeaders(Response.json(body, { headers: { "Cache-Control": NO_STORE_CACHE_CONTROL } }));
|
|
85
155
|
}
|
|
156
|
+
/**
|
|
157
|
+
* Convert an authenticated probe that terminated in request routing into a
|
|
158
|
+
* valid identity-scoped dynamic result. Middleware redirects, custom responses,
|
|
159
|
+
* and external rewrites never reach the reusable response stage.
|
|
160
|
+
*/
|
|
161
|
+
function finalizeRequestStageCacheabilityProbe(response, options) {
|
|
162
|
+
if (!options.mode || options.responseStageDispatched || !options.route) return response;
|
|
163
|
+
response.body?.cancel().catch(() => {});
|
|
164
|
+
const body = {
|
|
165
|
+
kind: options.route.kind,
|
|
166
|
+
pattern: options.route.pattern,
|
|
167
|
+
reason: "request routing completed without response-stage rendering",
|
|
168
|
+
scope: "identity",
|
|
169
|
+
state: "dynamic",
|
|
170
|
+
status: response.status,
|
|
171
|
+
terminal: true,
|
|
172
|
+
version: 1
|
|
173
|
+
};
|
|
174
|
+
return applyCdnResponseBuildIdentityHeaders(Response.json(body, { headers: { "Cache-Control": NO_STORE_CACHE_CONTROL } }));
|
|
175
|
+
}
|
|
86
176
|
async function drainProbeBody(response, deadlineAt) {
|
|
87
177
|
if (!response.body) return null;
|
|
88
178
|
const reader = response.body.getReader();
|
|
@@ -258,46 +348,41 @@ async function captureCacheabilityAdmissionBody(body, deadlineAt, limit = CACHEA
|
|
|
258
348
|
throw error;
|
|
259
349
|
}
|
|
260
350
|
}
|
|
261
|
-
function responseWithCachePolicy(response, body, outcome) {
|
|
351
|
+
function responseWithCachePolicy(response, body, outcome, browserCacheControl) {
|
|
262
352
|
const headers = new Headers(response.headers);
|
|
353
|
+
if (typeof body === "string") headers.delete("Content-Length");
|
|
263
354
|
applyCdnResponseHeaders(headers, outcome?.cacheable === true && outcome.cacheControl ? {
|
|
264
355
|
cacheControl: outcome.cacheControl,
|
|
265
|
-
tags: outcome.tags
|
|
266
|
-
|
|
356
|
+
tags: outcome.tags,
|
|
357
|
+
browserCacheControl
|
|
358
|
+
} : {
|
|
359
|
+
cacheControl: NO_STORE_CACHE_CONTROL,
|
|
360
|
+
browserCacheControl
|
|
361
|
+
});
|
|
267
362
|
return new Response(body, {
|
|
268
363
|
headers,
|
|
269
364
|
status: response.status,
|
|
270
365
|
statusText: response.statusText
|
|
271
366
|
});
|
|
272
367
|
}
|
|
273
|
-
function
|
|
274
|
-
if (!
|
|
275
|
-
const
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
"cache-control"
|
|
279
|
-
].find((name) => {
|
|
280
|
-
const value = response.headers.get(name);
|
|
281
|
-
return value !== null && (state.explicitConfigCachePolicy || value !== state.frameworkResponseCachePolicy?.[name]);
|
|
282
|
-
});
|
|
283
|
-
if (!changedPolicy) return null;
|
|
284
|
-
const cacheControl = response.headers.get(changedPolicy);
|
|
285
|
-
if (isNonCacheableCacheControl(cacheControl)) return { cacheable: false };
|
|
286
|
-
const cacheTag = response.headers.get("Cache-Tag");
|
|
287
|
-
return {
|
|
288
|
-
cacheable: true,
|
|
289
|
-
cacheControl,
|
|
290
|
-
...cacheTag ? { tags: cacheTag.split(",").map((tag) => tag.trim()).filter(Boolean) } : {}
|
|
291
|
-
};
|
|
368
|
+
async function stripSharedHtmlClientTraceMetadata(body, marker) {
|
|
369
|
+
if (!body) return null;
|
|
370
|
+
const html = await new Response(body).text();
|
|
371
|
+
const { stripClientTraceMetadataBlock } = await import("./client-trace-metadata.js");
|
|
372
|
+
return stripClientTraceMetadataBlock(html, marker);
|
|
292
373
|
}
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
374
|
+
/** Only an explicitly authored provider policy may override framework storage. */
|
|
375
|
+
function explicitProviderOutcome(response, state) {
|
|
376
|
+
const name = readCdnResponsePolicyHeaderName(response.headers);
|
|
377
|
+
if (!name || name === "cache-control") return null;
|
|
378
|
+
const value = response.headers.get(name);
|
|
379
|
+
if (!(state.explicitResponseCachePolicy || state.configCdnCachePolicy?.get(name) === value || state.frameworkResponseCachePolicy && state.frameworkResponseCachePolicy.get(name) !== value) || !value) return null;
|
|
380
|
+
const cacheControl = readCdnResponseCacheControl(response.headers);
|
|
381
|
+
if (!cacheControl) return null;
|
|
382
|
+
return isNonCacheableCacheControl(cacheControl) ? { cacheable: false } : {
|
|
298
383
|
cacheable: true,
|
|
299
384
|
cacheControl,
|
|
300
|
-
...
|
|
385
|
+
...state.cdnCacheTags ? { tags: state.cdnCacheTags } : {}
|
|
301
386
|
};
|
|
302
387
|
}
|
|
303
388
|
function completedRouteOutcome(response, state, rendererOutcome = state.outcome ?? null) {
|
|
@@ -310,18 +395,17 @@ function completedRouteOutcome(response, state, rendererOutcome = state.outcome
|
|
|
310
395
|
cacheable: false,
|
|
311
396
|
reason: varyRejectionReason
|
|
312
397
|
};
|
|
313
|
-
if (
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
return responseOutcome.cacheable ? responseOutcome : rendererOutcome ?? responseOutcome;
|
|
398
|
+
if (response.headers.has("set-cookie")) return {
|
|
399
|
+
cacheable: false,
|
|
400
|
+
reason: "response sets a cookie"
|
|
401
|
+
};
|
|
402
|
+
if (rendererOutcome?.dynamicUsage) return rendererOutcome;
|
|
403
|
+
const outcome = explicitProviderOutcome(response, state) ?? rendererOutcome;
|
|
404
|
+
const tags = outcome?.tags ?? rendererOutcome?.tags ?? state.cdnCacheTags;
|
|
405
|
+
return outcome && tags && outcome.tags !== tags ? {
|
|
406
|
+
...outcome,
|
|
407
|
+
tags
|
|
408
|
+
} : outcome;
|
|
325
409
|
}
|
|
326
410
|
function staticToDynamicResponse(route) {
|
|
327
411
|
const headers = new Headers({ "Content-Type": "text/plain; charset=utf-8" });
|
|
@@ -340,68 +424,82 @@ function cacheabilityEvaluationFailureResponse(pattern) {
|
|
|
340
424
|
});
|
|
341
425
|
}
|
|
342
426
|
function hasStrictFinalResponseVeto(response, state) {
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
if (value !== null && value !== state.frameworkResponseCachePolicy?.[name] && isNonCacheableCacheControl(value)) return true;
|
|
347
|
-
}
|
|
348
|
-
return false;
|
|
427
|
+
const providerHeaders = new Headers(response.headers);
|
|
428
|
+
providerHeaders.delete("Cache-Control");
|
|
429
|
+
return Boolean(state.finalResponseVetoReason || response.headers.has("set-cookie") || hasExplicitNonCacheableResponsePolicy(providerHeaders, state.frameworkResponseCachePolicy));
|
|
349
430
|
}
|
|
350
431
|
async function finalizeWorkerCacheabilityAdmission(response, state) {
|
|
351
432
|
if (state.preserveResponseCachePolicy) return response;
|
|
433
|
+
const browserCacheControl = state.explicitResponseCachePolicy || state.configCdnCachePolicy?.has("cache-control") || state.route?.kind === "pages-api" || state.route?.kind === "pages-page" && state.outcome?.cacheable !== true ? response.headers.get("Cache-Control") ?? void 0 : void 0;
|
|
352
434
|
const admission = state.admission;
|
|
353
|
-
if (state.route?.kind === "app-route") {
|
|
435
|
+
if (state.route?.kind === "app-route" || state.route?.kind === "pages-api") {
|
|
354
436
|
let manifestRoute = null;
|
|
355
|
-
const
|
|
356
|
-
|
|
357
|
-
|
|
437
|
+
const responseOutcome = completedRouteOutcome(response, state);
|
|
438
|
+
const representation = admission?.representation ? resolveCacheabilityRepresentation(admission.representation, state.route.kind) : null;
|
|
439
|
+
const hasExplicitRuntimePolicy = responseOutcome?.cacheable === true;
|
|
440
|
+
if (!admission || admission.policy === "deny" || !representation || !admission.requestKey) return responseWithCachePolicy(response, response.body, null, browserCacheControl);
|
|
441
|
+
if (admission.policy === "manifest" && state.route.kind === "app-route") {
|
|
358
442
|
const manifest = admission.manifest;
|
|
359
443
|
manifestRoute = findCacheabilityManifestRoute(manifest, state.route.kind, state.route.pattern);
|
|
360
444
|
}
|
|
361
|
-
const isManifestAuthorized = manifestRoute !== null && admission.routePathname !== void 0 && cacheabilityManifestRouteState(manifestRoute, admission.routePathname,
|
|
445
|
+
const isManifestAuthorized = manifestRoute !== null && admission.routePathname !== void 0 && cacheabilityManifestRouteState(manifestRoute, admission.routePathname, representation) !== null;
|
|
362
446
|
const canUseBoundedRuntimeAdmission = hasExplicitRuntimePolicy && (admission.policy === "runtime" || admission.policy === "manifest" && !isManifestAuthorized);
|
|
363
|
-
if (!isManifestAuthorized && !canUseBoundedRuntimeAdmission || response.status >= 500 || state.forcedDynamicReason || hasStrictFinalResponseVeto(response, state) || cacheabilityVaryRejectionReason(response.headers, state) !== null) return responseWithCachePolicy(response, response.body, null);
|
|
364
|
-
const outcome =
|
|
365
|
-
if (
|
|
366
|
-
|
|
447
|
+
if (!isManifestAuthorized && !canUseBoundedRuntimeAdmission || response.status >= 500 || state.credentialedRequest || state.forcedDynamicReason || hasStrictFinalResponseVeto(response, state) || cacheabilityVaryRejectionReason(response.headers, state) !== null) return responseWithCachePolicy(response, response.body, null, browserCacheControl);
|
|
448
|
+
const outcome = responseOutcome;
|
|
449
|
+
if (state.completedResponseBody) {
|
|
450
|
+
if (!outcome?.cacheable || !outcome.cacheControl) return responseWithCachePolicy(response, response.body, null, browserCacheControl);
|
|
451
|
+
if (!state.applyCompletedResponsePolicy) return response;
|
|
452
|
+
return responseWithCachePolicy(response, response.body, outcome, browserCacheControl);
|
|
453
|
+
}
|
|
367
454
|
let captured;
|
|
368
455
|
try {
|
|
369
456
|
captured = await captureCacheabilityAdmissionBody(response.body, state.captureDeadlineAt, CACHEABILITY_ADMISSION_RESPONSE_BODY_LIMIT, state.captureBudget ?? isolateCaptureBudget);
|
|
370
457
|
} catch {
|
|
371
458
|
return cacheabilityEvaluationFailureResponse(state.route.pattern);
|
|
372
459
|
}
|
|
373
|
-
if (captured.kind === "fallback") return responseWithCachePolicy(response, captured.body, null);
|
|
374
|
-
return responseWithCachePolicy(response, captured.body, outcome);
|
|
460
|
+
if (captured.kind === "fallback") return responseWithCachePolicy(response, captured.body, null, browserCacheControl);
|
|
461
|
+
return responseWithCachePolicy(response, captured.body, outcome, browserCacheControl);
|
|
375
462
|
}
|
|
376
|
-
if (!admission || admission.policy === "deny" || !admission.representation || !admission.requestKey || !state.route || response.status >= 500) return responseWithCachePolicy(response, response.body, null);
|
|
377
|
-
|
|
463
|
+
if (!admission || admission.policy === "deny" || !admission.representation || !admission.requestKey || !state.route || response.status >= 500) return responseWithCachePolicy(response, response.body, null, browserCacheControl);
|
|
464
|
+
const pageRoute = {
|
|
465
|
+
kind: state.route.kind,
|
|
466
|
+
pattern: state.route.pattern
|
|
467
|
+
};
|
|
468
|
+
const requestRepresentation = admission.representation;
|
|
469
|
+
const representation = resolveCacheabilityRepresentation(requestRepresentation, pageRoute.kind);
|
|
470
|
+
if (!cacheabilityRepresentationMatchesPageRoute(pageRoute.kind, representation)) return responseWithCachePolicy(response, response.body, null, browserCacheControl);
|
|
378
471
|
let manifestRoute = null;
|
|
379
472
|
let manifestRouteState = null;
|
|
380
473
|
if (admission.policy === "manifest") {
|
|
381
474
|
const manifest = admission.manifest;
|
|
382
|
-
manifestRoute = findCacheabilityManifestRoute(manifest,
|
|
383
|
-
manifestRouteState =
|
|
384
|
-
if (!manifestRoute || !manifestRouteState) return responseWithCachePolicy(response, response.body, null);
|
|
475
|
+
manifestRoute = findCacheabilityManifestRoute(manifest, pageRoute.kind, pageRoute.pattern);
|
|
476
|
+
manifestRouteState = admission.routePathname ? cacheabilityManifestPageState(manifest, pageRoute, requestRepresentation, admission.routePathname) : null;
|
|
477
|
+
if (!manifestRoute || !manifestRouteState) return responseWithCachePolicy(response, response.body, null, browserCacheControl);
|
|
385
478
|
}
|
|
386
|
-
if (state.forcedDynamicReason) return responseWithCachePolicy(response, response.body, null);
|
|
387
|
-
if (hasStrictFinalResponseVeto(response, state)) return responseWithCachePolicy(response, response.body, null);
|
|
388
|
-
if (cacheabilityVaryRejectionReason(response.headers, state) !== null) return responseWithCachePolicy(response, response.body, null);
|
|
479
|
+
if (state.forcedDynamicReason) return responseWithCachePolicy(response, response.body, null, browserCacheControl);
|
|
480
|
+
if (hasStrictFinalResponseVeto(response, state)) return responseWithCachePolicy(response, response.body, null, browserCacheControl);
|
|
481
|
+
if (cacheabilityVaryRejectionReason(response.headers, state) !== null) return responseWithCachePolicy(response, response.body, null, browserCacheControl);
|
|
482
|
+
if (state.route.kind === "pages-page" && !state.completion && completedRouteOutcome(response, state)?.cacheable !== true) return responseWithCachePolicy(response, response.body, null, browserCacheControl);
|
|
389
483
|
let captured;
|
|
390
484
|
try {
|
|
391
485
|
captured = await captureCacheabilityAdmissionBody(response.body, state.captureDeadlineAt, CACHEABILITY_ADMISSION_RESPONSE_BODY_LIMIT, state.captureBudget ?? isolateCaptureBudget);
|
|
392
486
|
} catch {
|
|
393
487
|
return cacheabilityEvaluationFailureResponse(state.route.pattern);
|
|
394
488
|
}
|
|
395
|
-
if (captured.kind === "fallback") return responseWithCachePolicy(response, captured.body, null);
|
|
396
|
-
const
|
|
489
|
+
if (captured.kind === "fallback") return responseWithCachePolicy(response, captured.body, null, browserCacheControl);
|
|
490
|
+
const rendererOutcome = state.completion ? await state.completion : state.outcome ?? null;
|
|
491
|
+
const outcome = completedRouteOutcome(response, state, rendererOutcome);
|
|
397
492
|
if (outcome?.cacheable !== true || !outcome.cacheControl) {
|
|
398
493
|
if (manifestRoute && manifestRouteState === "static-candidate" && outcome?.dynamicUsage === true) {
|
|
399
494
|
await captured.body?.cancel().catch(() => {});
|
|
400
495
|
return staticToDynamicResponse(manifestRoute);
|
|
401
496
|
}
|
|
402
|
-
return responseWithCachePolicy(response, captured.body, null);
|
|
497
|
+
return responseWithCachePolicy(response, captured.body, null, browserCacheControl);
|
|
403
498
|
}
|
|
404
|
-
|
|
499
|
+
const effectivePolicyHeader = readCdnResponsePolicyHeaderName(response.headers);
|
|
500
|
+
const replacesRendererPolicy = outcome !== rendererOutcome && effectivePolicyHeader !== null && state.configCdnCachePolicy?.get(effectivePolicyHeader) === response.headers.get(effectivePolicyHeader);
|
|
501
|
+
if (state.route.kind === "app-page" && !replacesRendererPolicy && rendererOutcome?.searchParamsUnread !== true) return responseWithCachePolicy(response, captured.body, null, browserCacheControl);
|
|
502
|
+
return responseWithCachePolicy(response, representation === "html" && state.clientTraceMetadataMarker ? await stripSharedHtmlClientTraceMetadata(captured.body, state.clientTraceMetadataMarker) : captured.body, outcome, browserCacheControl);
|
|
405
503
|
}
|
|
406
504
|
async function finalizeWorkerCacheabilityResponse(response, ctx) {
|
|
407
505
|
const state = readState(ctx);
|
|
@@ -443,7 +541,8 @@ async function finalizeWorkerCacheabilityResponse(response, ctx) {
|
|
|
443
541
|
if (drainFailure) return probeResponse(state, "probe-failed", {
|
|
444
542
|
cacheable: false,
|
|
445
543
|
classificationFailure: true,
|
|
446
|
-
reason: drainFailure
|
|
544
|
+
reason: drainFailure,
|
|
545
|
+
retryable: true
|
|
447
546
|
}, response.status);
|
|
448
547
|
const rendererOutcome = state.completion ? await state.completion : state.outcome ?? null;
|
|
449
548
|
const outcome = completedRouteOutcome(response, state, rendererOutcome);
|
|
@@ -451,7 +550,10 @@ async function finalizeWorkerCacheabilityResponse(response, ctx) {
|
|
|
451
550
|
cacheable: false,
|
|
452
551
|
reason: "completed render did not produce a reusable cache policy"
|
|
453
552
|
}, response.status);
|
|
454
|
-
return probeResponse(state, outcome.cacheable ? "static-candidate" : outcome.classificationFailure ? "probe-failed" : "dynamic", outcome, response.status,
|
|
553
|
+
return probeResponse(state, outcome.cacheable ? "static-candidate" : outcome.classificationFailure ? "probe-failed" : "dynamic", outcome, response.status, {
|
|
554
|
+
dynamicUsage: rendererOutcome?.dynamicUsage === true,
|
|
555
|
+
static: rendererOutcome?.cacheable === true && rendererOutcome.dynamicUsage !== true
|
|
556
|
+
});
|
|
455
557
|
}
|
|
456
558
|
//#endregion
|
|
457
|
-
export { captureCacheabilityAdmissionBody, createCacheabilityAdmissionCaptureBudget, createWorkerCacheabilityAdmissionContext, createWorkerCacheabilityContext, finalizeWorkerCacheabilityResponse };
|
|
559
|
+
export { applyResponseStageCachePolicy, captureCacheabilityAdmissionBody, createCacheabilityAdmissionCaptureBudget, createWorkerCacheabilityAdmissionContext, createWorkerCacheabilityContext, createWorkerCacheabilityProbeContext, finalizeRequestStageCacheabilityProbe, finalizeWorkerCacheabilityResponse, readWorkerCacheabilityProbeMode, readWorkerCacheabilityProbeRoute, recordResponseStageCachePolicy, serializeWorkerCacheabilityProbeRoute };
|