@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,42 @@
|
|
|
1
|
+
//#region src/server/middleware-response-headers.ts
|
|
2
|
+
const ADDITIVE_RESPONSE_HEADER_NAMES = new Set(["set-cookie", "vary"]);
|
|
3
|
+
function mergeVaryHeader(target, value) {
|
|
4
|
+
const existing = target.get("Vary");
|
|
5
|
+
const tokens = (existing ? `${existing}, ${value}` : value).split(",").map((token) => token.trim()).filter((token) => token.length > 0);
|
|
6
|
+
if (tokens.some((token) => token === "*")) {
|
|
7
|
+
target.set("Vary", "*");
|
|
8
|
+
return;
|
|
9
|
+
}
|
|
10
|
+
const seen = /* @__PURE__ */ new Set();
|
|
11
|
+
const merged = [];
|
|
12
|
+
for (const token of tokens) {
|
|
13
|
+
const normalized = token.toLowerCase();
|
|
14
|
+
if (seen.has(normalized)) continue;
|
|
15
|
+
seen.add(normalized);
|
|
16
|
+
merged.push(token);
|
|
17
|
+
}
|
|
18
|
+
target.set("Vary", merged.join(", "));
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Merge middleware response headers into a target Headers object.
|
|
22
|
+
*
|
|
23
|
+
* Set-Cookie and Vary are accumulated (append) since multiple sources can
|
|
24
|
+
* contribute values. All other headers use set() so middleware owns singular
|
|
25
|
+
* response headers like Cache-Control.
|
|
26
|
+
*/
|
|
27
|
+
function mergeMiddlewareResponseHeaders(target, middlewareHeaders) {
|
|
28
|
+
if (!middlewareHeaders) return;
|
|
29
|
+
for (const [key, value] of middlewareHeaders) {
|
|
30
|
+
if (key.toLowerCase() === "vary") {
|
|
31
|
+
mergeVaryHeader(target, value);
|
|
32
|
+
continue;
|
|
33
|
+
}
|
|
34
|
+
if (ADDITIVE_RESPONSE_HEADER_NAMES.has(key.toLowerCase())) {
|
|
35
|
+
target.append(key, value);
|
|
36
|
+
continue;
|
|
37
|
+
}
|
|
38
|
+
target.set(key, value);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
//#endregion
|
|
42
|
+
export { mergeMiddlewareResponseHeaders, mergeVaryHeader };
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { NextI18nConfig } from "../config/next-config.js";
|
|
2
|
+
import { ExecutionContextLike } from "../shims/request-context.js";
|
|
3
|
+
import { NextFetchEvent, NextRequest } from "../shims/server.js";
|
|
4
|
+
|
|
5
|
+
//#region src/server/middleware-runtime.d.ts
|
|
6
|
+
type MiddlewareModule = Record<string, unknown>;
|
|
7
|
+
type MiddlewareResult = {
|
|
8
|
+
continue: boolean;
|
|
9
|
+
redirectUrl?: string;
|
|
10
|
+
redirectStatus?: number;
|
|
11
|
+
rewriteUrl?: string;
|
|
12
|
+
rewriteStatus?: number;
|
|
13
|
+
status?: number;
|
|
14
|
+
responseHeaders?: Headers;
|
|
15
|
+
response?: Response;
|
|
16
|
+
waitUntilPromises?: Promise<unknown>[];
|
|
17
|
+
};
|
|
18
|
+
type MiddlewareHandler = (request: NextRequest, event: NextFetchEvent) => Response | undefined | void | Promise<Response | undefined | void>;
|
|
19
|
+
type ExecuteMiddlewareOptions = {
|
|
20
|
+
basePath?: string;
|
|
21
|
+
filePath?: string;
|
|
22
|
+
/**
|
|
23
|
+
* Whether the incoming request was inside the configured basePath. Drives
|
|
24
|
+
* the `nextUrl.basePath` the middleware observes: in-basePath requests are
|
|
25
|
+
* re-prefixed so NextURL reports the configured basePath, while
|
|
26
|
+
* out-of-basePath ("absolute path") requests stay un-prefixed so middleware
|
|
27
|
+
* sees `nextUrl.basePath === ""` (Next.js `getNextPathnameInfo` semantics —
|
|
28
|
+
* see test/e2e/middleware-base-path "should execute from absolute paths").
|
|
29
|
+
* When omitted it is derived from the request URL, which is correct for the
|
|
30
|
+
* Pages prod/deploy adapters because they pass the original (un-stripped)
|
|
31
|
+
* URL. Callers that pass an already-stripped URL (dev server, App Router)
|
|
32
|
+
* must set this explicitly.
|
|
33
|
+
*/
|
|
34
|
+
hadBasePath?: boolean;
|
|
35
|
+
i18nConfig?: NextI18nConfig | null;
|
|
36
|
+
includeErrorDetails?: boolean;
|
|
37
|
+
/**
|
|
38
|
+
* Whether the incoming request was recognized as a Next.js `_next/data`
|
|
39
|
+
* fetch. Internal headers are stripped before middleware runs, so adapters
|
|
40
|
+
* must derive and forward this from trusted URL normalization.
|
|
41
|
+
*/
|
|
42
|
+
isDataRequest?: boolean;
|
|
43
|
+
isProxy: boolean;
|
|
44
|
+
module: MiddlewareModule;
|
|
45
|
+
normalizedPathname?: string;
|
|
46
|
+
request: Request;
|
|
47
|
+
/**
|
|
48
|
+
* The user's `trailingSlash` config. Plumbed into the NextRequest's NextURL
|
|
49
|
+
* so `request.nextUrl.toString()` formats with the configured slash policy,
|
|
50
|
+
* which feeds into `NextResponse.redirect(request.nextUrl)` Location headers.
|
|
51
|
+
* Also used to normalize redirect Location pathnames returned via plain
|
|
52
|
+
* `new URL('/x', req.url)`.
|
|
53
|
+
*/
|
|
54
|
+
trailingSlash?: boolean;
|
|
55
|
+
};
|
|
56
|
+
type RunGeneratedMiddlewareOptions = ExecuteMiddlewareOptions & {
|
|
57
|
+
ctx?: ExecutionContextLike;
|
|
58
|
+
};
|
|
59
|
+
declare function createMiddlewareMissingExportError(filePath: string | undefined, isProxy: boolean): Error;
|
|
60
|
+
declare function resolveMiddlewareModuleHandler(mod: MiddlewareModule, options: {
|
|
61
|
+
filePath?: string;
|
|
62
|
+
isProxy: boolean;
|
|
63
|
+
}): MiddlewareHandler;
|
|
64
|
+
declare function executeMiddleware(options: ExecuteMiddlewareOptions): Promise<MiddlewareResult>;
|
|
65
|
+
declare function runGeneratedMiddleware(options: RunGeneratedMiddlewareOptions): Promise<MiddlewareResult>;
|
|
66
|
+
//#endregion
|
|
67
|
+
export { MiddlewareModule, MiddlewareResult, createMiddlewareMissingExportError, executeMiddleware, resolveMiddlewareModuleHandler, runGeneratedMiddleware };
|
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
import { normalizePathnameForRouteMatchStrict } from "../routing/utils.js";
|
|
2
|
+
import { addBasePathToPathname, hasBasePath, removeTrailingSlash, stripBasePath } from "../utils/base-path.js";
|
|
3
|
+
import "./server-globals.js";
|
|
4
|
+
import { getRequestExecutionContext, runWithExecutionContext } from "../shims/request-context.js";
|
|
5
|
+
import { MIDDLEWARE_REWRITE_HEADER } from "./headers.js";
|
|
6
|
+
import { shouldKeepMiddlewareHeader } from "./middleware-request-headers.js";
|
|
7
|
+
import { NextFetchEvent, NextRequest } from "../shims/server.js";
|
|
8
|
+
import { normalizePath } from "./normalize-path.js";
|
|
9
|
+
import { matchesMiddleware } from "./middleware-matcher.js";
|
|
10
|
+
import { badRequestResponse, internalServerErrorResponse } from "./http-error-responses.js";
|
|
11
|
+
import { processMiddlewareHeaders } from "./request-pipeline.js";
|
|
12
|
+
import path from "node:path";
|
|
13
|
+
//#region src/server/middleware-runtime.ts
|
|
14
|
+
function isMiddlewareHandler(value) {
|
|
15
|
+
return typeof value === "function";
|
|
16
|
+
}
|
|
17
|
+
function isMiddlewareConfigExport(value) {
|
|
18
|
+
return !!value && typeof value === "object";
|
|
19
|
+
}
|
|
20
|
+
function middlewareExpectedExport(isProxy) {
|
|
21
|
+
return isProxy ? "proxy" : "middleware";
|
|
22
|
+
}
|
|
23
|
+
function middlewareDisplayPath(filePath) {
|
|
24
|
+
const fileName = path.basename(filePath);
|
|
25
|
+
return path.basename(path.dirname(filePath)) === "src" ? `./src/${fileName}` : `./${fileName}`;
|
|
26
|
+
}
|
|
27
|
+
function createMiddlewareMissingExportError(filePath, isProxy) {
|
|
28
|
+
const expectedExport = middlewareExpectedExport(isProxy);
|
|
29
|
+
const displayPath = filePath ? middlewareDisplayPath(filePath) : void 0;
|
|
30
|
+
const resolvedPath = displayPath ? ` "${displayPath}"` : "";
|
|
31
|
+
const migrationReason = isProxy ? "- You are migrating from `middleware` to `proxy`, but haven't updated the exported function.\n" : "";
|
|
32
|
+
return /* @__PURE__ */ new Error(`The file${resolvedPath} must export a function, either as a default export or as a named "${expectedExport}" export.\nThis function is what Next.js runs for every request handled by this ${isProxy ? "proxy (previously called middleware)" : "middleware"}.\n\nWhy this happens:\n` + migrationReason + `- The file exists but doesn't export a function.
|
|
33
|
+
- The export is not a function (e.g., an object or constant).
|
|
34
|
+
- There's a syntax error preventing the export from being recognized.
|
|
35
|
+
|
|
36
|
+
To fix it:
|
|
37
|
+
- Ensure this file has either a default or "${expectedExport}" function export.\n\nLearn more: https://nextjs.org/docs/messages/middleware-to-proxy`);
|
|
38
|
+
}
|
|
39
|
+
function resolveMiddlewareModuleHandler(mod, options) {
|
|
40
|
+
const handler = options.isProxy ? mod.proxy ?? mod.default : mod.middleware ?? mod.default;
|
|
41
|
+
if (isMiddlewareHandler(handler)) return handler;
|
|
42
|
+
throw createMiddlewareMissingExportError(options.filePath, options.isProxy);
|
|
43
|
+
}
|
|
44
|
+
function middlewareMatcher(mod) {
|
|
45
|
+
const config = mod.config;
|
|
46
|
+
if (!isMiddlewareConfigExport(config)) return void 0;
|
|
47
|
+
return config.matcher;
|
|
48
|
+
}
|
|
49
|
+
function stripMiddlewareHeadersFromResponse(response) {
|
|
50
|
+
const headers = new Headers(response.headers);
|
|
51
|
+
processMiddlewareHeaders(headers);
|
|
52
|
+
return new Response(response.body, {
|
|
53
|
+
status: response.status,
|
|
54
|
+
statusText: response.statusText,
|
|
55
|
+
headers
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Make a same-host URL relative to the request origin. Cross-origin URLs are
|
|
60
|
+
* returned unchanged. Mirrors Next.js's `getRelativeURL` behaviour:
|
|
61
|
+
* https://github.com/vercel/next.js/blob/canary/packages/next/src/shared/lib/router/utils/relativize-url.ts
|
|
62
|
+
*/
|
|
63
|
+
function relativizeLocation(location, requestUrl) {
|
|
64
|
+
let parsed;
|
|
65
|
+
try {
|
|
66
|
+
parsed = new URL(location, requestUrl);
|
|
67
|
+
} catch {
|
|
68
|
+
return location;
|
|
69
|
+
}
|
|
70
|
+
const base = new URL(requestUrl);
|
|
71
|
+
if (parsed.origin !== base.origin) return parsed.toString();
|
|
72
|
+
return parsed.pathname + parsed.search + parsed.hash;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Translate a middleware redirect Response into the soft-redirect protocol
|
|
76
|
+
* used by Next.js for `_next/data` requests: a 200 OK with the redirect target
|
|
77
|
+
* carried in the `x-nextjs-redirect` header. The client router consumes this
|
|
78
|
+
* header to perform the navigation, avoiding CORS issues that would arise from
|
|
79
|
+
* an actual cross-origin HTTP redirect on a data fetch.
|
|
80
|
+
*
|
|
81
|
+
* Reference: packages/next/src/server/web/adapter.ts
|
|
82
|
+
* https://github.com/vercel/next.js/blob/canary/packages/next/src/server/web/adapter.ts
|
|
83
|
+
*/
|
|
84
|
+
function dataRedirectResponse(target, originalResponse) {
|
|
85
|
+
const headers = new Headers(originalResponse.headers);
|
|
86
|
+
processMiddlewareHeaders(headers);
|
|
87
|
+
headers.delete("Location");
|
|
88
|
+
headers.set("x-nextjs-redirect", target);
|
|
89
|
+
return new Response(null, {
|
|
90
|
+
status: 200,
|
|
91
|
+
headers
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
function collectMiddlewareHeaders(response) {
|
|
95
|
+
const responseHeaders = new Headers();
|
|
96
|
+
for (const [key, value] of response.headers) if (!key.startsWith("x-middleware-") || shouldKeepMiddlewareHeader(key)) responseHeaders.append(key, value);
|
|
97
|
+
return responseHeaders;
|
|
98
|
+
}
|
|
99
|
+
function drainFetchEvent(fetchEvent) {
|
|
100
|
+
const waitUntilPromises = fetchEvent.waitUntilPromises;
|
|
101
|
+
const drained = fetchEvent.drainWaitUntil();
|
|
102
|
+
const executionContext = getRequestExecutionContext();
|
|
103
|
+
if (executionContext) executionContext.waitUntil(drained);
|
|
104
|
+
return waitUntilPromises;
|
|
105
|
+
}
|
|
106
|
+
function resolveMiddlewarePathname(request) {
|
|
107
|
+
const url = new URL(request.url);
|
|
108
|
+
try {
|
|
109
|
+
return normalizePath(normalizePathnameForRouteMatchStrict(url.pathname));
|
|
110
|
+
} catch {
|
|
111
|
+
return badRequestResponse();
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
function createNextRequest(request, normalizedPathname, i18nConfig, basePath, trailingSlash, hadBasePath) {
|
|
115
|
+
const url = new URL(request.url);
|
|
116
|
+
let mwRequest = request.body && !request.bodyUsed ? request.clone() : request;
|
|
117
|
+
const mwPathname = basePath && hadBasePath ? addBasePathToPathname(normalizedPathname, basePath) : normalizedPathname;
|
|
118
|
+
if (mwPathname !== url.pathname) {
|
|
119
|
+
const mwUrl = new URL(url);
|
|
120
|
+
mwUrl.pathname = mwPathname;
|
|
121
|
+
mwRequest = new Request(mwUrl, mwRequest);
|
|
122
|
+
}
|
|
123
|
+
const nextConfig = basePath || i18nConfig || trailingSlash ? {
|
|
124
|
+
basePath: basePath ?? "",
|
|
125
|
+
i18n: i18nConfig ?? void 0,
|
|
126
|
+
trailingSlash: trailingSlash ?? void 0
|
|
127
|
+
} : void 0;
|
|
128
|
+
return mwRequest instanceof NextRequest ? mwRequest : new NextRequest(mwRequest, nextConfig ? { nextConfig } : void 0);
|
|
129
|
+
}
|
|
130
|
+
async function executeMiddleware(options) {
|
|
131
|
+
const middlewareFn = resolveMiddlewareModuleHandler(options.module, {
|
|
132
|
+
filePath: options.filePath,
|
|
133
|
+
isProxy: options.isProxy
|
|
134
|
+
});
|
|
135
|
+
const normalizedPathname = options.normalizedPathname ?? resolveMiddlewarePathname(options.request);
|
|
136
|
+
if (normalizedPathname instanceof Response) return {
|
|
137
|
+
continue: false,
|
|
138
|
+
response: normalizedPathname
|
|
139
|
+
};
|
|
140
|
+
const hadBasePath = options.hadBasePath ?? (!options.basePath || hasBasePath(new URL(options.request.url).pathname, options.basePath));
|
|
141
|
+
const matchPathname = options.basePath ? stripBasePath(normalizedPathname, options.basePath) : normalizedPathname;
|
|
142
|
+
if (!matchesMiddleware(matchPathname, middlewareMatcher(options.module), options.request, options.i18nConfig)) return { continue: true };
|
|
143
|
+
const nextRequest = createNextRequest(options.request, normalizedPathname, options.i18nConfig, options.basePath, options.trailingSlash, hadBasePath);
|
|
144
|
+
const fetchEvent = new NextFetchEvent({ page: removeTrailingSlash(matchPathname) });
|
|
145
|
+
let response;
|
|
146
|
+
try {
|
|
147
|
+
response = await middlewareFn(nextRequest, fetchEvent);
|
|
148
|
+
} catch (e) {
|
|
149
|
+
console.error("[vinext] Middleware error:", e);
|
|
150
|
+
const waitUntilPromises = drainFetchEvent(fetchEvent);
|
|
151
|
+
return {
|
|
152
|
+
continue: false,
|
|
153
|
+
response: internalServerErrorResponse(options.includeErrorDetails ? "Middleware Error: " + (e instanceof Error ? e.message : String(e)) : "Internal Server Error"),
|
|
154
|
+
waitUntilPromises
|
|
155
|
+
};
|
|
156
|
+
} finally {
|
|
157
|
+
if (process.env.NODE_ENV !== "development" && nextRequest.body) nextRequest.body.cancel().catch(() => {});
|
|
158
|
+
}
|
|
159
|
+
const waitUntilPromises = drainFetchEvent(fetchEvent);
|
|
160
|
+
if (!response) return {
|
|
161
|
+
continue: true,
|
|
162
|
+
waitUntilPromises
|
|
163
|
+
};
|
|
164
|
+
if (response.headers.get("x-middleware-next") === "1") return {
|
|
165
|
+
continue: true,
|
|
166
|
+
responseHeaders: collectMiddlewareHeaders(response),
|
|
167
|
+
status: response.status !== 200 ? response.status : void 0,
|
|
168
|
+
waitUntilPromises
|
|
169
|
+
};
|
|
170
|
+
if (response.status >= 300 && response.status < 400) {
|
|
171
|
+
const location = response.headers.get("Location") ?? response.headers.get("location");
|
|
172
|
+
if (location) {
|
|
173
|
+
const relativeLocation = relativizeLocation(location, options.request.url);
|
|
174
|
+
let normalizedLocation = relativeLocation;
|
|
175
|
+
if (options.trailingSlash !== void 0) try {
|
|
176
|
+
const loc = new URL(relativeLocation, options.request.url);
|
|
177
|
+
if (loc.origin === new URL(options.request.url).origin) {
|
|
178
|
+
const p = loc.pathname;
|
|
179
|
+
let normalized = null;
|
|
180
|
+
if (p !== "" && p !== "/") if (options.trailingSlash) normalized = p.endsWith("/") ? null : p + "/";
|
|
181
|
+
else normalized = p.endsWith("/") ? p.slice(0, -1) : null;
|
|
182
|
+
if (normalized !== null) normalizedLocation = normalized + loc.search + loc.hash;
|
|
183
|
+
}
|
|
184
|
+
} catch {}
|
|
185
|
+
if (options.isDataRequest) return {
|
|
186
|
+
continue: false,
|
|
187
|
+
response: dataRedirectResponse(normalizedLocation, response),
|
|
188
|
+
waitUntilPromises
|
|
189
|
+
};
|
|
190
|
+
const responseHeaders = new Headers();
|
|
191
|
+
for (const [key, value] of response.headers) if (!key.startsWith("x-middleware-") && key.toLowerCase() !== "location") responseHeaders.append(key, value);
|
|
192
|
+
const relativizedResponseHeaders = new Headers(response.headers);
|
|
193
|
+
relativizedResponseHeaders.set("Location", normalizedLocation);
|
|
194
|
+
const relativizedResponse = new Response(response.body, {
|
|
195
|
+
status: response.status,
|
|
196
|
+
statusText: response.statusText,
|
|
197
|
+
headers: relativizedResponseHeaders
|
|
198
|
+
});
|
|
199
|
+
return {
|
|
200
|
+
continue: false,
|
|
201
|
+
redirectUrl: normalizedLocation,
|
|
202
|
+
redirectStatus: response.status,
|
|
203
|
+
response: stripMiddlewareHeadersFromResponse(relativizedResponse),
|
|
204
|
+
responseHeaders,
|
|
205
|
+
waitUntilPromises
|
|
206
|
+
};
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
const rewriteUrl = response.headers.get(MIDDLEWARE_REWRITE_HEADER);
|
|
210
|
+
if (rewriteUrl) {
|
|
211
|
+
let rewritePath;
|
|
212
|
+
try {
|
|
213
|
+
const rewriteParsed = new URL(rewriteUrl, options.request.url);
|
|
214
|
+
const requestOrigin = new URL(options.request.url).origin;
|
|
215
|
+
if (rewriteParsed.origin === requestOrigin) rewritePath = (options.basePath ? stripBasePath(rewriteParsed.pathname, options.basePath) : rewriteParsed.pathname) + rewriteParsed.search;
|
|
216
|
+
else rewritePath = rewriteParsed.href;
|
|
217
|
+
} catch {
|
|
218
|
+
rewritePath = rewriteUrl;
|
|
219
|
+
}
|
|
220
|
+
return {
|
|
221
|
+
continue: true,
|
|
222
|
+
rewriteUrl: rewritePath,
|
|
223
|
+
rewriteStatus: response.status !== 200 ? response.status : void 0,
|
|
224
|
+
responseHeaders: collectMiddlewareHeaders(response),
|
|
225
|
+
status: response.status !== 200 ? response.status : void 0,
|
|
226
|
+
waitUntilPromises
|
|
227
|
+
};
|
|
228
|
+
}
|
|
229
|
+
return {
|
|
230
|
+
continue: false,
|
|
231
|
+
response: stripMiddlewareHeadersFromResponse(response),
|
|
232
|
+
waitUntilPromises
|
|
233
|
+
};
|
|
234
|
+
}
|
|
235
|
+
async function runGeneratedMiddleware(options) {
|
|
236
|
+
const run = () => executeMiddleware(options);
|
|
237
|
+
return options.ctx ? runWithExecutionContext(options.ctx, run) : run();
|
|
238
|
+
}
|
|
239
|
+
//#endregion
|
|
240
|
+
export { createMiddlewareMissingExportError, executeMiddleware, resolveMiddlewareModuleHandler, runGeneratedMiddleware };
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { NextI18nConfig } from "../config/next-config.js";
|
|
2
|
+
import { ValidFileMatcher } from "../routing/file-matcher.js";
|
|
3
|
+
import { MiddlewareModule, MiddlewareResult } from "./middleware-runtime.js";
|
|
4
|
+
import { matchPattern, matchesMiddleware } from "./middleware-matcher.js";
|
|
5
|
+
import { ModuleRunner } from "vite/module-runner";
|
|
6
|
+
|
|
7
|
+
//#region src/server/middleware.d.ts
|
|
8
|
+
/**
|
|
9
|
+
* Determine whether a middleware/proxy file path refers to a proxy file.
|
|
10
|
+
* proxy.ts files accept `proxy` or `default` exports.
|
|
11
|
+
* middleware.ts files accept `middleware` or `default` exports.
|
|
12
|
+
*
|
|
13
|
+
* Matches Next.js behavior where each file type only accepts its own
|
|
14
|
+
* named export or a default export:
|
|
15
|
+
* https://github.com/vercel/next.js/blob/canary/packages/next/src/build/templates/middleware.ts
|
|
16
|
+
*/
|
|
17
|
+
declare function isProxyFile(filePath: string): boolean;
|
|
18
|
+
/**
|
|
19
|
+
* Resolve the middleware/proxy handler function from a module's exports.
|
|
20
|
+
* Matches Next.js behavior: for proxy files, check `proxy` then `default`;
|
|
21
|
+
* for middleware files, check `middleware` then `default`.
|
|
22
|
+
*
|
|
23
|
+
* Throws if the file exists but doesn't export a valid function, matching
|
|
24
|
+
* Next.js's ProxyMissingExportError behavior.
|
|
25
|
+
*
|
|
26
|
+
* @see https://github.com/vercel/next.js/blob/canary/packages/next/src/build/templates/middleware.ts
|
|
27
|
+
* @see https://github.com/vercel/next.js/blob/canary/test/e2e/app-dir/proxy-missing-export/proxy-missing-export.test.ts
|
|
28
|
+
*/
|
|
29
|
+
declare function resolveMiddlewareHandler(mod: MiddlewareModule, filePath: string): (request: NextRequest, event: NextFetchEvent) => Response | undefined | void | Promise<Response | undefined | void>;
|
|
30
|
+
/**
|
|
31
|
+
* Find the proxy or middleware file at the selected app/pages convention level.
|
|
32
|
+
* Checks for proxy.ts (Next.js 16) first, then falls back to middleware.ts.
|
|
33
|
+
* If middleware.ts is found, logs a deprecation warning.
|
|
34
|
+
*
|
|
35
|
+
* Note on log noise: this function is called from Vite's `config` hook, which
|
|
36
|
+
* fires once per build environment (RSC, SSR, client, …). That means a project
|
|
37
|
+
* still using `middleware.ts` will see this warning emitted 2–3 times per
|
|
38
|
+
* build. The warning is benign — it does not abort the build. Next.js itself
|
|
39
|
+
* emits the same message via `Log.warnOnce`; matching that parity would
|
|
40
|
+
* require either a per-root deduplication map or hoisting the warning out of
|
|
41
|
+
* this function (e.g. into the plugin's `configResolved` hook). Tracked as a
|
|
42
|
+
* follow-up; see the deploy-suite investigation in run 25870737355.
|
|
43
|
+
*
|
|
44
|
+
* @see https://github.com/vercel/next.js/blob/canary/packages/next/src/build/index.ts
|
|
45
|
+
* (search for "MIDDLEWARE_FILENAME" + "file convention is deprecated")
|
|
46
|
+
*/
|
|
47
|
+
declare function findMiddlewareFile(root: string, fileMatcher: ValidFileMatcher, conventionDir?: string): string | null;
|
|
48
|
+
/**
|
|
49
|
+
* Load and execute middleware for a given request.
|
|
50
|
+
*
|
|
51
|
+
* @param runner - A ModuleRunner used to load the middleware module.
|
|
52
|
+
* Must be a long-lived instance created once (e.g. in configureServer) via
|
|
53
|
+
* createDirectRunner() — NOT recreated per request. Using server.ssrLoadModule
|
|
54
|
+
* directly crashes with `outsideEmitter` when @cloudflare/vite-plugin is
|
|
55
|
+
* present because SSRCompatModuleRunner reads environment.hot.api synchronously.
|
|
56
|
+
* @param middlewarePath - Absolute path to the middleware file
|
|
57
|
+
* @param request - The incoming Request object
|
|
58
|
+
* @returns Middleware result describing what action to take
|
|
59
|
+
*/
|
|
60
|
+
declare function runMiddleware(runner: ModuleRunner, middlewarePath: string, request: Request, i18nConfig?: NextI18nConfig | null, basePath?: string, trailingSlash?: boolean, isDataRequest?: boolean): Promise<MiddlewareResult>;
|
|
61
|
+
//#endregion
|
|
62
|
+
export { findMiddlewareFile, isProxyFile, matchPattern, matchesMiddleware, resolveMiddlewareHandler, runMiddleware };
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { matchPattern, matchesMiddleware } from "./middleware-matcher.js";
|
|
2
|
+
import { resolveMiddlewareModuleHandler, runGeneratedMiddleware } from "./middleware-runtime.js";
|
|
3
|
+
import fs from "node:fs";
|
|
4
|
+
import path from "node:path";
|
|
5
|
+
//#region src/server/middleware.ts
|
|
6
|
+
/**
|
|
7
|
+
* Determine whether a middleware/proxy file path refers to a proxy file.
|
|
8
|
+
* proxy.ts files accept `proxy` or `default` exports.
|
|
9
|
+
* middleware.ts files accept `middleware` or `default` exports.
|
|
10
|
+
*
|
|
11
|
+
* Matches Next.js behavior where each file type only accepts its own
|
|
12
|
+
* named export or a default export:
|
|
13
|
+
* https://github.com/vercel/next.js/blob/canary/packages/next/src/build/templates/middleware.ts
|
|
14
|
+
*/
|
|
15
|
+
function isProxyFile(filePath) {
|
|
16
|
+
const base = path.basename(filePath);
|
|
17
|
+
return base === "proxy" || base.startsWith("proxy.");
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Resolve the middleware/proxy handler function from a module's exports.
|
|
21
|
+
* Matches Next.js behavior: for proxy files, check `proxy` then `default`;
|
|
22
|
+
* for middleware files, check `middleware` then `default`.
|
|
23
|
+
*
|
|
24
|
+
* Throws if the file exists but doesn't export a valid function, matching
|
|
25
|
+
* Next.js's ProxyMissingExportError behavior.
|
|
26
|
+
*
|
|
27
|
+
* @see https://github.com/vercel/next.js/blob/canary/packages/next/src/build/templates/middleware.ts
|
|
28
|
+
* @see https://github.com/vercel/next.js/blob/canary/test/e2e/app-dir/proxy-missing-export/proxy-missing-export.test.ts
|
|
29
|
+
*/
|
|
30
|
+
function resolveMiddlewareHandler(mod, filePath) {
|
|
31
|
+
return resolveMiddlewareModuleHandler(mod, {
|
|
32
|
+
filePath,
|
|
33
|
+
isProxy: isProxyFile(filePath)
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Find the proxy or middleware file at the selected app/pages convention level.
|
|
38
|
+
* Checks for proxy.ts (Next.js 16) first, then falls back to middleware.ts.
|
|
39
|
+
* If middleware.ts is found, logs a deprecation warning.
|
|
40
|
+
*
|
|
41
|
+
* Note on log noise: this function is called from Vite's `config` hook, which
|
|
42
|
+
* fires once per build environment (RSC, SSR, client, …). That means a project
|
|
43
|
+
* still using `middleware.ts` will see this warning emitted 2–3 times per
|
|
44
|
+
* build. The warning is benign — it does not abort the build. Next.js itself
|
|
45
|
+
* emits the same message via `Log.warnOnce`; matching that parity would
|
|
46
|
+
* require either a per-root deduplication map or hoisting the warning out of
|
|
47
|
+
* this function (e.g. into the plugin's `configResolved` hook). Tracked as a
|
|
48
|
+
* follow-up; see the deploy-suite investigation in run 25870737355.
|
|
49
|
+
*
|
|
50
|
+
* @see https://github.com/vercel/next.js/blob/canary/packages/next/src/build/index.ts
|
|
51
|
+
* (search for "MIDDLEWARE_FILENAME" + "file convention is deprecated")
|
|
52
|
+
*/
|
|
53
|
+
function findMiddlewareFile(root, fileMatcher, conventionDir = root) {
|
|
54
|
+
let proxyPath = null;
|
|
55
|
+
for (const ext of fileMatcher.dottedExtensions) {
|
|
56
|
+
const fullPath = path.join(conventionDir, `proxy${ext}`);
|
|
57
|
+
if (fs.existsSync(fullPath)) {
|
|
58
|
+
proxyPath = fullPath;
|
|
59
|
+
break;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
let middlewarePath = null;
|
|
63
|
+
for (const ext of fileMatcher.dottedExtensions) {
|
|
64
|
+
const fullPath = path.join(conventionDir, `middleware${ext}`);
|
|
65
|
+
if (fs.existsSync(fullPath)) {
|
|
66
|
+
middlewarePath = fullPath;
|
|
67
|
+
break;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
if (proxyPath && middlewarePath) {
|
|
71
|
+
const relativeProxyPath = `./${path.relative(root, proxyPath)}`;
|
|
72
|
+
const relativeMiddlewarePath = `./${path.relative(root, middlewarePath)}`;
|
|
73
|
+
throw new Error(`Both middleware file "${relativeMiddlewarePath}" and proxy file "${relativeProxyPath}" are detected. Please use "${relativeProxyPath}" only. Learn more: https://nextjs.org/docs/messages/middleware-to-proxy`);
|
|
74
|
+
}
|
|
75
|
+
if (proxyPath) return proxyPath;
|
|
76
|
+
if (middlewarePath) {
|
|
77
|
+
console.warn("The \"middleware\" file convention is deprecated. Please use \"proxy\" instead.\n\n To migrate automatically, run:\n npx @next/codemod@canary middleware-to-proxy .\n\n Learn more: https://nextjs.org/docs/messages/middleware-to-proxy");
|
|
78
|
+
return middlewarePath;
|
|
79
|
+
}
|
|
80
|
+
return null;
|
|
81
|
+
}
|
|
82
|
+
function isMiddlewareModule(value) {
|
|
83
|
+
return !!value && typeof value === "object";
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Load and execute middleware for a given request.
|
|
87
|
+
*
|
|
88
|
+
* @param runner - A ModuleRunner used to load the middleware module.
|
|
89
|
+
* Must be a long-lived instance created once (e.g. in configureServer) via
|
|
90
|
+
* createDirectRunner() — NOT recreated per request. Using server.ssrLoadModule
|
|
91
|
+
* directly crashes with `outsideEmitter` when @cloudflare/vite-plugin is
|
|
92
|
+
* present because SSRCompatModuleRunner reads environment.hot.api synchronously.
|
|
93
|
+
* @param middlewarePath - Absolute path to the middleware file
|
|
94
|
+
* @param request - The incoming Request object
|
|
95
|
+
* @returns Middleware result describing what action to take
|
|
96
|
+
*/
|
|
97
|
+
async function runMiddleware(runner, middlewarePath, request, i18nConfig, basePath, trailingSlash, isDataRequest) {
|
|
98
|
+
const mod = await runner.import(middlewarePath);
|
|
99
|
+
if (!isMiddlewareModule(mod)) throw new Error(`Middleware module "${middlewarePath}" did not evaluate to an object.`);
|
|
100
|
+
return runGeneratedMiddleware({
|
|
101
|
+
basePath,
|
|
102
|
+
filePath: middlewarePath,
|
|
103
|
+
hadBasePath: true,
|
|
104
|
+
i18nConfig,
|
|
105
|
+
includeErrorDetails: process.env.NODE_ENV !== "production",
|
|
106
|
+
isDataRequest,
|
|
107
|
+
isProxy: isProxyFile(middlewarePath),
|
|
108
|
+
module: mod,
|
|
109
|
+
request,
|
|
110
|
+
trailingSlash
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
//#endregion
|
|
114
|
+
export { findMiddlewareFile, isProxyFile, matchPattern, matchesMiddleware, resolveMiddlewareHandler, runMiddleware };
|