vinext 0.0.51 → 0.0.53
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/build/clean-output.d.ts +14 -0
- package/dist/build/clean-output.js +36 -0
- package/dist/build/clean-output.js.map +1 -0
- package/dist/build/precompress.d.ts +7 -7
- package/dist/build/precompress.js +18 -17
- package/dist/build/precompress.js.map +1 -1
- package/dist/build/prerender.d.ts +9 -16
- package/dist/build/prerender.js +88 -50
- package/dist/build/prerender.js.map +1 -1
- package/dist/build/run-prerender.js +10 -1
- package/dist/build/run-prerender.js.map +1 -1
- package/dist/build/static-export.d.ts +5 -0
- package/dist/build/static-export.js +8 -3
- package/dist/build/static-export.js.map +1 -1
- package/dist/check.js +4 -0
- package/dist/check.js.map +1 -1
- package/dist/cli-args.d.ts +1 -0
- package/dist/cli-args.js +5 -0
- package/dist/cli-args.js.map +1 -1
- package/dist/cli.js +58 -4
- package/dist/cli.js.map +1 -1
- package/dist/client/instrumentation-client-inject.d.ts +34 -0
- package/dist/client/instrumentation-client-inject.js +57 -0
- package/dist/client/instrumentation-client-inject.js.map +1 -0
- package/dist/client/navigation-runtime.d.ts +60 -0
- package/dist/client/navigation-runtime.js +171 -0
- package/dist/client/navigation-runtime.js.map +1 -0
- package/dist/client/pages-router-link-navigation.d.ts +26 -0
- package/dist/client/pages-router-link-navigation.js +14 -0
- package/dist/client/pages-router-link-navigation.js.map +1 -0
- package/dist/client/vinext-next-data.d.ts +14 -3
- package/dist/client/vinext-next-data.js +50 -1
- package/dist/client/vinext-next-data.js.map +1 -0
- package/dist/client/window-next.d.ts +10 -2
- package/dist/client/window-next.js.map +1 -1
- package/dist/cloudflare/kv-cache-handler.js +2 -1
- package/dist/cloudflare/kv-cache-handler.js.map +1 -1
- package/dist/cloudflare/tpr.js +1 -1
- package/dist/cloudflare/tpr.js.map +1 -1
- package/dist/config/config-matchers.d.ts +63 -16
- package/dist/config/config-matchers.js +145 -9
- package/dist/config/config-matchers.js.map +1 -1
- package/dist/config/next-config.d.ts +32 -5
- package/dist/config/next-config.js +55 -15
- package/dist/config/next-config.js.map +1 -1
- package/dist/deploy.js +130 -46
- package/dist/deploy.js.map +1 -1
- package/dist/entries/app-browser-entry.js +9 -3
- package/dist/entries/app-browser-entry.js.map +1 -1
- package/dist/entries/app-rsc-entry.d.ts +4 -2
- package/dist/entries/app-rsc-entry.js +76 -16
- package/dist/entries/app-rsc-entry.js.map +1 -1
- package/dist/entries/app-rsc-manifest.d.ts +1 -0
- package/dist/entries/app-rsc-manifest.js +53 -6
- package/dist/entries/app-rsc-manifest.js.map +1 -1
- package/dist/entries/app-ssr-entry.d.ts +3 -3
- package/dist/entries/app-ssr-entry.js +4 -4
- package/dist/entries/app-ssr-entry.js.map +1 -1
- package/dist/entries/pages-client-entry.js +40 -3
- package/dist/entries/pages-client-entry.js.map +1 -1
- package/dist/entries/pages-server-entry.js +261 -31
- package/dist/entries/pages-server-entry.js.map +1 -1
- package/dist/entries/runtime-entry-module.d.ts +2 -1
- package/dist/entries/runtime-entry-module.js +9 -3
- package/dist/entries/runtime-entry-module.js.map +1 -1
- package/dist/index.js +161 -46
- package/dist/index.js.map +1 -1
- package/dist/plugins/css-data-url.d.ts +7 -0
- package/dist/plugins/css-data-url.js +81 -0
- package/dist/plugins/css-data-url.js.map +1 -0
- package/dist/plugins/fonts.js +30 -5
- package/dist/plugins/fonts.js.map +1 -1
- package/dist/plugins/middleware-server-only.d.ts +54 -0
- package/dist/plugins/middleware-server-only.js +91 -0
- package/dist/plugins/middleware-server-only.js.map +1 -0
- package/dist/plugins/optimize-imports.js +4 -4
- package/dist/plugins/optimize-imports.js.map +1 -1
- package/dist/plugins/strip-server-exports.js +5 -8
- package/dist/plugins/strip-server-exports.js.map +1 -1
- package/dist/routing/app-route-graph.d.ts +20 -1
- package/dist/routing/app-route-graph.js +58 -6
- package/dist/routing/app-route-graph.js.map +1 -1
- package/dist/routing/app-router.d.ts +2 -2
- package/dist/routing/app-router.js +2 -2
- package/dist/routing/app-router.js.map +1 -1
- package/dist/routing/route-trie.js +13 -18
- package/dist/routing/route-trie.js.map +1 -1
- package/dist/routing/utils.d.ts +12 -1
- package/dist/routing/utils.js +18 -1
- package/dist/routing/utils.js.map +1 -1
- package/dist/server/api-handler.js +153 -42
- package/dist/server/api-handler.js.map +1 -1
- package/dist/server/app-browser-action-result.d.ts +16 -1
- package/dist/server/app-browser-action-result.js +15 -1
- package/dist/server/app-browser-action-result.js.map +1 -1
- package/dist/server/app-browser-entry.js +309 -155
- package/dist/server/app-browser-entry.js.map +1 -1
- package/dist/server/app-browser-interception-context.d.ts +24 -0
- package/dist/server/app-browser-interception-context.js +32 -0
- package/dist/server/app-browser-interception-context.js.map +1 -0
- package/dist/server/app-browser-navigation-controller.d.ts +3 -1
- package/dist/server/app-browser-navigation-controller.js +5 -1
- package/dist/server/app-browser-navigation-controller.js.map +1 -1
- package/dist/server/app-browser-rsc-redirect.d.ts +2 -1
- package/dist/server/app-browser-rsc-redirect.js +2 -2
- package/dist/server/app-browser-rsc-redirect.js.map +1 -1
- package/dist/server/app-browser-state.d.ts +18 -1
- package/dist/server/app-browser-state.js +19 -1
- package/dist/server/app-browser-state.js.map +1 -1
- package/dist/server/app-browser-stream.d.ts +5 -14
- package/dist/server/app-browser-stream.js +13 -7
- package/dist/server/app-browser-stream.js.map +1 -1
- package/dist/server/app-browser-visible-commit.d.ts +2 -1
- package/dist/server/app-browser-visible-commit.js +1 -0
- package/dist/server/app-browser-visible-commit.js.map +1 -1
- package/dist/server/app-elements-wire.d.ts +10 -5
- package/dist/server/app-elements-wire.js +84 -2
- package/dist/server/app-elements-wire.js.map +1 -1
- package/dist/server/app-elements.d.ts +3 -2
- package/dist/server/app-elements.js +3 -2
- package/dist/server/app-elements.js.map +1 -1
- package/dist/server/app-fallback-renderer.d.ts +12 -3
- package/dist/server/app-fallback-renderer.js +15 -8
- package/dist/server/app-fallback-renderer.js.map +1 -1
- package/dist/server/app-history-state.js +6 -2
- package/dist/server/app-history-state.js.map +1 -1
- package/dist/server/app-interception-context-header.d.ts +33 -0
- package/dist/server/app-interception-context-header.js +44 -0
- package/dist/server/app-interception-context-header.js.map +1 -0
- package/dist/server/app-middleware.d.ts +13 -0
- package/dist/server/app-middleware.js +3 -1
- package/dist/server/app-middleware.js.map +1 -1
- package/dist/server/app-mounted-slots-header.d.ts +19 -0
- package/dist/server/app-mounted-slots-header.js +40 -1
- package/dist/server/app-mounted-slots-header.js.map +1 -1
- package/dist/server/app-optimistic-routing.d.ts +54 -0
- package/dist/server/app-optimistic-routing.js +208 -0
- package/dist/server/app-optimistic-routing.js.map +1 -0
- package/dist/server/app-page-boundary-render.d.ts +1 -0
- package/dist/server/app-page-boundary-render.js +2 -0
- package/dist/server/app-page-boundary-render.js.map +1 -1
- package/dist/server/app-page-boundary.d.ts +1 -0
- package/dist/server/app-page-boundary.js +2 -0
- package/dist/server/app-page-boundary.js.map +1 -1
- package/dist/server/app-page-cache.d.ts +15 -1
- package/dist/server/app-page-cache.js +68 -7
- package/dist/server/app-page-cache.js.map +1 -1
- package/dist/server/app-page-dispatch.d.ts +5 -0
- package/dist/server/app-page-dispatch.js +39 -5
- package/dist/server/app-page-dispatch.js.map +1 -1
- package/dist/server/app-page-element-builder.d.ts +2 -1
- package/dist/server/app-page-element-builder.js +7 -3
- package/dist/server/app-page-element-builder.js.map +1 -1
- package/dist/server/app-page-execution.d.ts +29 -1
- package/dist/server/app-page-execution.js +91 -4
- package/dist/server/app-page-execution.js.map +1 -1
- package/dist/server/app-page-head.d.ts +1 -0
- package/dist/server/app-page-head.js +29 -2
- package/dist/server/app-page-head.js.map +1 -1
- package/dist/server/app-page-probe.js +1 -1
- package/dist/server/app-page-render-observation.js +1 -1
- package/dist/server/app-page-render.d.ts +3 -0
- package/dist/server/app-page-render.js +7 -3
- package/dist/server/app-page-render.js.map +1 -1
- package/dist/server/app-page-response.d.ts +11 -1
- package/dist/server/app-page-response.js +18 -5
- package/dist/server/app-page-response.js.map +1 -1
- package/dist/server/app-page-route-wiring.d.ts +1 -0
- package/dist/server/app-page-route-wiring.js +35 -15
- package/dist/server/app-page-route-wiring.js.map +1 -1
- package/dist/server/app-page-stream.d.ts +4 -0
- package/dist/server/app-page-stream.js +3 -0
- package/dist/server/app-page-stream.js.map +1 -1
- package/dist/server/app-prerender-static-params.d.ts +2 -1
- package/dist/server/app-prerender-static-params.js +44 -8
- package/dist/server/app-prerender-static-params.js.map +1 -1
- package/dist/server/app-route-handler-cache.d.ts +2 -2
- package/dist/server/app-route-handler-cache.js +3 -2
- package/dist/server/app-route-handler-cache.js.map +1 -1
- package/dist/server/app-route-handler-dispatch.d.ts +7 -1
- package/dist/server/app-route-handler-dispatch.js +4 -1
- package/dist/server/app-route-handler-dispatch.js.map +1 -1
- package/dist/server/app-route-handler-execution.d.ts +18 -2
- package/dist/server/app-route-handler-execution.js +1 -0
- package/dist/server/app-route-handler-execution.js.map +1 -1
- package/dist/server/app-route-handler-response.js +6 -5
- package/dist/server/app-route-handler-response.js.map +1 -1
- package/dist/server/app-router-entry.js +6 -2
- package/dist/server/app-router-entry.js.map +1 -1
- package/dist/server/app-rsc-handler.d.ts +11 -1
- package/dist/server/app-rsc-handler.js +48 -21
- package/dist/server/app-rsc-handler.js.map +1 -1
- package/dist/server/app-rsc-render-mode.d.ts +4 -3
- package/dist/server/app-rsc-render-mode.js +7 -1
- package/dist/server/app-rsc-render-mode.js.map +1 -1
- package/dist/server/app-rsc-request-normalization.d.ts +4 -1
- package/dist/server/app-rsc-request-normalization.js +6 -2
- package/dist/server/app-rsc-request-normalization.js.map +1 -1
- package/dist/server/app-rsc-response-finalizer.d.ts +8 -1
- package/dist/server/app-rsc-response-finalizer.js +10 -3
- package/dist/server/app-rsc-response-finalizer.js.map +1 -1
- package/dist/server/app-rsc-route-matching.js +2 -2
- package/dist/server/app-rsc-route-matching.js.map +1 -1
- package/dist/server/app-segment-config.d.ts +4 -1
- package/dist/server/app-segment-config.js +6 -1
- package/dist/server/app-segment-config.js.map +1 -1
- package/dist/server/app-server-action-execution.d.ts +1 -0
- package/dist/server/app-server-action-execution.js +5 -1
- package/dist/server/app-server-action-execution.js.map +1 -1
- package/dist/server/app-ssr-entry.d.ts +2 -0
- package/dist/server/app-ssr-entry.js +92 -55
- package/dist/server/app-ssr-entry.js.map +1 -1
- package/dist/server/app-ssr-stream.d.ts +30 -2
- package/dist/server/app-ssr-stream.js +95 -8
- package/dist/server/app-ssr-stream.js.map +1 -1
- package/dist/server/app-static-generation.d.ts +1 -0
- package/dist/server/app-static-generation.js +2 -1
- package/dist/server/app-static-generation.js.map +1 -1
- package/dist/server/artifact-compatibility.d.ts +1 -1
- package/dist/server/artifact-compatibility.js.map +1 -1
- package/dist/server/cache-headers.d.ts +7 -0
- package/dist/server/cache-headers.js +19 -0
- package/dist/server/cache-headers.js.map +1 -0
- package/dist/server/cache-proof.d.ts +49 -3
- package/dist/server/cache-proof.js +78 -22
- package/dist/server/cache-proof.js.map +1 -1
- package/dist/server/client-reuse-manifest.d.ts +99 -0
- package/dist/server/client-reuse-manifest.js +212 -0
- package/dist/server/client-reuse-manifest.js.map +1 -0
- package/dist/server/default-global-error-module.d.ts +20 -0
- package/dist/server/default-global-error-module.js +20 -0
- package/dist/server/default-global-error-module.js.map +1 -0
- package/dist/server/default-not-found-module.d.ts +20 -0
- package/dist/server/default-not-found-module.js +20 -0
- package/dist/server/default-not-found-module.js.map +1 -0
- package/dist/server/dev-server.d.ts +10 -2
- package/dist/server/dev-server.js +99 -36
- package/dist/server/dev-server.js.map +1 -1
- package/dist/server/edge-api-runtime.d.ts +5 -0
- package/dist/server/edge-api-runtime.js +8 -0
- package/dist/server/edge-api-runtime.js.map +1 -0
- package/dist/server/headers.d.ts +22 -1
- package/dist/server/headers.js +22 -1
- package/dist/server/headers.js.map +1 -1
- package/dist/server/http-error-responses.d.ts +16 -1
- package/dist/server/http-error-responses.js +21 -1
- package/dist/server/http-error-responses.js.map +1 -1
- package/dist/server/image-optimization.d.ts +13 -4
- package/dist/server/image-optimization.js +15 -4
- package/dist/server/image-optimization.js.map +1 -1
- package/dist/server/isr-cache.d.ts +6 -2
- package/dist/server/isr-cache.js +20 -4
- package/dist/server/isr-cache.js.map +1 -1
- package/dist/server/middleware-runtime.d.ts +15 -0
- package/dist/server/middleware-runtime.js +59 -7
- package/dist/server/middleware-runtime.js.map +1 -1
- package/dist/server/middleware.d.ts +1 -1
- package/dist/server/middleware.js +5 -3
- package/dist/server/middleware.js.map +1 -1
- package/dist/server/navigation-planner.d.ts +9 -3
- package/dist/server/navigation-planner.js +98 -25
- package/dist/server/navigation-planner.js.map +1 -1
- package/dist/server/navigation-trace.d.ts +2 -1
- package/dist/server/navigation-trace.js +1 -0
- package/dist/server/navigation-trace.js.map +1 -1
- package/dist/server/pages-api-route.d.ts +45 -1
- package/dist/server/pages-api-route.js +27 -4
- package/dist/server/pages-api-route.js.map +1 -1
- package/dist/server/pages-body-parser-config.d.ts +60 -0
- package/dist/server/pages-body-parser-config.js +79 -0
- package/dist/server/pages-body-parser-config.js.map +1 -0
- package/dist/server/pages-data-route.d.ts +77 -0
- package/dist/server/pages-data-route.js +98 -0
- package/dist/server/pages-data-route.js.map +1 -0
- package/dist/server/pages-default-404.d.ts +31 -0
- package/dist/server/pages-default-404.js +40 -0
- package/dist/server/pages-default-404.js.map +1 -0
- package/dist/server/pages-i18n.d.ts +51 -1
- package/dist/server/pages-i18n.js +61 -1
- package/dist/server/pages-i18n.js.map +1 -1
- package/dist/server/pages-node-compat.d.ts +10 -0
- package/dist/server/pages-node-compat.js +12 -1
- package/dist/server/pages-node-compat.js.map +1 -1
- package/dist/server/pages-page-data.d.ts +69 -2
- package/dist/server/pages-page-data.js +47 -31
- package/dist/server/pages-page-data.js.map +1 -1
- package/dist/server/pages-page-response.d.ts +13 -1
- package/dist/server/pages-page-response.js +16 -11
- package/dist/server/pages-page-response.js.map +1 -1
- package/dist/server/prerender-route-params.d.ts +14 -0
- package/dist/server/prerender-route-params.js +94 -0
- package/dist/server/prerender-route-params.js.map +1 -0
- package/dist/server/prod-server.d.ts +15 -37
- package/dist/server/prod-server.js +143 -107
- package/dist/server/prod-server.js.map +1 -1
- package/dist/server/proxy-trust.d.ts +41 -0
- package/dist/server/proxy-trust.js +70 -0
- package/dist/server/proxy-trust.js.map +1 -0
- package/dist/server/request-pipeline.d.ts +13 -4
- package/dist/server/request-pipeline.js +32 -14
- package/dist/server/request-pipeline.js.map +1 -1
- package/dist/server/seed-cache.d.ts +12 -31
- package/dist/server/seed-cache.js +30 -37
- package/dist/server/seed-cache.js.map +1 -1
- package/dist/server/server-action-not-found.js +8 -3
- package/dist/server/server-action-not-found.js.map +1 -1
- package/dist/server/skip-cache-proof.d.ts +41 -0
- package/dist/server/skip-cache-proof.js +101 -0
- package/dist/server/skip-cache-proof.js.map +1 -0
- package/dist/server/static-file-cache.d.ts +1 -1
- package/dist/server/static-file-cache.js +8 -7
- package/dist/server/static-file-cache.js.map +1 -1
- package/dist/server/streaming-metadata.d.ts +5 -0
- package/dist/server/streaming-metadata.js +10 -0
- package/dist/server/streaming-metadata.js.map +1 -0
- package/dist/shims/app-router-scroll-state.d.ts +12 -0
- package/dist/shims/app-router-scroll-state.js +38 -0
- package/dist/shims/app-router-scroll-state.js.map +1 -0
- package/dist/shims/app-router-scroll.d.ts +14 -0
- package/dist/shims/app-router-scroll.js +100 -0
- package/dist/shims/app-router-scroll.js.map +1 -0
- package/dist/shims/before-interactive-context.d.ts +30 -0
- package/dist/shims/before-interactive-context.js +10 -0
- package/dist/shims/before-interactive-context.js.map +1 -0
- package/dist/shims/cache-runtime.d.ts +1 -1
- package/dist/shims/cache-runtime.js +14 -1
- package/dist/shims/cache-runtime.js.map +1 -1
- package/dist/shims/client-locale.d.ts +15 -0
- package/dist/shims/client-locale.js +13 -0
- package/dist/shims/client-locale.js.map +1 -0
- package/dist/shims/default-global-error.d.ts +32 -0
- package/dist/shims/default-global-error.js +181 -0
- package/dist/shims/default-global-error.js.map +1 -0
- package/dist/shims/default-not-found.d.ts +12 -0
- package/dist/shims/default-not-found.js +61 -0
- package/dist/shims/default-not-found.js.map +1 -0
- package/dist/shims/document.d.ts +59 -3
- package/dist/shims/document.js +36 -5
- package/dist/shims/document.js.map +1 -1
- package/dist/shims/error-boundary.d.ts +2 -2
- package/dist/shims/font-local.d.ts +5 -0
- package/dist/shims/font-local.js +6 -2
- package/dist/shims/font-local.js.map +1 -1
- package/dist/shims/form.js +13 -6
- package/dist/shims/form.js.map +1 -1
- package/dist/shims/head.js +4 -4
- package/dist/shims/head.js.map +1 -1
- package/dist/shims/headers.d.ts +6 -2
- package/dist/shims/headers.js +64 -21
- package/dist/shims/headers.js.map +1 -1
- package/dist/shims/image.d.ts +1 -1
- package/dist/shims/image.js +4 -4
- package/dist/shims/image.js.map +1 -1
- package/dist/shims/internal/pages-data-target.d.ts +58 -0
- package/dist/shims/internal/pages-data-target.js +91 -0
- package/dist/shims/internal/pages-data-target.js.map +1 -0
- package/dist/shims/internal/pages-data-url.d.ts +42 -0
- package/dist/shims/internal/pages-data-url.js +73 -0
- package/dist/shims/internal/pages-data-url.js.map +1 -0
- package/dist/shims/link.d.ts +21 -3
- package/dist/shims/link.js +189 -30
- package/dist/shims/link.js.map +1 -1
- package/dist/shims/metadata.d.ts +2 -1
- package/dist/shims/metadata.js +65 -6
- package/dist/shims/metadata.js.map +1 -1
- package/dist/shims/navigation.d.ts +8 -2
- package/dist/shims/navigation.js +67 -23
- package/dist/shims/navigation.js.map +1 -1
- package/dist/shims/og.d.ts +18 -2
- package/dist/shims/og.js +49 -1
- package/dist/shims/og.js.map +1 -0
- package/dist/shims/request-state-types.d.ts +1 -1
- package/dist/shims/root-params.d.ts +3 -1
- package/dist/shims/root-params.js +11 -3
- package/dist/shims/root-params.js.map +1 -1
- package/dist/shims/router-state.d.ts +1 -0
- package/dist/shims/router-state.js.map +1 -1
- package/dist/shims/router.d.ts +12 -5
- package/dist/shims/router.js +535 -86
- package/dist/shims/router.js.map +1 -1
- package/dist/shims/script.js +86 -12
- package/dist/shims/script.js.map +1 -1
- package/dist/shims/server.d.ts +21 -4
- package/dist/shims/server.js +30 -9
- package/dist/shims/server.js.map +1 -1
- package/dist/shims/slot.js +5 -1
- package/dist/shims/slot.js.map +1 -1
- package/dist/shims/unified-request-context.d.ts +1 -1
- package/dist/shims/url-safety.d.ts +23 -1
- package/dist/shims/url-safety.js +29 -2
- package/dist/shims/url-safety.js.map +1 -1
- package/dist/shims/url-utils.d.ts +2 -1
- package/dist/shims/url-utils.js +15 -4
- package/dist/shims/url-utils.js.map +1 -1
- package/dist/typegen.d.ts +10 -0
- package/dist/typegen.js +242 -0
- package/dist/typegen.js.map +1 -0
- package/dist/utils/asset-prefix.d.ts +33 -5
- package/dist/utils/asset-prefix.js +39 -6
- package/dist/utils/asset-prefix.js.map +1 -1
- package/dist/utils/cache-control-metadata.d.ts +2 -1
- package/dist/utils/cache-control-metadata.js +1 -3
- package/dist/utils/cache-control-metadata.js.map +1 -1
- package/dist/utils/domain-locale.d.ts +2 -1
- package/dist/utils/domain-locale.js +9 -1
- package/dist/utils/domain-locale.js.map +1 -1
- package/dist/utils/html-limited-bots.d.ts +5 -0
- package/dist/utils/html-limited-bots.js +15 -0
- package/dist/utils/html-limited-bots.js.map +1 -0
- package/dist/utils/lazy-chunks.d.ts +1 -1
- package/dist/utils/lazy-chunks.js +1 -1
- package/dist/utils/lazy-chunks.js.map +1 -1
- package/dist/utils/prerender-output-paths.d.ts +15 -0
- package/dist/utils/prerender-output-paths.js +24 -0
- package/dist/utils/prerender-output-paths.js.map +1 -0
- package/dist/utils/query.d.ts +23 -1
- package/dist/utils/query.js +46 -2
- package/dist/utils/query.js.map +1 -1
- package/dist/utils/record.d.ts +5 -0
- package/dist/utils/record.js +8 -0
- package/dist/utils/record.js.map +1 -0
- package/package.json +11 -3
package/dist/index.js
CHANGED
|
@@ -1,21 +1,24 @@
|
|
|
1
1
|
import { detectPackageManager } from "./utils/project.js";
|
|
2
2
|
import { normalizePathnameForRouteMatchStrict } from "./routing/utils.js";
|
|
3
3
|
import { createValidFileMatcher } from "./routing/file-matcher.js";
|
|
4
|
-
import { hasBasePath
|
|
4
|
+
import { hasBasePath } from "./utils/base-path.js";
|
|
5
5
|
import { apiRouter, invalidateRouteCache, matchRoute, pagesRouter } from "./routing/pages-router.js";
|
|
6
|
-
import { INTERNAL_HEADERS, VINEXT_MW_CTX_HEADER, VINEXT_TIMING_HEADER } from "./server/headers.js";
|
|
6
|
+
import { INTERNAL_HEADERS, VINEXT_INTERNAL_HEADERS, VINEXT_MW_CTX_HEADER, VINEXT_TIMING_HEADER } from "./server/headers.js";
|
|
7
7
|
import { buildRequestHeadersFromMiddlewareResponse } from "./server/middleware-request-headers.js";
|
|
8
8
|
import { normalizePath as normalizePath$1 } from "./server/normalize-path.js";
|
|
9
9
|
import { isExternalUrl, matchHeaders, matchRedirect, matchRewrite, proxyExternalRequest, requestContextFromRequest, sanitizeDestination } from "./config/config-matchers.js";
|
|
10
|
-
import { filterInternalHeaders, isOpenRedirectShaped } from "./server/request-pipeline.js";
|
|
10
|
+
import { filterInternalHeaders, isOpenRedirectShaped, normalizeTrailingSlash } from "./server/request-pipeline.js";
|
|
11
|
+
import { mergeRewriteQuery } from "./utils/query.js";
|
|
11
12
|
import { findMiddlewareFile, runMiddleware } from "./server/middleware.js";
|
|
12
13
|
import { generateServerEntry } from "./entries/pages-server-entry.js";
|
|
13
14
|
import { generateClientEntry } from "./entries/pages-client-entry.js";
|
|
14
15
|
import { appRouteGraph, appRouter, invalidateAppRouteCache } from "./routing/app-router.js";
|
|
15
16
|
import { findInstrumentationClientFile, findInstrumentationFile, runInstrumentation } from "./server/instrumentation.js";
|
|
16
17
|
import { logRequest, now } from "./server/request-log.js";
|
|
18
|
+
import { normalizeDefaultLocalePathname, stripI18nLocaleForApiRoute } from "./server/pages-i18n.js";
|
|
17
19
|
import { createSSRHandler } from "./server/dev-server.js";
|
|
18
20
|
import { handleApiRoute } from "./server/api-handler.js";
|
|
21
|
+
import { isImageOptimizationPath } from "./server/image-optimization.js";
|
|
19
22
|
import { installSocketErrorBackstop } from "./server/socket-error-backstop.js";
|
|
20
23
|
import { scanMetadataFiles } from "./server/metadata-routes.js";
|
|
21
24
|
import { shouldInvalidateAppRouteFile } from "./server/dev-route-files.js";
|
|
@@ -27,17 +30,22 @@ import { generateBrowserEntry } from "./entries/app-browser-entry.js";
|
|
|
27
30
|
import { collectRouteClassificationManifest } from "./build/route-classification-manifest.js";
|
|
28
31
|
import { planRouteClassificationInjection } from "./build/route-classification-injector.js";
|
|
29
32
|
import { PHASE_DEVELOPMENT_SERVER, PHASE_PRODUCTION_BUILD } from "./shims/constants.js";
|
|
33
|
+
import { ASSET_PREFIX_URL_DIR, resolveAssetUrlPrefix, resolveAssetsDir } from "./utils/asset-prefix.js";
|
|
30
34
|
import { RESOLVED_VIRTUAL_GOOGLE_FONTS, VIRTUAL_GOOGLE_FONTS, createGoogleFontsPlugin, createLocalFontsPlugin, generateGoogleFontsVirtualModule, parseStaticObjectLiteral } from "./plugins/fonts.js";
|
|
31
35
|
import { findNextConfigPath, loadNextConfig, resolveNextConfig, resolveNextConfigInput } from "./config/next-config.js";
|
|
36
|
+
import { isNextDataPathname, parseNextDataPathname } from "./server/pages-data-route.js";
|
|
32
37
|
import { precompressAssets } from "./build/precompress.js";
|
|
33
38
|
import { manifestFileWithBase, manifestFilesWithBase } from "./utils/manifest-paths.js";
|
|
34
|
-
import { ASSET_PREFIX_URL_DIR, resolveAssetUrlPrefix, resolveAssetsDir } from "./utils/asset-prefix.js";
|
|
35
39
|
import { asyncHooksStubPlugin } from "./plugins/async-hooks-stub.js";
|
|
36
40
|
import { clientReferenceDedupPlugin } from "./plugins/client-reference-dedup.js";
|
|
41
|
+
import { dataUrlCssPlugin } from "./plugins/css-data-url.js";
|
|
37
42
|
import { createRscClientReferenceLoadersPlugin } from "./plugins/rsc-client-reference-loaders.js";
|
|
38
43
|
import { createInstrumentationClientTransformPlugin } from "./plugins/instrumentation-client.js";
|
|
44
|
+
import { INSTRUMENTATION_CLIENT_EMPTY_MODULE, generateInstrumentationClientInjectModule } from "./client/instrumentation-client-inject.js";
|
|
45
|
+
import { createMiddlewareServerOnlyPlugin } from "./plugins/middleware-server-only.js";
|
|
39
46
|
import { createOptimizeImportsPlugin } from "./plugins/optimize-imports.js";
|
|
40
47
|
import { createOgInlineFetchAssetsPlugin, ogAssetsPlugin } from "./plugins/og-assets.js";
|
|
48
|
+
import { generateRouteTypes } from "./typegen.js";
|
|
41
49
|
import { SSR_EXTERNAL_REACT_ENTRIES, VINEXT_OPTIMIZE_DEPS_EXCLUDE, mergeOptimizeDepsExclude } from "./plugins/rsc-client-shim-excludes.js";
|
|
42
50
|
import { createServerExternalsManifestPlugin } from "./plugins/server-externals-manifest.js";
|
|
43
51
|
import { computeLazyChunks } from "./utils/lazy-chunks.js";
|
|
@@ -76,12 +84,24 @@ function resolveOptionalDependency(projectRoot, specifier) {
|
|
|
76
84
|
return null;
|
|
77
85
|
}
|
|
78
86
|
function resolveShimModulePath(shimsDir, moduleName) {
|
|
79
|
-
for (const ext of [
|
|
87
|
+
for (const ext of [
|
|
88
|
+
".ts",
|
|
89
|
+
".tsx",
|
|
90
|
+
".js"
|
|
91
|
+
]) {
|
|
80
92
|
const candidate = path.join(shimsDir, `${moduleName}${ext}`);
|
|
81
93
|
if (fs.existsSync(candidate)) return candidate;
|
|
82
94
|
}
|
|
83
95
|
return path.join(shimsDir, `${moduleName}.js`);
|
|
84
96
|
}
|
|
97
|
+
function isVercelOgImport(id) {
|
|
98
|
+
return id === "@vercel/og" || id === "@vercel/og.js";
|
|
99
|
+
}
|
|
100
|
+
function isVinextOgShimImporter(importer) {
|
|
101
|
+
if (!importer) return false;
|
|
102
|
+
const normalizedImporter = (importer.startsWith("\0") ? importer.slice(1) : importer).split("?")[0].replace(/\\/g, "/");
|
|
103
|
+
return normalizedImporter.endsWith("/shims/og.tsx") || normalizedImporter.endsWith("/shims/og.js") || normalizedImporter.endsWith("/dist/shims/og.js");
|
|
104
|
+
}
|
|
85
105
|
function toRelativeFileEntry(root, absPath) {
|
|
86
106
|
return path.relative(root, absPath).split(path.sep).join("/");
|
|
87
107
|
}
|
|
@@ -237,6 +257,9 @@ const RESOLVED_APP_SSR_ENTRY = "\0" + VIRTUAL_APP_SSR_ENTRY;
|
|
|
237
257
|
const VIRTUAL_APP_BROWSER_ENTRY = "virtual:vinext-app-browser-entry";
|
|
238
258
|
const RESOLVED_APP_BROWSER_ENTRY = "\0" + VIRTUAL_APP_BROWSER_ENTRY;
|
|
239
259
|
const RESOLVED_ROOT_PARAMS = "\0virtual:vinext-root-params";
|
|
260
|
+
/** Virtual module for composed instrumentation-client bootstrap. */
|
|
261
|
+
const VIRTUAL_INSTRUMENTATION_CLIENT = "private-next-instrumentation-client";
|
|
262
|
+
const RESOLVED_INSTRUMENTATION_CLIENT = `\0${VIRTUAL_INSTRUMENTATION_CLIENT}.mjs`;
|
|
240
263
|
/** Image file extensions handled by the vinext:image-imports plugin.
|
|
241
264
|
* Shared between the Rolldown hook filter and the transform handler regex. */
|
|
242
265
|
const IMAGE_EXTS = "png|jpe?g|gif|webp|avif|svg|ico|bmp|tiff?";
|
|
@@ -335,10 +358,12 @@ function vinext(options = {}) {
|
|
|
335
358
|
let middlewarePath = null;
|
|
336
359
|
let instrumentationPath = null;
|
|
337
360
|
let instrumentationClientPath = null;
|
|
361
|
+
let clientInjectModule = null;
|
|
338
362
|
let hasCloudflarePlugin = false;
|
|
339
363
|
let warnedInlineNextConfigOverride = false;
|
|
340
364
|
let hasNitroPlugin = false;
|
|
341
365
|
let rscCompatibilityId;
|
|
366
|
+
const draftModeSecret = randomUUID();
|
|
342
367
|
let rscClassificationManifest = null;
|
|
343
368
|
const shimsDir = path.resolve(__dirname, "shims");
|
|
344
369
|
const canonicalize = (p) => tryRealpathSync(p) ?? p;
|
|
@@ -366,6 +391,14 @@ function vinext(options = {}) {
|
|
|
366
391
|
async function generateClientEntry$1() {
|
|
367
392
|
return generateClientEntry(pagesDir, nextConfig, fileMatcher);
|
|
368
393
|
}
|
|
394
|
+
async function writeRouteTypes() {
|
|
395
|
+
if (!hasAppDir) return;
|
|
396
|
+
await generateRouteTypes({
|
|
397
|
+
root,
|
|
398
|
+
appDir,
|
|
399
|
+
pageExtensions: nextConfig.pageExtensions
|
|
400
|
+
});
|
|
401
|
+
}
|
|
369
402
|
const autoRsc = options.rsc !== false;
|
|
370
403
|
const earlyBaseDir = options.appDir ?? process.cwd();
|
|
371
404
|
const earlyAppDirExists = !options.disableAppRouter && (fs.existsSync(path.join(earlyBaseDir, "app")) || fs.existsSync(path.join(earlyBaseDir, "src", "app")));
|
|
@@ -455,6 +488,12 @@ function vinext(options = {}) {
|
|
|
455
488
|
};
|
|
456
489
|
}
|
|
457
490
|
}] : [],
|
|
491
|
+
createMiddlewareServerOnlyPlugin({
|
|
492
|
+
getMiddlewarePath: () => middlewarePath,
|
|
493
|
+
getCanonicalMiddlewarePath: () => middlewarePath ? tryRealpathSync(middlewarePath) ?? middlewarePath : null,
|
|
494
|
+
serverOnlyShimPath: resolveShimModulePath(shimsDir, "server-only")
|
|
495
|
+
}),
|
|
496
|
+
dataUrlCssPlugin(),
|
|
458
497
|
{
|
|
459
498
|
name: "vinext:config",
|
|
460
499
|
enforce: "pre",
|
|
@@ -504,6 +543,9 @@ function vinext(options = {}) {
|
|
|
504
543
|
instrumentationPath = findInstrumentationFile(root, fileMatcher);
|
|
505
544
|
instrumentationClientPath = findInstrumentationClientFile(root, fileMatcher);
|
|
506
545
|
middlewarePath = findMiddlewareFile(root, fileMatcher);
|
|
546
|
+
const instrumentationClientInjects = nextConfig.instrumentationClientInject.map((spec) => spec.startsWith("./") || spec.startsWith("../") ? path.resolve(root, spec) : spec);
|
|
547
|
+
clientInjectModule = instrumentationClientInjects.length ? generateInstrumentationClientInjectModule(instrumentationClientInjects, instrumentationClientPath, INSTRUMENTATION_CLIENT_EMPTY_MODULE) : null;
|
|
548
|
+
if (env?.command === "build") await writeRouteTypes();
|
|
507
549
|
const defines = getNextPublicEnvDefines();
|
|
508
550
|
if (!config.define || typeof config.define !== "object" || !("process.env.NODE_ENV" in config.define)) defines["process.env.NODE_ENV"] = JSON.stringify(resolvedNodeEnv);
|
|
509
551
|
for (const [key, value] of Object.entries(nextConfig.env)) {
|
|
@@ -540,11 +582,11 @@ function vinext(options = {}) {
|
|
|
540
582
|
}
|
|
541
583
|
defines["process.env.__VINEXT_IMAGE_DANGEROUSLY_ALLOW_SVG"] = JSON.stringify(String(nextConfig.images?.dangerouslyAllowSVG ?? false));
|
|
542
584
|
defines["process.env.__VINEXT_IMAGE_DANGEROUSLY_ALLOW_LOCAL_IP"] = JSON.stringify(String(nextConfig.images?.dangerouslyAllowLocalIP ?? false));
|
|
543
|
-
defines["process.env.__VINEXT_DRAFT_SECRET"] = JSON.stringify(crypto.randomUUID());
|
|
544
585
|
defines["process.env.__VINEXT_BUILD_ID"] = JSON.stringify(nextConfig.buildId);
|
|
545
586
|
defines["process.env.__VINEXT_RSC_COMPATIBILITY_ID"] = JSON.stringify(rscCompatibilityId);
|
|
546
587
|
defines["process.env.__VINEXT_DEPLOYMENT_ID"] = JSON.stringify(nextConfig.deploymentId ?? "");
|
|
547
588
|
defines["process.env.__NEXT_VERSION"] = JSON.stringify(getVinextVersion());
|
|
589
|
+
defines["process.env.__NEXT_APP_SHELLS"] = JSON.stringify(false);
|
|
548
590
|
nextShimMap = Object.fromEntries(Object.entries({
|
|
549
591
|
"next/link": path.join(shimsDir, "link"),
|
|
550
592
|
"next/head": path.join(shimsDir, "head"),
|
|
@@ -600,7 +642,7 @@ function vinext(options = {}) {
|
|
|
600
642
|
"vinext/instrumentation": path.resolve(__dirname, "server", "instrumentation"),
|
|
601
643
|
"vinext/instrumentation-client": path.resolve(__dirname, "client", "instrumentation-client"),
|
|
602
644
|
"vinext/html": path.resolve(__dirname, "server", "html"),
|
|
603
|
-
"private-next-instrumentation-client": instrumentationClientPath ??
|
|
645
|
+
...clientInjectModule === null ? { "private-next-instrumentation-client": instrumentationClientPath ?? INSTRUMENTATION_CLIENT_EMPTY_MODULE } : {}
|
|
604
646
|
}).flatMap(([k, v]) => k.startsWith("next/") ? [[k, v], [`${k}.js`, v]] : [[k, v]]));
|
|
605
647
|
const pluginsFlat = [];
|
|
606
648
|
function flattenPlugins(arr) {
|
|
@@ -627,7 +669,7 @@ function vinext(options = {}) {
|
|
|
627
669
|
"firefox114",
|
|
628
670
|
"safari15"
|
|
629
671
|
],
|
|
630
|
-
|
|
672
|
+
assetsDir: resolveAssetsDir(nextConfig.assetPrefix ?? ""),
|
|
631
673
|
...withBuildBundlerOptions(viteMajorVersion, {
|
|
632
674
|
onwarn: (() => {
|
|
633
675
|
const userOnwarn = getBuildBundlerOptions(config.build)?.onwarn;
|
|
@@ -841,9 +883,10 @@ function vinext(options = {}) {
|
|
|
841
883
|
}));
|
|
842
884
|
},
|
|
843
885
|
resolveId: {
|
|
844
|
-
filter: { id: /(?:next\/|virtual:vinext
|
|
845
|
-
handler(id) {
|
|
886
|
+
filter: { id: /(?:next\/|virtual:vinext-|^@vercel\/og(?:\.js)?$)/ },
|
|
887
|
+
handler(id, importer) {
|
|
846
888
|
const cleanId = id.startsWith("\0") ? id.slice(1) : id;
|
|
889
|
+
if (isVercelOgImport(cleanId) && !isVinextOgShimImporter(importer)) return resolveShimModulePath(_shimsDir, "og");
|
|
847
890
|
if (cleanId === VIRTUAL_SERVER_ENTRY) return RESOLVED_SERVER_ENTRY;
|
|
848
891
|
if (cleanId === VIRTUAL_CLIENT_ENTRY) return RESOLVED_CLIENT_ENTRY;
|
|
849
892
|
if (cleanId.endsWith("/" + VIRTUAL_SERVER_ENTRY) || cleanId.endsWith("\\" + VIRTUAL_SERVER_ENTRY)) return RESOLVED_SERVER_ENTRY;
|
|
@@ -880,12 +923,14 @@ function vinext(options = {}) {
|
|
|
880
923
|
allowedOrigins: nextConfig?.serverActionsAllowedOrigins,
|
|
881
924
|
allowedDevOrigins: nextConfig?.allowedDevOrigins,
|
|
882
925
|
bodySizeLimit: nextConfig?.serverActionsBodySizeLimit,
|
|
926
|
+
htmlLimitedBots: nextConfig?.htmlLimitedBots,
|
|
883
927
|
assetPrefix: nextConfig?.assetPrefix,
|
|
884
928
|
expireTime: nextConfig?.expireTime,
|
|
885
929
|
i18n: nextConfig?.i18n,
|
|
886
930
|
hasPagesDir,
|
|
887
931
|
publicFiles: scanPublicFileRoutes(root),
|
|
888
|
-
globalNotFoundPath
|
|
932
|
+
globalNotFoundPath,
|
|
933
|
+
draftModeSecret
|
|
889
934
|
}, instrumentationPath);
|
|
890
935
|
}
|
|
891
936
|
if (id === RESOLVED_ROOT_PARAMS) return generateRootParamsModule((hasAppDir ? await appRouter(appDir, nextConfig?.pageExtensions, fileMatcher) : []).flatMap((route) => route.rootParamNames ?? []));
|
|
@@ -936,6 +981,18 @@ function vinext(options = {}) {
|
|
|
936
981
|
},
|
|
937
982
|
asyncHooksStubPlugin,
|
|
938
983
|
createInstrumentationClientTransformPlugin(() => instrumentationClientPath),
|
|
984
|
+
{
|
|
985
|
+
name: "vinext:instrumentation-client-inject",
|
|
986
|
+
enforce: "pre",
|
|
987
|
+
resolveId(id) {
|
|
988
|
+
if (id !== VIRTUAL_INSTRUMENTATION_CLIENT) return null;
|
|
989
|
+
return clientInjectModule !== null ? RESOLVED_INSTRUMENTATION_CLIENT : null;
|
|
990
|
+
},
|
|
991
|
+
load(id) {
|
|
992
|
+
if (id !== RESOLVED_INSTRUMENTATION_CLIENT) return null;
|
|
993
|
+
return clientInjectModule;
|
|
994
|
+
}
|
|
995
|
+
},
|
|
939
996
|
...options.experimental?.clientReferenceDedup ? [clientReferenceDedupPlugin()] : [],
|
|
940
997
|
{
|
|
941
998
|
name: "vinext:mdx",
|
|
@@ -1030,16 +1087,46 @@ function vinext(options = {}) {
|
|
|
1030
1087
|
invalidateRscEntryModule();
|
|
1031
1088
|
invalidateRootParamsModule();
|
|
1032
1089
|
}
|
|
1090
|
+
let appRouteTypeGeneration = null;
|
|
1091
|
+
let appRouteTypeGenerationPending = false;
|
|
1092
|
+
function warnRouteTypeGenerationFailure(error) {
|
|
1093
|
+
server.config.logger.warn(`[vinext] Failed to regenerate route types: ${error instanceof Error ? error.message : String(error)}`);
|
|
1094
|
+
}
|
|
1095
|
+
async function drainAppRouteTypeGeneration() {
|
|
1096
|
+
while (appRouteTypeGenerationPending) {
|
|
1097
|
+
appRouteTypeGenerationPending = false;
|
|
1098
|
+
try {
|
|
1099
|
+
await writeRouteTypes();
|
|
1100
|
+
} catch (error) {
|
|
1101
|
+
warnRouteTypeGenerationFailure(error);
|
|
1102
|
+
}
|
|
1103
|
+
}
|
|
1104
|
+
}
|
|
1105
|
+
function regenerateAppRouteTypes() {
|
|
1106
|
+
appRouteTypeGenerationPending = true;
|
|
1107
|
+
if (appRouteTypeGeneration) return;
|
|
1108
|
+
appRouteTypeGeneration = drainAppRouteTypeGeneration().finally(() => {
|
|
1109
|
+
appRouteTypeGeneration = null;
|
|
1110
|
+
if (appRouteTypeGenerationPending) regenerateAppRouteTypes();
|
|
1111
|
+
});
|
|
1112
|
+
}
|
|
1113
|
+
regenerateAppRouteTypes();
|
|
1033
1114
|
server.httpServer?.on("connection", (socket) => {
|
|
1034
1115
|
socket.on("error", () => {});
|
|
1035
1116
|
});
|
|
1036
1117
|
server.watcher.on("add", (filePath) => {
|
|
1037
1118
|
if (hasPagesDir && filePath.startsWith(pagesDir) && pageExtensions.test(filePath)) invalidateRouteCache(pagesDir);
|
|
1038
|
-
if (hasAppDir && shouldInvalidateAppRouteFile(appDir, filePath, fileMatcher))
|
|
1119
|
+
if (hasAppDir && shouldInvalidateAppRouteFile(appDir, filePath, fileMatcher)) {
|
|
1120
|
+
invalidateAppRoutingModules();
|
|
1121
|
+
regenerateAppRouteTypes();
|
|
1122
|
+
}
|
|
1039
1123
|
});
|
|
1040
1124
|
server.watcher.on("unlink", (filePath) => {
|
|
1041
1125
|
if (hasPagesDir && filePath.startsWith(pagesDir) && pageExtensions.test(filePath)) invalidateRouteCache(pagesDir);
|
|
1042
|
-
if (hasAppDir && shouldInvalidateAppRouteFile(appDir, filePath, fileMatcher))
|
|
1126
|
+
if (hasAppDir && shouldInvalidateAppRouteFile(appDir, filePath, fileMatcher)) {
|
|
1127
|
+
invalidateAppRoutingModules();
|
|
1128
|
+
regenerateAppRouteTypes();
|
|
1129
|
+
}
|
|
1043
1130
|
});
|
|
1044
1131
|
server.middlewares.use((req, res, next) => {
|
|
1045
1132
|
const blockReason = validateDevRequest({
|
|
@@ -1130,7 +1217,7 @@ function vinext(options = {}) {
|
|
|
1130
1217
|
res.end("Forbidden");
|
|
1131
1218
|
return;
|
|
1132
1219
|
}
|
|
1133
|
-
if (url.split("?")[0]
|
|
1220
|
+
if (isImageOptimizationPath(url.split("?")[0])) {
|
|
1134
1221
|
const rawImgUrl = new URLSearchParams(url.split("?")[1] ?? "").get("url");
|
|
1135
1222
|
const imgUrl = rawImgUrl?.replaceAll("\\", "/") ?? null;
|
|
1136
1223
|
if (!imgUrl || !imgUrl.startsWith("/") || imgUrl.startsWith("//") || imgUrl.startsWith("/@") || imgUrl.startsWith("/__vite") || imgUrl.startsWith("/node_modules")) {
|
|
@@ -1153,7 +1240,6 @@ function vinext(options = {}) {
|
|
|
1153
1240
|
if (rawPathname.endsWith("/index.html")) url = url.replace("/index.html", "/");
|
|
1154
1241
|
else if (rawPathname.endsWith(".html")) url = url.replace(/\.html(?=\?|$)/, "");
|
|
1155
1242
|
let pathname = url.split("?")[0];
|
|
1156
|
-
if (pathname.includes(".") && !pathname.endsWith(".html")) return next();
|
|
1157
1243
|
if (isOpenRedirectShaped(pathname)) {
|
|
1158
1244
|
res.writeHead(404);
|
|
1159
1245
|
res.end("This page could not be found");
|
|
@@ -1173,30 +1259,46 @@ function vinext(options = {}) {
|
|
|
1173
1259
|
url = stripped + (url.includes("?") ? url.slice(url.indexOf("?")) : "");
|
|
1174
1260
|
pathname = stripped;
|
|
1175
1261
|
}
|
|
1176
|
-
if (nextConfig
|
|
1177
|
-
const
|
|
1178
|
-
|
|
1179
|
-
|
|
1180
|
-
const
|
|
1181
|
-
res.writeHead(
|
|
1262
|
+
if (nextConfig) {
|
|
1263
|
+
const qs = url.includes("?") ? url.slice(url.indexOf("?")) : "";
|
|
1264
|
+
const trailingSlashRedirect = normalizeTrailingSlash(pathname, bp, nextConfig.trailingSlash, qs);
|
|
1265
|
+
if (trailingSlashRedirect) {
|
|
1266
|
+
const location = trailingSlashRedirect.headers.get("Location");
|
|
1267
|
+
res.writeHead(trailingSlashRedirect.status, location ? { Location: location } : void 0);
|
|
1182
1268
|
res.end();
|
|
1183
1269
|
return;
|
|
1184
|
-
}
|
|
1270
|
+
}
|
|
1271
|
+
}
|
|
1272
|
+
let isDataReq = false;
|
|
1273
|
+
if (isNextDataPathname(pathname)) {
|
|
1274
|
+
const devBuildId = nextConfig?.buildId ?? process.env.__VINEXT_BUILD_ID ?? "development";
|
|
1275
|
+
const dataMatch = parseNextDataPathname(pathname, devBuildId);
|
|
1276
|
+
if (dataMatch) {
|
|
1277
|
+
isDataReq = true;
|
|
1185
1278
|
const qs = url.includes("?") ? url.slice(url.indexOf("?")) : "";
|
|
1186
|
-
|
|
1187
|
-
|
|
1188
|
-
|
|
1279
|
+
url = dataMatch.pagePathname + qs;
|
|
1280
|
+
pathname = dataMatch.pagePathname;
|
|
1281
|
+
req.url = url;
|
|
1282
|
+
} else {
|
|
1283
|
+
res.writeHead(404, { "Content-Type": "application/json" });
|
|
1284
|
+
res.end("{}");
|
|
1189
1285
|
return;
|
|
1190
1286
|
}
|
|
1191
1287
|
}
|
|
1288
|
+
if (pathname.includes(".") && !pathname.endsWith(".html")) return next();
|
|
1192
1289
|
if (hasCloudflarePlugin) return next();
|
|
1193
|
-
const
|
|
1290
|
+
const rawHeaders = new Headers(Object.fromEntries(Object.entries(req.headers).filter(([, v]) => v !== void 0).map(([k, v]) => [k, Array.isArray(v) ? v.join(", ") : String(v)])));
|
|
1291
|
+
const isDataRequest = rawHeaders.get("x-nextjs-data") === "1";
|
|
1292
|
+
const nodeRequestHeaders = filterInternalHeaders(rawHeaders);
|
|
1194
1293
|
for (const header of INTERNAL_HEADERS) delete req.headers[header];
|
|
1294
|
+
for (const header of VINEXT_INTERNAL_HEADERS) delete req.headers[header];
|
|
1195
1295
|
const requestOrigin = `http://${req.headers.host || "localhost"}`;
|
|
1196
1296
|
const preMiddlewareReqUrl = new URL(url, requestOrigin);
|
|
1197
1297
|
const preMiddlewareReqCtx = requestContextFromRequest(new Request(preMiddlewareReqUrl, { headers: nodeRequestHeaders }));
|
|
1298
|
+
const matchPathname = nextConfig?.i18n ? normalizeDefaultLocalePathname(pathname, nextConfig.i18n, { hostname: preMiddlewareReqUrl.hostname }) : pathname;
|
|
1299
|
+
const matchResolvedPathname = (p) => nextConfig?.i18n ? normalizeDefaultLocalePathname(p, nextConfig.i18n, { hostname: preMiddlewareReqUrl.hostname }) : p;
|
|
1198
1300
|
if (nextConfig?.redirects.length) {
|
|
1199
|
-
if (applyRedirects(
|
|
1301
|
+
if (applyRedirects(matchPathname, res, nextConfig.redirects, preMiddlewareReqCtx, nextConfig.basePath ?? "")) return;
|
|
1200
1302
|
}
|
|
1201
1303
|
const applyRequestHeadersToNodeRequest = (nextRequestHeaders) => {
|
|
1202
1304
|
for (const key of Object.keys(req.headers)) delete req.headers[key];
|
|
@@ -1218,7 +1320,7 @@ function vinext(options = {}) {
|
|
|
1218
1320
|
method: req.method,
|
|
1219
1321
|
headers: nodeRequestHeaders
|
|
1220
1322
|
});
|
|
1221
|
-
const result = await runMiddleware(getPagesRunner(), middlewarePath, middlewareRequest, nextConfig?.i18n, nextConfig?.basePath);
|
|
1323
|
+
const result = await runMiddleware(getPagesRunner(), middlewarePath, middlewareRequest, nextConfig?.i18n, nextConfig?.basePath, nextConfig?.trailingSlash, isDataRequest);
|
|
1222
1324
|
if (result.waitUntilPromises?.length) Promise.allSettled(result.waitUntilPromises);
|
|
1223
1325
|
if (!result.continue) {
|
|
1224
1326
|
if (result.redirectUrl) {
|
|
@@ -1272,23 +1374,27 @@ function vinext(options = {}) {
|
|
|
1272
1374
|
}
|
|
1273
1375
|
const reqUrl = new URL(url, requestOrigin);
|
|
1274
1376
|
const reqCtx = requestContextFromRequest(new Request(reqUrl, { headers: middlewareRequestHeaders ?? nodeRequestHeaders }));
|
|
1275
|
-
if (nextConfig?.headers.length) applyHeaders(
|
|
1377
|
+
if (nextConfig?.headers.length) applyHeaders(matchPathname, res, nextConfig.headers, preMiddlewareReqCtx, bp);
|
|
1276
1378
|
let resolvedUrl = url;
|
|
1277
|
-
if (nextConfig?.rewrites.beforeFiles.length)
|
|
1379
|
+
if (nextConfig?.rewrites.beforeFiles.length) {
|
|
1380
|
+
const rewritten = applyRewrites(matchPathname, nextConfig.rewrites.beforeFiles, reqCtx, bp);
|
|
1381
|
+
if (rewritten) resolvedUrl = mergeRewriteQuery(url, rewritten);
|
|
1382
|
+
}
|
|
1278
1383
|
if (isExternalUrl(resolvedUrl)) {
|
|
1279
1384
|
applyDeferredMwHeaders();
|
|
1280
1385
|
applyMwRequestHeadersForExternalProxy();
|
|
1281
1386
|
await proxyExternalRewriteNode(req, res, resolvedUrl);
|
|
1282
1387
|
return;
|
|
1283
1388
|
}
|
|
1284
|
-
const
|
|
1389
|
+
const apiLookupUrl = stripI18nLocaleForApiRoute(resolvedUrl, nextConfig?.i18n);
|
|
1390
|
+
const resolvedPathname = apiLookupUrl.split("?")[0];
|
|
1285
1391
|
if (resolvedPathname.startsWith("/api/") || resolvedPathname === "/api") {
|
|
1286
1392
|
const apiRoutes = await apiRouter(pagesDir, nextConfig?.pageExtensions, fileMatcher);
|
|
1287
|
-
if (matchRoute(
|
|
1393
|
+
if (matchRoute(apiLookupUrl, apiRoutes)) {
|
|
1288
1394
|
applyDeferredMwHeaders();
|
|
1289
1395
|
if (middlewareRequestHeaders) applyRequestHeadersToNodeRequest(middlewareRequestHeaders);
|
|
1290
1396
|
}
|
|
1291
|
-
if (await handleApiRoute(getPagesRunner(), req, res,
|
|
1397
|
+
if (await handleApiRoute(getPagesRunner(), req, res, apiLookupUrl, apiRoutes)) return;
|
|
1292
1398
|
if (hasAppDir) return next();
|
|
1293
1399
|
res.statusCode = 404;
|
|
1294
1400
|
res.end("404 - API route not found");
|
|
@@ -1297,9 +1403,9 @@ function vinext(options = {}) {
|
|
|
1297
1403
|
const routes = await pagesRouter(pagesDir, nextConfig?.pageExtensions, fileMatcher);
|
|
1298
1404
|
let match = matchRoute(resolvedUrl.split("?")[0], routes);
|
|
1299
1405
|
if ((!match || match.route.isDynamic) && nextConfig?.rewrites.afterFiles.length) {
|
|
1300
|
-
const afterRewrite = applyRewrites(resolvedUrl.split("?")[0], nextConfig.rewrites.afterFiles, reqCtx);
|
|
1406
|
+
const afterRewrite = applyRewrites(matchResolvedPathname(resolvedUrl.split("?")[0]), nextConfig.rewrites.afterFiles, reqCtx, bp);
|
|
1301
1407
|
if (afterRewrite) {
|
|
1302
|
-
resolvedUrl = afterRewrite;
|
|
1408
|
+
resolvedUrl = mergeRewriteQuery(resolvedUrl, afterRewrite);
|
|
1303
1409
|
match = matchRoute(resolvedUrl.split("?")[0], routes);
|
|
1304
1410
|
}
|
|
1305
1411
|
}
|
|
@@ -1309,16 +1415,16 @@ function vinext(options = {}) {
|
|
|
1309
1415
|
await proxyExternalRewriteNode(req, res, resolvedUrl);
|
|
1310
1416
|
return;
|
|
1311
1417
|
}
|
|
1312
|
-
const handler = createSSRHandler(server, getPagesRunner(), routes, pagesDir, nextConfig?.i18n, fileMatcher, nextConfig?.basePath ?? "", nextConfig?.trailingSlash ?? false);
|
|
1418
|
+
const handler = createSSRHandler(server, getPagesRunner(), routes, pagesDir, nextConfig?.i18n, fileMatcher, nextConfig?.basePath ?? "", nextConfig?.trailingSlash ?? false, middlewarePath !== null);
|
|
1313
1419
|
const mwStatus = req.__vinextMiddlewareStatus;
|
|
1314
1420
|
if (match) {
|
|
1315
1421
|
applyDeferredMwHeaders();
|
|
1316
1422
|
if (middlewareRequestHeaders) applyRequestHeadersToNodeRequest(middlewareRequestHeaders);
|
|
1317
|
-
await handler(req, res, resolvedUrl, mwStatus);
|
|
1423
|
+
await handler(req, res, resolvedUrl, mwStatus, isDataReq);
|
|
1318
1424
|
return;
|
|
1319
1425
|
}
|
|
1320
1426
|
if (nextConfig?.rewrites.fallback.length) {
|
|
1321
|
-
const fallbackRewrite = applyRewrites(resolvedUrl.split("?")[0], nextConfig.rewrites.fallback, reqCtx);
|
|
1427
|
+
const fallbackRewrite = applyRewrites(matchResolvedPathname(resolvedUrl.split("?")[0]), nextConfig.rewrites.fallback, reqCtx, bp);
|
|
1322
1428
|
if (fallbackRewrite) {
|
|
1323
1429
|
if (isExternalUrl(fallbackRewrite)) {
|
|
1324
1430
|
applyDeferredMwHeaders();
|
|
@@ -1329,12 +1435,12 @@ function vinext(options = {}) {
|
|
|
1329
1435
|
if (!matchRoute(fallbackRewrite.split("?")[0], routes) && hasAppDir) return next();
|
|
1330
1436
|
applyDeferredMwHeaders();
|
|
1331
1437
|
if (middlewareRequestHeaders) applyRequestHeadersToNodeRequest(middlewareRequestHeaders);
|
|
1332
|
-
await handler(req, res, fallbackRewrite, mwStatus);
|
|
1438
|
+
await handler(req, res, fallbackRewrite, mwStatus, isDataReq);
|
|
1333
1439
|
return;
|
|
1334
1440
|
}
|
|
1335
1441
|
}
|
|
1336
1442
|
if (hasAppDir) return next();
|
|
1337
|
-
await handler(req, res, resolvedUrl, mwStatus);
|
|
1443
|
+
await handler(req, res, resolvedUrl, mwStatus, isDataReq);
|
|
1338
1444
|
} catch (e) {
|
|
1339
1445
|
next(e);
|
|
1340
1446
|
}
|
|
@@ -1792,7 +1898,7 @@ function vinext(options = {}) {
|
|
|
1792
1898
|
if (!fs.existsSync(headersPath)) {
|
|
1793
1899
|
const headersContent = [
|
|
1794
1900
|
"# Cache content-hashed assets immutably (generated by vinext)",
|
|
1795
|
-
`/${envConfig.build?.assetsDir ?? "
|
|
1901
|
+
`/${envConfig.build?.assetsDir ?? "_next/static"}/*`,
|
|
1796
1902
|
" Cache-Control: public, max-age=31536000, immutable",
|
|
1797
1903
|
""
|
|
1798
1904
|
].join("\n");
|
|
@@ -1872,7 +1978,10 @@ function getNextPublicEnvDefines() {
|
|
|
1872
1978
|
* Returns true if a redirect was applied.
|
|
1873
1979
|
*/
|
|
1874
1980
|
function applyRedirects(pathname, res, redirects, ctx, basePath = "") {
|
|
1875
|
-
const result = matchRedirect(pathname, redirects, ctx
|
|
1981
|
+
const result = matchRedirect(pathname, redirects, ctx, {
|
|
1982
|
+
basePath,
|
|
1983
|
+
hadBasePath: true
|
|
1984
|
+
});
|
|
1876
1985
|
if (result) {
|
|
1877
1986
|
const dest = sanitizeDestination(basePath && !isExternalUrl(result.destination) && !hasBasePath(result.destination, basePath) ? basePath + result.destination : result.destination);
|
|
1878
1987
|
res.writeHead(result.permanent ? 308 : 307, { Location: dest });
|
|
@@ -1919,8 +2028,11 @@ async function proxyExternalRewriteNode(req, res, externalUrl) {
|
|
|
1919
2028
|
* Apply rewrite rules from next.config.js.
|
|
1920
2029
|
* Returns the rewritten URL or null if no rewrite matched.
|
|
1921
2030
|
*/
|
|
1922
|
-
function applyRewrites(pathname, rewrites, ctx) {
|
|
1923
|
-
const dest = matchRewrite(pathname, rewrites, ctx
|
|
2031
|
+
function applyRewrites(pathname, rewrites, ctx, basePath = "") {
|
|
2032
|
+
const dest = matchRewrite(pathname, rewrites, ctx, {
|
|
2033
|
+
basePath,
|
|
2034
|
+
hadBasePath: true
|
|
2035
|
+
});
|
|
1924
2036
|
if (dest) return sanitizeDestination(dest);
|
|
1925
2037
|
return null;
|
|
1926
2038
|
}
|
|
@@ -1929,8 +2041,11 @@ function applyRewrites(pathname, rewrites, ctx) {
|
|
|
1929
2041
|
* Middleware headers take precedence: if a header key was already set on the
|
|
1930
2042
|
* response (by middleware), the config value is skipped for that key.
|
|
1931
2043
|
*/
|
|
1932
|
-
function applyHeaders(pathname, res, headers, ctx) {
|
|
1933
|
-
const matched = matchHeaders(pathname, headers, ctx
|
|
2044
|
+
function applyHeaders(pathname, res, headers, ctx, basePath = "") {
|
|
2045
|
+
const matched = matchHeaders(pathname, headers, ctx, {
|
|
2046
|
+
basePath,
|
|
2047
|
+
hadBasePath: true
|
|
2048
|
+
});
|
|
1934
2049
|
for (const header of matched) {
|
|
1935
2050
|
const lk = header.key.toLowerCase();
|
|
1936
2051
|
if (lk === "set-cookie") {
|