vinext 1.0.0-beta.9 → 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 +150 -92
- 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 +36 -11
- package/dist/build/prerender-paths.js +273 -97
- 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 +65 -15
- package/dist/build/prerender.js +139 -43
- 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 +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 +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/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 -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 +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 +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 +502 -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 +711 -189
- package/dist/init-cloudflare.d.ts +26 -17
- package/dist/init-cloudflare.js +710 -102
- 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 +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 +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 +87 -34
- 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 +8 -4
- 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 +6 -2
- 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-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 +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 -5
- 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 -25
- 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 +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 +34 -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 +17 -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-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 +68 -54
- package/dist/server/app-route-handler-execution.d.ts +17 -13
- package/dist/server/app-route-handler-execution.js +69 -18
- 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-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 +28 -8
- 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 +12 -9
- package/dist/server/app-rsc-errors.js +15 -13
- package/dist/server/app-rsc-handler.d.ts +31 -6
- package/dist/server/app-rsc-handler.js +411 -61
- 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 +6 -6
- 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 +16 -12
- 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 +61 -14
- 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 +35 -13
- package/dist/server/cache-control.js +71 -5
- 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 +159 -57
- 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 +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 +54 -61
- package/dist/server/headers.js +18 -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-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 +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 +20 -7
- 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-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 +77 -39
- 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 +14 -12
- package/dist/server/pages-request-pipeline.js +60 -30
- 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 +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 +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 -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 +124 -31
- 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 +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 +2 -1
- 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 +107 -27
- package/dist/shims/cache.d.ts +15 -15
- package/dist/shims/cache.js +15 -13
- package/dist/shims/cacheability-classification.d.ts +49 -28
- package/dist/shims/cacheability-classification.js +27 -12
- 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 +50 -21
- package/dist/shims/cdn-cache.js +15 -38
- 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.react-server.d.ts +3 -4
- package/dist/shims/fetch-cache.d.ts +22 -22
- package/dist/shims/fetch-cache.js +42 -17
- 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 +67 -33
- package/dist/shims/headers.js +93 -6
- 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/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.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 +24 -16
- 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/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 +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 +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 +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 +144 -0
- package/dist/utils/vite-version.d.ts +5 -6
- package/next-package.json +4 -0
- package/package.json +47 -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();
|
|
@@ -260,6 +350,7 @@ async function captureCacheabilityAdmissionBody(body, deadlineAt, limit = CACHEA
|
|
|
260
350
|
}
|
|
261
351
|
function responseWithCachePolicy(response, body, outcome) {
|
|
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
356
|
tags: outcome.tags
|
|
@@ -270,34 +361,30 @@ function responseWithCachePolicy(response, body, outcome) {
|
|
|
270
361
|
statusText: response.statusText
|
|
271
362
|
});
|
|
272
363
|
}
|
|
364
|
+
async function stripSharedHtmlClientTraceMetadata(body, marker) {
|
|
365
|
+
if (!body) return null;
|
|
366
|
+
const html = await new Response(body).text();
|
|
367
|
+
const { stripClientTraceMetadataBlock } = await import("./client-trace-metadata.js");
|
|
368
|
+
return stripClientTraceMetadataBlock(html, marker);
|
|
369
|
+
}
|
|
273
370
|
function inferFinalAppPageCacheability(response, state) {
|
|
274
371
|
if (!state.explicitConfigCachePolicy && !state.frameworkResponseCachePolicy) return null;
|
|
275
|
-
const
|
|
276
|
-
|
|
277
|
-
"cdn-cache-control",
|
|
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);
|
|
372
|
+
const cacheControl = readCdnResponseCacheControl(response.headers);
|
|
373
|
+
if (cacheControl === null || !state.explicitConfigCachePolicy && cacheControl === readCdnResponseCacheControl(state.frameworkResponseCachePolicy)) return null;
|
|
285
374
|
if (isNonCacheableCacheControl(cacheControl)) return { cacheable: false };
|
|
286
|
-
const cacheTag = response.headers.get("Cache-Tag");
|
|
287
375
|
return {
|
|
288
376
|
cacheable: true,
|
|
289
377
|
cacheControl,
|
|
290
|
-
...
|
|
378
|
+
...state.cdnCacheTags ? { tags: state.cdnCacheTags } : {}
|
|
291
379
|
};
|
|
292
380
|
}
|
|
293
|
-
function inferPagesPageCacheability(response) {
|
|
294
|
-
const cacheControl =
|
|
381
|
+
function inferPagesPageCacheability(response, state) {
|
|
382
|
+
const cacheControl = readCdnResponseCacheControl(response.headers);
|
|
295
383
|
if (!cacheControl || isNonCacheableCacheControl(cacheControl)) return { cacheable: false };
|
|
296
|
-
const cacheTag = response.headers.get("Cache-Tag");
|
|
297
384
|
return {
|
|
298
385
|
cacheable: true,
|
|
299
386
|
cacheControl,
|
|
300
|
-
...
|
|
387
|
+
...state.cdnCacheTags ? { tags: state.cdnCacheTags } : {}
|
|
301
388
|
};
|
|
302
389
|
}
|
|
303
390
|
function completedRouteOutcome(response, state, rendererOutcome = state.outcome ?? null) {
|
|
@@ -315,12 +402,12 @@ function completedRouteOutcome(response, state, rendererOutcome = state.outcome
|
|
|
315
402
|
cacheable: false,
|
|
316
403
|
reason: "response sets a cookie"
|
|
317
404
|
};
|
|
318
|
-
return inferPagesPageCacheability(response);
|
|
405
|
+
return inferPagesPageCacheability(response, state);
|
|
319
406
|
}
|
|
320
407
|
if (state.route?.kind === "app-page") return inferFinalAppPageCacheability(response, state) ?? rendererOutcome;
|
|
321
408
|
if (state.route?.kind !== "pages-page") return rendererOutcome;
|
|
322
409
|
if (response.headers.has("set-cookie") || hasExplicitNonCacheableResponsePolicy(response.headers)) return { cacheable: false };
|
|
323
|
-
const responseOutcome = inferPagesPageCacheability(response);
|
|
410
|
+
const responseOutcome = inferPagesPageCacheability(response, state);
|
|
324
411
|
return responseOutcome.cacheable ? responseOutcome : rendererOutcome ?? responseOutcome;
|
|
325
412
|
}
|
|
326
413
|
function staticToDynamicResponse(route) {
|
|
@@ -341,29 +428,30 @@ function cacheabilityEvaluationFailureResponse(pattern) {
|
|
|
341
428
|
}
|
|
342
429
|
function hasStrictFinalResponseVeto(response, state) {
|
|
343
430
|
if (state.finalResponseVetoReason || response.headers.has("set-cookie")) return true;
|
|
344
|
-
|
|
345
|
-
const value = response.headers.get(name);
|
|
346
|
-
if (value !== null && value !== state.frameworkResponseCachePolicy?.[name] && isNonCacheableCacheControl(value)) return true;
|
|
347
|
-
}
|
|
348
|
-
return false;
|
|
431
|
+
return hasExplicitNonCacheableResponsePolicy(response.headers, state.frameworkResponseCachePolicy);
|
|
349
432
|
}
|
|
350
433
|
async function finalizeWorkerCacheabilityAdmission(response, state) {
|
|
351
434
|
if (state.preserveResponseCachePolicy) return response;
|
|
352
435
|
const admission = state.admission;
|
|
353
|
-
if (state.route?.kind === "app-route") {
|
|
436
|
+
if (state.route?.kind === "app-route" || state.route?.kind === "pages-api") {
|
|
354
437
|
let manifestRoute = null;
|
|
355
|
-
const
|
|
356
|
-
|
|
357
|
-
|
|
438
|
+
const responseOutcome = inferPagesPageCacheability(response, state);
|
|
439
|
+
const representation = admission?.representation ? resolveCacheabilityRepresentation(admission.representation, state.route.kind) : null;
|
|
440
|
+
const hasExplicitRuntimePolicy = state.explicitResponseCachePolicy === true || state.explicitConfigCachePolicy === true || state.route.kind === "pages-api" && responseOutcome.cacheable;
|
|
441
|
+
if (!admission || admission.policy === "deny" || !representation || !admission.requestKey) return responseWithCachePolicy(response, response.body, null);
|
|
442
|
+
if (admission.policy === "manifest" && state.route.kind === "app-route") {
|
|
358
443
|
const manifest = admission.manifest;
|
|
359
444
|
manifestRoute = findCacheabilityManifestRoute(manifest, state.route.kind, state.route.pattern);
|
|
360
445
|
}
|
|
361
|
-
const isManifestAuthorized = manifestRoute !== null && admission.routePathname !== void 0 && cacheabilityManifestRouteState(manifestRoute, admission.routePathname,
|
|
446
|
+
const isManifestAuthorized = manifestRoute !== null && admission.routePathname !== void 0 && cacheabilityManifestRouteState(manifestRoute, admission.routePathname, representation) !== null;
|
|
362
447
|
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 =
|
|
448
|
+
if (!isManifestAuthorized && !canUseBoundedRuntimeAdmission || response.status >= 500 || state.credentialedRequest || state.forcedDynamicReason || hasStrictFinalResponseVeto(response, state) || cacheabilityVaryRejectionReason(response.headers, state) !== null) return responseWithCachePolicy(response, response.body, null);
|
|
449
|
+
const outcome = responseOutcome;
|
|
365
450
|
if (!outcome.cacheable || !outcome.cacheControl) return responseWithCachePolicy(response, response.body, null);
|
|
366
|
-
if (state.completedResponseBody)
|
|
451
|
+
if (state.completedResponseBody) {
|
|
452
|
+
if (!state.applyCompletedResponsePolicy) return response;
|
|
453
|
+
return responseWithCachePolicy(response, response.body, outcome);
|
|
454
|
+
}
|
|
367
455
|
let captured;
|
|
368
456
|
try {
|
|
369
457
|
captured = await captureCacheabilityAdmissionBody(response.body, state.captureDeadlineAt, CACHEABILITY_ADMISSION_RESPONSE_BODY_LIMIT, state.captureBudget ?? isolateCaptureBudget);
|
|
@@ -374,13 +462,19 @@ async function finalizeWorkerCacheabilityAdmission(response, state) {
|
|
|
374
462
|
return responseWithCachePolicy(response, captured.body, outcome);
|
|
375
463
|
}
|
|
376
464
|
if (!admission || admission.policy === "deny" || !admission.representation || !admission.requestKey || !state.route || response.status >= 500) return responseWithCachePolicy(response, response.body, null);
|
|
377
|
-
|
|
465
|
+
const pageRoute = {
|
|
466
|
+
kind: state.route.kind,
|
|
467
|
+
pattern: state.route.pattern
|
|
468
|
+
};
|
|
469
|
+
const requestRepresentation = admission.representation;
|
|
470
|
+
const representation = resolveCacheabilityRepresentation(requestRepresentation, pageRoute.kind);
|
|
471
|
+
if (!cacheabilityRepresentationMatchesPageRoute(pageRoute.kind, representation)) return responseWithCachePolicy(response, response.body, null);
|
|
378
472
|
let manifestRoute = null;
|
|
379
473
|
let manifestRouteState = null;
|
|
380
474
|
if (admission.policy === "manifest") {
|
|
381
475
|
const manifest = admission.manifest;
|
|
382
|
-
manifestRoute = findCacheabilityManifestRoute(manifest,
|
|
383
|
-
manifestRouteState =
|
|
476
|
+
manifestRoute = findCacheabilityManifestRoute(manifest, pageRoute.kind, pageRoute.pattern);
|
|
477
|
+
manifestRouteState = admission.routePathname ? cacheabilityManifestPageState(manifest, pageRoute, requestRepresentation, admission.routePathname) : null;
|
|
384
478
|
if (!manifestRoute || !manifestRouteState) return responseWithCachePolicy(response, response.body, null);
|
|
385
479
|
}
|
|
386
480
|
if (state.forcedDynamicReason) return responseWithCachePolicy(response, response.body, null);
|
|
@@ -393,7 +487,8 @@ async function finalizeWorkerCacheabilityAdmission(response, state) {
|
|
|
393
487
|
return cacheabilityEvaluationFailureResponse(state.route.pattern);
|
|
394
488
|
}
|
|
395
489
|
if (captured.kind === "fallback") return responseWithCachePolicy(response, captured.body, null);
|
|
396
|
-
const
|
|
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(() => {});
|
|
@@ -401,7 +496,10 @@ async function finalizeWorkerCacheabilityAdmission(response, state) {
|
|
|
401
496
|
}
|
|
402
497
|
return responseWithCachePolicy(response, captured.body, null);
|
|
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);
|
|
502
|
+
return responseWithCachePolicy(response, representation === "html" && state.clientTraceMetadataMarker ? await stripSharedHtmlClientTraceMetadata(captured.body, state.clientTraceMetadataMarker) : captured.body, outcome);
|
|
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 };
|