@qzsy/vinext 0.1.7
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/LICENSE +21 -0
- package/README.md +773 -0
- package/dist/build/assets-ignore.d.ts +32 -0
- package/dist/build/assets-ignore.js +48 -0
- package/dist/build/clean-output.d.ts +13 -0
- package/dist/build/clean-output.js +34 -0
- package/dist/build/client-build-config.d.ts +171 -0
- package/dist/build/client-build-config.js +270 -0
- package/dist/build/css-url-assets.d.ts +29 -0
- package/dist/build/css-url-assets.js +213 -0
- package/dist/build/google-fonts/build-url.d.ts +9 -0
- package/dist/build/google-fonts/build-url.js +28 -0
- package/dist/build/google-fonts/fallback-metrics-data.js +14029 -0
- package/dist/build/google-fonts/fallback-metrics.d.ts +12 -0
- package/dist/build/google-fonts/fallback-metrics.js +44 -0
- package/dist/build/google-fonts/find-font-files-in-css.d.ts +16 -0
- package/dist/build/google-fonts/find-font-files-in-css.js +28 -0
- package/dist/build/google-fonts/font-data.js +24983 -0
- package/dist/build/google-fonts/font-metadata.d.ts +16 -0
- package/dist/build/google-fonts/font-metadata.js +5 -0
- package/dist/build/google-fonts/get-axes.d.ts +6 -0
- package/dist/build/google-fonts/get-axes.js +37 -0
- package/dist/build/google-fonts/sort-variants.d.ts +4 -0
- package/dist/build/google-fonts/sort-variants.js +12 -0
- package/dist/build/google-fonts/validate.d.ts +27 -0
- package/dist/build/google-fonts/validate.js +54 -0
- package/dist/build/inline-css.d.ts +6 -0
- package/dist/build/inline-css.js +48 -0
- package/dist/build/layout-classification-types.d.ts +61 -0
- package/dist/build/layout-classification-types.js +1 -0
- package/dist/build/layout-classification.d.ts +59 -0
- package/dist/build/layout-classification.js +98 -0
- package/dist/build/next-client-runtime-manifests.d.ts +14 -0
- package/dist/build/next-client-runtime-manifests.js +39 -0
- package/dist/build/nitro-route-rules.d.ts +49 -0
- package/dist/build/nitro-route-rules.js +79 -0
- package/dist/build/precompress.d.ts +27 -0
- package/dist/build/precompress.js +110 -0
- package/dist/build/prerender.d.ts +209 -0
- package/dist/build/prerender.js +932 -0
- package/dist/build/report.d.ts +132 -0
- package/dist/build/report.js +504 -0
- package/dist/build/route-classification-injector.d.ts +34 -0
- package/dist/build/route-classification-injector.js +59 -0
- package/dist/build/route-classification-manifest.d.ts +52 -0
- package/dist/build/route-classification-manifest.js +143 -0
- package/dist/build/run-prerender.d.ts +61 -0
- package/dist/build/run-prerender.js +224 -0
- package/dist/build/server-manifest.d.ts +18 -0
- package/dist/build/server-manifest.js +22 -0
- package/dist/build/ssr-manifest.d.ts +18 -0
- package/dist/build/ssr-manifest.js +69 -0
- package/dist/build/standalone.d.ts +31 -0
- package/dist/build/standalone.js +203 -0
- package/dist/build/static-export.d.ts +55 -0
- package/dist/build/static-export.js +60 -0
- package/dist/cache/cache-adapters-virtual.d.ts +50 -0
- package/dist/cache/cache-adapters-virtual.js +45 -0
- package/dist/cache.d.ts +2 -0
- package/dist/cache.js +2 -0
- package/dist/check.d.ts +87 -0
- package/dist/check.js +1037 -0
- package/dist/cli-args.d.ts +33 -0
- package/dist/cli-args.js +124 -0
- package/dist/cli.d.ts +1 -0
- package/dist/cli.js +744 -0
- package/dist/client/app-nav-failure-handler.d.ts +8 -0
- package/dist/client/app-nav-failure-handler.js +44 -0
- package/dist/client/empty-module.d.ts +1 -0
- package/dist/client/empty-module.js +1 -0
- package/dist/client/instrumentation-client-inject.d.ts +33 -0
- package/dist/client/instrumentation-client-inject.js +55 -0
- package/dist/client/instrumentation-client-state.d.ts +9 -0
- package/dist/client/instrumentation-client-state.js +17 -0
- package/dist/client/instrumentation-client.d.ts +7 -0
- package/dist/client/instrumentation-client.js +6 -0
- package/dist/client/navigation-runtime.d.ts +70 -0
- package/dist/client/navigation-runtime.js +169 -0
- package/dist/client/pages-router-link-navigation.d.ts +61 -0
- package/dist/client/pages-router-link-navigation.js +42 -0
- package/dist/client/validate-module-path.d.ts +17 -0
- package/dist/client/validate-module-path.js +24 -0
- package/dist/client/vinext-next-data.d.ts +44 -0
- package/dist/client/vinext-next-data.js +50 -0
- package/dist/client/window-next.d.ts +168 -0
- package/dist/client/window-next.js +57 -0
- package/dist/cloudflare/index.d.ts +3 -0
- package/dist/cloudflare/index.js +3 -0
- package/dist/cloudflare/src/cache/cdn-adapter.runtime.js +102 -0
- package/dist/cloudflare/src/cache/kv-data-adapter.runtime.d.ts +126 -0
- package/dist/cloudflare/src/cache/kv-data-adapter.runtime.js +435 -0
- package/dist/cloudflare/src/utils/cache-control-metadata.js +20 -0
- package/dist/cloudflare/tpr.d.ts +82 -0
- package/dist/cloudflare/tpr.js +558 -0
- package/dist/config/config-matchers.d.ts +257 -0
- package/dist/config/config-matchers.js +1046 -0
- package/dist/config/dotenv.d.ts +56 -0
- package/dist/config/dotenv.js +88 -0
- package/dist/config/next-config.d.ts +540 -0
- package/dist/config/next-config.js +1050 -0
- package/dist/config/tsconfig-paths.d.ts +21 -0
- package/dist/config/tsconfig-paths.js +157 -0
- package/dist/deploy.d.ts +190 -0
- package/dist/deploy.js +1033 -0
- package/dist/entries/app-browser-entry.d.ts +29 -0
- package/dist/entries/app-browser-entry.js +83 -0
- package/dist/entries/app-rsc-entry.d.ts +81 -0
- package/dist/entries/app-rsc-entry.js +943 -0
- package/dist/entries/app-rsc-manifest.d.ts +53 -0
- package/dist/entries/app-rsc-manifest.js +294 -0
- package/dist/entries/app-ssr-entry.d.ts +15 -0
- package/dist/entries/app-ssr-entry.js +24 -0
- package/dist/entries/pages-client-entry.d.ts +11 -0
- package/dist/entries/pages-client-entry.js +204 -0
- package/dist/entries/pages-entry-helpers.d.ts +2 -0
- package/dist/entries/pages-entry-helpers.js +2 -0
- package/dist/entries/pages-server-entry.d.ts +11 -0
- package/dist/entries/pages-server-entry.js +398 -0
- package/dist/entries/runtime-entry-module.d.ts +25 -0
- package/dist/entries/runtime-entry-module.js +46 -0
- package/dist/index.d.ts +115 -0
- package/dist/index.js +2661 -0
- package/dist/init.d.ts +69 -0
- package/dist/init.js +253 -0
- package/dist/plugins/ast-utils.d.ts +20 -0
- package/dist/plugins/ast-utils.js +78 -0
- package/dist/plugins/async-hooks-stub.d.ts +18 -0
- package/dist/plugins/async-hooks-stub.js +40 -0
- package/dist/plugins/client-reference-dedup.d.ts +35 -0
- package/dist/plugins/client-reference-dedup.js +189 -0
- package/dist/plugins/css-data-url.d.ts +6 -0
- package/dist/plugins/css-data-url.js +83 -0
- package/dist/plugins/dynamic-preload-metadata.d.ts +13 -0
- package/dist/plugins/dynamic-preload-metadata.js +413 -0
- package/dist/plugins/extensionless-dynamic-import.d.ts +6 -0
- package/dist/plugins/extensionless-dynamic-import.js +155 -0
- package/dist/plugins/fonts.d.ts +95 -0
- package/dist/plugins/fonts.js +711 -0
- package/dist/plugins/import-meta-url.d.ts +16 -0
- package/dist/plugins/import-meta-url.js +353 -0
- package/dist/plugins/instrumentation-client.d.ts +6 -0
- package/dist/plugins/instrumentation-client.js +27 -0
- package/dist/plugins/middleware-export-validation.d.ts +5 -0
- package/dist/plugins/middleware-export-validation.js +36 -0
- package/dist/plugins/middleware-server-only.d.ts +53 -0
- package/dist/plugins/middleware-server-only.js +90 -0
- package/dist/plugins/og-asset-ownership.d.ts +27 -0
- package/dist/plugins/og-asset-ownership.js +285 -0
- package/dist/plugins/og-assets.d.ts +50 -0
- package/dist/plugins/og-assets.js +229 -0
- package/dist/plugins/optimize-imports.d.ts +42 -0
- package/dist/plugins/optimize-imports.js +587 -0
- package/dist/plugins/postcss.d.ts +26 -0
- package/dist/plugins/postcss.js +96 -0
- package/dist/plugins/remove-console.d.ts +21 -0
- package/dist/plugins/remove-console.js +177 -0
- package/dist/plugins/require-context.d.ts +6 -0
- package/dist/plugins/require-context.js +185 -0
- package/dist/plugins/rsc-client-reference-loaders.d.ts +6 -0
- package/dist/plugins/rsc-client-reference-loaders.js +46 -0
- package/dist/plugins/rsc-client-shim-excludes.d.ts +6 -0
- package/dist/plugins/rsc-client-shim-excludes.js +35 -0
- package/dist/plugins/sass.d.ts +62 -0
- package/dist/plugins/sass.js +268 -0
- package/dist/plugins/server-externals-manifest.d.ts +26 -0
- package/dist/plugins/server-externals-manifest.js +81 -0
- package/dist/plugins/strip-server-exports.d.ts +21 -0
- package/dist/plugins/strip-server-exports.js +519 -0
- package/dist/plugins/typeof-window.d.ts +14 -0
- package/dist/plugins/typeof-window.js +150 -0
- package/dist/plugins/wasm-module-import.d.ts +15 -0
- package/dist/plugins/wasm-module-import.js +50 -0
- package/dist/routing/app-route-graph.d.ts +336 -0
- package/dist/routing/app-route-graph.js +1518 -0
- package/dist/routing/app-router.d.ts +30 -0
- package/dist/routing/app-router.js +59 -0
- package/dist/routing/file-matcher.d.ts +60 -0
- package/dist/routing/file-matcher.js +147 -0
- package/dist/routing/pages-router.d.ts +48 -0
- package/dist/routing/pages-router.js +163 -0
- package/dist/routing/route-matching.d.ts +27 -0
- package/dist/routing/route-matching.js +42 -0
- package/dist/routing/route-pattern.d.ts +64 -0
- package/dist/routing/route-pattern.js +165 -0
- package/dist/routing/route-trie.d.ts +67 -0
- package/dist/routing/route-trie.js +143 -0
- package/dist/routing/route-validation.d.ts +10 -0
- package/dist/routing/route-validation.js +101 -0
- package/dist/routing/utils.d.ts +117 -0
- package/dist/routing/utils.js +242 -0
- package/dist/server/accept-encoding.d.ts +29 -0
- package/dist/server/accept-encoding.js +95 -0
- package/dist/server/api-handler.d.ts +17 -0
- package/dist/server/api-handler.js +276 -0
- package/dist/server/app-action-request.d.ts +4 -0
- package/dist/server/app-action-request.js +9 -0
- package/dist/server/app-bfcache-id.d.ts +5 -0
- package/dist/server/app-bfcache-id.js +5 -0
- package/dist/server/app-bfcache-identity.d.ts +36 -0
- package/dist/server/app-bfcache-identity.js +156 -0
- package/dist/server/app-browser-action-result.d.ts +64 -0
- package/dist/server/app-browser-action-result.js +111 -0
- package/dist/server/app-browser-client-reuse-manifest.d.ts +12 -0
- package/dist/server/app-browser-client-reuse-manifest.js +101 -0
- package/dist/server/app-browser-entry.d.ts +1 -0
- package/dist/server/app-browser-entry.js +1087 -0
- package/dist/server/app-browser-error.d.ts +13 -0
- package/dist/server/app-browser-error.js +52 -0
- package/dist/server/app-browser-history-controller.d.ts +104 -0
- package/dist/server/app-browser-history-controller.js +210 -0
- package/dist/server/app-browser-hydration.d.ts +32 -0
- package/dist/server/app-browser-hydration.js +29 -0
- package/dist/server/app-browser-interception-context.d.ts +24 -0
- package/dist/server/app-browser-interception-context.js +43 -0
- package/dist/server/app-browser-mpa-navigation.d.ts +16 -0
- package/dist/server/app-browser-mpa-navigation.js +42 -0
- package/dist/server/app-browser-navigation-controller.d.ts +109 -0
- package/dist/server/app-browser-navigation-controller.js +465 -0
- package/dist/server/app-browser-popstate.d.ts +26 -0
- package/dist/server/app-browser-popstate.js +44 -0
- package/dist/server/app-browser-rsc-redirect.d.ts +38 -0
- package/dist/server/app-browser-rsc-redirect.js +64 -0
- package/dist/server/app-browser-server-action-client.d.ts +32 -0
- package/dist/server/app-browser-server-action-client.js +128 -0
- package/dist/server/app-browser-server-action-navigation.d.ts +6 -0
- package/dist/server/app-browser-server-action-navigation.js +9 -0
- package/dist/server/app-browser-state.d.ts +140 -0
- package/dist/server/app-browser-state.js +315 -0
- package/dist/server/app-browser-stream.d.ts +28 -0
- package/dist/server/app-browser-stream.js +122 -0
- package/dist/server/app-browser-visible-commit.d.ts +78 -0
- package/dist/server/app-browser-visible-commit.js +241 -0
- package/dist/server/app-client-reference-preloader.d.ts +14 -0
- package/dist/server/app-client-reference-preloader.js +44 -0
- package/dist/server/app-elements-wire.d.ts +192 -0
- package/dist/server/app-elements-wire.js +443 -0
- package/dist/server/app-elements.d.ts +9 -0
- package/dist/server/app-elements.js +18 -0
- package/dist/server/app-fallback-renderer.d.ts +89 -0
- package/dist/server/app-fallback-renderer.js +136 -0
- package/dist/server/app-history-state.d.ts +85 -0
- package/dist/server/app-history-state.js +223 -0
- package/dist/server/app-hook-warning-suppression.d.ts +6 -0
- package/dist/server/app-hook-warning-suppression.js +10 -0
- package/dist/server/app-inline-css-client.d.ts +6 -0
- package/dist/server/app-inline-css-client.js +35 -0
- package/dist/server/app-interception-context-header.d.ts +32 -0
- package/dist/server/app-interception-context-header.js +42 -0
- package/dist/server/app-layout-param-observation.d.ts +43 -0
- package/dist/server/app-layout-param-observation.js +168 -0
- package/dist/server/app-middleware.d.ts +46 -0
- package/dist/server/app-middleware.js +168 -0
- package/dist/server/app-mounted-slots-header.d.ts +35 -0
- package/dist/server/app-mounted-slots-header.js +58 -0
- package/dist/server/app-optimistic-routing.d.ts +53 -0
- package/dist/server/app-optimistic-routing.js +227 -0
- package/dist/server/app-page-boundary-render.d.ts +85 -0
- package/dist/server/app-page-boundary-render.js +305 -0
- package/dist/server/app-page-boundary.d.ts +102 -0
- package/dist/server/app-page-boundary.js +120 -0
- package/dist/server/app-page-cache-finalizer.d.ts +62 -0
- package/dist/server/app-page-cache-finalizer.js +122 -0
- package/dist/server/app-page-cache-render.d.ts +53 -0
- package/dist/server/app-page-cache-render.js +91 -0
- package/dist/server/app-page-cache.d.ts +83 -0
- package/dist/server/app-page-cache.js +272 -0
- package/dist/server/app-page-dispatch.d.ts +223 -0
- package/dist/server/app-page-dispatch.js +610 -0
- package/dist/server/app-page-element-builder.d.ts +96 -0
- package/dist/server/app-page-element-builder.js +205 -0
- package/dist/server/app-page-execution.d.ts +138 -0
- package/dist/server/app-page-execution.js +328 -0
- package/dist/server/app-page-head.d.ts +65 -0
- package/dist/server/app-page-head.js +228 -0
- package/dist/server/app-page-method.d.ts +15 -0
- package/dist/server/app-page-method.js +25 -0
- package/dist/server/app-page-params.d.ts +8 -0
- package/dist/server/app-page-params.js +39 -0
- package/dist/server/app-page-ppr-runtime.d.ts +7 -0
- package/dist/server/app-page-ppr-runtime.js +70 -0
- package/dist/server/app-page-probe.d.ts +134 -0
- package/dist/server/app-page-probe.js +276 -0
- package/dist/server/app-page-render-identity.d.ts +21 -0
- package/dist/server/app-page-render-identity.js +40 -0
- package/dist/server/app-page-render-observation.d.ts +36 -0
- package/dist/server/app-page-render-observation.js +82 -0
- package/dist/server/app-page-render.d.ts +111 -0
- package/dist/server/app-page-render.js +602 -0
- package/dist/server/app-page-request.d.ts +137 -0
- package/dist/server/app-page-request.js +216 -0
- package/dist/server/app-page-response.d.ts +68 -0
- package/dist/server/app-page-response.js +120 -0
- package/dist/server/app-page-route-wiring.d.ts +151 -0
- package/dist/server/app-page-route-wiring.js +452 -0
- package/dist/server/app-page-search-params-observation.d.ts +10 -0
- package/dist/server/app-page-search-params-observation.js +20 -0
- package/dist/server/app-page-segment-state.d.ts +9 -0
- package/dist/server/app-page-segment-state.js +80 -0
- package/dist/server/app-page-stream.d.ts +151 -0
- package/dist/server/app-page-stream.js +143 -0
- package/dist/server/app-pages-bridge.d.ts +63 -0
- package/dist/server/app-pages-bridge.js +63 -0
- package/dist/server/app-post-middleware-context.d.ts +15 -0
- package/dist/server/app-post-middleware-context.js +26 -0
- package/dist/server/app-ppr-fallback-shell-render.d.ts +18 -0
- package/dist/server/app-ppr-fallback-shell-render.js +26 -0
- package/dist/server/app-ppr-fallback-shell.d.ts +33 -0
- package/dist/server/app-ppr-fallback-shell.js +89 -0
- package/dist/server/app-prerender-endpoints.d.ts +18 -0
- package/dist/server/app-prerender-endpoints.js +94 -0
- package/dist/server/app-prerender-static-params.d.ts +30 -0
- package/dist/server/app-prerender-static-params.js +81 -0
- package/dist/server/app-render-dependency.d.ts +14 -0
- package/dist/server/app-render-dependency.js +41 -0
- package/dist/server/app-request-context.d.ts +20 -0
- package/dist/server/app-request-context.js +29 -0
- package/dist/server/app-route-handler-cache.d.ts +46 -0
- package/dist/server/app-route-handler-cache.js +78 -0
- package/dist/server/app-route-handler-dispatch.d.ts +49 -0
- package/dist/server/app-route-handler-dispatch.js +163 -0
- package/dist/server/app-route-handler-execution.d.ts +86 -0
- package/dist/server/app-route-handler-execution.js +128 -0
- package/dist/server/app-route-handler-policy.d.ts +55 -0
- package/dist/server/app-route-handler-policy.js +58 -0
- package/dist/server/app-route-handler-response.d.ts +28 -0
- package/dist/server/app-route-handler-response.js +145 -0
- package/dist/server/app-route-handler-runtime.d.ts +39 -0
- package/dist/server/app-route-handler-runtime.js +250 -0
- package/dist/server/app-route-module-loader.d.ts +91 -0
- package/dist/server/app-route-module-loader.js +83 -0
- package/dist/server/app-router-entry.d.ts +13 -0
- package/dist/server/app-router-entry.js +49 -0
- package/dist/server/app-rsc-cache-busting.d.ts +64 -0
- package/dist/server/app-rsc-cache-busting.js +206 -0
- package/dist/server/app-rsc-embedded-chunks.d.ts +8 -0
- package/dist/server/app-rsc-embedded-chunks.js +32 -0
- package/dist/server/app-rsc-error-handler.d.ts +20 -0
- package/dist/server/app-rsc-error-handler.js +28 -0
- package/dist/server/app-rsc-errors.d.ts +40 -0
- package/dist/server/app-rsc-errors.js +60 -0
- package/dist/server/app-rsc-handler.d.ts +201 -0
- package/dist/server/app-rsc-handler.js +538 -0
- package/dist/server/app-rsc-render-mode.d.ts +11 -0
- package/dist/server/app-rsc-render-mode.js +25 -0
- package/dist/server/app-rsc-request-normalization.d.ts +48 -0
- package/dist/server/app-rsc-request-normalization.js +75 -0
- package/dist/server/app-rsc-response-finalizer.d.ts +37 -0
- package/dist/server/app-rsc-response-finalizer.js +54 -0
- package/dist/server/app-rsc-route-matching.d.ts +93 -0
- package/dist/server/app-rsc-route-matching.js +134 -0
- package/dist/server/app-segment-config.d.ts +46 -0
- package/dist/server/app-segment-config.js +113 -0
- package/dist/server/app-server-action-execution.d.ts +219 -0
- package/dist/server/app-server-action-execution.js +767 -0
- package/dist/server/app-ssr-entry.d.ts +52 -0
- package/dist/server/app-ssr-entry.js +295 -0
- package/dist/server/app-ssr-error-meta.d.ts +13 -0
- package/dist/server/app-ssr-error-meta.js +48 -0
- package/dist/server/app-ssr-router-instance.d.ts +6 -0
- package/dist/server/app-ssr-router-instance.js +24 -0
- package/dist/server/app-ssr-stream.d.ts +60 -0
- package/dist/server/app-ssr-stream.js +408 -0
- package/dist/server/app-static-generation.d.ts +15 -0
- package/dist/server/app-static-generation.js +19 -0
- package/dist/server/app-visited-response-cache.d.ts +23 -0
- package/dist/server/app-visited-response-cache.js +19 -0
- package/dist/server/artifact-compatibility.d.ts +54 -0
- package/dist/server/artifact-compatibility.js +91 -0
- package/dist/server/before-interactive-head.d.ts +17 -0
- package/dist/server/before-interactive-head.js +35 -0
- package/dist/server/cache-control.d.ts +37 -0
- package/dist/server/cache-control.js +56 -0
- package/dist/server/cache-headers.d.ts +6 -0
- package/dist/server/cache-headers.js +17 -0
- package/dist/server/cache-proof.d.ts +364 -0
- package/dist/server/cache-proof.js +794 -0
- package/dist/server/client-reuse-manifest.d.ts +104 -0
- package/dist/server/client-reuse-manifest.js +209 -0
- package/dist/server/client-trace-metadata.d.ts +30 -0
- package/dist/server/client-trace-metadata.js +81 -0
- package/dist/server/cookie-utils.d.ts +12 -0
- package/dist/server/cookie-utils.js +18 -0
- package/dist/server/csp.d.ts +10 -0
- package/dist/server/csp.js +41 -0
- package/dist/server/default-global-error-module.d.ts +19 -0
- package/dist/server/default-global-error-module.js +18 -0
- package/dist/server/default-not-found-module.d.ts +19 -0
- package/dist/server/default-not-found-module.js +18 -0
- package/dist/server/defer-until-stream-consumed.d.ts +7 -0
- package/dist/server/defer-until-stream-consumed.js +34 -0
- package/dist/server/dev-error-overlay-store.d.ts +39 -0
- package/dist/server/dev-error-overlay-store.js +86 -0
- package/dist/server/dev-error-overlay.d.ts +51 -0
- package/dist/server/dev-error-overlay.js +1341 -0
- package/dist/server/dev-initial-server-error.d.ts +9 -0
- package/dist/server/dev-initial-server-error.js +26 -0
- package/dist/server/dev-lockfile.d.ts +109 -0
- package/dist/server/dev-lockfile.js +179 -0
- package/dist/server/dev-module-runner.d.ts +30 -0
- package/dist/server/dev-module-runner.js +91 -0
- package/dist/server/dev-origin-check.d.ts +62 -0
- package/dist/server/dev-origin-check.js +156 -0
- package/dist/server/dev-route-files.d.ts +6 -0
- package/dist/server/dev-route-files.js +71 -0
- package/dist/server/dev-server.d.ts +58 -0
- package/dist/server/dev-server.js +1114 -0
- package/dist/server/dev-stack-sourcemap-endpoint.d.ts +4 -0
- package/dist/server/dev-stack-sourcemap-endpoint.js +4 -0
- package/dist/server/dev-stack-sourcemap.d.ts +43 -0
- package/dist/server/dev-stack-sourcemap.js +443 -0
- package/dist/server/document-initial-head.d.ts +6 -0
- package/dist/server/document-initial-head.js +33 -0
- package/dist/server/edge-api-runtime.d.ts +4 -0
- package/dist/server/edge-api-runtime.js +6 -0
- package/dist/server/file-based-metadata.d.ts +29 -0
- package/dist/server/file-based-metadata.js +401 -0
- package/dist/server/headers.d.ts +114 -0
- package/dist/server/headers.js +136 -0
- package/dist/server/html.d.ts +28 -0
- package/dist/server/html.js +41 -0
- package/dist/server/http-error-responses.d.ts +91 -0
- package/dist/server/http-error-responses.js +105 -0
- package/dist/server/hybrid-route-priority.d.ts +22 -0
- package/dist/server/hybrid-route-priority.js +33 -0
- package/dist/server/image-optimization.d.ts +130 -0
- package/dist/server/image-optimization.js +247 -0
- package/dist/server/implicit-tags.d.ts +6 -0
- package/dist/server/implicit-tags.js +44 -0
- package/dist/server/instrumentation-runtime.d.ts +49 -0
- package/dist/server/instrumentation-runtime.js +35 -0
- package/dist/server/instrumentation.d.ts +85 -0
- package/dist/server/instrumentation.js +130 -0
- package/dist/server/isr-cache.d.ts +127 -0
- package/dist/server/isr-cache.js +282 -0
- package/dist/server/isr-decision.d.ts +79 -0
- package/dist/server/isr-decision.js +70 -0
- package/dist/server/metadata-route-build-data.d.ts +24 -0
- package/dist/server/metadata-route-build-data.js +148 -0
- package/dist/server/metadata-route-response.d.ts +16 -0
- package/dist/server/metadata-route-response.js +205 -0
- package/dist/server/metadata-routes.d.ts +139 -0
- package/dist/server/metadata-routes.js +433 -0
- package/dist/server/middleware-matcher.d.ts +14 -0
- package/dist/server/middleware-matcher.js +111 -0
- package/dist/server/middleware-request-headers.d.ts +11 -0
- package/dist/server/middleware-request-headers.js +65 -0
- package/dist/server/middleware-response-headers.d.ts +12 -0
- package/dist/server/middleware-response-headers.js +42 -0
- package/dist/server/middleware-runtime.d.ts +67 -0
- package/dist/server/middleware-runtime.js +240 -0
- package/dist/server/middleware.d.ts +62 -0
- package/dist/server/middleware.js +114 -0
- package/dist/server/navigation-planner.d.ts +308 -0
- package/dist/server/navigation-planner.js +831 -0
- package/dist/server/navigation-trace.d.ts +68 -0
- package/dist/server/navigation-trace.js +71 -0
- package/dist/server/next-error-digest.d.ts +44 -0
- package/dist/server/next-error-digest.js +40 -0
- package/dist/server/normalize-path.d.ts +38 -0
- package/dist/server/normalize-path.js +70 -0
- package/dist/server/open-redirect.d.ts +12 -0
- package/dist/server/open-redirect.js +21 -0
- package/dist/server/operation-token.d.ts +40 -0
- package/dist/server/operation-token.js +85 -0
- package/dist/server/otel-tracer-extension.d.ts +45 -0
- package/dist/server/otel-tracer-extension.js +89 -0
- package/dist/server/pages-api-route.d.ts +83 -0
- package/dist/server/pages-api-route.js +75 -0
- package/dist/server/pages-asset-tags.d.ts +78 -0
- package/dist/server/pages-asset-tags.js +126 -0
- package/dist/server/pages-body-parser-config.d.ts +59 -0
- package/dist/server/pages-body-parser-config.js +77 -0
- package/dist/server/pages-data-route.d.ts +121 -0
- package/dist/server/pages-data-route.js +157 -0
- package/dist/server/pages-default-404.d.ts +30 -0
- package/dist/server/pages-default-404.js +38 -0
- package/dist/server/pages-dev-module-url.d.ts +4 -0
- package/dist/server/pages-dev-module-url.js +15 -0
- package/dist/server/pages-document-initial-props.d.ts +77 -0
- package/dist/server/pages-document-initial-props.js +109 -0
- package/dist/server/pages-get-initial-props.d.ts +67 -0
- package/dist/server/pages-get-initial-props.js +92 -0
- package/dist/server/pages-i18n.d.ts +106 -0
- package/dist/server/pages-i18n.js +183 -0
- package/dist/server/pages-media-type.d.ts +15 -0
- package/dist/server/pages-media-type.js +24 -0
- package/dist/server/pages-node-compat.d.ts +55 -0
- package/dist/server/pages-node-compat.js +235 -0
- package/dist/server/pages-page-data.d.ts +223 -0
- package/dist/server/pages-page-data.js +484 -0
- package/dist/server/pages-page-handler.d.ts +100 -0
- package/dist/server/pages-page-handler.js +403 -0
- package/dist/server/pages-page-method.d.ts +47 -0
- package/dist/server/pages-page-method.js +17 -0
- package/dist/server/pages-page-response.d.ts +138 -0
- package/dist/server/pages-page-response.js +285 -0
- package/dist/server/pages-readiness.d.ts +36 -0
- package/dist/server/pages-readiness.js +21 -0
- package/dist/server/pages-request-pipeline.d.ts +116 -0
- package/dist/server/pages-request-pipeline.js +311 -0
- package/dist/server/pages-revalidate.d.ts +15 -0
- package/dist/server/pages-revalidate.js +19 -0
- package/dist/server/pages-serializable-props.d.ts +24 -0
- package/dist/server/pages-serializable-props.js +67 -0
- package/dist/server/pregenerated-concrete-paths.d.ts +16 -0
- package/dist/server/pregenerated-concrete-paths.js +61 -0
- package/dist/server/prerender-manifest.d.ts +33 -0
- package/dist/server/prerender-manifest.js +54 -0
- package/dist/server/prerender-route-params.d.ts +23 -0
- package/dist/server/prerender-route-params.js +113 -0
- package/dist/server/prerender-work-unit-setup.d.ts +6 -0
- package/dist/server/prerender-work-unit-setup.js +28 -0
- package/dist/server/prod-server.d.ts +148 -0
- package/dist/server/prod-server.js +1136 -0
- package/dist/server/proxy-trust.d.ts +40 -0
- package/dist/server/proxy-trust.js +68 -0
- package/dist/server/request-log.d.ts +39 -0
- package/dist/server/request-log.js +56 -0
- package/dist/server/request-pipeline.d.ts +187 -0
- package/dist/server/request-pipeline.js +447 -0
- package/dist/server/rsc-stream-hints.d.ts +10 -0
- package/dist/server/rsc-stream-hints.js +41 -0
- package/dist/server/seed-cache.d.ts +29 -0
- package/dist/server/seed-cache.js +125 -0
- package/dist/server/server-action-not-found.d.ts +21 -0
- package/dist/server/server-action-not-found.js +62 -0
- package/dist/server/server-globals.d.ts +4 -0
- package/dist/server/server-globals.js +35 -0
- package/dist/server/skip-cache-proof.d.ts +61 -0
- package/dist/server/skip-cache-proof.js +168 -0
- package/dist/server/socket-error-backstop.d.ts +34 -0
- package/dist/server/socket-error-backstop.js +200 -0
- package/dist/server/static-file-cache.d.ts +56 -0
- package/dist/server/static-file-cache.js +231 -0
- package/dist/server/static-layout-client-reuse-proof.d.ts +15 -0
- package/dist/server/static-layout-client-reuse-proof.js +33 -0
- package/dist/server/streaming-metadata.d.ts +4 -0
- package/dist/server/streaming-metadata.js +8 -0
- package/dist/server/worker-utils.d.ts +7 -0
- package/dist/server/worker-utils.js +99 -0
- package/dist/shims/amp.d.ts +19 -0
- package/dist/shims/amp.js +23 -0
- package/dist/shims/app-router-scroll-state.d.ts +15 -0
- package/dist/shims/app-router-scroll-state.js +61 -0
- package/dist/shims/app-router-scroll.d.ts +29 -0
- package/dist/shims/app-router-scroll.js +141 -0
- package/dist/shims/app.d.ts +42 -0
- package/dist/shims/app.js +48 -0
- package/dist/shims/before-interactive-context.d.ts +40 -0
- package/dist/shims/before-interactive-context.js +8 -0
- package/dist/shims/cache-for-request.d.ts +57 -0
- package/dist/shims/cache-for-request.js +72 -0
- package/dist/shims/cache-handler.d.ts +106 -0
- package/dist/shims/cache-handler.js +176 -0
- package/dist/shims/cache-request-state.d.ts +47 -0
- package/dist/shims/cache-request-state.js +126 -0
- package/dist/shims/cache-runtime.d.ts +83 -0
- package/dist/shims/cache-runtime.js +452 -0
- package/dist/shims/cache.d.ts +145 -0
- package/dist/shims/cache.js +401 -0
- package/dist/shims/cdn-cache.d.ts +125 -0
- package/dist/shims/cdn-cache.js +100 -0
- package/dist/shims/client-hook-error.d.ts +13 -0
- package/dist/shims/client-hook-error.js +17 -0
- package/dist/shims/client-locale.d.ts +14 -0
- package/dist/shims/client-locale.js +11 -0
- package/dist/shims/client-only.d.ts +1 -0
- package/dist/shims/client-only.js +1 -0
- package/dist/shims/compat-router.d.ts +16 -0
- package/dist/shims/compat-router.js +25 -0
- package/dist/shims/config.d.ts +28 -0
- package/dist/shims/config.js +21 -0
- package/dist/shims/constants.d.ts +130 -0
- package/dist/shims/constants.js +167 -0
- package/dist/shims/default-global-error.d.ts +31 -0
- package/dist/shims/default-global-error.js +179 -0
- package/dist/shims/default-not-found.d.ts +11 -0
- package/dist/shims/default-not-found.js +59 -0
- package/dist/shims/document.d.ts +92 -0
- package/dist/shims/document.js +76 -0
- package/dist/shims/dynamic-preload-chunks.d.ts +8 -0
- package/dist/shims/dynamic-preload-chunks.js +79 -0
- package/dist/shims/dynamic.d.ts +35 -0
- package/dist/shims/dynamic.js +204 -0
- package/dist/shims/error-boundary-navigation.d.ts +7 -0
- package/dist/shims/error-boundary-navigation.js +44 -0
- package/dist/shims/error-boundary.d.ts +155 -0
- package/dist/shims/error-boundary.js +342 -0
- package/dist/shims/error.d.ts +31 -0
- package/dist/shims/error.js +123 -0
- package/dist/shims/error.react-server.d.ts +9 -0
- package/dist/shims/error.react-server.js +6 -0
- package/dist/shims/fetch-cache.d.ts +136 -0
- package/dist/shims/fetch-cache.js +766 -0
- package/dist/shims/font-google-base.d.ts +83 -0
- package/dist/shims/font-google-base.js +290 -0
- package/dist/shims/font-google.d.ts +2 -0
- package/dist/shims/font-google.js +2 -0
- package/dist/shims/font-local.d.ts +50 -0
- package/dist/shims/font-local.js +195 -0
- package/dist/shims/font-utils.d.ts +56 -0
- package/dist/shims/font-utils.js +107 -0
- package/dist/shims/form.d.ts +19 -0
- package/dist/shims/form.js +236 -0
- package/dist/shims/hash-scroll.d.ts +10 -0
- package/dist/shims/hash-scroll.js +47 -0
- package/dist/shims/head-state.d.ts +16 -0
- package/dist/shims/head-state.js +43 -0
- package/dist/shims/head.d.ts +73 -0
- package/dist/shims/head.js +340 -0
- package/dist/shims/headers.d.ts +253 -0
- package/dist/shims/headers.js +754 -0
- package/dist/shims/i18n-context.d.ts +22 -0
- package/dist/shims/i18n-context.js +42 -0
- package/dist/shims/i18n-state.d.ts +14 -0
- package/dist/shims/i18n-state.js +38 -0
- package/dist/shims/image-config.d.ts +45 -0
- package/dist/shims/image-config.js +85 -0
- package/dist/shims/image.d.ts +55 -0
- package/dist/shims/image.js +582 -0
- package/dist/shims/internal/als-registry.d.ts +14 -0
- package/dist/shims/internal/als-registry.js +80 -0
- package/dist/shims/internal/api-utils.d.ts +14 -0
- package/dist/shims/internal/api-utils.js +1 -0
- package/dist/shims/internal/app-page-props-cache-key.d.ts +5 -0
- package/dist/shims/internal/app-page-props-cache-key.js +16 -0
- package/dist/shims/internal/app-route-detection.d.ts +39 -0
- package/dist/shims/internal/app-route-detection.js +62 -0
- package/dist/shims/internal/app-router-context.d.ts +31 -0
- package/dist/shims/internal/app-router-context.js +28 -0
- package/dist/shims/internal/cookie-serialize.d.ts +45 -0
- package/dist/shims/internal/cookie-serialize.js +49 -0
- package/dist/shims/internal/cookies.d.ts +2 -0
- package/dist/shims/internal/cookies.js +2 -0
- package/dist/shims/internal/hybrid-client-route-owner.d.ts +31 -0
- package/dist/shims/internal/hybrid-client-route-owner.js +143 -0
- package/dist/shims/internal/interpolate-as.d.ts +25 -0
- package/dist/shims/internal/interpolate-as.js +196 -0
- package/dist/shims/internal/link-status-registry.d.ts +43 -0
- package/dist/shims/internal/link-status-registry.js +42 -0
- package/dist/shims/internal/make-hanging-promise.d.ts +15 -0
- package/dist/shims/internal/make-hanging-promise.js +44 -0
- package/dist/shims/internal/navigation-untracked.d.ts +35 -0
- package/dist/shims/internal/navigation-untracked.js +56 -0
- package/dist/shims/internal/pages-data-fetch-dedup.d.ts +54 -0
- package/dist/shims/internal/pages-data-fetch-dedup.js +121 -0
- package/dist/shims/internal/pages-data-target.d.ts +62 -0
- package/dist/shims/internal/pages-data-target.js +98 -0
- package/dist/shims/internal/pages-data-url.d.ts +41 -0
- package/dist/shims/internal/pages-data-url.js +71 -0
- package/dist/shims/internal/pages-router-accessor.d.ts +19 -0
- package/dist/shims/internal/pages-router-accessor.js +13 -0
- package/dist/shims/internal/route-pattern-for-warning.d.ts +27 -0
- package/dist/shims/internal/route-pattern-for-warning.js +40 -0
- package/dist/shims/internal/router-context.d.ts +7 -0
- package/dist/shims/internal/router-context.js +13 -0
- package/dist/shims/internal/utils.d.ts +52 -0
- package/dist/shims/internal/utils.js +27 -0
- package/dist/shims/internal/work-unit-async-storage.d.ts +30 -0
- package/dist/shims/internal/work-unit-async-storage.js +17 -0
- package/dist/shims/layout-segment-context.d.ts +24 -0
- package/dist/shims/layout-segment-context.js +39 -0
- package/dist/shims/legacy-image.d.ts +41 -0
- package/dist/shims/legacy-image.js +49 -0
- package/dist/shims/link-prefetch.d.ts +41 -0
- package/dist/shims/link-prefetch.js +43 -0
- package/dist/shims/link.d.ts +102 -0
- package/dist/shims/link.js +687 -0
- package/dist/shims/metadata.d.ts +285 -0
- package/dist/shims/metadata.js +820 -0
- package/dist/shims/navigation-context-state.d.ts +40 -0
- package/dist/shims/navigation-context-state.js +116 -0
- package/dist/shims/navigation-errors.d.ts +55 -0
- package/dist/shims/navigation-errors.js +110 -0
- package/dist/shims/navigation-server.d.ts +3 -0
- package/dist/shims/navigation-server.js +3 -0
- package/dist/shims/navigation-state.d.ts +25 -0
- package/dist/shims/navigation-state.js +66 -0
- package/dist/shims/navigation.d.ts +286 -0
- package/dist/shims/navigation.js +1206 -0
- package/dist/shims/navigation.react-server.d.ts +14 -0
- package/dist/shims/navigation.react-server.js +32 -0
- package/dist/shims/offline.d.ts +4 -0
- package/dist/shims/offline.js +15 -0
- package/dist/shims/og.d.ts +17 -0
- package/dist/shims/og.js +48 -0
- package/dist/shims/pages-router-runtime.d.ts +12 -0
- package/dist/shims/pages-router-runtime.js +24 -0
- package/dist/shims/ppr-fallback-shell.d.ts +33 -0
- package/dist/shims/ppr-fallback-shell.js +170 -0
- package/dist/shims/readonly-url-search-params.d.ts +13 -0
- package/dist/shims/readonly-url-search-params.js +26 -0
- package/dist/shims/request-context.d.ts +58 -0
- package/dist/shims/request-context.js +45 -0
- package/dist/shims/request-state-types.d.ts +12 -0
- package/dist/shims/request-state-types.js +1 -0
- package/dist/shims/root-params.d.ts +12 -0
- package/dist/shims/root-params.js +30 -0
- package/dist/shims/router-state.d.ts +32 -0
- package/dist/shims/router-state.js +39 -0
- package/dist/shims/router.d.ts +192 -0
- package/dist/shims/router.js +1786 -0
- package/dist/shims/script-nonce-context.d.ts +11 -0
- package/dist/shims/script-nonce-context.js +23 -0
- package/dist/shims/script.d.ts +43 -0
- package/dist/shims/script.js +370 -0
- package/dist/shims/server-only.d.ts +1 -0
- package/dist/shims/server-only.js +1 -0
- package/dist/shims/server.d.ts +323 -0
- package/dist/shims/server.js +729 -0
- package/dist/shims/slot.d.ts +45 -0
- package/dist/shims/slot.js +230 -0
- package/dist/shims/thenable-params.d.ts +11 -0
- package/dist/shims/thenable-params.js +176 -0
- package/dist/shims/unified-request-context.d.ts +68 -0
- package/dist/shims/unified-request-context.js +86 -0
- package/dist/shims/unrecognized-action-error.d.ts +34 -0
- package/dist/shims/unrecognized-action-error.js +39 -0
- package/dist/shims/url-safety.d.ts +34 -0
- package/dist/shims/url-safety.js +70 -0
- package/dist/shims/url-utils.d.ts +51 -0
- package/dist/shims/url-utils.js +156 -0
- package/dist/shims/use-merged-ref.d.ts +6 -0
- package/dist/shims/use-merged-ref.js +38 -0
- package/dist/shims/web-vitals.d.ts +8 -0
- package/dist/shims/web-vitals.js +22 -0
- package/dist/typegen.d.ts +9 -0
- package/dist/typegen.js +228 -0
- package/dist/utils/asset-prefix.d.ts +96 -0
- package/dist/utils/asset-prefix.js +122 -0
- package/dist/utils/base-path.d.ts +31 -0
- package/dist/utils/base-path.js +45 -0
- package/dist/utils/built-asset-url.d.ts +4 -0
- package/dist/utils/built-asset-url.js +11 -0
- package/dist/utils/cache-control-metadata.d.ts +4 -0
- package/dist/utils/cache-control-metadata.js +12 -0
- package/dist/utils/client-build-manifest.d.ts +21 -0
- package/dist/utils/client-build-manifest.js +87 -0
- package/dist/utils/client-entry-manifest.d.ts +11 -0
- package/dist/utils/client-entry-manifest.js +29 -0
- package/dist/utils/client-runtime-metadata.d.ts +45 -0
- package/dist/utils/client-runtime-metadata.js +63 -0
- package/dist/utils/commonjs-loader.d.ts +16 -0
- package/dist/utils/commonjs-loader.js +100 -0
- package/dist/utils/compare.d.ts +4 -0
- package/dist/utils/compare.js +8 -0
- package/dist/utils/deployment-id.d.ts +8 -0
- package/dist/utils/deployment-id.js +22 -0
- package/dist/utils/dev-error-recovery-event.d.ts +4 -0
- package/dist/utils/dev-error-recovery-event.js +4 -0
- package/dist/utils/domain-locale.d.ts +26 -0
- package/dist/utils/domain-locale.js +50 -0
- package/dist/utils/encode-cache-tag.d.ts +30 -0
- package/dist/utils/encode-cache-tag.js +36 -0
- package/dist/utils/error-cause.d.ts +4 -0
- package/dist/utils/error-cause.js +95 -0
- package/dist/utils/has-trailing-comma.d.ts +24 -0
- package/dist/utils/has-trailing-comma.js +62 -0
- package/dist/utils/hash.d.ts +24 -0
- package/dist/utils/hash.js +55 -0
- package/dist/utils/html-limited-bots.d.ts +21 -0
- package/dist/utils/html-limited-bots.js +35 -0
- package/dist/utils/lazy-chunks.d.ts +59 -0
- package/dist/utils/lazy-chunks.js +112 -0
- package/dist/utils/manifest-paths.d.ts +30 -0
- package/dist/utils/manifest-paths.js +66 -0
- package/dist/utils/mdx-scan.d.ts +9 -0
- package/dist/utils/mdx-scan.js +34 -0
- package/dist/utils/navigation-signal.d.ts +4 -0
- package/dist/utils/navigation-signal.js +12 -0
- package/dist/utils/number.d.ts +4 -0
- package/dist/utils/number.js +6 -0
- package/dist/utils/parse-cookie.d.ts +13 -0
- package/dist/utils/parse-cookie.js +52 -0
- package/dist/utils/path.d.ts +22 -0
- package/dist/utils/path.js +30 -0
- package/dist/utils/prerender-output-paths.d.ts +14 -0
- package/dist/utils/prerender-output-paths.js +22 -0
- package/dist/utils/project.d.ts +76 -0
- package/dist/utils/project.js +213 -0
- package/dist/utils/promise.d.ts +4 -0
- package/dist/utils/promise.js +6 -0
- package/dist/utils/public-routes.d.ts +4 -0
- package/dist/utils/public-routes.js +48 -0
- package/dist/utils/query.d.ts +49 -0
- package/dist/utils/query.js +122 -0
- package/dist/utils/record.d.ts +4 -0
- package/dist/utils/record.js +6 -0
- package/dist/utils/regex.d.ts +4 -0
- package/dist/utils/regex.js +6 -0
- package/dist/utils/safe-json-file.d.ts +17 -0
- package/dist/utils/safe-json-file.js +23 -0
- package/dist/utils/sorted-array.d.ts +8 -0
- package/dist/utils/sorted-array.js +20 -0
- package/dist/utils/text-stream.d.ts +28 -0
- package/dist/utils/text-stream.js +64 -0
- package/dist/utils/vinext-root.d.ts +23 -0
- package/dist/utils/vinext-root.js +29 -0
- package/dist/utils/virtual-module.d.ts +5 -0
- package/dist/utils/virtual-module.js +0 -0
- package/dist/utils/vite-version.d.ts +21 -0
- package/dist/utils/vite-version.js +42 -0
- package/package.json +145 -0
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
import { isInsideUnifiedScope, runWithUnifiedStateMutation } from "../shims/unified-request-context.js";
|
|
2
|
+
import { peekDynamicUsage, peekRenderRequestApiUsage } from "../shims/headers.js";
|
|
3
|
+
import { _peekRequestScopedCacheLife, _peekUnstableCacheObservations } from "../shims/cache-request-state.js";
|
|
4
|
+
import { getCollectedFetchTags, peekCacheableFetchObservations, peekDynamicFetchObservations } from "../shims/fetch-cache.js";
|
|
5
|
+
import { isPromiseLike } from "../utils/promise.js";
|
|
6
|
+
//#region src/server/app-layout-param-observation.ts
|
|
7
|
+
const STATIC_LAYOUT_OBSERVATION_SKIP_RULES = [
|
|
8
|
+
["SKIP_LAYOUT_PARAMS_OBSERVATION_INCOMPLETE", (observation) => observation.completeness !== "complete"],
|
|
9
|
+
["SKIP_LAYOUT_PARAMS_PRESENT", (observation) => observation.paramScopeKeys.length > 0],
|
|
10
|
+
["SKIP_LAYOUT_PARAMS_OBSERVED", (observation) => observation.observed],
|
|
11
|
+
["SKIP_LAYOUT_DYNAMIC_USAGE_OBSERVED", (observation) => observation.dynamicUsageObserved],
|
|
12
|
+
["SKIP_LAYOUT_REQUEST_API_OBSERVED", (observation) => observation.requestApis.length > 0],
|
|
13
|
+
["SKIP_LAYOUT_REVALIDATE_PRESENT", (observation) => observation.finiteRevalidateSeconds !== null],
|
|
14
|
+
["SKIP_LAYOUT_CACHE_LIFE_OBSERVED", (observation) => observation.cacheLifeObserved],
|
|
15
|
+
["SKIP_LAYOUT_UNSTABLE_CACHE_OBSERVED", (observation) => observation.unstableCaches.length > 0],
|
|
16
|
+
["SKIP_LAYOUT_CACHE_TAGS_OBSERVED", (observation) => observation.cacheTags.length > 0],
|
|
17
|
+
["SKIP_LAYOUT_CACHEABLE_FETCHES_OBSERVED", (observation) => observation.cacheableFetchCount > 0],
|
|
18
|
+
["SKIP_LAYOUT_DYNAMIC_FETCHES_OBSERVED", (observation) => observation.dynamicFetchCount > 0]
|
|
19
|
+
];
|
|
20
|
+
function createStaticLayoutObservationTraceFields(observation) {
|
|
21
|
+
return {
|
|
22
|
+
cacheLifeObserved: observation.cacheLifeObserved,
|
|
23
|
+
cacheTags: observation.cacheTags,
|
|
24
|
+
cacheableFetchCount: observation.cacheableFetchCount,
|
|
25
|
+
dynamicFetchCount: observation.dynamicFetchCount,
|
|
26
|
+
dynamicUsageObserved: observation.dynamicUsageObserved,
|
|
27
|
+
finiteRevalidateSeconds: observation.finiteRevalidateSeconds,
|
|
28
|
+
observedParamKeys: observation.keys,
|
|
29
|
+
paramScopeKeys: observation.paramScopeKeys,
|
|
30
|
+
requestApis: observation.requestApis,
|
|
31
|
+
unstableCacheCount: observation.unstableCaches.length,
|
|
32
|
+
unstableCacheKeyHashes: observation.unstableCaches.map((cache) => cache.keyHash),
|
|
33
|
+
unstableCacheRevalidates: observation.unstableCaches.map((cache) => String(cache.revalidate)),
|
|
34
|
+
unstableCacheTagCounts: observation.unstableCaches.map((cache) => String(cache.tagCount)),
|
|
35
|
+
unstableCacheTagHashes: observation.unstableCaches.map((cache) => cache.tagHash ?? "none")
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
function getStaticLayoutObservationSkipRejection(observation) {
|
|
39
|
+
for (const [code, matches] of STATIC_LAYOUT_OBSERVATION_SKIP_RULES) if (matches(observation)) return {
|
|
40
|
+
code,
|
|
41
|
+
fields: createStaticLayoutObservationTraceFields(observation)
|
|
42
|
+
};
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
function isAppLayoutObservationUnsafeForStaticReuse(observation) {
|
|
46
|
+
return getStaticLayoutObservationSkipRejection(observation) !== null;
|
|
47
|
+
}
|
|
48
|
+
function createAppLayoutParamAccessTracker() {
|
|
49
|
+
const observations = /* @__PURE__ */ new Map();
|
|
50
|
+
const ensureObservation = (layoutId) => {
|
|
51
|
+
const existing = observations.get(layoutId);
|
|
52
|
+
if (existing) return existing;
|
|
53
|
+
const created = {
|
|
54
|
+
cacheLifeObserved: false,
|
|
55
|
+
cacheTags: /* @__PURE__ */ new Set(),
|
|
56
|
+
cacheableFetches: /* @__PURE__ */ new Set(),
|
|
57
|
+
dynamicFetches: /* @__PURE__ */ new Set(),
|
|
58
|
+
dynamicUsageObserved: false,
|
|
59
|
+
finiteRevalidateSeconds: null,
|
|
60
|
+
keys: /* @__PURE__ */ new Set(),
|
|
61
|
+
observed: false,
|
|
62
|
+
paramScopeKeys: /* @__PURE__ */ new Set(),
|
|
63
|
+
probeComplete: false,
|
|
64
|
+
requestApis: /* @__PURE__ */ new Set(),
|
|
65
|
+
unstableCaches: /* @__PURE__ */ new Map()
|
|
66
|
+
};
|
|
67
|
+
observations.set(layoutId, created);
|
|
68
|
+
return created;
|
|
69
|
+
};
|
|
70
|
+
const markObserved = (layoutId, keys) => {
|
|
71
|
+
const observation = ensureObservation(layoutId);
|
|
72
|
+
observation.observed = true;
|
|
73
|
+
for (const key of keys) observation.keys.add(key);
|
|
74
|
+
};
|
|
75
|
+
const markProbeComplete = (layoutId) => {
|
|
76
|
+
ensureObservation(layoutId).probeComplete = true;
|
|
77
|
+
};
|
|
78
|
+
const runWithIsolatedProbeDependencies = (probe) => {
|
|
79
|
+
if (!isInsideUnifiedScope()) return probe();
|
|
80
|
+
return runWithUnifiedStateMutation((ctx) => {
|
|
81
|
+
ctx.cacheableFetchUrls = /* @__PURE__ */ new Set();
|
|
82
|
+
ctx.currentRequestTags = [];
|
|
83
|
+
ctx.currentFetchSoftTags = [];
|
|
84
|
+
ctx.dynamicFetchUrls = /* @__PURE__ */ new Set();
|
|
85
|
+
ctx.dynamicUsageDetected = false;
|
|
86
|
+
ctx.renderRequestApiUsage = /* @__PURE__ */ new Set();
|
|
87
|
+
ctx.requestScopedCacheLife = null;
|
|
88
|
+
ctx.unstableCacheObservations = /* @__PURE__ */ new Map();
|
|
89
|
+
}, probe);
|
|
90
|
+
};
|
|
91
|
+
const recordProbeDependencies = (layoutId) => {
|
|
92
|
+
const observation = ensureObservation(layoutId);
|
|
93
|
+
if (peekDynamicUsage()) observation.dynamicUsageObserved = true;
|
|
94
|
+
if (_peekRequestScopedCacheLife() !== null) observation.cacheLifeObserved = true;
|
|
95
|
+
for (const tag of getCollectedFetchTags()) observation.cacheTags.add(tag);
|
|
96
|
+
for (const url of peekCacheableFetchObservations()) observation.cacheableFetches.add(url);
|
|
97
|
+
for (const url of peekDynamicFetchObservations()) observation.dynamicFetches.add(url);
|
|
98
|
+
for (const requestApi of peekRenderRequestApiUsage()) observation.requestApis.add(requestApi);
|
|
99
|
+
for (const unstableCache of _peekUnstableCacheObservations()) observation.unstableCaches.set(unstableCache.keyHash, unstableCache);
|
|
100
|
+
};
|
|
101
|
+
return {
|
|
102
|
+
createThenableParamsObserver(layoutId) {
|
|
103
|
+
return { observeParamAccess(keys) {
|
|
104
|
+
markObserved(layoutId, keys);
|
|
105
|
+
} };
|
|
106
|
+
},
|
|
107
|
+
getLayoutObservation(layoutId) {
|
|
108
|
+
const observation = observations.get(layoutId);
|
|
109
|
+
if (!observation) return {
|
|
110
|
+
cacheLifeObserved: false,
|
|
111
|
+
cacheTags: [],
|
|
112
|
+
cacheableFetchCount: 0,
|
|
113
|
+
completeness: "unknown",
|
|
114
|
+
dynamicFetchCount: 0,
|
|
115
|
+
dynamicUsageObserved: false,
|
|
116
|
+
finiteRevalidateSeconds: null,
|
|
117
|
+
keys: [],
|
|
118
|
+
observed: false,
|
|
119
|
+
paramScopeKeys: [],
|
|
120
|
+
requestApis: [],
|
|
121
|
+
unstableCaches: []
|
|
122
|
+
};
|
|
123
|
+
return {
|
|
124
|
+
cacheLifeObserved: observation.cacheLifeObserved,
|
|
125
|
+
cacheTags: [...observation.cacheTags].sort(),
|
|
126
|
+
cacheableFetchCount: observation.cacheableFetches.size,
|
|
127
|
+
completeness: observation.probeComplete ? "complete" : "unknown",
|
|
128
|
+
dynamicFetchCount: observation.dynamicFetches.size,
|
|
129
|
+
dynamicUsageObserved: observation.dynamicUsageObserved,
|
|
130
|
+
finiteRevalidateSeconds: observation.finiteRevalidateSeconds,
|
|
131
|
+
keys: [...observation.keys].sort(),
|
|
132
|
+
observed: observation.observed,
|
|
133
|
+
paramScopeKeys: [...observation.paramScopeKeys].sort(),
|
|
134
|
+
requestApis: [...observation.requestApis].sort(),
|
|
135
|
+
unstableCaches: [...observation.unstableCaches.values()].sort((a, b) => a.keyHash.localeCompare(b.keyHash))
|
|
136
|
+
};
|
|
137
|
+
},
|
|
138
|
+
recordLayoutFiniteRevalidate(layoutId, revalidateSeconds) {
|
|
139
|
+
if (!Number.isFinite(revalidateSeconds) || revalidateSeconds <= 0) return;
|
|
140
|
+
const observation = ensureObservation(layoutId);
|
|
141
|
+
observation.finiteRevalidateSeconds = observation.finiteRevalidateSeconds === null ? revalidateSeconds : Math.min(observation.finiteRevalidateSeconds, revalidateSeconds);
|
|
142
|
+
},
|
|
143
|
+
recordLayoutParamScope(layoutId, paramScopeKeys) {
|
|
144
|
+
const observation = ensureObservation(layoutId);
|
|
145
|
+
for (const key of paramScopeKeys) observation.paramScopeKeys.add(key);
|
|
146
|
+
},
|
|
147
|
+
runLayoutProbe(layoutId, probe) {
|
|
148
|
+
return runWithIsolatedProbeDependencies(() => {
|
|
149
|
+
const result = probe();
|
|
150
|
+
if (!isPromiseLike(result)) {
|
|
151
|
+
recordProbeDependencies(layoutId);
|
|
152
|
+
markProbeComplete(layoutId);
|
|
153
|
+
return result;
|
|
154
|
+
}
|
|
155
|
+
return Promise.resolve(result).then((resolved) => {
|
|
156
|
+
recordProbeDependencies(layoutId);
|
|
157
|
+
markProbeComplete(layoutId);
|
|
158
|
+
return resolved;
|
|
159
|
+
}, (error) => {
|
|
160
|
+
recordProbeDependencies(layoutId);
|
|
161
|
+
throw error;
|
|
162
|
+
});
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
//#endregion
|
|
168
|
+
export { createAppLayoutParamAccessTracker, getStaticLayoutObservationSkipRejection, isAppLayoutObservationUnsafeForStaticReuse };
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { NextI18nConfig } from "../config/next-config.js";
|
|
2
|
+
import { MiddlewareModule } from "./middleware-runtime.js";
|
|
3
|
+
import { FLIGHT_HEADERS } from "./headers.js";
|
|
4
|
+
|
|
5
|
+
//#region src/server/app-middleware.d.ts
|
|
6
|
+
type AppMiddlewareContext = {
|
|
7
|
+
headers: Headers | null;
|
|
8
|
+
requestHeaders: Headers | null;
|
|
9
|
+
status: number | null;
|
|
10
|
+
};
|
|
11
|
+
type ApplyAppMiddlewareOptions = {
|
|
12
|
+
basePath?: string;
|
|
13
|
+
cleanPathname: string;
|
|
14
|
+
context: AppMiddlewareContext;
|
|
15
|
+
i18nConfig?: NextI18nConfig | null;
|
|
16
|
+
/**
|
|
17
|
+
* Whether the inbound request was a `_next/data` fetch. Captured from the
|
|
18
|
+
* raw incoming headers by the caller, because `x-nextjs-data` is in
|
|
19
|
+
* INTERNAL_HEADERS and is stripped before this function runs.
|
|
20
|
+
*/
|
|
21
|
+
isDataRequest?: boolean;
|
|
22
|
+
filePath?: string;
|
|
23
|
+
isProxy: boolean;
|
|
24
|
+
module: MiddlewareModule;
|
|
25
|
+
request: Request;
|
|
26
|
+
/**
|
|
27
|
+
* Forwarded to `executeMiddleware` so the NextRequest exposes a NextURL with
|
|
28
|
+
* the configured trailingSlash policy. This is what makes
|
|
29
|
+
* `NextResponse.redirect(request.nextUrl)` emit a Location that honours
|
|
30
|
+
* `trailingSlash`.
|
|
31
|
+
*/
|
|
32
|
+
trailingSlash?: boolean;
|
|
33
|
+
};
|
|
34
|
+
type ApplyAppMiddlewareResult = {
|
|
35
|
+
kind: "continue";
|
|
36
|
+
cleanPathname: string;
|
|
37
|
+
search: string | null;
|
|
38
|
+
} | {
|
|
39
|
+
kind: "response";
|
|
40
|
+
response: Response;
|
|
41
|
+
};
|
|
42
|
+
declare function isExternalMiddlewareRewrite(rewriteUrl: string, request: Request): boolean;
|
|
43
|
+
declare function proxyExternalMiddlewareRewrite(request: Request, rewriteUrl: string, context: AppMiddlewareContext): Promise<Response>;
|
|
44
|
+
declare function applyAppMiddleware(options: ApplyAppMiddlewareOptions): Promise<ApplyAppMiddlewareResult>;
|
|
45
|
+
//#endregion
|
|
46
|
+
export { AppMiddlewareContext, ApplyAppMiddlewareOptions, ApplyAppMiddlewareResult, FLIGHT_HEADERS, applyAppMiddleware, isExternalMiddlewareRewrite, proxyExternalMiddlewareRewrite };
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
import { FLIGHT_HEADERS, VINEXT_MW_CTX_HEADER } from "./headers.js";
|
|
2
|
+
import { buildRequestHeadersFromMiddlewareResponse } from "./middleware-request-headers.js";
|
|
3
|
+
import { isExternalUrl, proxyExternalRequest } from "../config/config-matchers.js";
|
|
4
|
+
import { internalServerErrorResponse } from "./http-error-responses.js";
|
|
5
|
+
import { cloneRequestWithHeaders, processMiddlewareHeaders } from "./request-pipeline.js";
|
|
6
|
+
import { executeMiddleware } from "./middleware-runtime.js";
|
|
7
|
+
import { applyMiddlewareRequestHeaders, setHeadersContext } from "../shims/headers.js";
|
|
8
|
+
import { setNavigationContext } from "../shims/navigation-context-state.js";
|
|
9
|
+
import { mergeMiddlewareResponseHeaders } from "./middleware-response-headers.js";
|
|
10
|
+
import "../shims/navigation.js";
|
|
11
|
+
//#region src/server/app-middleware.ts
|
|
12
|
+
const FLIGHT_HEADER_SET = new Set(FLIGHT_HEADERS);
|
|
13
|
+
function isForwardedMiddlewareContext(value) {
|
|
14
|
+
return !!value && typeof value === "object";
|
|
15
|
+
}
|
|
16
|
+
function requestWithoutFlightHeaders(request) {
|
|
17
|
+
let hasFlightHeader = false;
|
|
18
|
+
const headers = new Headers();
|
|
19
|
+
for (const [key, value] of request.headers) if (FLIGHT_HEADER_SET.has(key.toLowerCase())) hasFlightHeader = true;
|
|
20
|
+
else headers.append(key, value);
|
|
21
|
+
if (!hasFlightHeader) return request;
|
|
22
|
+
return cloneRequestWithHeaders(request.body ? request.clone() : request, headers);
|
|
23
|
+
}
|
|
24
|
+
function appendForwardedHeader(headers, value) {
|
|
25
|
+
if (!Array.isArray(value) || value.length < 2) return;
|
|
26
|
+
const key = value[0];
|
|
27
|
+
const headerValue = value[1];
|
|
28
|
+
if (typeof key === "string" && typeof headerValue === "string") headers.append(key, headerValue);
|
|
29
|
+
}
|
|
30
|
+
function responseFromMiddlewareRedirect(result) {
|
|
31
|
+
if (result.response) return result.response;
|
|
32
|
+
const headers = new Headers(result.responseHeaders);
|
|
33
|
+
if (result.redirectUrl) headers.set("Location", result.redirectUrl);
|
|
34
|
+
return new Response(null, {
|
|
35
|
+
status: result.redirectStatus ?? 307,
|
|
36
|
+
headers
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
function isExternalMiddlewareRewrite(rewriteUrl, request) {
|
|
40
|
+
return new URL(rewriteUrl, request.url).origin !== new URL(request.url).origin;
|
|
41
|
+
}
|
|
42
|
+
function requestWithMiddlewareRequestHeaders(request, middlewareHeaders) {
|
|
43
|
+
const nextHeaders = middlewareHeaders ? buildRequestHeadersFromMiddlewareResponse(request.headers, middlewareHeaders, { preserveCredentialHeaders: true }) : null;
|
|
44
|
+
if (!nextHeaders) return request;
|
|
45
|
+
const init = {
|
|
46
|
+
method: request.method,
|
|
47
|
+
headers: nextHeaders,
|
|
48
|
+
body: request.body
|
|
49
|
+
};
|
|
50
|
+
if (request.body) Object.defineProperty(init, "duplex", {
|
|
51
|
+
value: "half",
|
|
52
|
+
enumerable: true
|
|
53
|
+
});
|
|
54
|
+
return new Request(request.url, init);
|
|
55
|
+
}
|
|
56
|
+
async function proxyExternalMiddlewareRewrite(request, rewriteUrl, context) {
|
|
57
|
+
const proxyRequest = requestWithMiddlewareRequestHeaders(request, context.requestHeaders ?? context.headers);
|
|
58
|
+
setHeadersContext(null);
|
|
59
|
+
setNavigationContext(null);
|
|
60
|
+
const proxyResponse = await proxyExternalRequest(proxyRequest, rewriteUrl);
|
|
61
|
+
const headers = new Headers(proxyResponse.headers);
|
|
62
|
+
processMiddlewareHeaders(headers);
|
|
63
|
+
if (!context.headers) return new Response(proxyResponse.body, {
|
|
64
|
+
status: proxyResponse.status,
|
|
65
|
+
statusText: proxyResponse.statusText,
|
|
66
|
+
headers
|
|
67
|
+
});
|
|
68
|
+
const middlewareHeaders = new Headers(context.headers);
|
|
69
|
+
processMiddlewareHeaders(middlewareHeaders);
|
|
70
|
+
mergeMiddlewareResponseHeaders(headers, middlewareHeaders);
|
|
71
|
+
return new Response(proxyResponse.body, {
|
|
72
|
+
status: proxyResponse.status,
|
|
73
|
+
statusText: proxyResponse.statusText,
|
|
74
|
+
headers
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
function applyForwardedMiddlewareContext(request, context) {
|
|
78
|
+
if (process.env.NODE_ENV === "production") return { applied: false };
|
|
79
|
+
const header = request.headers.get(VINEXT_MW_CTX_HEADER);
|
|
80
|
+
if (!header) return { applied: false };
|
|
81
|
+
try {
|
|
82
|
+
const data = JSON.parse(header);
|
|
83
|
+
if (!isForwardedMiddlewareContext(data)) return { applied: false };
|
|
84
|
+
if (Array.isArray(data.h) && data.h.length > 0) {
|
|
85
|
+
context.headers = new Headers();
|
|
86
|
+
for (const entry of data.h) appendForwardedHeader(context.headers, entry);
|
|
87
|
+
}
|
|
88
|
+
if (typeof data.s === "number") context.status = data.s;
|
|
89
|
+
if (typeof data.r === "string" && data.r.length > 0) return {
|
|
90
|
+
applied: true,
|
|
91
|
+
rewriteUrl: data.r
|
|
92
|
+
};
|
|
93
|
+
return { applied: true };
|
|
94
|
+
} catch (e) {
|
|
95
|
+
console.error("[vinext] Failed to parse forwarded middleware context:", e);
|
|
96
|
+
return { applied: false };
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
async function applyAppMiddleware(options) {
|
|
100
|
+
const forwarded = applyForwardedMiddlewareContext(options.request, options.context);
|
|
101
|
+
const middlewareRequest = requestWithoutFlightHeaders(options.request);
|
|
102
|
+
let cleanPathname = options.cleanPathname;
|
|
103
|
+
let search = null;
|
|
104
|
+
if (forwarded.rewriteUrl) try {
|
|
105
|
+
if (isExternalMiddlewareRewrite(forwarded.rewriteUrl, middlewareRequest)) return {
|
|
106
|
+
kind: "response",
|
|
107
|
+
response: await proxyExternalMiddlewareRewrite(middlewareRequest, forwarded.rewriteUrl, options.context)
|
|
108
|
+
};
|
|
109
|
+
const rewriteParsed = new URL(forwarded.rewriteUrl, middlewareRequest.url);
|
|
110
|
+
cleanPathname = rewriteParsed.pathname;
|
|
111
|
+
search = rewriteParsed.search;
|
|
112
|
+
} catch (e) {
|
|
113
|
+
console.error("[vinext] Failed to apply forwarded middleware rewrite:", e);
|
|
114
|
+
forwarded.applied = false;
|
|
115
|
+
}
|
|
116
|
+
if (!forwarded.applied) {
|
|
117
|
+
const result = await executeMiddleware({
|
|
118
|
+
basePath: options.basePath,
|
|
119
|
+
hadBasePath: true,
|
|
120
|
+
filePath: options.filePath,
|
|
121
|
+
i18nConfig: options.i18nConfig,
|
|
122
|
+
isDataRequest: options.isDataRequest,
|
|
123
|
+
isProxy: options.isProxy,
|
|
124
|
+
module: options.module,
|
|
125
|
+
normalizedPathname: cleanPathname,
|
|
126
|
+
request: middlewareRequest,
|
|
127
|
+
trailingSlash: options.trailingSlash
|
|
128
|
+
});
|
|
129
|
+
if (!result.continue) {
|
|
130
|
+
if (result.redirectUrl) return {
|
|
131
|
+
kind: "response",
|
|
132
|
+
response: responseFromMiddlewareRedirect(result)
|
|
133
|
+
};
|
|
134
|
+
if (result.response) return {
|
|
135
|
+
kind: "response",
|
|
136
|
+
response: result.response
|
|
137
|
+
};
|
|
138
|
+
return {
|
|
139
|
+
kind: "response",
|
|
140
|
+
response: internalServerErrorResponse()
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
if (result.responseHeaders) options.context.headers = new Headers(result.responseHeaders);
|
|
144
|
+
if (result.status !== void 0) options.context.status = result.status;
|
|
145
|
+
if (result.rewriteUrl) {
|
|
146
|
+
if (result.rewriteStatus !== void 0) options.context.status = result.rewriteStatus;
|
|
147
|
+
if (isExternalUrl(result.rewriteUrl)) return {
|
|
148
|
+
kind: "response",
|
|
149
|
+
response: await proxyExternalMiddlewareRewrite(middlewareRequest, result.rewriteUrl, options.context)
|
|
150
|
+
};
|
|
151
|
+
const rewriteParsed = new URL(result.rewriteUrl, middlewareRequest.url);
|
|
152
|
+
cleanPathname = rewriteParsed.pathname;
|
|
153
|
+
search = rewriteParsed.search;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
if (options.context.headers) {
|
|
157
|
+
options.context.requestHeaders = new Headers(options.context.headers);
|
|
158
|
+
applyMiddlewareRequestHeaders(options.context.headers);
|
|
159
|
+
processMiddlewareHeaders(options.context.headers);
|
|
160
|
+
}
|
|
161
|
+
return {
|
|
162
|
+
kind: "continue",
|
|
163
|
+
cleanPathname,
|
|
164
|
+
search
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
//#endregion
|
|
168
|
+
export { FLIGHT_HEADERS, applyAppMiddleware, isExternalMiddlewareRewrite, proxyExternalMiddlewareRewrite };
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
//#region src/server/app-mounted-slots-header.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* Normalize the `x-vinext-mounted-slots` header for request handling and cache keying.
|
|
4
|
+
*
|
|
5
|
+
* The browser sends mounted slot ids as a space-separated list in the order slots were
|
|
6
|
+
* rendered, which changes across navigations. This normalizes to a canonical form
|
|
7
|
+
* (sorted, deduplicated) so equivalent slot sets map to the same RSC cache entry.
|
|
8
|
+
*
|
|
9
|
+
* Security: the value flows into the ISR RSC cache key (`appIsrRscKey`). Without
|
|
10
|
+
* bounds, an attacker who controls this header can fabricate unbounded distinct
|
|
11
|
+
* values to fan out KV writes (per-write billing) or fragment the cache. See
|
|
12
|
+
* `SECURITY-AUDIT-2026-05.md` finding F-PROD-1. The legitimate wire format is a
|
|
13
|
+
* whitespace-separated list of `slot:<name>:<treePath>` tokens (see
|
|
14
|
+
* `createAppPayloadSlotId` in `app-elements-wire.ts`); anything else is rejected.
|
|
15
|
+
*
|
|
16
|
+
* Bounds applied:
|
|
17
|
+
* - Total raw header value capped at MAX_RAW_HEADER_LENGTH bytes (returns null
|
|
18
|
+
* if exceeded so the request is treated as if the header were absent).
|
|
19
|
+
* - Each token capped at MAX_TOKEN_LENGTH bytes.
|
|
20
|
+
* - Token count capped at MAX_SLOT_TOKENS (extras are dropped after sort + dedup).
|
|
21
|
+
* - Each token must match the legitimate slot-id shape, as defined by the
|
|
22
|
+
* AppElements wire codec (`AppElementsWire.isSlotId`). Wire-format details
|
|
23
|
+
* are intentionally kept inside the codec so this module does not duplicate
|
|
24
|
+
* them. Malformed tokens are dropped silently rather than rejecting the
|
|
25
|
+
* whole request — this matches the prior forgiving behavior for browsers
|
|
26
|
+
* that send legitimate but stale formats during rolling deploys.
|
|
27
|
+
*
|
|
28
|
+
* Consumed by:
|
|
29
|
+
* - app-rsc-request-normalization (request lifecycle, reads incoming header)
|
|
30
|
+
* - app-elements (outgoing x-vinext-mounted-slots construction)
|
|
31
|
+
* - isr-cache (RSC cache key generation)
|
|
32
|
+
*/
|
|
33
|
+
declare function normalizeMountedSlotsHeader(raw: string | null | undefined): string | null;
|
|
34
|
+
//#endregion
|
|
35
|
+
export { normalizeMountedSlotsHeader };
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { AppElementsWire } from "./app-elements-wire.js";
|
|
2
|
+
//#region src/server/app-mounted-slots-header.ts
|
|
3
|
+
/**
|
|
4
|
+
* Normalize the `x-vinext-mounted-slots` header for request handling and cache keying.
|
|
5
|
+
*
|
|
6
|
+
* The browser sends mounted slot ids as a space-separated list in the order slots were
|
|
7
|
+
* rendered, which changes across navigations. This normalizes to a canonical form
|
|
8
|
+
* (sorted, deduplicated) so equivalent slot sets map to the same RSC cache entry.
|
|
9
|
+
*
|
|
10
|
+
* Security: the value flows into the ISR RSC cache key (`appIsrRscKey`). Without
|
|
11
|
+
* bounds, an attacker who controls this header can fabricate unbounded distinct
|
|
12
|
+
* values to fan out KV writes (per-write billing) or fragment the cache. See
|
|
13
|
+
* `SECURITY-AUDIT-2026-05.md` finding F-PROD-1. The legitimate wire format is a
|
|
14
|
+
* whitespace-separated list of `slot:<name>:<treePath>` tokens (see
|
|
15
|
+
* `createAppPayloadSlotId` in `app-elements-wire.ts`); anything else is rejected.
|
|
16
|
+
*
|
|
17
|
+
* Bounds applied:
|
|
18
|
+
* - Total raw header value capped at MAX_RAW_HEADER_LENGTH bytes (returns null
|
|
19
|
+
* if exceeded so the request is treated as if the header were absent).
|
|
20
|
+
* - Each token capped at MAX_TOKEN_LENGTH bytes.
|
|
21
|
+
* - Token count capped at MAX_SLOT_TOKENS (extras are dropped after sort + dedup).
|
|
22
|
+
* - Each token must match the legitimate slot-id shape, as defined by the
|
|
23
|
+
* AppElements wire codec (`AppElementsWire.isSlotId`). Wire-format details
|
|
24
|
+
* are intentionally kept inside the codec so this module does not duplicate
|
|
25
|
+
* them. Malformed tokens are dropped silently rather than rejecting the
|
|
26
|
+
* whole request — this matches the prior forgiving behavior for browsers
|
|
27
|
+
* that send legitimate but stale formats during rolling deploys.
|
|
28
|
+
*
|
|
29
|
+
* Consumed by:
|
|
30
|
+
* - app-rsc-request-normalization (request lifecycle, reads incoming header)
|
|
31
|
+
* - app-elements (outgoing x-vinext-mounted-slots construction)
|
|
32
|
+
* - isr-cache (RSC cache key generation)
|
|
33
|
+
*/
|
|
34
|
+
/** Hard cap on the raw header value byte length. Real values are <1 KB. */
|
|
35
|
+
const MAX_RAW_HEADER_LENGTH = 4096;
|
|
36
|
+
/** Hard cap on a single slot token byte length. */
|
|
37
|
+
const MAX_TOKEN_LENGTH = 256;
|
|
38
|
+
/** Hard cap on the number of slot tokens kept after normalization. */
|
|
39
|
+
const MAX_SLOT_TOKENS = 16;
|
|
40
|
+
/**
|
|
41
|
+
* Validate a single mounted-slot token. Shape validation is delegated to the
|
|
42
|
+
* AppElements wire codec so the wire format definition lives in exactly one
|
|
43
|
+
* place. This module only enforces the additional security cap on token byte
|
|
44
|
+
* length to bound cache-key cardinality.
|
|
45
|
+
*/
|
|
46
|
+
function isValidSlotToken(token) {
|
|
47
|
+
if (token.length === 0 || token.length > MAX_TOKEN_LENGTH) return false;
|
|
48
|
+
return AppElementsWire.isSlotId(token);
|
|
49
|
+
}
|
|
50
|
+
function normalizeMountedSlotsHeader(raw) {
|
|
51
|
+
if (!raw) return null;
|
|
52
|
+
if (raw.length > MAX_RAW_HEADER_LENGTH) return null;
|
|
53
|
+
const validTokens = raw.split(/\s+/).filter((token) => token && isValidSlotToken(token));
|
|
54
|
+
if (validTokens.length === 0) return null;
|
|
55
|
+
return Array.from(new Set(validTokens)).sort().slice(0, MAX_SLOT_TOKENS).join(" ") || null;
|
|
56
|
+
}
|
|
57
|
+
//#endregion
|
|
58
|
+
export { normalizeMountedSlotsHeader };
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { RouteManifest, RouteManifestRoute } from "../routing/app-route-graph.js";
|
|
2
|
+
import { AppElements } from "./app-elements-wire.js";
|
|
3
|
+
//#region src/server/app-optimistic-routing.d.ts
|
|
4
|
+
type OptimisticRouteMatch = {
|
|
5
|
+
params: Record<string, string | string[]>;
|
|
6
|
+
route: RouteManifestRoute;
|
|
7
|
+
};
|
|
8
|
+
type OptimisticRouteTemplate = {
|
|
9
|
+
elements: AppElements;
|
|
10
|
+
mountedSlotsHeader: string | null;
|
|
11
|
+
pageElementIds: readonly string[];
|
|
12
|
+
routeId: string;
|
|
13
|
+
};
|
|
14
|
+
type OptimisticNavigationPayload = {
|
|
15
|
+
elements: AppElements;
|
|
16
|
+
params: Record<string, string | string[]>;
|
|
17
|
+
template: OptimisticRouteTemplate;
|
|
18
|
+
};
|
|
19
|
+
declare function getOptimisticRouteTemplateKey(options: {
|
|
20
|
+
interceptionContext: string | null;
|
|
21
|
+
mountedSlotsHeader: string | null;
|
|
22
|
+
routeId: string;
|
|
23
|
+
}): string;
|
|
24
|
+
declare function getOptimisticPrefetchSourceKey(options: {
|
|
25
|
+
cacheKey: string;
|
|
26
|
+
interceptionContext: string | null;
|
|
27
|
+
mountedSlotsHeader: string | null;
|
|
28
|
+
}): string;
|
|
29
|
+
declare function matchOptimisticRouteManifestRoute(options: {
|
|
30
|
+
basePath: string;
|
|
31
|
+
href: string;
|
|
32
|
+
routeManifest: RouteManifest;
|
|
33
|
+
}): OptimisticRouteMatch | null;
|
|
34
|
+
declare function createOptimisticRouteTemplate(options: {
|
|
35
|
+
allowLoadingShell?: boolean;
|
|
36
|
+
basePath: string;
|
|
37
|
+
elements: AppElements;
|
|
38
|
+
href: string;
|
|
39
|
+
interceptionContext: string | null;
|
|
40
|
+
mountedSlotsHeader: string | null;
|
|
41
|
+
routeManifest: RouteManifest;
|
|
42
|
+
}): OptimisticRouteTemplate | null;
|
|
43
|
+
declare function createOptimisticRouteElements(template: OptimisticRouteTemplate): AppElements;
|
|
44
|
+
declare function resolveOptimisticNavigationPayload(options: {
|
|
45
|
+
basePath: string;
|
|
46
|
+
href: string;
|
|
47
|
+
interceptionContext: string | null;
|
|
48
|
+
mountedSlotsHeader: string | null;
|
|
49
|
+
routeManifest: RouteManifest;
|
|
50
|
+
templates: ReadonlyMap<string, OptimisticRouteTemplate>;
|
|
51
|
+
}): OptimisticNavigationPayload | null;
|
|
52
|
+
//#endregion
|
|
53
|
+
export { OptimisticRouteTemplate, createOptimisticRouteElements, createOptimisticRouteTemplate, getOptimisticPrefetchSourceKey, getOptimisticRouteTemplateKey, matchOptimisticRouteManifestRoute, resolveOptimisticNavigationPayload };
|