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
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
import { getOrCreateAls } from "../shims/internal/als-registry.js";
|
|
2
|
+
import { isFullyBufferedBody, markFullyBufferedBody, preserveFullyBufferedBodyMetadata } from "./fully-buffered-response.js";
|
|
3
|
+
import { VINEXT_TRACE_BUFFERED_BODY_HEADER, VINEXT_TRACE_ERROR_HEADER, VINEXT_TRACE_ROUTE_HEADER } from "./headers.js";
|
|
4
|
+
import { frameworkTracer } from "./tracer.js";
|
|
5
|
+
import { deferUntilStreamConsumed } from "./defer-until-stream-consumed.js";
|
|
6
|
+
import { getResponseStartCompletion } from "./response-start-tracing.js";
|
|
7
|
+
//#region src/server/request-tracing.ts
|
|
8
|
+
const activeRequestTrace = getOrCreateAls("vinext.requestTracing.als");
|
|
9
|
+
function setFrameworkRequestRoute(route, isRsc) {
|
|
10
|
+
activeRequestTrace.getStore()?.setRoute(route, isRsc);
|
|
11
|
+
}
|
|
12
|
+
function updateResponseHeader(response, name, value) {
|
|
13
|
+
try {
|
|
14
|
+
if (value === void 0) response.headers.delete(name);
|
|
15
|
+
else response.headers.set(name, value);
|
|
16
|
+
return response;
|
|
17
|
+
} catch {}
|
|
18
|
+
const rebuilt = preserveFullyBufferedBodyMetadata(response, new Response(response.body, response));
|
|
19
|
+
if (value === void 0) rebuilt.headers.delete(name);
|
|
20
|
+
else rebuilt.headers.set(name, value);
|
|
21
|
+
return rebuilt;
|
|
22
|
+
}
|
|
23
|
+
async function captureFrameworkRequestRoute(callback, onRoute) {
|
|
24
|
+
let route;
|
|
25
|
+
return {
|
|
26
|
+
result: await activeRequestTrace.run({
|
|
27
|
+
recordError() {},
|
|
28
|
+
setRoute(nextRoute) {
|
|
29
|
+
if (route === void 0 && nextRoute !== void 0) {
|
|
30
|
+
route = nextRoute;
|
|
31
|
+
onRoute?.(nextRoute);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}, callback),
|
|
35
|
+
route
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
function attachFrameworkRequestRoute(response, route) {
|
|
39
|
+
return updateResponseHeader(updateResponseHeader(response, VINEXT_TRACE_BUFFERED_BODY_HEADER, isFullyBufferedBody(response) ? "1" : void 0), VINEXT_TRACE_ROUTE_HEADER, route ? encodeURIComponent(route) : void 0);
|
|
40
|
+
}
|
|
41
|
+
function clearFrameworkRequestError(response) {
|
|
42
|
+
return updateResponseHeader(response, VINEXT_TRACE_ERROR_HEADER, void 0);
|
|
43
|
+
}
|
|
44
|
+
function attachFrameworkRequestError(response, error) {
|
|
45
|
+
const descriptor = error instanceof Error ? {
|
|
46
|
+
message: error.message.slice(0, 2048),
|
|
47
|
+
name: error.name.slice(0, 128)
|
|
48
|
+
} : {
|
|
49
|
+
message: String(error).slice(0, 2048),
|
|
50
|
+
name: typeof error
|
|
51
|
+
};
|
|
52
|
+
return updateResponseHeader(response, VINEXT_TRACE_ERROR_HEADER, encodeURIComponent(JSON.stringify(descriptor)));
|
|
53
|
+
}
|
|
54
|
+
function consumeFrameworkRequestRoute(response) {
|
|
55
|
+
const fullyBuffered = response.headers.get(VINEXT_TRACE_BUFFERED_BODY_HEADER) === "1";
|
|
56
|
+
const encodedRoute = response.headers.get(VINEXT_TRACE_ROUTE_HEADER);
|
|
57
|
+
if (encodedRoute !== null) try {
|
|
58
|
+
const route = decodeURIComponent(encodedRoute);
|
|
59
|
+
if (route.startsWith("/")) setFrameworkRequestRoute(route);
|
|
60
|
+
} catch {}
|
|
61
|
+
const encodedError = response.headers.get(VINEXT_TRACE_ERROR_HEADER);
|
|
62
|
+
if (encodedError !== null) try {
|
|
63
|
+
const descriptor = JSON.parse(decodeURIComponent(encodedError));
|
|
64
|
+
if (typeof descriptor.message === "string" && typeof descriptor.name === "string") {
|
|
65
|
+
const error = new Error(descriptor.message);
|
|
66
|
+
error.name = descriptor.name;
|
|
67
|
+
activeRequestTrace.getStore()?.recordError(error);
|
|
68
|
+
}
|
|
69
|
+
} catch {}
|
|
70
|
+
const cleaned = updateResponseHeader(updateResponseHeader(updateResponseHeader(response, VINEXT_TRACE_BUFFERED_BODY_HEADER, void 0), VINEXT_TRACE_ROUTE_HEADER, void 0), VINEXT_TRACE_ERROR_HEADER, void 0);
|
|
71
|
+
return fullyBuffered ? markFullyBufferedBody(cleaned) : cleaned;
|
|
72
|
+
}
|
|
73
|
+
function traceFrameworkRequest(input) {
|
|
74
|
+
if (activeRequestTrace.getStore() && !input.detached) return input.callback();
|
|
75
|
+
const method = input.method.toUpperCase();
|
|
76
|
+
const trace = () => frameworkTracer.withPropagatedContext(input.headers, () => {
|
|
77
|
+
const parentSpan = frameworkTracer.getActiveScopeSpan();
|
|
78
|
+
let resolveResult;
|
|
79
|
+
let rejectResult;
|
|
80
|
+
const resultPromise = new Promise((resolve, reject) => {
|
|
81
|
+
resolveResult = resolve;
|
|
82
|
+
rejectResult = reject;
|
|
83
|
+
});
|
|
84
|
+
frameworkTracer.trace({
|
|
85
|
+
attributes: {
|
|
86
|
+
"http.method": method,
|
|
87
|
+
"http.target": input.target
|
|
88
|
+
},
|
|
89
|
+
kind: "server",
|
|
90
|
+
name: method,
|
|
91
|
+
type: "BaseServer.handleRequest"
|
|
92
|
+
}, async (span) => {
|
|
93
|
+
let carriedError;
|
|
94
|
+
let route;
|
|
95
|
+
let isRsc = input.isRsc ?? false;
|
|
96
|
+
let result;
|
|
97
|
+
let spanFinalized = false;
|
|
98
|
+
const finalizeSpan = () => {
|
|
99
|
+
if (spanFinalized) return;
|
|
100
|
+
spanFinalized = true;
|
|
101
|
+
finalizeFrameworkRequestSpan({
|
|
102
|
+
carriedError,
|
|
103
|
+
input,
|
|
104
|
+
isRsc,
|
|
105
|
+
method,
|
|
106
|
+
parentSpan,
|
|
107
|
+
result,
|
|
108
|
+
route,
|
|
109
|
+
span
|
|
110
|
+
});
|
|
111
|
+
};
|
|
112
|
+
try {
|
|
113
|
+
result = await activeRequestTrace.run({
|
|
114
|
+
recordError(error) {
|
|
115
|
+
carriedError = error;
|
|
116
|
+
},
|
|
117
|
+
setRoute(nextRoute, nextIsRsc) {
|
|
118
|
+
if (route === void 0 && nextRoute !== void 0) route = nextRoute;
|
|
119
|
+
if (nextIsRsc !== void 0) isRsc = nextIsRsc;
|
|
120
|
+
}
|
|
121
|
+
}, input.callback);
|
|
122
|
+
finalizeSpan();
|
|
123
|
+
if (result instanceof Response && result.body && !result.body.locked && !isFullyBufferedBody(result)) {
|
|
124
|
+
let finishBody;
|
|
125
|
+
let failBody;
|
|
126
|
+
const bodyCompletion = new Promise((resolve, reject) => {
|
|
127
|
+
finishBody = resolve;
|
|
128
|
+
failBody = reject;
|
|
129
|
+
});
|
|
130
|
+
result = wrapResponseBody(result, finishBody, failBody);
|
|
131
|
+
resolveResult(result);
|
|
132
|
+
await bodyCompletion;
|
|
133
|
+
return result;
|
|
134
|
+
}
|
|
135
|
+
resolveResult(result);
|
|
136
|
+
if (result instanceof Response) await getResponseStartCompletion(result);
|
|
137
|
+
return result;
|
|
138
|
+
} catch (error) {
|
|
139
|
+
finalizeSpan();
|
|
140
|
+
rejectResult(error);
|
|
141
|
+
throw error;
|
|
142
|
+
}
|
|
143
|
+
}).catch(() => {});
|
|
144
|
+
return resultPromise;
|
|
145
|
+
});
|
|
146
|
+
return input.detached ? frameworkTracer.runWithDetachedContext(trace) : trace();
|
|
147
|
+
}
|
|
148
|
+
function finalizeFrameworkRequestSpan(options) {
|
|
149
|
+
const { carriedError, input, isRsc, method, parentSpan, result, route, span } = options;
|
|
150
|
+
const status = input.getStatus(result);
|
|
151
|
+
span.setAttributes({
|
|
152
|
+
"http.status_code": status,
|
|
153
|
+
"next.rsc": isRsc
|
|
154
|
+
});
|
|
155
|
+
if (status !== void 0 && status >= 500) {
|
|
156
|
+
span.setErrorStatus();
|
|
157
|
+
span.setAttribute("error.type", String(status));
|
|
158
|
+
}
|
|
159
|
+
if (carriedError) {
|
|
160
|
+
span.recordException(carriedError);
|
|
161
|
+
if (status === void 0 || status < 500) {
|
|
162
|
+
span.setAttribute("error.type", carriedError.name);
|
|
163
|
+
span.setErrorStatus(carriedError.message);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
const name = route ? `${isRsc ? "RSC " : ""}${method} ${route}` : `${isRsc ? "RSC " : ""}${method}`;
|
|
167
|
+
if (route) {
|
|
168
|
+
span.setAttributes({
|
|
169
|
+
"http.route": route,
|
|
170
|
+
"next.route": route
|
|
171
|
+
});
|
|
172
|
+
parentSpan?.setAttribute("http.route", route);
|
|
173
|
+
}
|
|
174
|
+
span.updateName(name);
|
|
175
|
+
}
|
|
176
|
+
function wrapResponseBody(response, onConsumed, onError) {
|
|
177
|
+
return new Response(deferUntilStreamConsumed(response.body, onConsumed, onError), response);
|
|
178
|
+
}
|
|
179
|
+
//#endregion
|
|
180
|
+
export { attachFrameworkRequestError, attachFrameworkRequestRoute, captureFrameworkRequestRoute, clearFrameworkRequestError, consumeFrameworkRequestRoute, setFrameworkRequestRoute, traceFrameworkRequest };
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { CacheabilityRepresentation } from "./cacheability-manifest.js";
|
|
2
|
+
import { VinextResponseStageDispatchOptions } from "./multi-stage.js";
|
|
3
|
+
import { ExecutionContextLike } from "../shims/request-context.js";
|
|
4
|
+
import { WorkerCacheabilityProbeMode } from "./cacheability-request.js";
|
|
5
|
+
//#region src/server/response-stage-cacheability.d.ts
|
|
6
|
+
export type ResponseStageCacheabilityOptions = {
|
|
7
|
+
buildId: string | null | undefined;
|
|
8
|
+
cache: VinextResponseStageDispatchOptions["cache"];
|
|
9
|
+
context: ExecutionContextLike;
|
|
10
|
+
forceDynamic?: boolean;
|
|
11
|
+
probeMode?: WorkerCacheabilityProbeMode | null;
|
|
12
|
+
policyHeaders?: ReadonlyArray<readonly [string, string]> | null;
|
|
13
|
+
/** The renderer receives policy before user Pages code and applies it itself. */
|
|
14
|
+
policyHeadersAppliedBeforeRender?: boolean;
|
|
15
|
+
rawManifest: string | null | undefined;
|
|
16
|
+
/** The trusted route target after request-stage rewrites. */
|
|
17
|
+
resolvedRoutePathname?: string;
|
|
18
|
+
/** Trusted representation retained when request-stage normalization changes the URL shape. */
|
|
19
|
+
representation?: CacheabilityRepresentation;
|
|
20
|
+
/**
|
|
21
|
+
* The request stage recomposes `X-Vinext-Params` and
|
|
22
|
+
* `X-Vinext-Rendered-Path-And-Search` per request (App page RSC), so a
|
|
23
|
+
* shared response drops them before admission and storage.
|
|
24
|
+
*/
|
|
25
|
+
recomposesRequestScopedHeaders?: boolean;
|
|
26
|
+
/** Generated adapter registration, deferred until the response stage executes. */
|
|
27
|
+
registerCacheAdapters(): void;
|
|
28
|
+
request: Request;
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* Run a response-stage render behind completed-response cache admission.
|
|
32
|
+
*
|
|
33
|
+
* Adapter registration and cacheability state live here so a shared transport
|
|
34
|
+
* hit can avoid loading the response stage and its application graph entirely.
|
|
35
|
+
*/
|
|
36
|
+
export declare function withResponseStageCacheability(options: ResponseStageCacheabilityOptions, render: (context: ExecutionContextLike) => Promise<Response>): Promise<Response>;
|
|
37
|
+
//#endregion
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { preserveFullyBufferedBodyMetadata } from "./fully-buffered-response.js";
|
|
2
|
+
import { VINEXT_PARAMS_HEADER, VINEXT_RENDERED_PATH_AND_SEARCH_HEADER } from "./headers.js";
|
|
3
|
+
import { getCdnCacheAdapter } from "../shims/cdn-cache.js";
|
|
4
|
+
import { CACHEABILITY_REQUEST_STATE } from "../shims/cacheability-classification.js";
|
|
5
|
+
//#region src/server/response-stage-cacheability.ts
|
|
6
|
+
/**
|
|
7
|
+
* Run a response-stage render behind completed-response cache admission.
|
|
8
|
+
*
|
|
9
|
+
* Adapter registration and cacheability state live here so a shared transport
|
|
10
|
+
* hit can avoid loading the response stage and its application graph entirely.
|
|
11
|
+
*/
|
|
12
|
+
async function withResponseStageCacheability(options, render) {
|
|
13
|
+
options.registerCacheAdapters();
|
|
14
|
+
const adapter = getCdnCacheAdapter();
|
|
15
|
+
let context = options.context;
|
|
16
|
+
let cacheability;
|
|
17
|
+
if (options.probeMode) {
|
|
18
|
+
cacheability = await import("./cacheability-request.js");
|
|
19
|
+
context = cacheability.createWorkerCacheabilityProbeContext(context, options.probeMode, adapter.responseVary, options.resolvedRoutePathname);
|
|
20
|
+
} else if (options.cache === "shared" && (options.rawManifest != null || adapter.requiresCompletedResponseAdmission === true)) {
|
|
21
|
+
cacheability = await import("./cacheability-request.js");
|
|
22
|
+
context = cacheability.createWorkerCacheabilityAdmissionContext(context, options.request, options.rawManifest, options.buildId, adapter.requiresCompletedResponseAdmission === true, adapter.responseVary, options.resolvedRoutePathname, options.representation, { applyCompletedResponsePolicy: true });
|
|
23
|
+
}
|
|
24
|
+
const stripsRequestScopedHeaders = options.recomposesRequestScopedHeaders === true && options.cache === "shared" && !options.probeMode;
|
|
25
|
+
if (!cacheability) {
|
|
26
|
+
const rendered = await render(context);
|
|
27
|
+
return stripsRequestScopedHeaders ? withoutRequestScopedHeaders(rendered) : rendered;
|
|
28
|
+
}
|
|
29
|
+
if (options.policyHeadersAppliedBeforeRender) cacheability.recordResponseStageCachePolicy(context, options.policyHeaders);
|
|
30
|
+
const state = Reflect.get(context, CACHEABILITY_REQUEST_STATE);
|
|
31
|
+
if (options.probeMode && options.forceDynamic && !options.policyHeaders?.length && state) state.patternDynamicReason = "dynamic = \"force-dynamic\"";
|
|
32
|
+
const renderedResponse = await render(context);
|
|
33
|
+
const rendered = stripsRequestScopedHeaders ? withoutRequestScopedHeaders(renderedResponse) : renderedResponse;
|
|
34
|
+
const response = options.policyHeadersAppliedBeforeRender ? rendered : cacheability.applyResponseStageCachePolicy(rendered, context, options.policyHeaders);
|
|
35
|
+
const complete = (candidate) => cacheability.finalizeWorkerCacheabilityResponse(candidate, context);
|
|
36
|
+
const route = state?.route;
|
|
37
|
+
if (!options.probeMode && state?.admission?.policy !== "manifest" && (route?.kind === "app-page" || route?.kind === "pages-page")) {
|
|
38
|
+
const deferred = adapter.deferCompletedPageResponseAdmission?.(response, complete);
|
|
39
|
+
if (deferred) return deferred;
|
|
40
|
+
}
|
|
41
|
+
return complete(response);
|
|
42
|
+
}
|
|
43
|
+
function withoutRequestScopedHeaders(response) {
|
|
44
|
+
if (!response.headers.has("X-Vinext-Params") && !response.headers.has("X-Vinext-Rendered-Path-And-Search")) return response;
|
|
45
|
+
const headers = new Headers(response.headers);
|
|
46
|
+
headers.delete(VINEXT_PARAMS_HEADER);
|
|
47
|
+
headers.delete(VINEXT_RENDERED_PATH_AND_SEARCH_HEADER);
|
|
48
|
+
return preserveFullyBufferedBodyMetadata(response, new Response(response.body, {
|
|
49
|
+
headers,
|
|
50
|
+
status: response.status,
|
|
51
|
+
statusText: response.statusText
|
|
52
|
+
}));
|
|
53
|
+
}
|
|
54
|
+
//#endregion
|
|
55
|
+
export { withResponseStageCacheability };
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { PagesResponseStagePolicyOwner } from "./worker-stages.js";
|
|
2
|
+
//#region src/server/response-stage-policy.d.ts
|
|
3
|
+
/** Apply request-stage cache policy before response-stage admission. */
|
|
4
|
+
export declare function applyResponseStagePolicyHeaders(headers: Headers, policyHeaders: ReadonlyArray<readonly [string, string]> | null | undefined): void;
|
|
5
|
+
/**
|
|
6
|
+
* Remove the copy of staged cookies that a response handler inherited before
|
|
7
|
+
* it ran. The request stage composes those cookies again after transport, so
|
|
8
|
+
* retaining the inherited copies would emit them twice. Multiset subtraction
|
|
9
|
+
* preserves additional identical cookies deliberately appended by user code.
|
|
10
|
+
*/
|
|
11
|
+
export declare function stripInheritedResponseStageCookies(response: Response, stagedHeaders: Headers): Response;
|
|
12
|
+
/** Replace transported Vary fields with the effective request-stage value. */
|
|
13
|
+
export declare function withResponseStageVary(policyHeaders: ReadonlyArray<readonly [string, string]> | null | undefined, vary: string | null | undefined): Array<[string, string]> | null;
|
|
14
|
+
/** Keep request-stage-only variance outside a reusable response artifact. */
|
|
15
|
+
export declare function withoutResponseStageVary(policyHeaders: ReadonlyArray<readonly [string, string]> | null | undefined): Array<[string, string]> | null;
|
|
16
|
+
/** Recompose additive request-stage headers before the rendered response values. */
|
|
17
|
+
export declare function prependResponseStageAdditiveHeaders(responseHeaders: Headers, outerHeaders: Headers): void;
|
|
18
|
+
/** Consume trusted Pages response-stage policy ownership before public egress. */
|
|
19
|
+
export declare function consumePagesResponseStagePolicyOwner(response: Response): {
|
|
20
|
+
owner: PagesResponseStagePolicyOwner | null;
|
|
21
|
+
response: Response;
|
|
22
|
+
};
|
|
23
|
+
//#endregion
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { preserveFullyBufferedBodyMetadata } from "./fully-buffered-response.js";
|
|
2
|
+
import "../shims/unified-request-context.js";
|
|
3
|
+
import { mergeVaryHeader } from "./middleware-response-headers.js";
|
|
4
|
+
import { PAGES_RESPONSE_STAGE_POLICY_OWNER_HEADER } from "./worker-stages.js";
|
|
5
|
+
//#region src/server/response-stage-policy.ts
|
|
6
|
+
/** Apply request-stage cache policy before response-stage admission. */
|
|
7
|
+
function applyResponseStagePolicyHeaders(headers, policyHeaders) {
|
|
8
|
+
for (const [name, value] of policyHeaders ?? []) if (name.toLowerCase() === "vary") mergeVaryHeader(headers, value);
|
|
9
|
+
else headers.set(name, value);
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Remove the copy of staged cookies that a response handler inherited before
|
|
13
|
+
* it ran. The request stage composes those cookies again after transport, so
|
|
14
|
+
* retaining the inherited copies would emit them twice. Multiset subtraction
|
|
15
|
+
* preserves additional identical cookies deliberately appended by user code.
|
|
16
|
+
*/
|
|
17
|
+
function stripInheritedResponseStageCookies(response, stagedHeaders) {
|
|
18
|
+
const stagedCookies = stagedHeaders.getSetCookie();
|
|
19
|
+
if (stagedCookies.length === 0) return response;
|
|
20
|
+
const responseCookies = response.headers.getSetCookie();
|
|
21
|
+
let removed = false;
|
|
22
|
+
for (const stagedCookie of stagedCookies) {
|
|
23
|
+
const index = responseCookies.indexOf(stagedCookie);
|
|
24
|
+
if (index === -1) continue;
|
|
25
|
+
responseCookies.splice(index, 1);
|
|
26
|
+
removed = true;
|
|
27
|
+
}
|
|
28
|
+
if (!removed) return response;
|
|
29
|
+
const headers = new Headers(response.headers);
|
|
30
|
+
headers.delete("Set-Cookie");
|
|
31
|
+
for (const cookie of responseCookies) headers.append("Set-Cookie", cookie);
|
|
32
|
+
return preserveFullyBufferedBodyMetadata(response, new Response(response.body, {
|
|
33
|
+
headers,
|
|
34
|
+
status: response.status,
|
|
35
|
+
statusText: response.statusText
|
|
36
|
+
}));
|
|
37
|
+
}
|
|
38
|
+
/** Replace transported Vary fields with the effective request-stage value. */
|
|
39
|
+
function withResponseStageVary(policyHeaders, vary) {
|
|
40
|
+
const result = [];
|
|
41
|
+
const varyHeaders = new Headers();
|
|
42
|
+
for (const [name, value] of policyHeaders ?? []) if (name.toLowerCase() === "vary") mergeVaryHeader(varyHeaders, value);
|
|
43
|
+
else result.push([name, value]);
|
|
44
|
+
if (vary) mergeVaryHeader(varyHeaders, vary);
|
|
45
|
+
const effectiveVary = varyHeaders.get("Vary");
|
|
46
|
+
if (effectiveVary) result.push(["Vary", effectiveVary]);
|
|
47
|
+
return result.length > 0 ? result : null;
|
|
48
|
+
}
|
|
49
|
+
/** Keep request-stage-only variance outside a reusable response artifact. */
|
|
50
|
+
function withoutResponseStageVary(policyHeaders) {
|
|
51
|
+
const result = (policyHeaders ?? []).filter(([name]) => name.toLowerCase() !== "vary");
|
|
52
|
+
return result.length > 0 ? result.map(([name, value]) => [name, value]) : null;
|
|
53
|
+
}
|
|
54
|
+
/** Recompose additive request-stage headers before the rendered response values. */
|
|
55
|
+
function prependResponseStageAdditiveHeaders(responseHeaders, outerHeaders) {
|
|
56
|
+
const outerLink = outerHeaders.get("link");
|
|
57
|
+
if (outerLink) {
|
|
58
|
+
const responseLink = responseHeaders.get("link");
|
|
59
|
+
responseHeaders.set("link", responseLink ? `${outerLink}, ${responseLink}` : outerLink);
|
|
60
|
+
}
|
|
61
|
+
const outerVary = outerHeaders.get("vary");
|
|
62
|
+
if (outerVary) {
|
|
63
|
+
const responseVary = responseHeaders.get("vary");
|
|
64
|
+
responseHeaders.delete("vary");
|
|
65
|
+
mergeVaryHeader(responseHeaders, outerVary);
|
|
66
|
+
if (responseVary) mergeVaryHeader(responseHeaders, responseVary);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
/** Consume trusted Pages response-stage policy ownership before public egress. */
|
|
70
|
+
function consumePagesResponseStagePolicyOwner(response) {
|
|
71
|
+
const value = response.headers.get(PAGES_RESPONSE_STAGE_POLICY_OWNER_HEADER);
|
|
72
|
+
const owner = value === "request-time" || value === "static" ? value : null;
|
|
73
|
+
if (value === null) return {
|
|
74
|
+
owner,
|
|
75
|
+
response
|
|
76
|
+
};
|
|
77
|
+
const headers = new Headers(response.headers);
|
|
78
|
+
headers.delete(PAGES_RESPONSE_STAGE_POLICY_OWNER_HEADER);
|
|
79
|
+
return {
|
|
80
|
+
owner,
|
|
81
|
+
response: preserveFullyBufferedBodyMetadata(response, new Response(response.body, {
|
|
82
|
+
headers,
|
|
83
|
+
status: response.status,
|
|
84
|
+
statusText: response.statusText
|
|
85
|
+
}))
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
//#endregion
|
|
89
|
+
export { applyResponseStagePolicyHeaders, consumePagesResponseStagePolicyOwner, prependResponseStageAdditiveHeaders, stripInheritedResponseStageCookies, withResponseStageVary, withoutResponseStageVary };
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { VinextResponseStageModule } from "./multi-stage.js";
|
|
2
|
+
//#region src/server/response-stage.d.ts
|
|
3
|
+
/** Lazily load the router-specific response stage selected by vinext. */
|
|
4
|
+
export declare function loadVinextResponseStage<Env = unknown, Context = unknown>(): Promise<VinextResponseStageModule<Env, Context>>;
|
|
5
|
+
//#endregion
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
//#region src/server/response-start-tracing.d.ts
|
|
2
|
+
export declare function getResponseStartCompletion(response: Response): Promise<void> | undefined;
|
|
3
|
+
export declare function createResponseStartSpanDescriptor(): {
|
|
4
|
+
readonly name: "start response";
|
|
5
|
+
readonly type: "NextNodeServer.startResponse";
|
|
6
|
+
};
|
|
7
|
+
export declare function traceResponseStartWithCompletion(response: Response): {
|
|
8
|
+
response: Response;
|
|
9
|
+
started: Promise<void>;
|
|
10
|
+
};
|
|
11
|
+
export declare function traceResponseStart(response: Response): Response;
|
|
12
|
+
/** Trace a response replayed by a cache above the framework renderer. */
|
|
13
|
+
export declare function traceCachedResponseStart(response: Response, cacheStatus: string | null, responseStageProps: unknown): Response;
|
|
14
|
+
//#endregion
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { preserveFullyBufferedBodyMetadata } from "./fully-buffered-response.js";
|
|
2
|
+
import { frameworkTracer } from "./tracer.js";
|
|
3
|
+
import { copyLinkHeaderProvenance } from "./app-response-header-provenance.js";
|
|
4
|
+
//#region src/server/response-start-tracing.ts
|
|
5
|
+
const tracedResponses = /* @__PURE__ */ new WeakMap();
|
|
6
|
+
function getResponseStartCompletion(response) {
|
|
7
|
+
return tracedResponses.get(response);
|
|
8
|
+
}
|
|
9
|
+
function createResponseStartSpanDescriptor() {
|
|
10
|
+
return {
|
|
11
|
+
name: "start response",
|
|
12
|
+
type: "NextNodeServer.startResponse"
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
function traceResponseStartStream(stream, onSettled) {
|
|
16
|
+
const reader = stream.getReader();
|
|
17
|
+
const runInTraceContext = frameworkTracer.captureActiveContext();
|
|
18
|
+
let started = false;
|
|
19
|
+
return new ReadableStream({
|
|
20
|
+
async pull(controller) {
|
|
21
|
+
try {
|
|
22
|
+
const result = await reader.read();
|
|
23
|
+
if (result.done) {
|
|
24
|
+
onSettled();
|
|
25
|
+
controller.close();
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
if (!started) {
|
|
29
|
+
started = true;
|
|
30
|
+
runInTraceContext(() => frameworkTracer.trace(createResponseStartSpanDescriptor(), () => void 0));
|
|
31
|
+
onSettled();
|
|
32
|
+
}
|
|
33
|
+
controller.enqueue(result.value);
|
|
34
|
+
} catch (error) {
|
|
35
|
+
onSettled();
|
|
36
|
+
controller.error(error);
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
async cancel(reason) {
|
|
40
|
+
try {
|
|
41
|
+
await reader.cancel(reason);
|
|
42
|
+
} finally {
|
|
43
|
+
onSettled();
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}, { highWaterMark: 0 });
|
|
47
|
+
}
|
|
48
|
+
function traceResponseStartWithCompletion(response) {
|
|
49
|
+
const existing = tracedResponses.get(response);
|
|
50
|
+
if (existing) return {
|
|
51
|
+
response,
|
|
52
|
+
started: existing
|
|
53
|
+
};
|
|
54
|
+
if (!response.body) return {
|
|
55
|
+
response,
|
|
56
|
+
started: Promise.resolve()
|
|
57
|
+
};
|
|
58
|
+
let onSettled;
|
|
59
|
+
const started = new Promise((resolve) => {
|
|
60
|
+
onSettled = resolve;
|
|
61
|
+
});
|
|
62
|
+
const traced = preserveFullyBufferedBodyMetadata(response, new Response(traceResponseStartStream(response.body, onSettled), response));
|
|
63
|
+
copyLinkHeaderProvenance(response.headers, traced.headers);
|
|
64
|
+
tracedResponses.set(traced, started);
|
|
65
|
+
return {
|
|
66
|
+
response: traced,
|
|
67
|
+
started
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
function traceResponseStart(response) {
|
|
71
|
+
return traceResponseStartWithCompletion(response).response;
|
|
72
|
+
}
|
|
73
|
+
/** Trace a response replayed by a cache above the framework renderer. */
|
|
74
|
+
function traceCachedResponseStart(response, cacheStatus, responseStageProps) {
|
|
75
|
+
const props = responseStageProps && typeof responseStageProps === "object" ? responseStageProps : null;
|
|
76
|
+
const kind = props ? Reflect.get(props, "kind") : void 0;
|
|
77
|
+
return (kind === "app-route-handler" || kind === "app-page" && props !== null && Reflect.get(props, "isRscRequest") === false) && (cacheStatus === "HIT" || cacheStatus === "STALE" || cacheStatus === "REVALIDATED" || cacheStatus === "UPDATING") ? traceResponseStart(response) : response;
|
|
78
|
+
}
|
|
79
|
+
//#endregion
|
|
80
|
+
export { createResponseStartSpanDescriptor, getResponseStartCompletion, traceCachedResponseStart, traceResponseStart, traceResponseStartWithCompletion };
|
|
@@ -5,6 +5,5 @@ import { NextI18nConfig } from "../config/next-config.js";
|
|
|
5
5
|
* loopback. The side channel is accepted only as part of the authenticated
|
|
6
6
|
* revalidation protocol and only for an exact configured i18n domain.
|
|
7
7
|
*/
|
|
8
|
-
declare function readTrustedRevalidationHostname(headers: Headers, i18nConfig: NextI18nConfig | null | undefined, authorizeRevalidation?: (headerValue: string | null) => boolean): string | null;
|
|
9
|
-
//#endregion
|
|
10
|
-
export { readTrustedRevalidationHostname };
|
|
8
|
+
export declare function readTrustedRevalidationHostname(headers: Headers, i18nConfig: NextI18nConfig | null | undefined, authorizeRevalidation?: (headerValue: string | null) => boolean): string | null;
|
|
9
|
+
//#endregion
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { VINEXT_REVALIDATE_HOST_HEADER } from "../utils/protocol-headers.js";
|
|
2
2
|
import "./headers.js";
|
|
3
3
|
import { normalizeDomainHostname } from "../utils/domain-locale.js";
|
|
4
|
-
import { isOnDemandRevalidateRequest } from "./
|
|
4
|
+
import { isOnDemandRevalidateRequest } from "./revalidation-request.js";
|
|
5
5
|
//#region src/server/revalidation-host.ts
|
|
6
6
|
/**
|
|
7
7
|
* Read the logical request hostname carried by a server-pinned revalidation
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { PRERENDER_REVALIDATE_HEADER } from "../utils/protocol-headers.js";
|
|
2
|
+
//#region src/server/revalidation-request.d.ts
|
|
3
|
+
export declare function getRevalidateSecret(): string;
|
|
4
|
+
export declare function isRevalidateSecret(value: string | null | undefined): boolean;
|
|
5
|
+
/** Match Next.js: the header value must equal the preview/revalidation secret. */
|
|
6
|
+
export declare function isOnDemandRevalidateRequest(headerValue: string | string[] | null | undefined): boolean;
|
|
7
|
+
//#endregion
|
|
8
|
+
export { PRERENDER_REVALIDATE_HEADER };
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { PRERENDER_REVALIDATE_HEADER } from "../utils/protocol-headers.js";
|
|
2
|
+
//#region src/server/revalidation-request.ts
|
|
3
|
+
/**
|
|
4
|
+
* Request-only on-demand revalidation authentication.
|
|
5
|
+
*
|
|
6
|
+
* Keep this module independent from ISR storage and renderer code so a routing
|
|
7
|
+
* stage can authorize a reverse revalidation call without evaluating React.
|
|
8
|
+
*/
|
|
9
|
+
const DEV_REVALIDATE_SECRET_KEY = Symbol.for("vinext.isrCache.devRevalidateSecret");
|
|
10
|
+
function getRevalidateSecret() {
|
|
11
|
+
const baked = process.env.__VINEXT_REVALIDATE_SECRET;
|
|
12
|
+
if (baked) return baked;
|
|
13
|
+
const globals = globalThis;
|
|
14
|
+
const existing = globals[DEV_REVALIDATE_SECRET_KEY];
|
|
15
|
+
if (typeof existing === "string") return existing;
|
|
16
|
+
const bytes = /* @__PURE__ */ new Uint8Array(32);
|
|
17
|
+
crypto.getRandomValues(bytes);
|
|
18
|
+
const secret = Array.from(bytes, (byte) => byte.toString(16).padStart(2, "0")).join("");
|
|
19
|
+
globals[DEV_REVALIDATE_SECRET_KEY] = secret;
|
|
20
|
+
return secret;
|
|
21
|
+
}
|
|
22
|
+
function safeEqual(first, second) {
|
|
23
|
+
if (first.length !== second.length) return false;
|
|
24
|
+
let mismatch = 0;
|
|
25
|
+
for (let index = 0; index < first.length; index++) mismatch |= first.charCodeAt(index) ^ second.charCodeAt(index);
|
|
26
|
+
return mismatch === 0;
|
|
27
|
+
}
|
|
28
|
+
function isRevalidateSecret(value) {
|
|
29
|
+
if (typeof value !== "string" || value.length === 0) return false;
|
|
30
|
+
return safeEqual(value, getRevalidateSecret());
|
|
31
|
+
}
|
|
32
|
+
/** Match Next.js: the header value must equal the preview/revalidation secret. */
|
|
33
|
+
function isOnDemandRevalidateRequest(headerValue) {
|
|
34
|
+
return typeof headerValue === "string" && isRevalidateSecret(headerValue);
|
|
35
|
+
}
|
|
36
|
+
//#endregion
|
|
37
|
+
export { PRERENDER_REVALIDATE_HEADER, getRevalidateSecret, isOnDemandRevalidateRequest, isRevalidateSecret };
|
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
//#region src/server/rsc-completion-metadata.d.ts
|
|
2
|
-
type RscCompletionMetadata = Readonly<{
|
|
2
|
+
export type RscCompletionMetadata = Readonly<{
|
|
3
3
|
dynamicStaleTimeSeconds: number;
|
|
4
4
|
serverStaleTimeSeconds?: number | null;
|
|
5
5
|
}>;
|
|
6
|
-
declare function extractRscCompletionMetadata(buffer: ArrayBuffer): {
|
|
6
|
+
export declare function extractRscCompletionMetadata(buffer: ArrayBuffer): {
|
|
7
7
|
buffer: ArrayBuffer;
|
|
8
8
|
metadata?: RscCompletionMetadata;
|
|
9
9
|
};
|
|
10
|
-
declare function appendRscCompletionMetadata(source: ReadableStream<Uint8Array>, getMetadata: () => RscCompletionMetadata | undefined): ReadableStream<Uint8Array>;
|
|
11
|
-
declare function stripRscCompletionMetadata(source: ReadableStream<Uint8Array>): ReadableStream<Uint8Array>;
|
|
10
|
+
export declare function appendRscCompletionMetadata(source: ReadableStream<Uint8Array>, getMetadata: () => RscCompletionMetadata | undefined): ReadableStream<Uint8Array>;
|
|
11
|
+
export declare function stripRscCompletionMetadata(source: ReadableStream<Uint8Array>): ReadableStream<Uint8Array>;
|
|
12
12
|
/** Remove vinext's internal completion footer before React reads a Flight response. */
|
|
13
|
-
declare function stripRscCompletionMetadataResponse(response: Response): Response;
|
|
14
|
-
//#endregion
|
|
15
|
-
export { RscCompletionMetadata, appendRscCompletionMetadata, extractRscCompletionMetadata, stripRscCompletionMetadata, stripRscCompletionMetadataResponse };
|
|
13
|
+
export declare function stripRscCompletionMetadataResponse(response: Response): Response;
|
|
14
|
+
//#endregion
|
|
@@ -1,10 +1,21 @@
|
|
|
1
1
|
//#region src/server/rsc-stream-hints.d.ts
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
/**
|
|
3
|
+
* Rewrite stylesheet preload hints in a React Flight stream.
|
|
4
|
+
*
|
|
5
|
+
* The rewrite is byte-length preserving, so this transform keeps React's
|
|
6
|
+
* text chunk boundaries instead of re-emitting one chunk per Flight row. Every
|
|
7
|
+
* downstream consumer (the tee, the SSR Flight client, the inline RSC embed,
|
|
8
|
+
* RSC response wrappers) pays a per-chunk cost, and splitting per row
|
|
9
|
+
* multiplied the chunk count roughly 8x on content-heavy pages. Chunks with
|
|
10
|
+
* no stylesheet hint are forwarded as-is without copying; only rows whose
|
|
11
|
+
* tag is `HL` are decoded and inspected. Length-prefixed bodies remain separate
|
|
12
|
+
* so binary bytes do not force adjacent text through the embed's base64 path.
|
|
13
|
+
*/
|
|
14
|
+
export declare function normalizeReactFlightPreloadHints(stream: ReadableStream<Uint8Array>): ReadableStream<Uint8Array>;
|
|
15
|
+
export type RscRawRenderer = (model: unknown, options?: unknown) => ReadableStream<Uint8Array>;
|
|
16
|
+
export type RscRawPrerenderer = (model: unknown, options?: unknown) => Promise<{
|
|
5
17
|
prelude: ReadableStream<Uint8Array>;
|
|
6
18
|
}>;
|
|
7
|
-
declare function createRscRenderer(render: RscRawRenderer): RscRawRenderer;
|
|
8
|
-
declare function createRscPrerenderer(prerender: RscRawPrerenderer): RscRawPrerenderer;
|
|
9
|
-
//#endregion
|
|
10
|
-
export { RscRawPrerenderer, RscRawRenderer, createRscPrerenderer, createRscRenderer, normalizeReactFlightPreloadHints };
|
|
19
|
+
export declare function createRscRenderer(render: RscRawRenderer): RscRawRenderer;
|
|
20
|
+
export declare function createRscPrerenderer(prerender: RscRawPrerenderer): RscRawPrerenderer;
|
|
21
|
+
//#endregion
|