@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,106 @@
|
|
|
1
|
+
import { NextI18nConfig } from "../config/next-config.js";
|
|
2
|
+
import { DomainLocale, detectDomainLocale } from "../utils/domain-locale.js";
|
|
3
|
+
|
|
4
|
+
//#region src/server/pages-i18n.d.ts
|
|
5
|
+
type HeaderValue = string | string[] | undefined;
|
|
6
|
+
type HeaderBag = Headers | Record<string, HeaderValue> | undefined;
|
|
7
|
+
type LocaleRedirectOptions = {
|
|
8
|
+
headers?: HeaderBag;
|
|
9
|
+
nextConfig: {
|
|
10
|
+
basePath?: string;
|
|
11
|
+
i18n?: NextI18nConfig | null;
|
|
12
|
+
trailingSlash?: boolean;
|
|
13
|
+
};
|
|
14
|
+
pathLocale?: string;
|
|
15
|
+
urlParsed: {
|
|
16
|
+
hostname?: string | null;
|
|
17
|
+
pathname: string;
|
|
18
|
+
search?: string;
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
type PagesI18nRequestInfo = {
|
|
22
|
+
locale: string;
|
|
23
|
+
url: string;
|
|
24
|
+
hadPrefix: boolean;
|
|
25
|
+
domainLocale?: DomainLocale;
|
|
26
|
+
redirectUrl?: string;
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* Prepend the default locale prefix to a pathname when i18n is configured and
|
|
30
|
+
* the path does not already carry a locale prefix. Mirrors Next.js's
|
|
31
|
+
* server-side path normalisation in `resolve-routes.ts` (lines ~250-263):
|
|
32
|
+
*
|
|
33
|
+
* if (!initialLocaleResult.detectedLocale && !pathname.startsWith('/_next/')) {
|
|
34
|
+
* parsedUrl.pathname = `/${defaultLocale}${pathname === '/' ? '' : pathname}`
|
|
35
|
+
* }
|
|
36
|
+
*
|
|
37
|
+
* Run this **before** matching against `next.config.js` redirects/rewrites
|
|
38
|
+
* (which are emitted by `applyLocaleToRoutes` in locale-prefixed forms) so
|
|
39
|
+
* that requests arriving without a locale prefix still match those rules.
|
|
40
|
+
*
|
|
41
|
+
* Skips internal paths that Next.js leaves alone:
|
|
42
|
+
* - `/_next/*` (build assets, prerender manifests, image optimisation)
|
|
43
|
+
* - `/__vinext/*` (vinext-internal endpoints)
|
|
44
|
+
*
|
|
45
|
+
* Returns the input unchanged when i18n is not configured or when the path
|
|
46
|
+
* already starts with one of the configured locales. The host-based default
|
|
47
|
+
* locale (i18n.domains[].defaultLocale) is preferred over the global default
|
|
48
|
+
* when supplied, matching Next.js's `domainLocale.defaultLocale` branch.
|
|
49
|
+
*
|
|
50
|
+
* Item 4 of issue #1336: without this normalisation, requests like
|
|
51
|
+
* `/to-sv` (default locale = en) against a rule `source: '/:locale/to-sv'`
|
|
52
|
+
* with `locale: false` do not match because there is no segment for
|
|
53
|
+
* `:locale`. After normalisation the request looks like `/en/to-sv` and
|
|
54
|
+
* the rule matches with `:locale=en`.
|
|
55
|
+
*
|
|
56
|
+
* Ported from Next.js: packages/next/src/server/lib/router-utils/resolve-routes.ts
|
|
57
|
+
* https://github.com/vercel/next.js/blob/canary/packages/next/src/server/lib/router-utils/resolve-routes.ts
|
|
58
|
+
*/
|
|
59
|
+
declare function normalizeDefaultLocalePathname(pathname: string, i18n: NextI18nConfig | null | undefined, options?: {
|
|
60
|
+
hostname?: string | null;
|
|
61
|
+
}): string;
|
|
62
|
+
/**
|
|
63
|
+
* Extract locale prefix from a URL path.
|
|
64
|
+
* e.g. /fr/about -> { locale: "fr", url: "/about", hadPrefix: true }
|
|
65
|
+
* /about -> { locale: defaultLocale, url: "/about", hadPrefix: false }
|
|
66
|
+
*/
|
|
67
|
+
declare function extractLocaleFromUrl(url: string, i18nConfig: NextI18nConfig, defaultLocale?: string): {
|
|
68
|
+
locale: string;
|
|
69
|
+
url: string;
|
|
70
|
+
hadPrefix: boolean;
|
|
71
|
+
};
|
|
72
|
+
/**
|
|
73
|
+
* Strip a leading i18n locale segment from a URL so the result can be used for
|
|
74
|
+
* API route matching. Mirrors Next.js's base-server behaviour for Pages
|
|
75
|
+
* Router API routes: `normalizeLocalePath(pathname, i18n.locales).pathname`
|
|
76
|
+
* runs before the `/api/*` check so `/fr/api/ok` resolves to the
|
|
77
|
+
* `pages/api/ok` handler instead of 404'ing.
|
|
78
|
+
*
|
|
79
|
+
* Returns the original URL untouched when:
|
|
80
|
+
* - `i18nConfig` is null/undefined (no i18n configured)
|
|
81
|
+
* - the URL does not start with a configured locale
|
|
82
|
+
*
|
|
83
|
+
* The query string is preserved verbatim — only the path segment is stripped.
|
|
84
|
+
*
|
|
85
|
+
* Reference: packages/next/src/shared/lib/i18n/normalize-locale-path.ts.
|
|
86
|
+
*/
|
|
87
|
+
declare function stripI18nLocaleForApiRoute(url: string, i18nConfig: NextI18nConfig | null | undefined): string;
|
|
88
|
+
/**
|
|
89
|
+
* Detect the preferred locale from the Accept-Language header.
|
|
90
|
+
* Returns the best matching locale or null.
|
|
91
|
+
*/
|
|
92
|
+
declare function detectLocaleFromAcceptLanguage(acceptLang: string | null | undefined, i18nConfig: NextI18nConfig): string | null;
|
|
93
|
+
/**
|
|
94
|
+
* Parse the NEXT_LOCALE cookie.
|
|
95
|
+
* Returns the cookie value if it matches a configured locale, otherwise null.
|
|
96
|
+
*/
|
|
97
|
+
declare function parseCookieLocaleFromHeader(cookieHeader: string | null | undefined, i18nConfig: NextI18nConfig): string | null;
|
|
98
|
+
declare function getLocaleRedirect({
|
|
99
|
+
headers,
|
|
100
|
+
nextConfig,
|
|
101
|
+
pathLocale,
|
|
102
|
+
urlParsed
|
|
103
|
+
}: LocaleRedirectOptions): string | undefined;
|
|
104
|
+
declare function resolvePagesI18nRequest(url: string, i18nConfig: NextI18nConfig, headers?: HeaderBag, hostname?: string | null, basePath?: string, trailingSlash?: boolean): PagesI18nRequestInfo;
|
|
105
|
+
//#endregion
|
|
106
|
+
export { detectDomainLocale, detectLocaleFromAcceptLanguage, extractLocaleFromUrl, getLocaleRedirect, normalizeDefaultLocalePathname, parseCookieLocaleFromHeader, resolvePagesI18nRequest, stripI18nLocaleForApiRoute };
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
import { detectDomainLocale, normalizeDomainHostname } from "../utils/domain-locale.js";
|
|
2
|
+
//#region src/server/pages-i18n.ts
|
|
3
|
+
function readHeader(headers, name) {
|
|
4
|
+
if (!headers) return void 0;
|
|
5
|
+
if (headers instanceof Headers) return headers.get(name) ?? void 0;
|
|
6
|
+
const direct = headers[name];
|
|
7
|
+
if (Array.isArray(direct)) return direct.join(", ");
|
|
8
|
+
return direct;
|
|
9
|
+
}
|
|
10
|
+
const normalizeHostname = normalizeDomainHostname;
|
|
11
|
+
/**
|
|
12
|
+
* Prepend the default locale prefix to a pathname when i18n is configured and
|
|
13
|
+
* the path does not already carry a locale prefix. Mirrors Next.js's
|
|
14
|
+
* server-side path normalisation in `resolve-routes.ts` (lines ~250-263):
|
|
15
|
+
*
|
|
16
|
+
* if (!initialLocaleResult.detectedLocale && !pathname.startsWith('/_next/')) {
|
|
17
|
+
* parsedUrl.pathname = `/${defaultLocale}${pathname === '/' ? '' : pathname}`
|
|
18
|
+
* }
|
|
19
|
+
*
|
|
20
|
+
* Run this **before** matching against `next.config.js` redirects/rewrites
|
|
21
|
+
* (which are emitted by `applyLocaleToRoutes` in locale-prefixed forms) so
|
|
22
|
+
* that requests arriving without a locale prefix still match those rules.
|
|
23
|
+
*
|
|
24
|
+
* Skips internal paths that Next.js leaves alone:
|
|
25
|
+
* - `/_next/*` (build assets, prerender manifests, image optimisation)
|
|
26
|
+
* - `/__vinext/*` (vinext-internal endpoints)
|
|
27
|
+
*
|
|
28
|
+
* Returns the input unchanged when i18n is not configured or when the path
|
|
29
|
+
* already starts with one of the configured locales. The host-based default
|
|
30
|
+
* locale (i18n.domains[].defaultLocale) is preferred over the global default
|
|
31
|
+
* when supplied, matching Next.js's `domainLocale.defaultLocale` branch.
|
|
32
|
+
*
|
|
33
|
+
* Item 4 of issue #1336: without this normalisation, requests like
|
|
34
|
+
* `/to-sv` (default locale = en) against a rule `source: '/:locale/to-sv'`
|
|
35
|
+
* with `locale: false` do not match because there is no segment for
|
|
36
|
+
* `:locale`. After normalisation the request looks like `/en/to-sv` and
|
|
37
|
+
* the rule matches with `:locale=en`.
|
|
38
|
+
*
|
|
39
|
+
* Ported from Next.js: packages/next/src/server/lib/router-utils/resolve-routes.ts
|
|
40
|
+
* https://github.com/vercel/next.js/blob/canary/packages/next/src/server/lib/router-utils/resolve-routes.ts
|
|
41
|
+
*/
|
|
42
|
+
function normalizeDefaultLocalePathname(pathname, i18n, options = {}) {
|
|
43
|
+
if (!i18n) return pathname;
|
|
44
|
+
if (pathname.startsWith("/_next/") || pathname.startsWith("/__vinext/")) return pathname;
|
|
45
|
+
const parts = pathname.split("/", 3);
|
|
46
|
+
if (parts[1] && i18n.locales.includes(parts[1])) return pathname;
|
|
47
|
+
const defaultLocale = detectDomainLocale(i18n.domains, options.hostname ?? void 0)?.defaultLocale ?? i18n.defaultLocale;
|
|
48
|
+
if (pathname === "/") return `/${defaultLocale}`;
|
|
49
|
+
return `/${defaultLocale}${pathname}`;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Extract locale prefix from a URL path.
|
|
53
|
+
* e.g. /fr/about -> { locale: "fr", url: "/about", hadPrefix: true }
|
|
54
|
+
* /about -> { locale: defaultLocale, url: "/about", hadPrefix: false }
|
|
55
|
+
*/
|
|
56
|
+
function extractLocaleFromUrl(url, i18nConfig, defaultLocale = i18nConfig.defaultLocale) {
|
|
57
|
+
const parts = url.split("?")[0].split("/").filter(Boolean);
|
|
58
|
+
const query = url.includes("?") ? url.slice(url.indexOf("?")) : "";
|
|
59
|
+
if (parts.length > 0 && i18nConfig.locales.includes(parts[0])) return {
|
|
60
|
+
locale: parts[0],
|
|
61
|
+
url: ("/" + parts.slice(1).join("/") || "/") + query,
|
|
62
|
+
hadPrefix: true
|
|
63
|
+
};
|
|
64
|
+
return {
|
|
65
|
+
locale: defaultLocale,
|
|
66
|
+
url,
|
|
67
|
+
hadPrefix: false
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Strip a leading i18n locale segment from a URL so the result can be used for
|
|
72
|
+
* API route matching. Mirrors Next.js's base-server behaviour for Pages
|
|
73
|
+
* Router API routes: `normalizeLocalePath(pathname, i18n.locales).pathname`
|
|
74
|
+
* runs before the `/api/*` check so `/fr/api/ok` resolves to the
|
|
75
|
+
* `pages/api/ok` handler instead of 404'ing.
|
|
76
|
+
*
|
|
77
|
+
* Returns the original URL untouched when:
|
|
78
|
+
* - `i18nConfig` is null/undefined (no i18n configured)
|
|
79
|
+
* - the URL does not start with a configured locale
|
|
80
|
+
*
|
|
81
|
+
* The query string is preserved verbatim — only the path segment is stripped.
|
|
82
|
+
*
|
|
83
|
+
* Reference: packages/next/src/shared/lib/i18n/normalize-locale-path.ts.
|
|
84
|
+
*/
|
|
85
|
+
function stripI18nLocaleForApiRoute(url, i18nConfig) {
|
|
86
|
+
if (!i18nConfig) return url;
|
|
87
|
+
const { url: stripped, hadPrefix } = extractLocaleFromUrl(url, i18nConfig);
|
|
88
|
+
return hadPrefix ? stripped : url;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Detect the preferred locale from the Accept-Language header.
|
|
92
|
+
* Returns the best matching locale or null.
|
|
93
|
+
*/
|
|
94
|
+
function detectLocaleFromAcceptLanguage(acceptLang, i18nConfig) {
|
|
95
|
+
if (!acceptLang) return null;
|
|
96
|
+
const langs = acceptLang.split(",").map((part) => {
|
|
97
|
+
const [lang, qPart] = part.trim().split(";");
|
|
98
|
+
const q = qPart ? parseFloat(qPart.replace("q=", "")) : 1;
|
|
99
|
+
return {
|
|
100
|
+
lang: lang.trim().toLowerCase(),
|
|
101
|
+
q
|
|
102
|
+
};
|
|
103
|
+
}).sort((a, b) => b.q - a.q);
|
|
104
|
+
for (const { lang } of langs) {
|
|
105
|
+
const exactMatch = i18nConfig.locales.find((locale) => locale.toLowerCase() === lang);
|
|
106
|
+
if (exactMatch) return exactMatch;
|
|
107
|
+
const prefix = lang.split("-")[0];
|
|
108
|
+
const prefixMatch = i18nConfig.locales.find((locale) => {
|
|
109
|
+
const lowered = locale.toLowerCase();
|
|
110
|
+
return lowered === prefix || lowered.startsWith(prefix + "-");
|
|
111
|
+
});
|
|
112
|
+
if (prefixMatch) return prefixMatch;
|
|
113
|
+
}
|
|
114
|
+
return null;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Parse the NEXT_LOCALE cookie.
|
|
118
|
+
* Returns the cookie value if it matches a configured locale, otherwise null.
|
|
119
|
+
*/
|
|
120
|
+
function parseCookieLocaleFromHeader(cookieHeader, i18nConfig) {
|
|
121
|
+
if (!cookieHeader) return null;
|
|
122
|
+
const match = cookieHeader.match(/(?:^|;\s*)NEXT_LOCALE=([^;]*)/);
|
|
123
|
+
if (!match) return null;
|
|
124
|
+
let value;
|
|
125
|
+
try {
|
|
126
|
+
value = decodeURIComponent(match[1].trim());
|
|
127
|
+
} catch {
|
|
128
|
+
return null;
|
|
129
|
+
}
|
|
130
|
+
const lowerValue = value.toLowerCase();
|
|
131
|
+
return i18nConfig.locales.find((locale) => locale.toLowerCase() === lowerValue) ?? null;
|
|
132
|
+
}
|
|
133
|
+
function formatLocalizedRootPath(locale, defaultLocale, basePath = "", trailingSlash = false, search = "") {
|
|
134
|
+
if (locale.toLowerCase() === defaultLocale.toLowerCase()) return void 0;
|
|
135
|
+
return `${`${basePath}/${locale}${trailingSlash ? "/" : ""}`.replace(/\/{2,}/g, "/")}${search}`;
|
|
136
|
+
}
|
|
137
|
+
function getLocaleRedirect({ headers, nextConfig, pathLocale, urlParsed }) {
|
|
138
|
+
const i18n = nextConfig.i18n;
|
|
139
|
+
if (!i18n || i18n.localeDetection === false || urlParsed.pathname !== "/") return void 0;
|
|
140
|
+
const domainLocale = detectDomainLocale(i18n.domains, urlParsed.hostname ?? void 0);
|
|
141
|
+
const defaultLocale = domainLocale?.defaultLocale || i18n.defaultLocale;
|
|
142
|
+
const preferredLocale = detectLocaleFromAcceptLanguage(readHeader(headers, "accept-language"), i18n) ?? void 0;
|
|
143
|
+
const detectedLocale = pathLocale || domainLocale?.defaultLocale || (parseCookieLocaleFromHeader(readHeader(headers, "cookie"), i18n) ?? void 0) || preferredLocale || i18n.defaultLocale;
|
|
144
|
+
const search = urlParsed.search ?? "";
|
|
145
|
+
const preferredDomain = detectDomainLocale(i18n.domains, void 0, preferredLocale);
|
|
146
|
+
if (domainLocale && preferredDomain) {
|
|
147
|
+
const sameDomain = normalizeHostname(domainLocale.domain) === normalizeHostname(preferredDomain.domain);
|
|
148
|
+
const sameLocale = preferredLocale !== void 0 && preferredDomain.defaultLocale.toLowerCase() === preferredLocale.toLowerCase();
|
|
149
|
+
if (!sameDomain || !sameLocale) {
|
|
150
|
+
const scheme = `http${preferredDomain.http ? "" : "s"}`;
|
|
151
|
+
const localePath = sameLocale || preferredLocale === void 0 ? "" : `/${preferredLocale}`;
|
|
152
|
+
const rootPath = `${nextConfig.basePath ?? ""}${localePath}${nextConfig.trailingSlash ? "/" : ""}` || "/";
|
|
153
|
+
const normalizedPath = rootPath.startsWith("/") ? rootPath : `/${rootPath}`;
|
|
154
|
+
return `${scheme}://${preferredDomain.domain}${normalizedPath}${search}`;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
return formatLocalizedRootPath(detectedLocale, defaultLocale, nextConfig.basePath, nextConfig.trailingSlash, search);
|
|
158
|
+
}
|
|
159
|
+
function resolvePagesI18nRequest(url, i18nConfig, headers, hostname, basePath = "", trailingSlash = false) {
|
|
160
|
+
const domainLocale = detectDomainLocale(i18nConfig.domains, hostname ?? void 0);
|
|
161
|
+
const localeInfo = extractLocaleFromUrl(url, i18nConfig, domainLocale?.defaultLocale || i18nConfig.defaultLocale);
|
|
162
|
+
let redirectUrl;
|
|
163
|
+
if (!localeInfo.hadPrefix) redirectUrl = getLocaleRedirect({
|
|
164
|
+
headers,
|
|
165
|
+
nextConfig: {
|
|
166
|
+
basePath,
|
|
167
|
+
i18n: i18nConfig,
|
|
168
|
+
trailingSlash
|
|
169
|
+
},
|
|
170
|
+
urlParsed: {
|
|
171
|
+
hostname,
|
|
172
|
+
pathname: localeInfo.url.split("?")[0] || "/",
|
|
173
|
+
search: localeInfo.url.includes("?") ? localeInfo.url.slice(localeInfo.url.indexOf("?")) : ""
|
|
174
|
+
}
|
|
175
|
+
});
|
|
176
|
+
return {
|
|
177
|
+
...localeInfo,
|
|
178
|
+
domainLocale,
|
|
179
|
+
redirectUrl
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
//#endregion
|
|
183
|
+
export { detectDomainLocale, detectLocaleFromAcceptLanguage, extractLocaleFromUrl, getLocaleRedirect, normalizeDefaultLocalePathname, parseCookieLocaleFromHeader, resolvePagesI18nRequest, stripI18nLocaleForApiRoute };
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
//#region src/server/pages-media-type.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* Shared media-type helpers and body-parse error for Pages API routes.
|
|
4
|
+
*
|
|
5
|
+
* Used by both api-handler.ts (Pages Router dev/prod with Node.js req/res) and
|
|
6
|
+
* pages-node-compat.ts (Pages Router fetch-based facade for Cloudflare Workers).
|
|
7
|
+
*/
|
|
8
|
+
declare class PagesBodyParseError extends Error {
|
|
9
|
+
readonly statusCode: number;
|
|
10
|
+
constructor(message: string, statusCode: number);
|
|
11
|
+
}
|
|
12
|
+
declare function getMediaType(contentType: string | null | undefined): string;
|
|
13
|
+
declare function isJsonMediaType(mediaType: string): boolean;
|
|
14
|
+
//#endregion
|
|
15
|
+
export { PagesBodyParseError, getMediaType, isJsonMediaType };
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
//#region src/server/pages-media-type.ts
|
|
2
|
+
/**
|
|
3
|
+
* Shared media-type helpers and body-parse error for Pages API routes.
|
|
4
|
+
*
|
|
5
|
+
* Used by both api-handler.ts (Pages Router dev/prod with Node.js req/res) and
|
|
6
|
+
* pages-node-compat.ts (Pages Router fetch-based facade for Cloudflare Workers).
|
|
7
|
+
*/
|
|
8
|
+
var PagesBodyParseError = class extends Error {
|
|
9
|
+
statusCode;
|
|
10
|
+
constructor(message, statusCode) {
|
|
11
|
+
super(message);
|
|
12
|
+
this.statusCode = statusCode;
|
|
13
|
+
this.name = "PagesBodyParseError";
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
function getMediaType(contentType) {
|
|
17
|
+
const [type] = (contentType ?? "text/plain").split(";");
|
|
18
|
+
return type?.trim().toLowerCase() || "text/plain";
|
|
19
|
+
}
|
|
20
|
+
function isJsonMediaType(mediaType) {
|
|
21
|
+
return mediaType === "application/json" || mediaType === "application/ld+json";
|
|
22
|
+
}
|
|
23
|
+
//#endregion
|
|
24
|
+
export { PagesBodyParseError, getMediaType, isJsonMediaType };
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { PagesBodyParseError } from "./pages-media-type.js";
|
|
2
|
+
import { RevalidateOptions } from "./pages-revalidate.js";
|
|
3
|
+
import { Readable, Writable } from "node:stream";
|
|
4
|
+
|
|
5
|
+
//#region src/server/pages-node-compat.d.ts
|
|
6
|
+
type PagesRequestQuery = Record<string, string | string[]>;
|
|
7
|
+
type PagesReqResRequest = Readable & {
|
|
8
|
+
method: string;
|
|
9
|
+
url: string;
|
|
10
|
+
headers: Record<string, string>;
|
|
11
|
+
query: PagesRequestQuery;
|
|
12
|
+
body: unknown;
|
|
13
|
+
cookies: Record<string, string>;
|
|
14
|
+
};
|
|
15
|
+
type PagesReqResHeaders = {
|
|
16
|
+
[key: string]: string | number | boolean | string[];
|
|
17
|
+
};
|
|
18
|
+
type PagesReqResResponse = Writable & {
|
|
19
|
+
statusCode: number;
|
|
20
|
+
readonly headersSent: boolean;
|
|
21
|
+
writeHead: (code: number, headers?: PagesReqResHeaders) => PagesReqResResponse;
|
|
22
|
+
setHeader: (name: string, value: string | number | boolean | string[]) => PagesReqResResponse;
|
|
23
|
+
getHeader: (name: string) => string | number | boolean | string[] | undefined;
|
|
24
|
+
status: (code: number) => PagesReqResResponse;
|
|
25
|
+
json: (data: unknown) => void;
|
|
26
|
+
send: (data: unknown) => void;
|
|
27
|
+
redirect: (statusOrUrl: number | string, url?: string) => void;
|
|
28
|
+
getHeaders: () => PagesReqResHeaders;
|
|
29
|
+
revalidate: (urlPath: string, opts?: RevalidateOptions) => Promise<void>;
|
|
30
|
+
};
|
|
31
|
+
type CreatePagesReqResOptions = {
|
|
32
|
+
body: unknown;
|
|
33
|
+
query: PagesRequestQuery;
|
|
34
|
+
request: Request;
|
|
35
|
+
url: string;
|
|
36
|
+
};
|
|
37
|
+
type CreatePagesReqResResult = {
|
|
38
|
+
req: PagesReqResRequest;
|
|
39
|
+
res: PagesReqResResponse;
|
|
40
|
+
responsePromise: Promise<Response>;
|
|
41
|
+
};
|
|
42
|
+
/**
|
|
43
|
+
* Read and parse a Pages Router API request body for the Workers/prod path.
|
|
44
|
+
*
|
|
45
|
+
* `maxBytes` defaults to the 1 MB Next.js default but may be overridden by
|
|
46
|
+
* `export const config = { api: { bodyParser: { sizeLimit: '4mb' } } }` on
|
|
47
|
+
* the route module. Handlers that opt out entirely (`bodyParser: false`)
|
|
48
|
+
* MUST skip this function so the body stream stays intact for user code.
|
|
49
|
+
*
|
|
50
|
+
* @see https://nextjs.org/docs/pages/building-your-application/routing/api-routes#custom-config
|
|
51
|
+
*/
|
|
52
|
+
declare function parsePagesApiBody(request: Request, maxBytes?: number): Promise<unknown>;
|
|
53
|
+
declare function createPagesReqRes(options: CreatePagesReqResOptions): CreatePagesReqResResult;
|
|
54
|
+
//#endregion
|
|
55
|
+
export { PagesBodyParseError as PagesApiBodyParseError, PagesReqResRequest, PagesReqResResponse, PagesRequestQuery, createPagesReqRes, parsePagesApiBody };
|
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
import { parseCookieHeader } from "../utils/parse-cookie.js";
|
|
2
|
+
import { readStreamAsTextWithLimit } from "../utils/text-stream.js";
|
|
3
|
+
import { PagesBodyParseError, getMediaType, isJsonMediaType } from "./pages-media-type.js";
|
|
4
|
+
import { DEFAULT_PAGES_API_BODY_SIZE_LIMIT } from "./pages-body-parser-config.js";
|
|
5
|
+
import { performOnDemandRevalidate } from "./pages-revalidate.js";
|
|
6
|
+
import { decode } from "node:querystring";
|
|
7
|
+
import { Readable, Writable } from "node:stream";
|
|
8
|
+
//#region src/server/pages-node-compat.ts
|
|
9
|
+
const MAX_PAGES_API_BODY_SIZE = DEFAULT_PAGES_API_BODY_SIZE_LIMIT;
|
|
10
|
+
async function readPagesRequestBodyWithLimit(request, maxBytes) {
|
|
11
|
+
if (!request.body) return "";
|
|
12
|
+
return readStreamAsTextWithLimit(request.body, maxBytes, () => {
|
|
13
|
+
throw new PagesBodyParseError("Request body too large", 413);
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Read and parse a Pages Router API request body for the Workers/prod path.
|
|
18
|
+
*
|
|
19
|
+
* `maxBytes` defaults to the 1 MB Next.js default but may be overridden by
|
|
20
|
+
* `export const config = { api: { bodyParser: { sizeLimit: '4mb' } } }` on
|
|
21
|
+
* the route module. Handlers that opt out entirely (`bodyParser: false`)
|
|
22
|
+
* MUST skip this function so the body stream stays intact for user code.
|
|
23
|
+
*
|
|
24
|
+
* @see https://nextjs.org/docs/pages/building-your-application/routing/api-routes#custom-config
|
|
25
|
+
*/
|
|
26
|
+
async function parsePagesApiBody(request, maxBytes = MAX_PAGES_API_BODY_SIZE) {
|
|
27
|
+
if (Number.parseInt(request.headers.get("content-length") || "0", 10) > maxBytes) throw new PagesBodyParseError("Request body too large", 413);
|
|
28
|
+
let rawBody = "";
|
|
29
|
+
try {
|
|
30
|
+
rawBody = await readPagesRequestBodyWithLimit(request, maxBytes);
|
|
31
|
+
} catch (err) {
|
|
32
|
+
if (err instanceof PagesBodyParseError) throw err;
|
|
33
|
+
throw new PagesBodyParseError("Request body too large", 413);
|
|
34
|
+
}
|
|
35
|
+
const mediaType = getMediaType(request.headers.get("content-type"));
|
|
36
|
+
if (!rawBody) return isJsonMediaType(mediaType) ? {} : mediaType === "application/x-www-form-urlencoded" ? decode(rawBody) : void 0;
|
|
37
|
+
if (isJsonMediaType(mediaType)) try {
|
|
38
|
+
return JSON.parse(rawBody);
|
|
39
|
+
} catch {
|
|
40
|
+
throw new PagesBodyParseError("Invalid JSON", 400);
|
|
41
|
+
}
|
|
42
|
+
if (mediaType === "application/x-www-form-urlencoded") return decode(rawBody);
|
|
43
|
+
return rawBody;
|
|
44
|
+
}
|
|
45
|
+
async function* requestBodyChunks(request) {
|
|
46
|
+
if (!request.body || request.bodyUsed) return;
|
|
47
|
+
const reader = request.body.getReader();
|
|
48
|
+
try {
|
|
49
|
+
for (;;) {
|
|
50
|
+
const { value, done } = await reader.read();
|
|
51
|
+
if (done) return;
|
|
52
|
+
yield Buffer.from(value.buffer, value.byteOffset, value.byteLength);
|
|
53
|
+
}
|
|
54
|
+
} finally {
|
|
55
|
+
try {
|
|
56
|
+
await reader.cancel();
|
|
57
|
+
} catch {}
|
|
58
|
+
reader.releaseLock();
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
function createRequestReadable(request) {
|
|
62
|
+
return Readable.from(requestBodyChunks(request), { objectMode: false });
|
|
63
|
+
}
|
|
64
|
+
var PagesResponseStream = class extends Writable {
|
|
65
|
+
resolveResponse;
|
|
66
|
+
rejectResponse;
|
|
67
|
+
requestHeaders;
|
|
68
|
+
resStatusCode = 200;
|
|
69
|
+
resHeaders = {};
|
|
70
|
+
setCookieHeaders = [];
|
|
71
|
+
resolved = false;
|
|
72
|
+
controller = null;
|
|
73
|
+
bufferedChunks = [];
|
|
74
|
+
streamEnded = false;
|
|
75
|
+
constructor(resolveResponse, rejectResponse, requestHeaders) {
|
|
76
|
+
super();
|
|
77
|
+
this.resolveResponse = resolveResponse;
|
|
78
|
+
this.rejectResponse = rejectResponse;
|
|
79
|
+
this.requestHeaders = requestHeaders;
|
|
80
|
+
this.once("error", (err) => {
|
|
81
|
+
if (!this.resolved) {
|
|
82
|
+
this.resolved = true;
|
|
83
|
+
this.rejectResponse(err);
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
get statusCode() {
|
|
88
|
+
return this.resStatusCode;
|
|
89
|
+
}
|
|
90
|
+
set statusCode(code) {
|
|
91
|
+
this.resStatusCode = code;
|
|
92
|
+
}
|
|
93
|
+
get headersSent() {
|
|
94
|
+
return this.writableEnded || this.resolved;
|
|
95
|
+
}
|
|
96
|
+
writeHead(code, headers) {
|
|
97
|
+
this.resStatusCode = code;
|
|
98
|
+
if (headers) for (const [key, value] of Object.entries(headers)) this.setHeaderValue(key, value, { replaceSetCookie: false });
|
|
99
|
+
return this;
|
|
100
|
+
}
|
|
101
|
+
setHeader(name, value) {
|
|
102
|
+
this.setHeaderValue(name, value, { replaceSetCookie: true });
|
|
103
|
+
return this;
|
|
104
|
+
}
|
|
105
|
+
getHeader(name) {
|
|
106
|
+
if (name.toLowerCase() === "set-cookie") return this.setCookieHeaders.length > 0 ? this.setCookieHeaders : void 0;
|
|
107
|
+
return this.resHeaders[name.toLowerCase()];
|
|
108
|
+
}
|
|
109
|
+
status(code) {
|
|
110
|
+
this.resStatusCode = code;
|
|
111
|
+
return this;
|
|
112
|
+
}
|
|
113
|
+
json(data) {
|
|
114
|
+
this.resHeaders["content-type"] = "application/json";
|
|
115
|
+
this.end(JSON.stringify(data));
|
|
116
|
+
}
|
|
117
|
+
send(data) {
|
|
118
|
+
if (Buffer.isBuffer(data)) {
|
|
119
|
+
if (!this.resHeaders["content-type"]) this.resHeaders["content-type"] = "application/octet-stream";
|
|
120
|
+
this.resHeaders["content-length"] = String(data.length);
|
|
121
|
+
this.end(data);
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
if (typeof data === "object" && data !== null) {
|
|
125
|
+
this.resHeaders["content-type"] = "application/json";
|
|
126
|
+
this.end(JSON.stringify(data));
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
if (!this.resHeaders["content-type"]) this.resHeaders["content-type"] = "text/plain";
|
|
130
|
+
this.end(String(data));
|
|
131
|
+
}
|
|
132
|
+
redirect(statusOrUrl, url) {
|
|
133
|
+
if (typeof statusOrUrl === "string") this.writeHead(307, { Location: statusOrUrl });
|
|
134
|
+
else this.writeHead(statusOrUrl, { Location: url ?? "" });
|
|
135
|
+
this.end();
|
|
136
|
+
}
|
|
137
|
+
getHeaders() {
|
|
138
|
+
const headers = { ...this.resHeaders };
|
|
139
|
+
if (this.setCookieHeaders.length > 0) headers["set-cookie"] = this.setCookieHeaders;
|
|
140
|
+
return headers;
|
|
141
|
+
}
|
|
142
|
+
async revalidate(urlPath, opts) {
|
|
143
|
+
await performOnDemandRevalidate(this.requestHeaders, urlPath, opts);
|
|
144
|
+
}
|
|
145
|
+
_write(chunk, encoding, callback) {
|
|
146
|
+
const buffer = typeof chunk === "string" ? Buffer.from(chunk, encoding) : Buffer.from(chunk);
|
|
147
|
+
if (this.controller && !this.streamEnded) try {
|
|
148
|
+
this.controller.enqueue(buffer);
|
|
149
|
+
} catch {}
|
|
150
|
+
else this.bufferedChunks.push(buffer);
|
|
151
|
+
this.resolveOnce();
|
|
152
|
+
callback();
|
|
153
|
+
}
|
|
154
|
+
_final(callback) {
|
|
155
|
+
this.streamEnded = true;
|
|
156
|
+
if (this.controller) try {
|
|
157
|
+
this.controller.close();
|
|
158
|
+
} catch {}
|
|
159
|
+
this.resolveOnce();
|
|
160
|
+
callback();
|
|
161
|
+
}
|
|
162
|
+
_destroy(error, callback) {
|
|
163
|
+
this.streamEnded = true;
|
|
164
|
+
if (!this.resolved) if (error) {
|
|
165
|
+
this.resolved = true;
|
|
166
|
+
this.rejectResponse(error);
|
|
167
|
+
} else this.resolveOnce();
|
|
168
|
+
if (this.controller) try {
|
|
169
|
+
if (error) this.controller.error(error);
|
|
170
|
+
else this.controller.close();
|
|
171
|
+
} catch {}
|
|
172
|
+
callback(error);
|
|
173
|
+
}
|
|
174
|
+
setHeaderValue(name, value, options) {
|
|
175
|
+
if (name.toLowerCase() === "set-cookie") {
|
|
176
|
+
if (options.replaceSetCookie) this.setCookieHeaders.length = 0;
|
|
177
|
+
if (Array.isArray(value)) this.setCookieHeaders.push(...value.map(String));
|
|
178
|
+
else this.setCookieHeaders.push(String(value));
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
181
|
+
this.resHeaders[name.toLowerCase()] = Array.isArray(value) ? value.join(", ") : value;
|
|
182
|
+
}
|
|
183
|
+
resolveOnce() {
|
|
184
|
+
if (this.resolved) return;
|
|
185
|
+
this.resolved = true;
|
|
186
|
+
const headers = new Headers();
|
|
187
|
+
for (const [key, value] of Object.entries(this.resHeaders)) headers.set(key, String(value));
|
|
188
|
+
for (const cookie of this.setCookieHeaders) headers.append("set-cookie", cookie);
|
|
189
|
+
const stream = new ReadableStream({
|
|
190
|
+
start: (controller) => {
|
|
191
|
+
this.controller = controller;
|
|
192
|
+
for (const buffer of this.bufferedChunks) try {
|
|
193
|
+
controller.enqueue(buffer);
|
|
194
|
+
} catch {}
|
|
195
|
+
this.bufferedChunks.length = 0;
|
|
196
|
+
if (this.streamEnded) try {
|
|
197
|
+
controller.close();
|
|
198
|
+
} catch {}
|
|
199
|
+
},
|
|
200
|
+
cancel: (reason) => {
|
|
201
|
+
this.bufferedChunks.length = 0;
|
|
202
|
+
this.destroy(reason instanceof Error ? reason : /* @__PURE__ */ new Error("Response body cancelled"));
|
|
203
|
+
}
|
|
204
|
+
});
|
|
205
|
+
this.resolveResponse(new Response(stream, {
|
|
206
|
+
status: this.resStatusCode,
|
|
207
|
+
headers
|
|
208
|
+
}));
|
|
209
|
+
}
|
|
210
|
+
};
|
|
211
|
+
function createPagesReqRes(options) {
|
|
212
|
+
const headersObj = {};
|
|
213
|
+
for (const [key, value] of options.request.headers) headersObj[key.toLowerCase()] = value;
|
|
214
|
+
const req = Object.assign(createRequestReadable(options.request), {
|
|
215
|
+
method: options.request.method,
|
|
216
|
+
url: options.url,
|
|
217
|
+
headers: headersObj,
|
|
218
|
+
query: options.query,
|
|
219
|
+
body: options.body,
|
|
220
|
+
cookies: parseCookieHeader(options.request.headers.get("cookie"))
|
|
221
|
+
});
|
|
222
|
+
let resolveResponse;
|
|
223
|
+
let rejectResponse;
|
|
224
|
+
const responsePromise = new Promise((resolve, reject) => {
|
|
225
|
+
resolveResponse = resolve;
|
|
226
|
+
rejectResponse = reject;
|
|
227
|
+
});
|
|
228
|
+
return {
|
|
229
|
+
req,
|
|
230
|
+
res: new PagesResponseStream(resolveResponse, rejectResponse, options.request.headers),
|
|
231
|
+
responsePromise
|
|
232
|
+
};
|
|
233
|
+
}
|
|
234
|
+
//#endregion
|
|
235
|
+
export { PagesBodyParseError as PagesApiBodyParseError, createPagesReqRes, parsePagesApiBody };
|