vinext 1.0.0-beta.8 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +158 -84
- package/THIRD_PARTY_LICENSES.md +25 -0
- package/dist/_virtual/_rolldown/runtime.js +25 -0
- package/dist/build/action-owner-manifest.d.ts +8 -9
- package/dist/build/action-owner-manifest.js +23 -5
- package/dist/build/assets-ignore.d.ts +3 -4
- package/dist/build/clean-output.d.ts +2 -3
- package/dist/build/client-build-config.d.ts +40 -12
- package/dist/build/client-build-config.js +76 -6
- package/dist/build/css-url-assets.d.ts +4 -5
- package/dist/build/css-url-assets.js +5 -2
- package/dist/build/google-fonts/build-url.d.ts +3 -4
- package/dist/build/google-fonts/fallback-metrics.d.ts +3 -4
- package/dist/build/google-fonts/find-font-files-in-css.d.ts +2 -3
- package/dist/build/google-fonts/font-metadata.d.ts +2 -3
- package/dist/build/google-fonts/get-axes.d.ts +2 -3
- package/dist/build/google-fonts/sort-variants.d.ts +2 -3
- package/dist/build/google-fonts/validate.d.ts +2 -3
- package/dist/build/google-fonts/validate.js +8 -4
- package/dist/build/inject-pregenerated-paths.d.ts +2 -3
- package/dist/build/inject-pregenerated-paths.js +16 -14
- package/dist/build/inline-css.d.ts +3 -4
- package/dist/build/layout-classification-types.d.ts +4 -5
- package/dist/build/layout-classification.d.ts +7 -8
- package/dist/build/lifecycle.d.ts +42 -0
- package/dist/build/lifecycle.js +253 -0
- package/dist/build/module-dependency-cache.d.ts +2 -3
- package/dist/build/next-client-runtime-manifests.d.ts +4 -5
- package/dist/build/nitro-route-rules.d.ts +6 -7
- package/dist/build/nitro-route-rules.js +1 -1
- package/dist/build/pages-client-assets-module.d.ts +4 -8
- package/dist/build/pages-client-assets-module.js +1 -13
- package/dist/build/precompress.d.ts +2 -3
- package/dist/build/prerender-cloudflare-loader.d.ts +4 -0
- package/dist/build/prerender-cloudflare-loader.js +49 -0
- package/dist/build/prerender-paths.d.ts +82 -8
- package/dist/build/prerender-paths.js +814 -99
- package/dist/build/prerender-phase.d.ts +2 -3
- package/dist/build/prerender-server-entry.js +11 -3
- package/dist/build/prerender-server-pool.d.ts +9 -6
- package/dist/build/prerender-server-pool.js +8 -5
- package/dist/build/prerender.d.ts +67 -15
- package/dist/build/prerender.js +177 -64
- package/dist/build/preview-credentials.d.ts +5 -6
- package/dist/build/preview-credentials.js +2 -2
- package/dist/build/public-dir-conflict.d.ts +5 -6
- package/dist/build/public-dir-conflict.js +2 -1
- package/dist/build/report.d.ts +38 -19
- package/dist/build/report.js +73 -4
- package/dist/build/route-classification-injector.d.ts +2 -3
- package/dist/build/route-classification-manifest.d.ts +5 -6
- package/dist/build/run-prerender.d.ts +11 -9
- package/dist/build/run-prerender.js +25 -16
- package/dist/build/server-entry.d.ts +4 -0
- package/dist/build/server-entry.js +28 -0
- package/dist/build/server-manifest.d.ts +8 -3
- package/dist/build/server-manifest.js +14 -2
- package/dist/build/ssr-manifest.d.ts +5 -6
- package/dist/build/standalone.d.ts +2 -3
- package/dist/build/standalone.js +2 -2
- package/dist/build/static-export.d.ts +7 -8
- package/dist/cache/cache-adapters-virtual.d.ts +95 -9
- package/dist/cache/cache-adapters-virtual.js +58 -6
- package/dist/check.d.ts +11 -10
- package/dist/check.js +467 -176
- package/dist/cli-args.d.ts +7 -16
- package/dist/cli-args.js +2 -45
- package/dist/cli-dev-config.d.ts +10 -7
- package/dist/cli-dev-config.js +160 -3
- package/dist/cli.js +124 -435
- package/dist/client/app-nav-failure-handler.d.ts +6 -7
- package/dist/client/client-rewrite-matcher.d.ts +2 -3
- package/dist/client/client-rewrites.d.ts +4 -5
- package/dist/client/dev-error-overlay-store.d.ts +13 -14
- package/dist/client/dev-error-overlay.d.ts +15 -15
- package/dist/client/dev-error-overlay.js +8 -5
- package/dist/client/instrumentation-client-inject.d.ts +3 -4
- package/dist/client/instrumentation-client-state.d.ts +5 -6
- package/dist/client/instrumentation-client.d.ts +3 -4
- package/dist/client/navigation-runtime.d.ts +21 -17
- package/dist/client/navigation-runtime.js +2 -1
- package/dist/client/pages-router-link-navigation.d.ts +4 -5
- package/dist/client/react-instance.d.ts +2 -3
- package/dist/client/validate-module-path.d.ts +2 -3
- package/dist/client/vinext-next-data.d.ts +7 -8
- package/dist/client/window-next.d.ts +4 -5
- package/dist/config/config-matchers.d.ts +16 -16
- package/dist/config/config-matchers.js +10 -7
- package/dist/config/dotenv.d.ts +3 -4
- package/dist/config/dotenv.js +2 -1
- package/dist/config/next-config.d.ts +31 -27
- package/dist/config/next-config.js +163 -16
- package/dist/config/prerender.d.ts +20 -16
- package/dist/config/prerender.js +10 -4
- package/dist/config/request-context.d.ts +5 -6
- package/dist/config/server-external-packages.d.ts +14 -3
- package/dist/config/server-external-packages.js +37 -3
- package/dist/config/tsconfig-paths.d.ts +3 -4
- package/dist/deps/.pnpm/ignore@5.3.2/deps/ignore/index.js +189 -0
- package/dist/deps/.pnpm/ua-parser-js@1.0.35/deps/ua-parser-js/src/ua-parser.js +1057 -0
- package/dist/entries/app-browser-entry.d.ts +5 -6
- package/dist/entries/app-browser-entry.js +3 -2
- package/dist/entries/app-rsc-entry.d.ts +12 -3
- package/dist/entries/app-rsc-entry.js +530 -55
- package/dist/entries/app-rsc-manifest.d.ts +4 -3
- package/dist/entries/app-rsc-manifest.js +27 -8
- package/dist/entries/app-ssr-entry.d.ts +2 -3
- package/dist/entries/app-ssr-entry.js +8 -1
- package/dist/entries/pages-client-entry.d.ts +3 -3
- package/dist/entries/pages-client-entry.js +17 -2
- package/dist/entries/pages-server-entry.d.ts +13 -3
- package/dist/entries/pages-server-entry.js +237 -33
- package/dist/entries/runtime-entry-module.d.ts +4 -5
- package/dist/image/image-adapters-virtual.d.ts +4 -5
- package/dist/index.d.ts +10 -11
- package/dist/index.js +832 -199
- package/dist/init-cloudflare.d.ts +27 -16
- package/dist/init-cloudflare.js +754 -113
- package/dist/init-platform.d.ts +26 -22
- package/dist/init-platform.js +85 -29
- package/dist/init.d.ts +19 -13
- package/dist/init.js +123 -41
- package/dist/plugins/action-owner-manifest.d.ts +3 -4
- package/dist/plugins/action-owner-manifest.js +10 -3
- package/dist/plugins/ast-scope.d.ts +10 -11
- package/dist/plugins/ast-scope.js +10 -22
- package/dist/plugins/ast-utils.d.ts +16 -29
- package/dist/plugins/ast-utils.js +27 -71
- package/dist/plugins/async-hooks-stub.d.ts +2 -3
- package/dist/plugins/client-reference-dedup.d.ts +4 -5
- package/dist/plugins/css-data-url.d.ts +2 -3
- package/dist/plugins/css-module-imports.d.ts +3 -4
- package/dist/plugins/css-module-imports.js +1 -1
- package/dist/plugins/dynamic-preload-metadata.d.ts +3 -4
- package/dist/plugins/dynamic-preload-metadata.js +55 -154
- package/dist/plugins/environment.d.ts +2 -3
- package/dist/plugins/extensionless-dynamic-import.d.ts +2 -3
- package/dist/plugins/extensionless-dynamic-import.js +6 -10
- package/dist/plugins/fonts.d.ts +10 -11
- package/dist/plugins/fonts.js +4 -3
- package/dist/plugins/ignore-dynamic-requests.d.ts +3 -4
- package/dist/plugins/ignore-dynamic-requests.js +60 -89
- package/dist/plugins/import-meta-url.d.ts +6 -7
- package/dist/plugins/import-meta-url.js +31 -43
- package/dist/plugins/instrumentation-client.d.ts +3 -3
- package/dist/plugins/instrumentation-client.js +46 -10
- package/dist/plugins/middleware-export-validation.d.ts +3 -4
- package/dist/plugins/middleware-export-validation.js +3 -3
- package/dist/plugins/middleware-server-only.d.ts +2 -3
- package/dist/plugins/og-asset-ownership.d.ts +3 -4
- package/dist/plugins/og-assets.d.ts +4 -5
- package/dist/plugins/og-assets.js +32 -13
- package/dist/plugins/og-harfbuzz.d.ts +24 -0
- package/dist/plugins/og-harfbuzz.js +260 -0
- package/dist/plugins/optimize-imports.d.ts +7 -7
- package/dist/plugins/optimize-imports.js +32 -44
- package/dist/plugins/pages-node-externals.d.ts +2 -3
- package/dist/plugins/pages-node-externals.js +6 -11
- package/dist/plugins/postcss.d.ts +8 -4
- package/dist/plugins/postcss.js +1 -1
- package/dist/plugins/remove-console.d.ts +2 -3
- package/dist/plugins/remove-console.js +0 -1
- package/dist/plugins/require-condition-resolution.d.ts +3 -4
- package/dist/plugins/require-condition-resolution.js +17 -18
- package/dist/plugins/require-context.d.ts +2 -3
- package/dist/plugins/require-context.js +13 -21
- package/dist/plugins/rsc-client-reference-loaders.d.ts +2 -3
- package/dist/plugins/rsc-client-shim-excludes.d.ts +4 -5
- package/dist/plugins/rsc-client-shim-excludes.js +1 -0
- package/dist/plugins/rsc-reference-validation-normalizer.d.ts +2 -3
- package/dist/plugins/sass.d.ts +7 -8
- package/dist/plugins/sass.js +7 -4
- package/dist/plugins/server-externals-manifest.d.ts +2 -3
- package/dist/plugins/strip-server-exports.d.ts +5 -6
- package/dist/plugins/strip-server-exports.js +1 -1
- package/dist/plugins/styled-jsx.d.ts +2 -3
- package/dist/plugins/styled-jsx.js +7 -7
- package/dist/plugins/transform-cache.d.ts +2 -3
- package/dist/plugins/transform-result.d.ts +3 -4
- package/dist/plugins/transitive-externals.d.ts +2 -3
- package/dist/plugins/typeof-window.d.ts +6 -7
- package/dist/plugins/typeof-window.js +30 -31
- package/dist/plugins/use-cache-callable.d.ts +2 -5
- package/dist/plugins/use-cache-callable.js +43 -22
- package/dist/plugins/wasm-module-import.d.ts +2 -3
- package/dist/plugins/worker-image-imports.d.ts +2 -3
- package/dist/plugins/worker-image-imports.js +6 -8
- package/dist/routing/app-route-graph.d.ts +19 -19
- package/dist/routing/app-route-graph.js +3 -2
- package/dist/routing/app-router.d.ts +20 -5
- package/dist/routing/app-router.js +28 -2
- package/dist/routing/file-matcher.d.ts +9 -10
- package/dist/routing/pages-router.d.ts +6 -6
- package/dist/routing/pages-router.js +1 -1
- package/dist/routing/route-matching.d.ts +4 -5
- package/dist/routing/route-matching.js +4 -2
- package/dist/routing/route-pattern.d.ts +13 -14
- package/dist/routing/route-trie.d.ts +5 -6
- package/dist/routing/route-validation.d.ts +3 -4
- package/dist/routing/route-validation.js +12 -11
- package/dist/routing/utils.d.ts +13 -14
- package/dist/server/accept-encoding.d.ts +9 -10
- package/dist/server/api-handler.d.ts +2 -3
- package/dist/server/api-handler.js +9 -6
- package/dist/server/app-action-forwarding.d.ts +3 -4
- package/dist/server/app-action-forwarding.js +1 -1
- package/dist/server/app-action-request.d.ts +2 -3
- package/dist/server/app-bfcache-id.d.ts +3 -4
- package/dist/server/app-bfcache-identity.d.ts +8 -9
- package/dist/server/app-browser-action-result.d.ts +15 -16
- package/dist/server/app-browser-client-reuse-manifest.d.ts +2 -3
- package/dist/server/app-browser-entry.js +121 -40
- package/dist/server/app-browser-error.d.ts +5 -6
- package/dist/server/app-browser-error.js +9 -3
- package/dist/server/app-browser-history-controller.d.ts +4 -5
- package/dist/server/app-browser-hydration.d.ts +16 -6
- package/dist/server/app-browser-hydration.js +14 -1
- package/dist/server/app-browser-interception-context.d.ts +3 -4
- package/dist/server/app-browser-mpa-navigation.d.ts +4 -5
- package/dist/server/app-browser-navigation-abort.d.ts +3 -4
- package/dist/server/app-browser-navigation-controller.d.ts +8 -8
- package/dist/server/app-browser-navigation-controller.js +9 -5
- package/dist/server/app-browser-navigation-response.d.ts +2 -3
- package/dist/server/app-browser-popstate.d.ts +4 -5
- package/dist/server/app-browser-prefetch-response.d.ts +5 -6
- package/dist/server/app-browser-rsc-redirect.d.ts +4 -5
- package/dist/server/app-browser-server-action-client.d.ts +7 -6
- package/dist/server/app-browser-server-action-client.js +9 -5
- package/dist/server/app-browser-server-action-navigation.d.ts +2 -3
- package/dist/server/app-browser-state.d.ts +17 -17
- package/dist/server/app-browser-state.js +7 -3
- package/dist/server/app-browser-stream.d.ts +4 -5
- package/dist/server/app-browser-stream.js +8 -6
- package/dist/server/app-browser-supplemental-refresh.d.ts +11 -12
- package/dist/server/app-browser-visible-commit.d.ts +6 -7
- package/dist/server/app-browser-visible-commit.js +1 -1
- package/dist/server/app-client-reference-preloader.d.ts +2 -3
- package/dist/server/app-elements-wire-key.d.ts +25 -0
- package/dist/server/app-elements-wire-key.js +69 -0
- package/dist/server/app-elements-wire.d.ts +34 -53
- package/dist/server/app-elements-wire.js +4 -75
- package/dist/server/app-elements.d.ts +5 -5
- package/dist/server/app-elements.js +1 -1
- package/dist/server/app-fallback-renderer.d.ts +4 -4
- package/dist/server/app-fallback-renderer.js +6 -6
- package/dist/server/app-fetch-tracing.d.ts +15 -0
- package/dist/server/app-fetch-tracing.js +38 -0
- package/dist/server/app-history-state.d.ts +26 -27
- package/dist/server/app-history-state.js +19 -11
- package/dist/server/app-hook-warning-suppression.d.ts +2 -3
- package/dist/server/app-hydration-cache-publication.d.ts +3 -4
- package/dist/server/app-inline-css-client.d.ts +3 -4
- package/dist/server/app-interception-context-header.d.ts +2 -3
- package/dist/server/app-layout-param-observation.d.ts +7 -8
- package/dist/server/app-metadata-tracing.d.ts +12 -0
- package/dist/server/app-metadata-tracing.js +17 -0
- package/dist/server/app-middleware.d.ts +15 -7
- package/dist/server/app-middleware.js +30 -5
- package/dist/server/app-mounted-slots-header.d.ts +2 -3
- package/dist/server/app-mounted-slots-header.js +2 -2
- package/dist/server/app-optimistic-routing.d.ts +14 -10
- package/dist/server/app-optimistic-routing.js +16 -3
- package/dist/server/app-page-boundary-render.d.ts +6 -6
- package/dist/server/app-page-boundary-render.js +10 -4
- package/dist/server/app-page-boundary.d.ts +9 -10
- package/dist/server/app-page-boundary.js +2 -1
- package/dist/server/app-page-cache-finalizer.d.ts +32 -8
- package/dist/server/app-page-cache-finalizer.js +118 -14
- package/dist/server/app-page-cache-render.d.ts +8 -5
- package/dist/server/app-page-cache-render.js +22 -5
- package/dist/server/app-page-cache.d.ts +28 -9
- package/dist/server/app-page-cache.js +96 -25
- package/dist/server/app-page-dispatch.d.ts +36 -12
- package/dist/server/app-page-dispatch.js +188 -63
- package/dist/server/app-page-element-builder.d.ts +13 -11
- package/dist/server/app-page-element-builder.js +104 -61
- package/dist/server/app-page-execution.d.ts +14 -14
- package/dist/server/app-page-execution.js +12 -8
- package/dist/server/app-page-head.d.ts +19 -16
- package/dist/server/app-page-head.js +25 -25
- package/dist/server/app-page-http-access-fallback-metadata.d.ts +6 -5
- package/dist/server/app-page-http-access-fallback-metadata.js +9 -2
- package/dist/server/app-page-method.d.ts +5 -11
- package/dist/server/app-page-method.js +2 -9
- package/dist/server/app-page-params.d.ts +5 -6
- package/dist/server/app-page-ppr-runtime.d.ts +2 -2
- package/dist/server/app-page-probe.d.ts +5 -6
- package/dist/server/app-page-probe.js +5 -4
- package/dist/server/app-page-render-identity.d.ts +4 -5
- package/dist/server/app-page-render-observation.d.ts +8 -9
- package/dist/server/app-page-render-observation.js +1 -1
- package/dist/server/app-page-render.d.ts +42 -6
- package/dist/server/app-page-render.js +192 -28
- package/dist/server/app-page-request.d.ts +10 -9
- package/dist/server/app-page-request.js +16 -12
- package/dist/server/app-page-response.d.ts +20 -9
- package/dist/server/app-page-response.js +31 -13
- package/dist/server/app-page-route-wiring.d.ts +15 -15
- package/dist/server/app-page-route-wiring.js +31 -24
- package/dist/server/app-page-search-params-observation.d.ts +26 -5
- package/dist/server/app-page-search-params-observation.js +42 -6
- package/dist/server/app-page-segment-plan.d.ts +2 -3
- package/dist/server/app-page-segment-state.d.ts +11 -12
- package/dist/server/app-page-stream.d.ts +27 -11
- package/dist/server/app-page-stream.js +35 -6
- package/dist/server/app-page-tracing.d.ts +33 -0
- package/dist/server/app-page-tracing.js +49 -0
- package/dist/server/app-pages-bridge.d.ts +6 -6
- package/dist/server/app-pages-bridge.js +19 -4
- package/dist/server/app-post-middleware-context.d.ts +2 -3
- package/dist/server/app-ppr-fallback-shell-render.d.ts +3 -4
- package/dist/server/app-ppr-fallback-shell-render.js +3 -2
- package/dist/server/app-ppr-fallback-shell.d.ts +6 -7
- package/dist/server/app-prerender-endpoints.d.ts +5 -5
- package/dist/server/app-prerender-endpoints.js +26 -12
- package/dist/server/app-prerender-static-params.d.ts +15 -7
- package/dist/server/app-prerender-static-params.js +33 -11
- package/dist/server/app-render-dependency.d.ts +14 -13
- package/dist/server/app-render-dependency.js +5 -1
- package/dist/server/app-request-context.d.ts +3 -4
- package/dist/server/app-request-stage-context.d.ts +5 -0
- package/dist/server/app-request-stage-context.js +11 -0
- package/dist/server/app-request-stage-dispatch.d.ts +25 -0
- package/dist/server/app-request-stage-dispatch.js +54 -0
- package/dist/server/app-request-stage-independent-entry.d.ts +8 -0
- package/dist/server/app-request-stage-independent-entry.js +115 -0
- package/dist/server/app-response-header-provenance.d.ts +13 -7
- package/dist/server/app-response-header-provenance.js +34 -1
- package/dist/server/app-response-stage-entry.d.ts +9 -0
- package/dist/server/app-response-stage-entry.js +87 -0
- package/dist/server/app-route-handler-cache.d.ts +2 -3
- package/dist/server/app-route-handler-cache.js +46 -34
- package/dist/server/app-route-handler-dispatch.d.ts +3 -3
- package/dist/server/app-route-handler-dispatch.js +75 -57
- package/dist/server/app-route-handler-execution.d.ts +18 -13
- package/dist/server/app-route-handler-execution.js +189 -25
- package/dist/server/app-route-handler-middleware-context.d.ts +8 -0
- package/dist/server/app-route-handler-middleware-context.js +15 -0
- package/dist/server/app-route-handler-policy.d.ts +22 -10
- package/dist/server/app-route-handler-policy.js +19 -4
- package/dist/server/app-route-handler-response.d.ts +9 -10
- package/dist/server/app-route-handler-response.js +2 -0
- package/dist/server/app-route-handler-runtime.d.ts +9 -10
- package/dist/server/app-route-handler-runtime.js +20 -16
- package/dist/server/app-route-module-loader.d.ts +6 -7
- package/dist/server/app-route-request-built-ins.d.ts +3 -4
- package/dist/server/app-route-tree-prefetch.d.ts +6 -7
- package/dist/server/app-route-tree-prefetch.js +2 -1
- package/dist/server/app-router-entry.d.ts +2 -0
- package/dist/server/app-router-entry.js +76 -12
- package/dist/server/app-rsc-cache-busting.d.ts +47 -22
- package/dist/server/app-rsc-cache-busting.js +80 -18
- package/dist/server/app-rsc-combined-handler.d.ts +9 -0
- package/dist/server/app-rsc-combined-handler.js +11 -0
- package/dist/server/app-rsc-embedded-chunks.d.ts +6 -7
- package/dist/server/app-rsc-error-handler.d.ts +12 -6
- package/dist/server/app-rsc-error-handler.js +15 -6
- package/dist/server/app-rsc-errors.d.ts +12 -9
- package/dist/server/app-rsc-errors.js +15 -13
- package/dist/server/app-rsc-handler.d.ts +33 -6
- package/dist/server/app-rsc-handler.js +498 -83
- package/dist/server/app-rsc-redirect-flight.d.ts +4 -5
- package/dist/server/app-rsc-render-mode.d.ts +8 -9
- package/dist/server/app-rsc-request-normalization.d.ts +3 -3
- package/dist/server/app-rsc-request-normalization.js +2 -1
- package/dist/server/app-rsc-response-finalizer.d.ts +8 -5
- package/dist/server/app-rsc-response-finalizer.js +24 -7
- package/dist/server/app-rsc-response-stage.d.ts +6 -0
- package/dist/server/app-rsc-response-stage.js +251 -0
- package/dist/server/app-rsc-route-matching.d.ts +4 -4
- package/dist/server/app-rsc-route-matching.js +4 -2
- package/dist/server/app-rsc-state-fingerprint.d.ts +3 -4
- package/dist/server/app-rsc-vary.d.ts +16 -0
- package/dist/server/app-rsc-vary.js +31 -0
- package/dist/server/app-segment-config.d.ts +120 -6
- package/dist/server/app-segment-config.js +264 -12
- package/dist/server/app-server-action-execution.d.ts +16 -12
- package/dist/server/app-server-action-execution.js +88 -35
- package/dist/server/app-ssr-entry.d.ts +14 -4
- package/dist/server/app-ssr-entry.js +64 -17
- package/dist/server/app-ssr-error-meta.d.ts +3 -4
- package/dist/server/app-ssr-error-meta.js +2 -1
- package/dist/server/app-ssr-router-instance.d.ts +2 -3
- package/dist/server/app-ssr-search-params-gate.d.ts +20 -0
- package/dist/server/app-ssr-search-params-gate.js +54 -0
- package/dist/server/app-ssr-stream.d.ts +13 -9
- package/dist/server/app-ssr-stream.js +33 -7
- package/dist/server/app-static-generation.d.ts +4 -5
- package/dist/server/app-visited-response-cache.d.ts +11 -12
- package/dist/server/app-visited-response-cache.js +2 -2
- package/dist/server/app-worker-stages.d.ts +112 -0
- package/dist/server/app-worker-stages.js +105 -0
- package/dist/server/artifact-compatibility.d.ts +11 -12
- package/dist/server/before-interactive-head.d.ts +2 -3
- package/dist/server/bfcache-identity.d.ts +7 -8
- package/dist/server/cache-control.d.ts +39 -11
- package/dist/server/cache-control.js +104 -7
- package/dist/server/cache-headers.d.ts +3 -4
- package/dist/server/cache-proof.d.ts +75 -70
- package/dist/server/cache-proof.js +9 -1
- package/dist/server/cacheability-limits.d.ts +8 -0
- package/dist/server/cacheability-limits.js +9 -0
- package/dist/server/cacheability-manifest.d.ts +68 -0
- package/dist/server/cacheability-manifest.js +241 -0
- package/dist/server/cacheability-request.d.ts +49 -0
- package/dist/server/cacheability-request.js +559 -0
- package/dist/server/client-reuse-manifest.d.ts +17 -18
- package/dist/server/client-reuse-manifest.js +2 -2
- package/dist/server/client-trace-metadata.d.ts +9 -6
- package/dist/server/client-trace-metadata.js +27 -15
- package/dist/server/cloudflare-workers-tracing.d.ts +1 -0
- package/dist/server/cloudflare-workers-tracing.js +8 -0
- package/dist/server/config-headers.d.ts +19 -5
- package/dist/server/config-headers.js +39 -5
- package/dist/server/cookie-utils.d.ts +2 -3
- package/dist/server/csp.d.ts +5 -6
- package/dist/server/default-global-error-module.d.ts +2 -3
- package/dist/server/default-global-not-found-module.d.ts +2 -3
- package/dist/server/default-not-found-module.d.ts +2 -3
- package/dist/server/defer-until-stream-consumed.d.ts +2 -3
- package/dist/server/defer-until-stream-consumed.js +2 -1
- package/dist/server/dev-initial-server-error.d.ts +3 -4
- package/dist/server/dev-initial-server-error.js +2 -1
- package/dist/server/dev-lockfile.d.ts +7 -8
- package/dist/server/dev-lockfile.js +4 -1
- package/dist/server/dev-module-runner.d.ts +2 -3
- package/dist/server/dev-origin-check.d.ts +5 -6
- package/dist/server/dev-route-files.d.ts +2 -3
- package/dist/server/dev-server.d.ts +4 -5
- package/dist/server/dev-server.js +130 -61
- package/dist/server/dev-stack-sourcemap.d.ts +7 -7
- package/dist/server/dev-stack-sourcemap.js +1 -1
- package/dist/server/document-initial-head.d.ts +3 -4
- package/dist/server/edge-api-runtime.d.ts +4 -5
- package/dist/server/fetch-handler.d.ts +3 -2
- package/dist/server/fetch-handler.js +3 -18
- package/dist/server/file-based-metadata.d.ts +2 -3
- package/dist/server/framework-tracer.d.ts +46 -0
- package/dist/server/framework-tracer.js +125 -0
- package/dist/server/fully-buffered-response.d.ts +11 -0
- package/dist/server/fully-buffered-response.js +19 -0
- package/dist/server/headers.d.ts +62 -56
- package/dist/server/headers.js +33 -20
- package/dist/server/html.d.ts +6 -27
- package/dist/server/html.js +16 -1
- package/dist/server/http-conditional.d.ts +5 -6
- package/dist/server/http-date.d.ts +2 -3
- package/dist/server/http-error-responses.d.ts +9 -10
- package/dist/server/http-range.d.ts +4 -5
- package/dist/server/hybrid-route-priority.d.ts +4 -5
- package/dist/server/image-optimization.d.ts +20 -21
- package/dist/server/implicit-tags.d.ts +3 -4
- package/dist/server/instrumentation-runtime.d.ts +17 -21
- package/dist/server/instrumentation-runtime.js +26 -8
- package/dist/server/instrumentation.d.ts +26 -30
- package/dist/server/instrumentation.js +18 -23
- package/dist/server/isr-cache.d.ts +28 -27
- package/dist/server/isr-cache.js +18 -70
- package/dist/server/isr-decision.d.ts +4 -4
- package/dist/server/metadata-route-build-data.d.ts +4 -5
- package/dist/server/metadata-route-cache-policy.d.ts +2 -3
- package/dist/server/metadata-route-response.d.ts +7 -7
- package/dist/server/metadata-route-response.js +68 -2
- package/dist/server/metadata-routes.d.ts +18 -19
- package/dist/server/middleware-matcher-pattern.d.ts +6 -7
- package/dist/server/middleware-matcher.d.ts +13 -6
- package/dist/server/middleware-matcher.js +22 -1
- package/dist/server/middleware-path-to-regexp.d.ts +6 -7
- package/dist/server/middleware-path-to-regexp.js +11 -9
- package/dist/server/middleware-response-headers.d.ts +3 -4
- package/dist/server/middleware-runtime.d.ts +13 -8
- package/dist/server/middleware-runtime.js +54 -10
- package/dist/server/middleware.d.ts +5 -5
- package/dist/server/multi-stage.d.ts +141 -0
- package/dist/server/multi-stage.js +8 -0
- package/dist/server/navigation-planner.d.ts +26 -26
- package/dist/server/navigation-trace.d.ts +11 -12
- package/dist/server/next-error-digest.d.ts +4 -5
- package/dist/server/normalize-path.d.ts +5 -6
- package/dist/server/normalize-path.js +1 -1
- package/dist/server/open-redirect.d.ts +2 -3
- package/dist/server/opentelemetry-api.d.ts +59 -0
- package/dist/server/opentelemetry-api.js +53 -0
- package/dist/server/opentelemetry-tracing.d.ts +5 -0
- package/dist/server/opentelemetry-tracing.js +83 -0
- package/dist/server/operation-token.d.ts +11 -12
- package/dist/server/otel-tracer-extension.d.ts +7 -9
- package/dist/server/otel-tracer-extension.js +37 -36
- package/dist/server/pages-api-route.d.ts +5 -4
- package/dist/server/pages-api-route.js +21 -8
- package/dist/server/pages-asset-tags.d.ts +6 -6
- package/dist/server/pages-asset-tags.js +37 -2
- package/dist/server/pages-body-parser-config.d.ts +4 -5
- package/dist/server/pages-body-parser-config.js +4 -4
- package/dist/server/pages-client-assets.d.ts +11 -5
- package/dist/server/pages-data-route.d.ts +11 -12
- package/dist/server/pages-data-route.js +1 -1
- package/dist/server/pages-default-404.d.ts +3 -4
- package/dist/server/pages-dev-hydration.d.ts +9 -4
- package/dist/server/pages-dev-hydration.js +19 -7
- package/dist/server/pages-dev-module-url.d.ts +3 -4
- package/dist/server/pages-dev-stylesheets.d.ts +5 -6
- package/dist/server/pages-document-asset-props.d.ts +6 -7
- package/dist/server/pages-document-initial-props.d.ts +5 -5
- package/dist/server/pages-document-initial-props.js +4 -2
- package/dist/server/pages-execution-tracing.d.ts +40 -0
- package/dist/server/pages-execution-tracing.js +80 -0
- package/dist/server/pages-get-initial-props.d.ts +9 -10
- package/dist/server/pages-i18n.d.ts +8 -8
- package/dist/server/pages-i18n.js +3 -2
- package/dist/server/pages-media-type.d.ts +4 -5
- package/dist/server/pages-node-compat.d.ts +11 -10
- package/dist/server/pages-node-compat.js +12 -4
- package/dist/server/pages-page-data.d.ts +18 -19
- package/dist/server/pages-page-data.js +11 -10
- package/dist/server/pages-page-handler.d.ts +7 -6
- package/dist/server/pages-page-handler.js +98 -47
- package/dist/server/pages-page-method.d.ts +2 -3
- package/dist/server/pages-page-response.d.ts +14 -10
- package/dist/server/pages-page-response.js +49 -31
- package/dist/server/pages-preview.d.ts +10 -11
- package/dist/server/pages-readiness.d.ts +2 -3
- package/dist/server/pages-request-pipeline.d.ts +16 -12
- package/dist/server/pages-request-pipeline.js +69 -28
- package/dist/server/pages-request-stage-entry.d.ts +23 -0
- package/dist/server/pages-request-stage-entry.js +314 -0
- package/dist/server/pages-response-stage-entry.d.ts +11 -0
- package/dist/server/pages-response-stage-entry.js +106 -0
- package/dist/server/pages-response-stage.d.ts +31 -0
- package/dist/server/pages-response-stage.js +49 -0
- package/dist/server/pages-revalidate.d.ts +3 -4
- package/dist/server/pages-revalidate.js +9 -4
- package/dist/server/pages-route-data-kind.d.ts +18 -0
- package/dist/server/pages-route-data-kind.js +11 -0
- package/dist/server/pages-router-entry.d.ts +1 -25
- package/dist/server/pages-router-entry.js +48 -114
- package/dist/server/pages-serializable-props.d.ts +3 -4
- package/dist/server/pregenerated-concrete-paths.d.ts +9 -7
- package/dist/server/pregenerated-concrete-paths.js +12 -6
- package/dist/server/prerender-cache-life-header.d.ts +3 -4
- package/dist/server/prerender-manifest.d.ts +11 -11
- package/dist/server/prerender-manifest.js +6 -3
- package/dist/server/prerender-route-params.d.ts +16 -9
- package/dist/server/prerender-route-params.js +18 -2
- package/dist/server/prerender-work-unit-setup.d.ts +4 -4
- package/dist/server/prerender-work-unit-setup.js +37 -14
- package/dist/server/prod-server.d.ts +12 -9
- package/dist/server/prod-server.js +129 -36
- package/dist/server/proxy-trust.d.ts +5 -6
- package/dist/server/request-log.d.ts +3 -4
- package/dist/server/request-pipeline.d.ts +17 -21
- package/dist/server/request-pipeline.js +8 -10
- package/dist/server/request-stage.d.ts +5 -0
- package/dist/server/request-stage.js +7 -0
- package/dist/server/request-tracing.d.ts +22 -0
- package/dist/server/request-tracing.js +180 -0
- package/dist/server/response-stage-cacheability.d.ts +37 -0
- package/dist/server/response-stage-cacheability.js +55 -0
- package/dist/server/response-stage-policy.d.ts +23 -0
- package/dist/server/response-stage-policy.js +89 -0
- package/dist/server/response-stage.d.ts +5 -0
- package/dist/server/response-stage.js +7 -0
- package/dist/server/response-start-tracing.d.ts +14 -0
- package/dist/server/response-start-tracing.js +80 -0
- package/dist/server/revalidation-host.d.ts +2 -3
- package/dist/server/revalidation-host.js +2 -1
- package/dist/server/revalidation-request.d.ts +8 -0
- package/dist/server/revalidation-request.js +37 -0
- package/dist/server/rsc-completion-metadata.d.ts +6 -7
- package/dist/server/rsc-stream-hints.d.ts +18 -7
- package/dist/server/rsc-stream-hints.js +70 -35
- package/dist/server/seed-cache.d.ts +2 -3
- package/dist/server/seed-cache.js +8 -7
- package/dist/server/server-action-not-found.d.ts +5 -6
- package/dist/server/server-globals.d.ts +2 -3
- package/dist/server/server-globals.js +13 -0
- package/dist/server/skip-cache-proof.d.ts +4 -4
- package/dist/server/socket-error-backstop.d.ts +5 -6
- package/dist/server/socket-error-backstop.js +1 -1
- package/dist/server/static-file-cache.d.ts +5 -6
- package/dist/server/static-file-cache.js +9 -7
- package/dist/server/static-file-signal.d.ts +16 -0
- package/dist/server/static-file-signal.js +82 -0
- package/dist/server/static-layout-client-reuse-proof.d.ts +4 -5
- package/dist/server/streaming-metadata.d.ts +2 -3
- package/dist/server/tracer.d.ts +5 -0
- package/dist/server/tracer.js +13 -0
- package/dist/server/worker-prerender-discovery.d.ts +18 -0
- package/dist/server/worker-prerender-discovery.js +55 -0
- package/dist/server/worker-revalidation-context.d.ts +2 -3
- package/dist/server/worker-revalidation-context.js +5 -5
- package/dist/server/worker-stages.d.ts +43 -0
- package/dist/server/worker-stages.js +25 -0
- package/dist/server/worker-utils.d.ts +5 -6
- package/dist/server/worker-utils.js +4 -4
- package/dist/server/workers-tracing.d.ts +17 -0
- package/dist/server/workers-tracing.js +27 -0
- package/dist/shims/amp.d.ts +3 -4
- package/dist/shims/app-router-scroll-state.d.ts +9 -10
- package/dist/shims/app-router-scroll.d.ts +4 -5
- package/dist/shims/app-router-scroll.js +2 -1
- package/dist/shims/app.d.ts +5 -6
- package/dist/shims/before-interactive-context.d.ts +5 -6
- package/dist/shims/cache-callable-runtime.d.ts +44 -4
- package/dist/shims/cache-callable-runtime.js +168 -8
- package/dist/shims/cache-for-request.d.ts +2 -3
- package/dist/shims/cache-handler.d.ts +33 -20
- package/dist/shims/cache-handler.js +61 -2
- package/dist/shims/cache-request-state.d.ts +28 -29
- package/dist/shims/cache-runtime.d.ts +23 -21
- package/dist/shims/cache-runtime.js +239 -121
- package/dist/shims/cache.d.ts +15 -15
- package/dist/shims/cache.js +25 -13
- package/dist/shims/cacheability-classification.d.ts +106 -0
- package/dist/shims/cacheability-classification.js +161 -0
- package/dist/shims/cdn-cache-state.d.ts +13 -0
- package/dist/shims/cdn-cache-state.js +23 -0
- package/dist/shims/cdn-cache.d.ts +76 -18
- package/dist/shims/cdn-cache.js +40 -39
- package/dist/shims/client-hook-error.d.ts +3 -4
- package/dist/shims/client-locale.d.ts +2 -3
- package/dist/shims/client-page-root.d.ts +24 -0
- package/dist/shims/client-page-root.js +121 -0
- package/dist/shims/compat-router.d.ts +2 -3
- package/dist/shims/config.d.ts +3 -4
- package/dist/shims/constants.d.ts +73 -74
- package/dist/shims/constants.js +1 -1
- package/dist/shims/default-not-found.d.ts +2 -3
- package/dist/shims/document.d.ts +9 -9
- package/dist/shims/dynamic-preload-chunks.d.ts +2 -3
- package/dist/shims/dynamic-preload-chunks.js +17 -13
- package/dist/shims/dynamic.d.ts +3 -3
- package/dist/shims/error-boundary-navigation.d.ts +3 -4
- package/dist/shims/error-boundary.d.ts +17 -18
- package/dist/shims/error-boundary.js +17 -11
- package/dist/shims/error.d.ts +4 -4
- package/dist/shims/error.js +1 -1
- package/dist/shims/error.react-server.d.ts +3 -4
- package/dist/shims/fetch-cache.d.ts +22 -22
- package/dist/shims/fetch-cache.js +50 -20
- package/dist/shims/font-google-base.d.ts +9 -9
- package/dist/shims/font-google-base.js +2 -1
- package/dist/shims/font-local.d.ts +3 -3
- package/dist/shims/font-local.js +1 -1
- package/dist/shims/font-utils.d.ts +14 -15
- package/dist/shims/form.d.ts +2 -2
- package/dist/shims/form.js +10 -7
- package/dist/shims/hash-scroll.d.ts +5 -6
- package/dist/shims/head-state.d.ts +4 -5
- package/dist/shims/head.d.ts +16 -16
- package/dist/shims/head.js +5 -4
- package/dist/shims/headers.d.ts +68 -32
- package/dist/shims/headers.js +101 -10
- package/dist/shims/i18n-context.d.ts +5 -6
- package/dist/shims/i18n-state.d.ts +4 -5
- package/dist/shims/image-config.d.ts +5 -6
- package/dist/shims/image-config.js +2 -0
- package/dist/shims/image.d.ts +5 -5
- package/dist/shims/image.js +12 -8
- package/dist/shims/internal/als-registry.d.ts +4 -5
- package/dist/shims/internal/api-utils.d.ts +3 -4
- package/dist/shims/internal/app-page-props-cache-key.d.ts +32 -4
- package/dist/shims/internal/app-page-props-cache-key.js +53 -1
- package/dist/shims/internal/app-prefetch-fetch-queue.d.ts +5 -6
- package/dist/shims/internal/app-prefetch-rsc-request.d.ts +13 -0
- package/dist/shims/internal/app-prefetch-rsc-request.js +12 -0
- package/dist/shims/internal/app-route-detection.d.ts +2 -2
- package/dist/shims/internal/app-route-prefetch-policy.d.ts +5 -6
- package/dist/shims/internal/app-route-prefetch-policy.js +1 -0
- package/dist/shims/internal/app-router-context.d.ts +9 -10
- package/dist/shims/internal/cookie-serialize.d.ts +4 -5
- package/dist/shims/internal/format-url-object.d.ts +7 -0
- package/dist/shims/internal/format-url-object.js +53 -0
- package/dist/shims/internal/hybrid-client-route-owner-direct.d.ts +6 -7
- package/dist/shims/internal/hybrid-client-route-owner-direct.js +29 -11
- package/dist/shims/internal/hybrid-client-route-owner.d.ts +3 -3
- package/dist/shims/internal/hybrid-client-route-owner.js +5 -4
- package/dist/shims/internal/interpolate-as.d.ts +5 -6
- package/dist/shims/internal/interpolate-as.js +4 -2
- package/dist/shims/internal/link-status-registry.d.ts +5 -6
- package/dist/shims/internal/make-hanging-promise.d.ts +8 -3
- package/dist/shims/internal/make-hanging-promise.js +13 -2
- package/dist/shims/internal/navigation-untracked.d.ts +2 -3
- package/dist/shims/internal/normalize-router-href.d.ts +15 -0
- package/dist/shims/internal/normalize-router-href.js +41 -0
- package/dist/shims/internal/pages-data-fetch-dedup.d.ts +8 -9
- package/dist/shims/internal/pages-data-target.d.ts +8 -6
- package/dist/shims/internal/pages-data-target.js +32 -36
- package/dist/shims/internal/pages-data-url.d.ts +4 -5
- package/dist/shims/internal/pages-data-url.js +2 -1
- package/dist/shims/internal/pages-router-accessor.d.ts +3 -4
- package/dist/shims/internal/pages-router-components.d.ts +3 -4
- package/dist/shims/internal/route-pattern-for-warning.d.ts +5 -6
- package/dist/shims/internal/route-pattern-for-warning.js +3 -3
- package/dist/shims/internal/router-context.d.ts +2 -3
- package/dist/shims/internal/thenable-well-known-properties.d.ts +10 -0
- package/dist/shims/internal/thenable-well-known-properties.js +33 -0
- package/dist/shims/internal/utils.d.ts +7 -8
- package/dist/shims/internal/work-unit-async-storage.d.ts +12 -11
- package/dist/shims/layout-segment-context.d.ts +3 -4
- package/dist/shims/link-prefetch.d.ts +9 -10
- package/dist/shims/link.d.ts +4 -4
- package/dist/shims/link.js +67 -116
- package/dist/shims/metadata.d.ts +15 -16
- package/dist/shims/metadata.js +40 -36
- package/dist/shims/navigation-context-accessors.d.ts +9 -0
- package/dist/shims/navigation-context-accessors.js +19 -0
- package/dist/shims/navigation-context-state.d.ts +27 -18
- package/dist/shims/navigation-errors.d.ts +18 -19
- package/dist/shims/navigation-state.d.ts +6 -7
- package/dist/shims/navigation.d.ts +80 -68
- package/dist/shims/navigation.js +45 -17
- package/dist/shims/navigation.react-server.d.ts +9 -9
- package/dist/shims/navigation.react-server.js +1 -1
- package/dist/shims/offline.d.ts +2 -3
- package/dist/shims/og.d.ts +2 -2
- package/dist/shims/pages-router-runtime.d.ts +4 -5
- package/dist/shims/ppr-fallback-shell.d.ts +13 -14
- package/dist/shims/readonly-url-search-params.d.ts +2 -3
- package/dist/shims/request-context.d.ts +7 -6
- package/dist/shims/root-params.d.ts +14 -15
- package/dist/shims/router-state.d.ts +5 -6
- package/dist/shims/router-state.js +1 -1
- package/dist/shims/router.d.ts +22 -21
- package/dist/shims/router.js +339 -164
- package/dist/shims/script-nonce-context.d.ts +8 -6
- package/dist/shims/script-nonce-context.js +15 -6
- package/dist/shims/script.d.ts +4 -4
- package/dist/shims/script.js +9 -7
- package/dist/shims/search-params-gate.d.ts +35 -0
- package/dist/shims/search-params-gate.js +32 -0
- package/dist/shims/server.d.ts +19 -51
- package/dist/shims/server.js +14 -28
- package/dist/shims/slot.d.ts +33 -15
- package/dist/shims/slot.js +41 -9
- package/dist/shims/streamed-icons.d.ts +3 -4
- package/dist/shims/thenable-params.d.ts +5 -7
- package/dist/shims/thenable-params.js +3 -24
- package/dist/shims/unified-request-context.d.ts +34 -31
- package/dist/shims/unified-request-context.js +34 -24
- package/dist/shims/unrecognized-action-error.d.ts +3 -4
- package/dist/shims/url-safety.d.ts +5 -6
- package/dist/shims/url-utils.d.ts +18 -12
- package/dist/shims/url-utils.js +10 -1
- package/dist/shims/use-merged-ref.d.ts +2 -3
- package/dist/shims/user-agent.d.ts +31 -0
- package/dist/shims/user-agent.js +16 -0
- package/dist/shims/web-vitals.d.ts +2 -2
- package/dist/typegen.d.ts +3 -4
- package/dist/utils/asset-prefix.d.ts +7 -8
- package/dist/utils/base-path.d.ts +5 -6
- package/dist/utils/built-asset-url.d.ts +2 -3
- package/dist/utils/built-asset-url.js +1 -1
- package/dist/utils/cache-control-metadata.d.ts +4 -5
- package/dist/utils/client-build-manifest.d.ts +6 -7
- package/dist/utils/client-build-manifest.js +2 -1
- package/dist/utils/client-entry-manifest.d.ts +6 -7
- package/dist/utils/client-runtime-metadata.d.ts +8 -3
- package/dist/utils/client-runtime-metadata.js +18 -1
- package/dist/utils/commonjs-loader.d.ts +4 -5
- package/dist/utils/compare.d.ts +2 -3
- package/dist/utils/deployment-id.d.ts +6 -7
- package/dist/utils/dev-error-recovery-event.d.ts +2 -3
- package/dist/utils/dev-stack-sourcemap-endpoint.d.ts +2 -3
- package/dist/utils/domain-locale.d.ts +7 -8
- package/dist/utils/encode-cache-tag.d.ts +3 -4
- package/dist/utils/error-cause.d.ts +2 -3
- package/dist/utils/external-url.d.ts +2 -3
- package/dist/utils/has-trailing-comma.d.ts +3 -4
- package/dist/utils/hash.d.ts +3 -4
- package/dist/utils/html-limited-bots.d.ts +3 -4
- package/dist/utils/lazy-chunks.d.ts +8 -9
- package/dist/utils/lazy-chunks.js +4 -4
- package/dist/utils/manifest-paths.d.ts +5 -6
- package/dist/utils/mdx-scan.d.ts +11 -4
- package/dist/utils/mdx-scan.js +27 -1
- package/dist/utils/middleware-request-headers.d.ts +7 -6
- package/dist/utils/middleware-request-headers.js +6 -1
- package/dist/utils/navigation-signal.d.ts +3 -3
- package/dist/utils/navigation-signal.js +16 -1
- package/dist/utils/number.d.ts +2 -3
- package/dist/utils/package-name.d.ts +3 -4
- package/dist/utils/parse-cookie.d.ts +4 -5
- package/dist/utils/path.d.ts +8 -9
- package/dist/utils/plugin-options.d.ts +2 -3
- package/dist/utils/precompressed-variant.d.ts +3 -4
- package/dist/utils/prerender-output-paths.d.ts +9 -10
- package/dist/utils/prerender-output-paths.js +16 -9
- package/dist/utils/project.d.ts +19 -30
- package/dist/utils/project.js +20 -29
- package/dist/utils/promise.d.ts +2 -3
- package/dist/utils/protocol-headers.d.ts +14 -15
- package/dist/utils/public-file-path.d.ts +2 -3
- package/dist/utils/public-routes.d.ts +2 -3
- package/dist/utils/query.d.ts +14 -9
- package/dist/utils/query.js +22 -1
- package/dist/utils/react-compiler-support.d.ts +6 -7
- package/dist/utils/react-version.d.ts +4 -3
- package/dist/utils/react-version.js +19 -1
- package/dist/utils/record.d.ts +2 -3
- package/dist/utils/redirect-digest.d.ts +3 -4
- package/dist/utils/regex-safety.d.ts +4 -5
- package/dist/utils/regex.d.ts +2 -3
- package/dist/utils/safe-json-file.d.ts +2 -3
- package/dist/utils/sorted-array.d.ts +2 -3
- package/dist/utils/text-stream.d.ts +3 -4
- package/dist/utils/vinext-root.d.ts +2 -3
- package/dist/utils/virtual-module.d.ts +3 -4
- package/dist/utils/vite-cli-invocation.d.ts +21 -0
- package/dist/utils/vite-cli-invocation.js +144 -0
- package/dist/utils/vite-version.d.ts +5 -6
- package/next-package.json +4 -0
- package/package.json +55 -6
|
@@ -1,21 +1,26 @@
|
|
|
1
1
|
import { NEXTJS_CACHE_HEADER, VINEXT_CACHE_HEADER } from "./headers.js";
|
|
2
|
+
import { getCdnCacheAdapter } from "../shims/cdn-cache.js";
|
|
3
|
+
import { captureRouteCacheabilityResponsePolicy, deferRouteCacheability, isRouteCacheabilityEvaluation } from "../shims/cacheability-classification.js";
|
|
4
|
+
import { NO_STORE_CACHE_CONTROL, STATIC_CACHE_CONTROL, applyCdnResponseHeaders, buildRevalidateCacheControl, captureCdnResponsePolicyHeaders, hasExplicitNonCacheableResponsePolicy } from "./cache-control.js";
|
|
5
|
+
import { buildAppPageCacheValue, isrCacheControl, resolveRouteExpireSeconds } from "./isr-cache.js";
|
|
2
6
|
import { resolveClientStaleTimeSeconds } from "../utils/cache-control-metadata.js";
|
|
3
|
-
import { NO_STORE_CACHE_CONTROL, applyCdnResponseHeaders } from "./cache-control.js";
|
|
4
|
-
import { buildAppPageCacheValue, isrCacheControl } from "./isr-cache.js";
|
|
5
7
|
import { setCacheStateHeaders } from "./cache-headers.js";
|
|
6
8
|
import { readStreamAsText } from "../utils/text-stream.js";
|
|
9
|
+
import { deferUntilStreamConsumed } from "./defer-until-stream-consumed.js";
|
|
7
10
|
import { markFrameworkLinkHeaders } from "./app-response-header-provenance.js";
|
|
11
|
+
import { hasQueryInvariantRenderProof } from "./cache-proof.js";
|
|
8
12
|
import { createEmptyAppPageRenderObservationState } from "./app-page-render-observation.js";
|
|
9
13
|
//#region src/server/app-page-cache-finalizer.ts
|
|
10
14
|
function applyPendingDynamicCdnHeaders(headers, tags, options = {}) {
|
|
15
|
+
const cacheable = headers.get("Cache-Control") ?? "";
|
|
11
16
|
applyCdnResponseHeaders(headers, {
|
|
12
|
-
cacheControl:
|
|
17
|
+
cacheControl: cacheable,
|
|
13
18
|
pendingDynamicCheck: true,
|
|
14
19
|
tags
|
|
15
20
|
});
|
|
16
21
|
finalizePendingCacheStateHeaders(headers, options);
|
|
17
22
|
}
|
|
18
|
-
function
|
|
23
|
+
function applyUncacheableVariantNoStoreHeaders(headers, options = {}) {
|
|
19
24
|
applyCdnResponseHeaders(headers, { cacheControl: NO_STORE_CACHE_CONTROL });
|
|
20
25
|
finalizePendingCacheStateHeaders(headers, {
|
|
21
26
|
...options,
|
|
@@ -33,17 +38,99 @@ function finalizePendingCacheStateHeaders(headers, options = {}) {
|
|
|
33
38
|
}
|
|
34
39
|
function resolveAppPageCacheControl(options) {
|
|
35
40
|
let revalidateSeconds = options.revalidateSeconds;
|
|
36
|
-
let expireSeconds = options.expireSeconds;
|
|
37
41
|
const requestCacheLife = options.requestCacheLife;
|
|
38
42
|
if (requestCacheLife?.revalidate !== void 0) revalidateSeconds = revalidateSeconds === null ? requestCacheLife.revalidate : Math.min(revalidateSeconds, requestCacheLife.revalidate);
|
|
39
|
-
|
|
43
|
+
const expireSeconds = requestCacheLife?.expire ?? resolveRouteExpireSeconds(revalidateSeconds, options.expireSeconds);
|
|
40
44
|
if (revalidateSeconds === null || Number.isNaN(revalidateSeconds) || revalidateSeconds <= 0) return null;
|
|
41
45
|
return isrCacheControl(revalidateSeconds, {
|
|
42
46
|
expireSeconds,
|
|
43
47
|
staleSeconds: resolveClientStaleTimeSeconds(requestCacheLife)
|
|
44
48
|
});
|
|
45
49
|
}
|
|
50
|
+
function appPageCacheControlHeader(cacheControl) {
|
|
51
|
+
return cacheControl.revalidate === Infinity ? STATIC_CACHE_CONTROL : buildRevalidateCacheControl(cacheControl.revalidate, cacheControl.expire);
|
|
52
|
+
}
|
|
53
|
+
function finalizeEvaluatedAppPageResponse(response, options) {
|
|
54
|
+
if (!isRouteCacheabilityEvaluation()) return null;
|
|
55
|
+
const complete = deferRouteCacheability();
|
|
56
|
+
if (!complete) return response;
|
|
57
|
+
captureRouteCacheabilityResponsePolicy(captureCdnResponsePolicyHeaders(response.headers));
|
|
58
|
+
let completed = false;
|
|
59
|
+
const finish = () => {
|
|
60
|
+
if (completed) return;
|
|
61
|
+
completed = true;
|
|
62
|
+
const observationState = options.consumeRenderObservationState?.();
|
|
63
|
+
let outcome;
|
|
64
|
+
if (options.capturedDynamicUsageBeforeContextCleanup?.() === true || options.consumeDynamicUsage()) outcome = {
|
|
65
|
+
cacheable: false,
|
|
66
|
+
dynamicUsage: true,
|
|
67
|
+
reason: "dynamic API used during render"
|
|
68
|
+
};
|
|
69
|
+
else if (options.isStaticEligible === false) outcome = {
|
|
70
|
+
cacheable: false,
|
|
71
|
+
reason: "route is not statically generated"
|
|
72
|
+
};
|
|
73
|
+
else if (response.headers.has("set-cookie") || hasExplicitNonCacheableResponsePolicy(response.headers)) outcome = {
|
|
74
|
+
cacheable: false,
|
|
75
|
+
reason: "response explicitly opts out of shared caching"
|
|
76
|
+
};
|
|
77
|
+
else {
|
|
78
|
+
const cacheControl = resolveAppPageCacheControl({
|
|
79
|
+
expireSeconds: options.expireSeconds,
|
|
80
|
+
requestCacheLife: options.getRequestCacheLife?.(),
|
|
81
|
+
revalidateSeconds: options.revalidateSeconds
|
|
82
|
+
});
|
|
83
|
+
outcome = cacheControl ? {
|
|
84
|
+
cacheable: true,
|
|
85
|
+
cacheControl: appPageCacheControlHeader(cacheControl),
|
|
86
|
+
...observationState && !observationState.requestApis.includes("searchParams") ? { searchParamsUnread: true } : {},
|
|
87
|
+
tags: options.getPageTags()
|
|
88
|
+
} : {
|
|
89
|
+
cacheable: false,
|
|
90
|
+
reason: "render did not produce a cache policy"
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
complete(outcome);
|
|
94
|
+
};
|
|
95
|
+
if (!response.body) {
|
|
96
|
+
finish();
|
|
97
|
+
return response;
|
|
98
|
+
}
|
|
99
|
+
return new Response(deferUntilStreamConsumed(response.body, finish), {
|
|
100
|
+
headers: response.headers,
|
|
101
|
+
status: response.status,
|
|
102
|
+
statusText: response.statusText
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Complete probe/admission classification for an App Page response that does
|
|
107
|
+
* not enter the ISR cache-write path. Ordinary requests pass through unchanged.
|
|
108
|
+
*/
|
|
109
|
+
function finalizeAppPageCacheabilityEvaluationResponse(response, options) {
|
|
110
|
+
return finalizeEvaluatedAppPageResponse(response, options) ?? response;
|
|
111
|
+
}
|
|
46
112
|
function finalizeAppPageHtmlCacheResponse(response, options) {
|
|
113
|
+
const probeResponse = finalizeEvaluatedAppPageResponse(response, options);
|
|
114
|
+
if (probeResponse) {
|
|
115
|
+
if (options.capturedRscDataPromise) {
|
|
116
|
+
const adapter = getCdnCacheAdapter();
|
|
117
|
+
if (adapter.captureAppPageRscData) adapter.captureAppPageRscData(options.capturedRscDataPromise);
|
|
118
|
+
else options.capturedRscDataPromise.catch(() => {});
|
|
119
|
+
}
|
|
120
|
+
return probeResponse;
|
|
121
|
+
}
|
|
122
|
+
if (options.bypassInterceptionContextCache === true) {
|
|
123
|
+
options.capturedRscDataPromise?.catch(() => {});
|
|
124
|
+
const headers = new Headers(response.headers);
|
|
125
|
+
applyUncacheableVariantNoStoreHeaders(headers, { omitCacheState: options.omitPendingDynamicCacheState === true });
|
|
126
|
+
const clientResponse = new Response(response.body, {
|
|
127
|
+
status: response.status,
|
|
128
|
+
statusText: response.statusText,
|
|
129
|
+
headers
|
|
130
|
+
});
|
|
131
|
+
markFrameworkLinkHeaders(clientResponse.headers, options.linkHeader);
|
|
132
|
+
return clientResponse;
|
|
133
|
+
}
|
|
47
134
|
if (!response.body) return response;
|
|
48
135
|
const [streamForClient, streamForCache] = response.body.tee();
|
|
49
136
|
const htmlKey = options.isrHtmlKey(options.cleanPathname);
|
|
@@ -52,7 +139,7 @@ function finalizeAppPageHtmlCacheResponse(response, options) {
|
|
|
52
139
|
if (options.preserveClientResponseHeaders !== true) applyPendingDynamicCdnHeaders(clientHeaders, options.getPageTags(), { omitCacheState: options.omitPendingDynamicCacheState === true });
|
|
53
140
|
const cachePromise = (async () => {
|
|
54
141
|
try {
|
|
55
|
-
|
|
142
|
+
let cachedHtml = await readStreamAsText(streamForCache);
|
|
56
143
|
if (options.capturedDynamicUsageBeforeContextCleanup?.() === true || options.consumeDynamicUsage()) {
|
|
57
144
|
options.isrDebug?.("HTML cache write skipped (dynamic usage during render)", htmlKey);
|
|
58
145
|
return;
|
|
@@ -66,17 +153,25 @@ function finalizeAppPageHtmlCacheResponse(response, options) {
|
|
|
66
153
|
options.isrDebug?.("HTML cache write skipped (no cache policy)", htmlKey);
|
|
67
154
|
return;
|
|
68
155
|
}
|
|
156
|
+
if (options.clientTraceMetadataMarker) {
|
|
157
|
+
const { stripClientTraceMetadataBlock } = await import("./client-trace-metadata.js");
|
|
158
|
+
cachedHtml = stripClientTraceMetadataBlock(cachedHtml, options.clientTraceMetadataMarker);
|
|
159
|
+
}
|
|
69
160
|
const pageTags = options.getPageTags();
|
|
70
161
|
const observationState = options.consumeRenderObservationState?.() ?? createEmptyAppPageRenderObservationState();
|
|
71
|
-
const htmlRenderObservation = options.createHtmlRenderObservation
|
|
162
|
+
const htmlRenderObservation = options.createHtmlRenderObservation({
|
|
72
163
|
cacheTags: pageTags,
|
|
73
164
|
state: observationState
|
|
74
165
|
});
|
|
75
|
-
const rscRenderObservation = options.createRscRenderObservation
|
|
166
|
+
const rscRenderObservation = options.createRscRenderObservation({
|
|
76
167
|
cacheTags: pageTags,
|
|
77
168
|
state: observationState
|
|
78
169
|
});
|
|
79
170
|
const linkHeader = options.linkHeader;
|
|
171
|
+
if (!hasQueryInvariantRenderProof(htmlRenderObservation) || !hasQueryInvariantRenderProof(rscRenderObservation)) {
|
|
172
|
+
options.isrDebug?.("HTML cache write skipped (searchParams not proven unread)", htmlKey);
|
|
173
|
+
return;
|
|
174
|
+
}
|
|
80
175
|
const writes = [options.isrSet(htmlKey, buildAppPageCacheValue(cachedHtml, void 0, 200, htmlRenderObservation, linkHeader ? { link: linkHeader } : void 0), {
|
|
81
176
|
cacheControl,
|
|
82
177
|
tags: pageTags
|
|
@@ -101,11 +196,16 @@ function finalizeAppPageHtmlCacheResponse(response, options) {
|
|
|
101
196
|
return clientResponse;
|
|
102
197
|
}
|
|
103
198
|
function finalizeAppPageRscCacheResponse(response, options) {
|
|
199
|
+
const probeResponse = finalizeEvaluatedAppPageResponse(response, options);
|
|
200
|
+
if (probeResponse) {
|
|
201
|
+
options.capturedRscDataPromise?.catch(() => {});
|
|
202
|
+
return probeResponse;
|
|
203
|
+
}
|
|
104
204
|
scheduleAppPageRscCacheWrite(options);
|
|
105
|
-
const isUncacheableVariant = Boolean(options.mountedSlotsHeader);
|
|
205
|
+
const isUncacheableVariant = Boolean(options.mountedSlotsHeader) || options.bypassInterceptionContextCache === true;
|
|
106
206
|
if (options.preserveClientResponseHeaders === true && !isUncacheableVariant) return response;
|
|
107
207
|
const clientHeaders = new Headers(response.headers);
|
|
108
|
-
if (isUncacheableVariant)
|
|
208
|
+
if (isUncacheableVariant) applyUncacheableVariantNoStoreHeaders(clientHeaders, { omitCacheState: options.omitPendingDynamicCacheState === true });
|
|
109
209
|
else applyPendingDynamicCdnHeaders(clientHeaders, options.getPageTags(), { omitCacheState: options.omitPendingDynamicCacheState === true });
|
|
110
210
|
return new Response(response.body, {
|
|
111
211
|
status: response.status,
|
|
@@ -115,7 +215,7 @@ function finalizeAppPageRscCacheResponse(response, options) {
|
|
|
115
215
|
}
|
|
116
216
|
function scheduleAppPageRscCacheWrite(options) {
|
|
117
217
|
const capturedRscDataPromise = options.capturedRscDataPromise;
|
|
118
|
-
if (!capturedRscDataPromise || options.dynamicUsedDuringBuild || options.mountedSlotsHeader) return false;
|
|
218
|
+
if (!capturedRscDataPromise || options.dynamicUsedDuringBuild || options.mountedSlotsHeader || options.bypassInterceptionContextCache === true) return false;
|
|
119
219
|
const rscKey = options.isrRscKey(options.cleanPathname, null, options.renderMode, options.interceptionContext, options.interceptionId);
|
|
120
220
|
const cachePromise = (async () => {
|
|
121
221
|
try {
|
|
@@ -135,10 +235,14 @@ function scheduleAppPageRscCacheWrite(options) {
|
|
|
135
235
|
}
|
|
136
236
|
const pageTags = options.getPageTags();
|
|
137
237
|
const observationState = options.consumeRenderObservationState?.() ?? createEmptyAppPageRenderObservationState();
|
|
138
|
-
const rscRenderObservation = options.createRscRenderObservation
|
|
238
|
+
const rscRenderObservation = options.createRscRenderObservation({
|
|
139
239
|
cacheTags: pageTags,
|
|
140
240
|
state: observationState
|
|
141
241
|
});
|
|
242
|
+
if (!hasQueryInvariantRenderProof(rscRenderObservation)) {
|
|
243
|
+
options.isrDebug?.("RSC cache write skipped (searchParams not proven unread)", rscKey);
|
|
244
|
+
return;
|
|
245
|
+
}
|
|
142
246
|
await options.isrSet(rscKey, buildAppPageCacheValue("", rscData, 200, rscRenderObservation), {
|
|
143
247
|
cacheControl,
|
|
144
248
|
tags: pageTags
|
|
@@ -152,4 +256,4 @@ function scheduleAppPageRscCacheWrite(options) {
|
|
|
152
256
|
return true;
|
|
153
257
|
}
|
|
154
258
|
//#endregion
|
|
155
|
-
export { finalizeAppPageHtmlCacheResponse, finalizeAppPageRscCacheResponse, scheduleAppPageRscCacheWrite };
|
|
259
|
+
export { finalizeAppPageCacheabilityEvaluationResponse, finalizeAppPageHtmlCacheResponse, finalizeAppPageRscCacheResponse, scheduleAppPageRscCacheWrite };
|
|
@@ -12,7 +12,7 @@ type AppPageCacheRoute = {
|
|
|
12
12
|
pattern: string;
|
|
13
13
|
routeSegments: readonly string[];
|
|
14
14
|
};
|
|
15
|
-
type RenderAppPageCacheArtifactsOptions = {
|
|
15
|
+
export type RenderAppPageCacheArtifactsOptions = {
|
|
16
16
|
basePath?: string;
|
|
17
17
|
captureRscData: boolean;
|
|
18
18
|
cleanPathname: string;
|
|
@@ -25,7 +25,9 @@ type RenderAppPageCacheArtifactsOptions = {
|
|
|
25
25
|
loadSsrHandler: () => Promise<AppPageSsrHandler>;
|
|
26
26
|
mountedSlotsHeader?: string | null;
|
|
27
27
|
navigationParams: Record<string, unknown>;
|
|
28
|
+
isCapturedRscError?: (error: unknown) => boolean;
|
|
28
29
|
onError: (error: unknown, requestInfo: unknown, errorContext: unknown) => unknown;
|
|
30
|
+
onSsrError?: (error: unknown) => unknown;
|
|
29
31
|
reactMaxHeadersLength?: number;
|
|
30
32
|
renderToReadableStream: (element: AppPageRenderableElement, options: {
|
|
31
33
|
onError: (error: unknown, requestInfo: unknown, errorContext: unknown) => unknown;
|
|
@@ -35,7 +37,7 @@ type RenderAppPageCacheArtifactsOptions = {
|
|
|
35
37
|
waitForAllReady?: boolean;
|
|
36
38
|
isForceStatic?: boolean;
|
|
37
39
|
};
|
|
38
|
-
type RenderAppPageCacheArtifactsResult = {
|
|
40
|
+
export type RenderAppPageCacheArtifactsResult = {
|
|
39
41
|
cacheControl?: CacheControlMetadata;
|
|
40
42
|
html: string;
|
|
41
43
|
htmlRenderObservation: ReturnType<typeof createAppPageRenderObservation>;
|
|
@@ -43,6 +45,8 @@ type RenderAppPageCacheArtifactsResult = {
|
|
|
43
45
|
rscData?: ArrayBuffer;
|
|
44
46
|
rscRenderObservation?: ReturnType<typeof createAppPageRenderObservation>;
|
|
45
47
|
tags: string[];
|
|
48
|
+
/** The render used a dynamic API, so its output must not be stored. */
|
|
49
|
+
usedDynamicApi: boolean;
|
|
46
50
|
};
|
|
47
51
|
/**
|
|
48
52
|
* Render an App page element to HTML (and optionally its RSC payload) for cache
|
|
@@ -50,6 +54,5 @@ type RenderAppPageCacheArtifactsResult = {
|
|
|
50
54
|
* cache-tag construction used by both normal ISR revalidation and PPR fallback
|
|
51
55
|
* shell regeneration.
|
|
52
56
|
*/
|
|
53
|
-
declare function renderAppPageCacheArtifacts(options: RenderAppPageCacheArtifactsOptions): Promise<RenderAppPageCacheArtifactsResult>;
|
|
54
|
-
//#endregion
|
|
55
|
-
export { RenderAppPageCacheArtifactsOptions, RenderAppPageCacheArtifactsResult, renderAppPageCacheArtifacts };
|
|
57
|
+
export declare function renderAppPageCacheArtifacts(options: RenderAppPageCacheArtifactsOptions): Promise<RenderAppPageCacheArtifactsResult>;
|
|
58
|
+
//#endregion
|
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
import { consumeDynamicUsage, consumeInvalidDynamicUsageError } from "../shims/headers.js";
|
|
1
|
+
import { consumeDynamicUsage, consumeInvalidDynamicUsageError, isRenderDynamicLatched } from "../shims/headers.js";
|
|
2
2
|
import { _consumeRequestScopedCacheLife } from "../shims/cache-request-state.js";
|
|
3
3
|
import { getCollectedFetchTags } from "../shims/fetch-cache.js";
|
|
4
4
|
import { readStreamAsText } from "../utils/text-stream.js";
|
|
5
5
|
import { buildAppPageFontLinkHeader, teeAppPageRscStreamForCapture } from "./app-page-execution.js";
|
|
6
|
+
import { recordAppPageRenderError, traceAppPageRender } from "./app-page-tracing.js";
|
|
6
7
|
import { buildAppPageTags } from "./implicit-tags.js";
|
|
7
8
|
import { consumeAppPageRenderObservationState, createAppPageHtmlOutputScope, createAppPageRenderObservation, createAppPageRscOutputScope } from "./app-page-render-observation.js";
|
|
8
|
-
import { buildAppPageLinkHeader, isAppSsrRenderResult } from "./app-page-stream.js";
|
|
9
|
+
import { buildAppPageLinkHeader, createAppPageSsrErrorHandler, isAppSsrRenderResult } from "./app-page-stream.js";
|
|
9
10
|
//#region src/server/app-page-cache-render.ts
|
|
10
11
|
/**
|
|
11
12
|
* Render an App page element to HTML (and optionally its RSC payload) for cache
|
|
@@ -14,7 +15,14 @@ import { buildAppPageLinkHeader, isAppSsrRenderResult } from "./app-page-stream.
|
|
|
14
15
|
* shell regeneration.
|
|
15
16
|
*/
|
|
16
17
|
async function renderAppPageCacheArtifacts(options) {
|
|
17
|
-
|
|
18
|
+
return traceAppPageRender(options.route.pattern, "prerender", (renderSpan) => renderAppPageCacheArtifactsImpl(options, renderSpan));
|
|
19
|
+
}
|
|
20
|
+
async function renderAppPageCacheArtifactsImpl(options, renderSpan) {
|
|
21
|
+
const rscStream = options.renderToReadableStream(options.element, { onError(error, requestInfo, errorContext) {
|
|
22
|
+
recordAppPageRenderError(renderSpan, error);
|
|
23
|
+
return options.onError(error, requestInfo, errorContext);
|
|
24
|
+
} });
|
|
25
|
+
const rscCapture = teeAppPageRscStreamForCapture(rscStream, options.captureRscData);
|
|
18
26
|
const capturedRscDataRef = { value: null };
|
|
19
27
|
const fontPreloads = options.getFontPreloads();
|
|
20
28
|
const htmlResult = await (await options.loadSsrHandler()).handleSsr(rscCapture.ssrStream, options.getNavigationContext(), {
|
|
@@ -29,13 +37,21 @@ async function renderAppPageCacheArtifacts(options) {
|
|
|
29
37
|
waitForAllReady: options.waitForAllReady,
|
|
30
38
|
isStaticGeneration: true,
|
|
31
39
|
isForceStatic: options.isForceStatic,
|
|
40
|
+
onSsrError: options.onSsrError && options.isCapturedRscError ? createAppPageSsrErrorHandler((error) => {
|
|
41
|
+
recordAppPageRenderError(renderSpan, error);
|
|
42
|
+
return options.onSsrError?.(error);
|
|
43
|
+
}, options.isCapturedRscError) : options.onSsrError ? (error) => {
|
|
44
|
+
recordAppPageRenderError(renderSpan, error);
|
|
45
|
+
return options.onSsrError?.(error);
|
|
46
|
+
} : void 0,
|
|
32
47
|
...rscCapture.sideStream ? {
|
|
33
48
|
sideStream: rscCapture.sideStream,
|
|
34
49
|
capturedRscDataRef
|
|
35
50
|
} : {}
|
|
36
51
|
});
|
|
37
52
|
const htmlStream = isAppSsrRenderResult(htmlResult) ? htmlResult.htmlStream : htmlResult;
|
|
38
|
-
const
|
|
53
|
+
const reactLinkHeader = isAppSsrRenderResult(htmlResult) ? htmlResult.linkHeader : void 0;
|
|
54
|
+
const linkHeader = buildAppPageLinkHeader(reactLinkHeader, buildAppPageFontLinkHeader(fontPreloads), options.reactMaxHeadersLength);
|
|
39
55
|
const html = await readStreamAsText(htmlStream);
|
|
40
56
|
let rscData;
|
|
41
57
|
if (options.captureRscData) {
|
|
@@ -47,7 +63,7 @@ async function renderAppPageCacheArtifacts(options) {
|
|
|
47
63
|
const tags = buildAppPageTags(options.cleanPathname, getCollectedFetchTags(), options.route.routeSegments);
|
|
48
64
|
const observationState = consumeAppPageRenderObservationState();
|
|
49
65
|
consumeInvalidDynamicUsageError();
|
|
50
|
-
consumeDynamicUsage();
|
|
66
|
+
const usedDynamicApi = consumeDynamicUsage() || isRenderDynamicLatched();
|
|
51
67
|
const result = {
|
|
52
68
|
html,
|
|
53
69
|
htmlRenderObservation: createAppPageRenderObservation({
|
|
@@ -67,6 +83,7 @@ async function renderAppPageCacheArtifacts(options) {
|
|
|
67
83
|
}),
|
|
68
84
|
...linkHeader ? { linkHeader } : {},
|
|
69
85
|
tags,
|
|
86
|
+
usedDynamicApi,
|
|
70
87
|
cacheControl: typeof cacheLife?.revalidate === "number" ? {
|
|
71
88
|
revalidate: cacheLife.revalidate,
|
|
72
89
|
expire: cacheLife.expire,
|
|
@@ -8,7 +8,7 @@ type AppPageDebugLogger = (event: string, detail: string) => void;
|
|
|
8
8
|
type AppPageCacheGetter = (key: string) => Promise<ISRCacheEntry | null>;
|
|
9
9
|
type AppPageBackgroundRegenerator = (key: string, renderFn: () => Promise<void>) => void;
|
|
10
10
|
type AppPageRscCacheKeyBuilder = (pathname: string, mountedSlotsHeader?: string | null, renderMode?: AppRscRenderMode, interceptionContext?: string | null, interceptionId?: string | null) => string;
|
|
11
|
-
type AppPageCacheOutcomeMetric = Readonly<{
|
|
11
|
+
export type AppPageCacheOutcomeMetric = Readonly<{
|
|
12
12
|
artifact: "html" | "rsc";
|
|
13
13
|
/**
|
|
14
14
|
* Internal cache lookup key for debugging and tests. Runtime telemetry sinks should hash or
|
|
@@ -22,11 +22,18 @@ type AppPageCacheOutcomeRecorder = (metric: AppPageCacheOutcomeMetric) => void;
|
|
|
22
22
|
type AppPageCacheRenderResult = {
|
|
23
23
|
cacheControl?: CacheControlMetadata;
|
|
24
24
|
html: string;
|
|
25
|
-
htmlRenderObservation
|
|
25
|
+
htmlRenderObservation: RenderObservation;
|
|
26
26
|
linkHeader?: string;
|
|
27
27
|
rscData: ArrayBuffer;
|
|
28
|
-
rscRenderObservation
|
|
28
|
+
rscRenderObservation: RenderObservation;
|
|
29
|
+
/**
|
|
30
|
+
* The route-level revalidate of the route this render regenerated, or null
|
|
31
|
+
* when it has none and the render's cacheLife sets it. Undefined keeps the
|
|
32
|
+
* matched route's read seed, as when the render regenerated that route.
|
|
33
|
+
*/
|
|
34
|
+
revalidateSeconds?: number | null;
|
|
29
35
|
tags: string[];
|
|
36
|
+
usedDynamicApi: boolean;
|
|
30
37
|
};
|
|
31
38
|
type BuildAppPageCachedResponseOptions = {
|
|
32
39
|
cacheControl?: CacheControlMetadata;
|
|
@@ -37,12 +44,17 @@ type BuildAppPageCachedResponseOptions = {
|
|
|
37
44
|
middlewareHeaders?: Headers | null;
|
|
38
45
|
middlewareStatus?: number | null;
|
|
39
46
|
mountedSlotsHeader?: string | null;
|
|
47
|
+
/** The current request's route params, which the client reads on RSC responses. */
|
|
48
|
+
params?: Record<string, string | string[]>;
|
|
49
|
+
/** The current request's path and query, which the client reads on RSC responses. */
|
|
50
|
+
renderedPathAndSearch?: string | null;
|
|
40
51
|
revalidateSeconds: number;
|
|
41
52
|
};
|
|
42
53
|
type ReadAppPageCacheResponseOptions = {
|
|
43
54
|
cleanPathname: string;
|
|
44
55
|
clearRequestContext: () => void;
|
|
45
56
|
isEdgeRuntime?: boolean;
|
|
57
|
+
isRoutePPREnabled?: boolean;
|
|
46
58
|
isRscRequest: boolean;
|
|
47
59
|
isrDebug?: AppPageDebugLogger;
|
|
48
60
|
isrGet: AppPageCacheGetter;
|
|
@@ -55,7 +67,14 @@ type ReadAppPageCacheResponseOptions = {
|
|
|
55
67
|
middlewareHeaders?: Headers | null;
|
|
56
68
|
middlewareStatus?: number | null;
|
|
57
69
|
mountedSlotsHeader?: string | null;
|
|
70
|
+
/**
|
|
71
|
+
* Resolves the current request's route params for a cached RSC response.
|
|
72
|
+
* Called only once an entry can answer the request, since resolving them
|
|
73
|
+
* may load route modules.
|
|
74
|
+
*/
|
|
75
|
+
resolveParams?: () => Promise<Record<string, string | string[]>>;
|
|
58
76
|
recordCacheOutcome?: AppPageCacheOutcomeRecorder;
|
|
77
|
+
renderedPathAndSearch?: string | null;
|
|
59
78
|
renderMode?: AppRscRenderMode;
|
|
60
79
|
expireSeconds?: number;
|
|
61
80
|
revalidateSeconds: number;
|
|
@@ -75,10 +94,10 @@ type ReadAppPageFallbackShellCacheResponseOptions = {
|
|
|
75
94
|
revalidateSeconds: number;
|
|
76
95
|
rewriteHtml: (html: string) => string;
|
|
77
96
|
};
|
|
78
|
-
declare function buildAppPageCacheTags(pathname: string, extraTags: readonly string[]): string[];
|
|
79
|
-
declare function buildAppRouteCacheTags(pathname: string, extraTags: readonly string[], routeSegments: readonly string[]): string[];
|
|
80
|
-
declare function buildAppPageCachedResponse(cachedValue: CachedAppPageValue, options: BuildAppPageCachedResponseOptions): Response | null;
|
|
81
|
-
declare function readAppPageCacheResponse(options: ReadAppPageCacheResponseOptions): Promise<Response | null>;
|
|
82
|
-
declare function readAppPageFallbackShellCacheResponse(options: ReadAppPageFallbackShellCacheResponseOptions): Promise<Response | null>;
|
|
97
|
+
export declare function buildAppPageCacheTags(pathname: string, extraTags: readonly string[]): string[];
|
|
98
|
+
export declare function buildAppRouteCacheTags(pathname: string, extraTags: readonly string[], routeSegments: readonly string[]): string[];
|
|
99
|
+
export declare function buildAppPageCachedResponse(cachedValue: CachedAppPageValue, options: BuildAppPageCachedResponseOptions): Response | null;
|
|
100
|
+
export declare function readAppPageCacheResponse(options: ReadAppPageCacheResponseOptions): Promise<Response | null>;
|
|
101
|
+
export declare function readAppPageFallbackShellCacheResponse(options: ReadAppPageFallbackShellCacheResponseOptions): Promise<Response | null>;
|
|
83
102
|
//#endregion
|
|
84
|
-
export {
|
|
103
|
+
export { finalizeAppPageHtmlCacheResponse, finalizeAppPageRscCacheResponse, scheduleAppPageRscCacheWrite };
|
|
@@ -1,15 +1,16 @@
|
|
|
1
|
-
import { VINEXT_MOUNTED_SLOTS_HEADER } from "./
|
|
2
|
-
import {
|
|
1
|
+
import { VINEXT_MOUNTED_SLOTS_HEADER, VINEXT_RSC_VARY_HEADER } from "./app-rsc-vary.js";
|
|
2
|
+
import { VINEXT_PARAMS_HEADER, VINEXT_RENDERED_PATH_AND_SEARCH_HEADER } from "./headers.js";
|
|
3
3
|
import { applyCdnResponseHeaders } from "./cache-control.js";
|
|
4
4
|
import { decideIsr } from "./isr-decision.js";
|
|
5
|
-
import { buildAppPageCacheValue, isrCacheControl } from "./isr-cache.js";
|
|
5
|
+
import { buildAppPageCacheValue, isrCacheControl, resolveRouteExpireSeconds } from "./isr-cache.js";
|
|
6
|
+
import { resolveClientStaleTimeSeconds } from "../utils/cache-control-metadata.js";
|
|
6
7
|
import { encodeCacheTag } from "../utils/encode-cache-tag.js";
|
|
7
8
|
import { setCacheStateHeaders } from "./cache-headers.js";
|
|
8
|
-
import { VINEXT_RSC_CONTENT_TYPE,
|
|
9
|
+
import { VINEXT_RSC_CONTENT_TYPE, applyRscCompatibilityIdHeader, applyRscDeploymentIdHeader } from "./app-rsc-cache-busting.js";
|
|
9
10
|
import { mergeMiddlewareResponseHeaders } from "./middleware-response-headers.js";
|
|
10
11
|
import { markFrameworkLinkHeaders } from "./app-response-header-provenance.js";
|
|
11
12
|
import { applyClientStaleTimeHeader, applyEdgeRuntimeHeader } from "./app-page-response.js";
|
|
12
|
-
import {
|
|
13
|
+
import { hasQueryInvariantRenderProof } from "./cache-proof.js";
|
|
13
14
|
import { isAppPprDynamicFallbackShellHtml } from "./app-ppr-fallback-shell.js";
|
|
14
15
|
import { buildPageCacheTags } from "./implicit-tags.js";
|
|
15
16
|
import { finalizeAppPageHtmlCacheResponse, finalizeAppPageRscCacheResponse, scheduleAppPageRscCacheWrite } from "./app-page-cache-finalizer.js";
|
|
@@ -49,28 +50,44 @@ function buildAppPageCachedHeaders(options) {
|
|
|
49
50
|
applyCdnResponseHeaders(headers, { cacheControl: options.cacheControl });
|
|
50
51
|
setCacheStateHeaders(headers, options.cacheState);
|
|
51
52
|
applyEdgeRuntimeHeader(headers, options.isEdgeRuntime);
|
|
53
|
+
if (options.params && Object.keys(options.params).length > 0) headers.set(VINEXT_PARAMS_HEADER, encodeURIComponent(JSON.stringify(options.params)));
|
|
52
54
|
if (options.mountedSlotsHeader) headers.set(VINEXT_MOUNTED_SLOTS_HEADER, options.mountedSlotsHeader);
|
|
53
55
|
applyClientStaleTimeHeader(headers, options.staleTimeSeconds);
|
|
54
56
|
mergeMiddlewareResponseHeaders(headers, options.middlewareHeaders ?? null);
|
|
55
|
-
if (options.linkHeader)
|
|
56
|
-
|
|
57
|
+
if (options.linkHeader) {
|
|
58
|
+
if (Array.isArray(options.linkHeader)) for (const value of options.linkHeader) headers.append("Link", value);
|
|
59
|
+
else headers.append("Link", options.linkHeader);
|
|
60
|
+
}
|
|
57
61
|
return headers;
|
|
58
62
|
}
|
|
59
63
|
function getCachedAppPageValue(entry) {
|
|
60
64
|
return entry?.value.value && entry.value.value.kind === "APP_PAGE" ? entry.value.value : null;
|
|
61
65
|
}
|
|
62
|
-
function hasQueryInvariantAppPageProof(cachedValue) {
|
|
63
|
-
return cachedValue.renderObservation !== void 0 && hasCompleteNegativeRequestApiProof(cachedValue.renderObservation, ["searchParams"]);
|
|
64
|
-
}
|
|
65
66
|
function resolveRegeneratedAppPageCacheControl(options) {
|
|
66
|
-
let revalidateSeconds = options.routeRevalidateSeconds;
|
|
67
67
|
const renderRevalidateSeconds = options.renderCacheControl?.revalidate;
|
|
68
|
-
|
|
68
|
+
let revalidateSeconds;
|
|
69
|
+
if (typeof renderRevalidateSeconds === "number") revalidateSeconds = options.routeRevalidateSeconds === null ? renderRevalidateSeconds : Math.min(options.routeRevalidateSeconds, renderRevalidateSeconds);
|
|
70
|
+
else revalidateSeconds = options.routeRevalidateSeconds ?? 0;
|
|
69
71
|
return isrCacheControl(revalidateSeconds, {
|
|
70
|
-
expireSeconds: options.renderCacheControl?.expire ?? options.expireSeconds,
|
|
72
|
+
expireSeconds: options.renderCacheControl?.expire ?? resolveRouteExpireSeconds(revalidateSeconds, options.expireSeconds),
|
|
71
73
|
staleSeconds: resolveClientStaleTimeSeconds(options.renderCacheControl)
|
|
72
74
|
});
|
|
73
75
|
}
|
|
76
|
+
/**
|
|
77
|
+
* When a regeneration fails, Next.js re-stores the previous entry with a short
|
|
78
|
+
* revalidate so it isn't retried on every request
|
|
79
|
+
* (`server/response-cache/index.ts`). `revalidate = false`, which vinext holds
|
|
80
|
+
* as Infinity, retries after 3 s like Next.js's `revalidate || 3`.
|
|
81
|
+
*/
|
|
82
|
+
function resolveRegenerationFailureCacheControl(previous) {
|
|
83
|
+
const previousRevalidate = typeof previous.revalidate === "number" && Number.isFinite(previous.revalidate) ? previous.revalidate : 0;
|
|
84
|
+
const revalidate = Math.min(Math.max(previousRevalidate || 3, 3), 30);
|
|
85
|
+
return {
|
|
86
|
+
revalidate,
|
|
87
|
+
...previous.expire === void 0 ? {} : { expire: Math.max(revalidate + 3, previous.expire) },
|
|
88
|
+
...previous.stale === void 0 ? {} : { stale: previous.stale }
|
|
89
|
+
};
|
|
90
|
+
}
|
|
74
91
|
function buildAppPageCachedResponse(cachedValue, options) {
|
|
75
92
|
const status = options.middlewareStatus ?? (cachedValue.status || 200);
|
|
76
93
|
const { cacheControl } = decideIsr({
|
|
@@ -90,8 +107,10 @@ function buildAppPageCachedResponse(cachedValue, options) {
|
|
|
90
107
|
isEdgeRuntime: options.isEdgeRuntime,
|
|
91
108
|
middlewareHeaders: options.middlewareHeaders,
|
|
92
109
|
mountedSlotsHeader: options.mountedSlotsHeader,
|
|
110
|
+
params: options.params,
|
|
93
111
|
staleTimeSeconds
|
|
94
112
|
});
|
|
113
|
+
if (options.renderedPathAndSearch) rscHeaders.set(VINEXT_RENDERED_PATH_AND_SEARCH_HEADER, encodeURIComponent(options.renderedPathAndSearch));
|
|
95
114
|
applyRscCompatibilityIdHeader(rscHeaders);
|
|
96
115
|
applyRscDeploymentIdHeader(rscHeaders);
|
|
97
116
|
return new Response(cachedValue.rscData, {
|
|
@@ -150,6 +169,16 @@ async function readAppPageCacheResponse(options) {
|
|
|
150
169
|
}
|
|
151
170
|
const isrKey = options.isRscRequest ? options.isrRscKey(options.cleanPathname, null, options.renderMode, options.interceptionContext, options.interceptionId) : options.isrHtmlKey(options.cleanPathname);
|
|
152
171
|
const artifact = options.isRscRequest ? "rsc" : "html";
|
|
172
|
+
let paramsFailure;
|
|
173
|
+
const resolveCachedResponseParams = async (cachedValue) => {
|
|
174
|
+
if (!options.isRscRequest || !cachedValue.rscData) return void 0;
|
|
175
|
+
try {
|
|
176
|
+
return await options.resolveParams?.();
|
|
177
|
+
} catch (error) {
|
|
178
|
+
paramsFailure = { error };
|
|
179
|
+
throw error;
|
|
180
|
+
}
|
|
181
|
+
};
|
|
153
182
|
try {
|
|
154
183
|
const cached = await options.isrGet(isrKey);
|
|
155
184
|
const cachedValue = getCachedAppPageValue(cached);
|
|
@@ -173,7 +202,7 @@ async function readAppPageCacheResponse(options) {
|
|
|
173
202
|
options.isrDebug?.("MISS (non app-page cache entry)", options.cleanPathname);
|
|
174
203
|
return null;
|
|
175
204
|
}
|
|
176
|
-
if (cachedValue && options.hasRequestSearchParams === true && !
|
|
205
|
+
if (cachedValue && options.hasRequestSearchParams === true && cachedValue.prerendered !== true && !hasQueryInvariantRenderProof(cachedValue.renderObservation)) {
|
|
177
206
|
recordAppPageCacheOutcome(options.recordCacheOutcome, {
|
|
178
207
|
artifact,
|
|
179
208
|
cacheKey: isrKey,
|
|
@@ -193,6 +222,8 @@ async function readAppPageCacheResponse(options) {
|
|
|
193
222
|
middlewareHeaders: options.middlewareHeaders,
|
|
194
223
|
middlewareStatus: options.middlewareStatus,
|
|
195
224
|
mountedSlotsHeader: options.mountedSlotsHeader,
|
|
225
|
+
params: await resolveCachedResponseParams(cachedValue),
|
|
226
|
+
renderedPathAndSearch: options.renderedPathAndSearch,
|
|
196
227
|
revalidateSeconds: options.revalidateSeconds
|
|
197
228
|
});
|
|
198
229
|
if (hitResponse) {
|
|
@@ -215,23 +246,60 @@ async function readAppPageCacheResponse(options) {
|
|
|
215
246
|
options.isrDebug?.("MISS (empty cached entry)", options.cleanPathname);
|
|
216
247
|
}
|
|
217
248
|
if (cached?.isStale && cachedValue) {
|
|
218
|
-
|
|
249
|
+
const keepPreviousEntry = async (key, previous) => {
|
|
250
|
+
const previousValue = getCachedAppPageValue(previous);
|
|
251
|
+
const previousCacheControl = previous.value.cacheControl;
|
|
252
|
+
const previousTags = previousValue?.renderObservation?.cacheTags;
|
|
253
|
+
if (!previousValue || !previousCacheControl || !previousTags || previous.isExpired) return;
|
|
254
|
+
try {
|
|
255
|
+
const current = await options.isrGet(key);
|
|
256
|
+
if (!current || current.value.lastModified === previous.value.lastModified) await options.isrSet(key, previousValue, {
|
|
257
|
+
cacheControl: resolveRegenerationFailureCacheControl(previousCacheControl),
|
|
258
|
+
tags: [...previousTags]
|
|
259
|
+
});
|
|
260
|
+
} catch (storeError) {
|
|
261
|
+
console.error(`[vinext] Failed to keep the previous entry for ${key}:`, storeError);
|
|
262
|
+
}
|
|
263
|
+
};
|
|
264
|
+
const regenerate = async () => {
|
|
219
265
|
const revalidatedPage = await options.renderFreshPageForCache();
|
|
220
266
|
const cacheControl = resolveRegeneratedAppPageCacheControl({
|
|
221
267
|
expireSeconds: options.expireSeconds,
|
|
222
268
|
renderCacheControl: revalidatedPage.cacheControl,
|
|
223
|
-
routeRevalidateSeconds: options.revalidateSeconds
|
|
269
|
+
routeRevalidateSeconds: revalidatedPage.revalidateSeconds === void 0 ? options.revalidateSeconds || null : revalidatedPage.revalidateSeconds
|
|
224
270
|
});
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
271
|
+
if (options.isRoutePPREnabled !== true && (revalidatedPage.usedDynamicApi || cacheControl.revalidate === 0)) throw new Error(`Page changed from static to dynamic at runtime ${options.cleanPathname}
|
|
272
|
+
see more here https://nextjs.org/docs/messages/app-static-to-dynamic-error`);
|
|
273
|
+
if (!hasQueryInvariantRenderProof(revalidatedPage.rscRenderObservation) || !options.isRscRequest && !hasQueryInvariantRenderProof(revalidatedPage.htmlRenderObservation)) {
|
|
274
|
+
options.isrDebug?.("regen write skipped (searchParams not proven unread)", isrKey);
|
|
275
|
+
return;
|
|
276
|
+
}
|
|
277
|
+
const rscKey = options.isRscRequest ? isrKey : options.isrRscKey(options.cleanPathname, null, options.renderMode, options.interceptionContext, options.interceptionId);
|
|
278
|
+
const store = async (key, value) => {
|
|
279
|
+
try {
|
|
280
|
+
await options.isrSet(key, value, {
|
|
281
|
+
cacheControl,
|
|
282
|
+
tags: revalidatedPage.tags
|
|
283
|
+
});
|
|
284
|
+
return true;
|
|
285
|
+
} catch (storeError) {
|
|
286
|
+
console.warn(`[vinext] Failed to update prerender cache for ${key}:`, storeError);
|
|
287
|
+
return false;
|
|
288
|
+
}
|
|
289
|
+
};
|
|
290
|
+
if (!await store(rscKey, buildAppPageCacheValue("", revalidatedPage.rscData, 200, revalidatedPage.rscRenderObservation))) return;
|
|
291
|
+
if (!options.isRscRequest) {
|
|
292
|
+
if (!await store(isrKey, buildAppPageCacheValue(revalidatedPage.html, void 0, 200, revalidatedPage.htmlRenderObservation, revalidatedPage.linkHeader ? { link: revalidatedPage.linkHeader } : void 0))) return;
|
|
293
|
+
}
|
|
234
294
|
options.isrDebug?.("regen complete", options.cleanPathname);
|
|
295
|
+
};
|
|
296
|
+
options.scheduleBackgroundRegeneration(isrKey, async () => {
|
|
297
|
+
try {
|
|
298
|
+
await regenerate();
|
|
299
|
+
} catch (error) {
|
|
300
|
+
await keepPreviousEntry(isrKey, cached);
|
|
301
|
+
throw error;
|
|
302
|
+
}
|
|
235
303
|
});
|
|
236
304
|
const staleResponse = buildAppPageCachedResponse(cachedValue, {
|
|
237
305
|
cacheState: "STALE",
|
|
@@ -242,6 +310,8 @@ async function readAppPageCacheResponse(options) {
|
|
|
242
310
|
middlewareHeaders: options.middlewareHeaders,
|
|
243
311
|
middlewareStatus: options.middlewareStatus,
|
|
244
312
|
mountedSlotsHeader: options.mountedSlotsHeader,
|
|
313
|
+
params: await resolveCachedResponseParams(cachedValue),
|
|
314
|
+
renderedPathAndSearch: options.renderedPathAndSearch,
|
|
245
315
|
revalidateSeconds: options.revalidateSeconds
|
|
246
316
|
});
|
|
247
317
|
if (staleResponse) {
|
|
@@ -273,6 +343,7 @@ async function readAppPageCacheResponse(options) {
|
|
|
273
343
|
options.isrDebug?.("MISS (no cache entry)", options.cleanPathname);
|
|
274
344
|
}
|
|
275
345
|
} catch (isrReadError) {
|
|
346
|
+
if (paramsFailure) throw paramsFailure.error;
|
|
276
347
|
recordAppPageCacheOutcome(options.recordCacheOutcome, {
|
|
277
348
|
artifact,
|
|
278
349
|
cacheKey: isrKey,
|