@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,311 @@
|
|
|
1
|
+
import { addBasePathToPathname, hasBasePath } from "../utils/base-path.js";
|
|
2
|
+
import { applyMiddlewareRequestHeaders, isExternalUrl, matchRedirect, matchRewrite, preserveRedirectDestinationQuery, proxyExternalRequest, requestContextFromRequest, sanitizeDestination } from "../config/config-matchers.js";
|
|
3
|
+
import { applyConfigHeadersToHeaderRecord, cloneRequestWithUrl, normalizeTrailingSlash } from "./request-pipeline.js";
|
|
4
|
+
import { mergeRewriteQuery } from "../utils/query.js";
|
|
5
|
+
import { normalizeDefaultLocalePathname, stripI18nLocaleForApiRoute } from "./pages-i18n.js";
|
|
6
|
+
import { mergeHeaders } from "./worker-utils.js";
|
|
7
|
+
//#region src/server/pages-request-pipeline.ts
|
|
8
|
+
async function fetchWorkerFilesystemRoute(request, requestPathname, phase, fetchAsset) {
|
|
9
|
+
if (phase === "direct" || request.method !== "GET" && request.method !== "HEAD" || requestPathname === "/api" || requestPathname.startsWith("/api/")) return false;
|
|
10
|
+
const assetUrl = new URL(request.url);
|
|
11
|
+
assetUrl.pathname = requestPathname;
|
|
12
|
+
assetUrl.search = "";
|
|
13
|
+
const response = await fetchAsset(new Request(assetUrl, request));
|
|
14
|
+
return response.status === 404 ? false : response;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Wrap an adapter's `runMiddleware` callback so middleware receives the original
|
|
18
|
+
* (pre-basePath-stripping) URL. Adapters strip the basePath before handing the
|
|
19
|
+
* request to `runPagesRequest`, but Next.js passes the un-stripped URL to the
|
|
20
|
+
* middleware adapter so `request.nextUrl.basePath` reflects whether the URL
|
|
21
|
+
* actually had the basePath prefix. Requests outside the basePath
|
|
22
|
+
* (`hadBasePath === false`) are passed through untouched so middleware sees
|
|
23
|
+
* `nextUrl.basePath === ""` and can redirect them into the basePath
|
|
24
|
+
* (see the middleware-base-path e2e test / #1830).
|
|
25
|
+
*
|
|
26
|
+
* Shared by the Node prod server (prod-server.ts) and the generated Pages
|
|
27
|
+
* Router worker entry (deploy.ts) to keep the two adapters in sync.
|
|
28
|
+
*/
|
|
29
|
+
function wrapMiddlewareWithBasePath(runMiddleware, basePath, hadBasePath) {
|
|
30
|
+
if (!hadBasePath || !basePath) return runMiddleware;
|
|
31
|
+
return (request, ctx, opts) => {
|
|
32
|
+
const mwUrl = new URL(request.url);
|
|
33
|
+
mwUrl.pathname = addBasePathToPathname(mwUrl.pathname, basePath);
|
|
34
|
+
return runMiddleware(new Request(mwUrl, request), ctx, opts);
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Run the Pages Router request pipeline.
|
|
39
|
+
*
|
|
40
|
+
* ASSUMPTION: request already has internal headers filtered and basePath stripped.
|
|
41
|
+
* The adapter is responsible for that pre-processing before calling runPagesRequest.
|
|
42
|
+
* The adapter also handles: open-redirect guard, _next/static 404, image optimization,
|
|
43
|
+
* _next/data normalization and classification: adapters must rewrite the data
|
|
44
|
+
* URL to its page pathname and set `isDataReq` (the source of truth here), Node
|
|
45
|
+
* decode/normalize/400, public-file serving.
|
|
46
|
+
* runPagesRequest receives a "clean" request with basePath-stripped URL.
|
|
47
|
+
*/
|
|
48
|
+
async function runPagesRequest(request, deps) {
|
|
49
|
+
const { basePath, trailingSlash, i18nConfig, configRedirects, configRewrites, configHeaders, hadBasePath, isDataReq, isDataRequest } = deps;
|
|
50
|
+
const proxyExternal = (currentReq, externalUrl) => deps.proxyExternal ? deps.proxyExternal(currentReq, externalUrl) : proxyExternalRequest(currentReq, externalUrl);
|
|
51
|
+
const url = new URL(request.url);
|
|
52
|
+
let pathname = url.pathname;
|
|
53
|
+
const search = url.search;
|
|
54
|
+
const basePathState = {
|
|
55
|
+
basePath,
|
|
56
|
+
hadBasePath
|
|
57
|
+
};
|
|
58
|
+
{
|
|
59
|
+
const trailingSlashRedirect = isDataReq ? null : normalizeTrailingSlash(pathname, basePath, trailingSlash, search);
|
|
60
|
+
if (trailingSlashRedirect) return {
|
|
61
|
+
type: "response",
|
|
62
|
+
response: trailingSlashRedirect
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
const reqCtx = requestContextFromRequest(request);
|
|
66
|
+
const requestHostname = i18nConfig ? url.hostname : "";
|
|
67
|
+
const matchPathname = i18nConfig ? normalizeDefaultLocalePathname(pathname, i18nConfig, { hostname: requestHostname }) : pathname;
|
|
68
|
+
if (configRedirects.length) {
|
|
69
|
+
const redirect = matchRedirect(matchPathname, configRedirects, reqCtx, basePathState);
|
|
70
|
+
if (redirect) {
|
|
71
|
+
const location = preserveRedirectDestinationQuery(sanitizeDestination(basePath && hadBasePath && !isExternalUrl(redirect.destination) && !hasBasePath(redirect.destination, basePath) ? basePath + redirect.destination : redirect.destination), deps.rawSearch ?? search);
|
|
72
|
+
return {
|
|
73
|
+
type: "response",
|
|
74
|
+
response: new Response(null, {
|
|
75
|
+
status: redirect.permanent ? 308 : 307,
|
|
76
|
+
headers: { Location: location }
|
|
77
|
+
})
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
const originalResolvedUrl = pathname + search;
|
|
82
|
+
let resolvedUrl = originalResolvedUrl;
|
|
83
|
+
const middlewareHeaders = {};
|
|
84
|
+
let middlewareStatus;
|
|
85
|
+
const serveFilesystemRoute = async (requestPathname, phase) => {
|
|
86
|
+
if (!deps.serveFilesystemRoute) return null;
|
|
87
|
+
const served = await deps.serveFilesystemRoute(requestPathname, middlewareHeaders, phase);
|
|
88
|
+
if (served instanceof Response) return {
|
|
89
|
+
type: "response",
|
|
90
|
+
response: mergeHeaders(served, middlewareHeaders, middlewareStatus)
|
|
91
|
+
};
|
|
92
|
+
return served ? { type: "handled" } : null;
|
|
93
|
+
};
|
|
94
|
+
if (typeof deps.runMiddleware === "function") {
|
|
95
|
+
const result = await deps.runMiddleware(request, deps.ctx ?? null, { isDataRequest });
|
|
96
|
+
if (result.waitUntilPromises && result.waitUntilPromises.length > 0) {
|
|
97
|
+
const ctx = deps.ctx;
|
|
98
|
+
if (ctx && typeof ctx.waitUntil === "function") for (const p of result.waitUntilPromises) ctx.waitUntil(p);
|
|
99
|
+
else Promise.allSettled(result.waitUntilPromises);
|
|
100
|
+
}
|
|
101
|
+
if (!result.continue) {
|
|
102
|
+
if (result.redirectUrl) {
|
|
103
|
+
const redirectHeaders = { Location: result.redirectUrl };
|
|
104
|
+
if (result.responseHeaders) for (const [key, value] of result.responseHeaders) {
|
|
105
|
+
const existing = redirectHeaders[key];
|
|
106
|
+
if (existing === void 0) redirectHeaders[key] = value;
|
|
107
|
+
else if (Array.isArray(existing)) existing.push(value);
|
|
108
|
+
else redirectHeaders[key] = [existing, value];
|
|
109
|
+
}
|
|
110
|
+
const headers = new Headers();
|
|
111
|
+
for (const [k, v] of Object.entries(redirectHeaders)) if (Array.isArray(v)) for (const item of v) headers.append(k, item);
|
|
112
|
+
else headers.set(k, v);
|
|
113
|
+
return {
|
|
114
|
+
type: "response",
|
|
115
|
+
response: new Response(null, {
|
|
116
|
+
status: result.redirectStatus ?? 307,
|
|
117
|
+
headers
|
|
118
|
+
})
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
if (result.response) return {
|
|
122
|
+
type: "response",
|
|
123
|
+
response: result.response
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
if (result.responseHeaders) for (const [key, value] of result.responseHeaders) if (key === "set-cookie") {
|
|
127
|
+
const existing = middlewareHeaders[key];
|
|
128
|
+
if (Array.isArray(existing)) existing.push(value);
|
|
129
|
+
else if (existing) middlewareHeaders[key] = [existing, value];
|
|
130
|
+
else middlewareHeaders[key] = [value];
|
|
131
|
+
} else middlewareHeaders[key] = value;
|
|
132
|
+
if (result.rewriteUrl) resolvedUrl = result.rewriteUrl;
|
|
133
|
+
middlewareStatus = result.status ?? result.rewriteStatus;
|
|
134
|
+
}
|
|
135
|
+
const { postMwReqCtx, request: postMwReq } = applyMiddlewareRequestHeaders(middlewareHeaders, request, { preserveCredentialHeaders: isExternalUrl(resolvedUrl) });
|
|
136
|
+
request = postMwReq;
|
|
137
|
+
const pathnameForResolvedUrl = (value) => value.split("#", 1)[0].split("?", 1)[0];
|
|
138
|
+
const rewriteRequestContext = () => ({
|
|
139
|
+
...postMwReqCtx,
|
|
140
|
+
query: new URL(resolvedUrl, url).searchParams
|
|
141
|
+
});
|
|
142
|
+
let resolvedPathname = pathnameForResolvedUrl(resolvedUrl);
|
|
143
|
+
const matchResolvedPathname = (p) => i18nConfig ? normalizeDefaultLocalePathname(p, i18nConfig, { hostname: requestHostname }) : p;
|
|
144
|
+
if (configHeaders.length) applyConfigHeadersToHeaderRecord(middlewareHeaders, {
|
|
145
|
+
configHeaders,
|
|
146
|
+
pathname: matchPathname,
|
|
147
|
+
requestContext: reqCtx,
|
|
148
|
+
basePathState
|
|
149
|
+
});
|
|
150
|
+
if (isExternalUrl(resolvedUrl)) return {
|
|
151
|
+
type: "response",
|
|
152
|
+
response: mergeHeaders(await proxyExternal(request, resolvedUrl), middlewareHeaders, void 0)
|
|
153
|
+
};
|
|
154
|
+
const directFilesystemResult = await serveFilesystemRoute(pathname, "direct");
|
|
155
|
+
if (directFilesystemResult) return directFilesystemResult;
|
|
156
|
+
let configRewriteFired = false;
|
|
157
|
+
for (const rewrite of configRewrites.beforeFiles ?? []) {
|
|
158
|
+
const rewritten = matchRewrite(matchResolvedPathname(resolvedPathname), [rewrite], rewriteRequestContext(), basePathState);
|
|
159
|
+
if (rewritten) {
|
|
160
|
+
if (isExternalUrl(rewritten)) return {
|
|
161
|
+
type: "response",
|
|
162
|
+
response: await proxyExternal(request, rewritten)
|
|
163
|
+
};
|
|
164
|
+
resolvedUrl = mergeRewriteQuery(resolvedUrl, rewritten);
|
|
165
|
+
resolvedPathname = pathnameForResolvedUrl(resolvedUrl);
|
|
166
|
+
configRewriteFired = true;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
if (configRewriteFired) {
|
|
170
|
+
const beforeFilesResult = await serveFilesystemRoute(resolvedPathname, "beforeFiles");
|
|
171
|
+
if (beforeFilesResult) return beforeFilesResult;
|
|
172
|
+
}
|
|
173
|
+
if (basePath && !hadBasePath && !configRewriteFired) return {
|
|
174
|
+
type: "response",
|
|
175
|
+
response: new Response("This page could not be found", {
|
|
176
|
+
status: 404,
|
|
177
|
+
headers: { "Content-Type": "text/html; charset=utf-8" }
|
|
178
|
+
})
|
|
179
|
+
};
|
|
180
|
+
const handleResolvedApiRoute = async () => {
|
|
181
|
+
const apiLookupUrl = stripI18nLocaleForApiRoute(resolvedUrl, i18nConfig);
|
|
182
|
+
const apiLookupPathname = apiLookupUrl.split("?")[0];
|
|
183
|
+
if (!apiLookupPathname.startsWith("/api/") && apiLookupPathname !== "/api") return null;
|
|
184
|
+
if (typeof deps.handleApi === "function") {
|
|
185
|
+
let apiRequest = request;
|
|
186
|
+
if (basePath && hadBasePath) {
|
|
187
|
+
const apiRequestUrl = new URL(request.url);
|
|
188
|
+
apiRequestUrl.pathname = addBasePathToPathname(apiRequestUrl.pathname, basePath);
|
|
189
|
+
apiRequest = cloneRequestWithUrl(request, apiRequestUrl.toString());
|
|
190
|
+
}
|
|
191
|
+
return {
|
|
192
|
+
type: "response",
|
|
193
|
+
defaultContentType: "application/octet-stream",
|
|
194
|
+
response: mergeHeaders(await deps.handleApi(apiRequest, apiLookupUrl, deps.ctx ?? null), middlewareHeaders, middlewareStatus)
|
|
195
|
+
};
|
|
196
|
+
}
|
|
197
|
+
return {
|
|
198
|
+
type: "api",
|
|
199
|
+
apiUrl: apiLookupUrl,
|
|
200
|
+
stagedHeaders: middlewareHeaders,
|
|
201
|
+
requestHeaders: request.headers,
|
|
202
|
+
middlewareStatus
|
|
203
|
+
};
|
|
204
|
+
};
|
|
205
|
+
const apiResult = await handleResolvedApiRoute();
|
|
206
|
+
if (apiResult) return apiResult;
|
|
207
|
+
let pageMatch = deps.matchPageRoute ? deps.matchPageRoute(resolvedPathname, request) : null;
|
|
208
|
+
let resolvedPathnameChanged = false;
|
|
209
|
+
if (!pageMatch || pageMatch.route.isDynamic) for (const rewrite of configRewrites.afterFiles ?? []) {
|
|
210
|
+
const rewritten = matchRewrite(matchResolvedPathname(resolvedPathname), [rewrite], rewriteRequestContext(), basePathState);
|
|
211
|
+
if (rewritten) {
|
|
212
|
+
if (isExternalUrl(rewritten)) return {
|
|
213
|
+
type: "response",
|
|
214
|
+
response: await proxyExternal(request, rewritten)
|
|
215
|
+
};
|
|
216
|
+
resolvedUrl = mergeRewriteQuery(resolvedUrl, rewritten);
|
|
217
|
+
resolvedPathname = pathnameForResolvedUrl(resolvedUrl);
|
|
218
|
+
resolvedPathnameChanged = true;
|
|
219
|
+
const afterFilesFilesystemResult = await serveFilesystemRoute(resolvedPathname, "afterFiles");
|
|
220
|
+
if (afterFilesFilesystemResult) return afterFilesFilesystemResult;
|
|
221
|
+
const afterFilesApiResult = await handleResolvedApiRoute();
|
|
222
|
+
if (afterFilesApiResult) return afterFilesApiResult;
|
|
223
|
+
pageMatch = deps.matchPageRoute ? deps.matchPageRoute(resolvedPathname, request) : null;
|
|
224
|
+
if (pageMatch) break;
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
const refreshDataRewriteHeader = () => {
|
|
228
|
+
if ((isDataReq || isDataRequest) && resolvedUrl !== originalResolvedUrl && !isExternalUrl(resolvedUrl)) middlewareHeaders["x-nextjs-rewrite"] = resolvedUrl;
|
|
229
|
+
else delete middlewareHeaders["x-nextjs-rewrite"];
|
|
230
|
+
};
|
|
231
|
+
refreshDataRewriteHeader();
|
|
232
|
+
if (typeof deps.renderPage === "function") {
|
|
233
|
+
let renderPageMatch = pageMatch;
|
|
234
|
+
if ((isDataReq || isDataRequest) && !renderPageMatch && configRewrites.fallback?.length) for (const rewrite of configRewrites.fallback) {
|
|
235
|
+
const fallbackRewrite = matchRewrite(matchResolvedPathname(resolvedPathname), [rewrite], rewriteRequestContext(), basePathState);
|
|
236
|
+
if (!fallbackRewrite) continue;
|
|
237
|
+
if (isExternalUrl(fallbackRewrite)) return {
|
|
238
|
+
type: "response",
|
|
239
|
+
response: await proxyExternal(request, fallbackRewrite)
|
|
240
|
+
};
|
|
241
|
+
resolvedUrl = mergeRewriteQuery(resolvedUrl, fallbackRewrite);
|
|
242
|
+
resolvedPathname = pathnameForResolvedUrl(resolvedUrl);
|
|
243
|
+
const fallbackFilesystemResult = await serveFilesystemRoute(resolvedPathname, "fallback");
|
|
244
|
+
if (fallbackFilesystemResult) return fallbackFilesystemResult;
|
|
245
|
+
const fallbackApiResult = await handleResolvedApiRoute();
|
|
246
|
+
if (fallbackApiResult) return fallbackApiResult;
|
|
247
|
+
renderPageMatch = deps.matchPageRoute ? deps.matchPageRoute(resolvedPathname, request) : null;
|
|
248
|
+
refreshDataRewriteHeader();
|
|
249
|
+
if (renderPageMatch) break;
|
|
250
|
+
}
|
|
251
|
+
const shouldDeferErrorPageOnMiss = !isDataReq && !isDataRequest && !!deps.matchPageRoute && !renderPageMatch;
|
|
252
|
+
const initialRenderOptions = shouldDeferErrorPageOnMiss ? { renderErrorPageOnMiss: false } : isDataReq ? { isDataReq: true } : void 0;
|
|
253
|
+
const stagedHeaders = new Headers();
|
|
254
|
+
for (const [k, v] of Object.entries(middlewareHeaders)) if (Array.isArray(v)) for (const item of v) stagedHeaders.append(k, item);
|
|
255
|
+
else stagedHeaders.set(k, v);
|
|
256
|
+
let response = await deps.renderPage(request, resolvedUrl, initialRenderOptions, stagedHeaders);
|
|
257
|
+
let matchedFallbackRewrite = false;
|
|
258
|
+
if (response.status === 404 && shouldDeferErrorPageOnMiss && configRewrites.fallback?.length) for (const rewrite of configRewrites.fallback) {
|
|
259
|
+
const fallbackRewrite = matchRewrite(matchResolvedPathname(resolvedPathname), [rewrite], rewriteRequestContext(), basePathState);
|
|
260
|
+
if (!fallbackRewrite) continue;
|
|
261
|
+
if (isExternalUrl(fallbackRewrite)) return {
|
|
262
|
+
type: "response",
|
|
263
|
+
response: await proxyExternal(request, fallbackRewrite)
|
|
264
|
+
};
|
|
265
|
+
resolvedUrl = mergeRewriteQuery(resolvedUrl, fallbackRewrite);
|
|
266
|
+
resolvedPathname = pathnameForResolvedUrl(resolvedUrl);
|
|
267
|
+
const fallbackFilesystemResult = await serveFilesystemRoute(resolvedPathname, "fallback");
|
|
268
|
+
if (fallbackFilesystemResult) return fallbackFilesystemResult;
|
|
269
|
+
const fallbackApiResult = await handleResolvedApiRoute();
|
|
270
|
+
if (fallbackApiResult) return fallbackApiResult;
|
|
271
|
+
response = await deps.renderPage(request, resolvedUrl, void 0, stagedHeaders);
|
|
272
|
+
matchedFallbackRewrite = true;
|
|
273
|
+
if (response.status !== 404) break;
|
|
274
|
+
}
|
|
275
|
+
if (response.status === 404 && shouldDeferErrorPageOnMiss && !matchedFallbackRewrite) response = await deps.renderPage(request, resolvedUrl, void 0, stagedHeaders);
|
|
276
|
+
const merged = mergeHeaders(response, middlewareHeaders, middlewareStatus);
|
|
277
|
+
if (merged !== response) merged.__vinextStreamedHtmlResponse = response.__vinextStreamedHtmlResponse;
|
|
278
|
+
return {
|
|
279
|
+
type: "response",
|
|
280
|
+
response: merged,
|
|
281
|
+
defaultContentType: "text/html"
|
|
282
|
+
};
|
|
283
|
+
}
|
|
284
|
+
if (!(resolvedPathnameChanged ? deps.matchPageRoute ? deps.matchPageRoute(resolvedPathname, request) : null : pageMatch) && configRewrites.fallback?.length) for (const rewrite of configRewrites.fallback) {
|
|
285
|
+
const fallbackRewrite = matchRewrite(matchResolvedPathname(resolvedPathname), [rewrite], rewriteRequestContext(), basePathState);
|
|
286
|
+
if (!fallbackRewrite) continue;
|
|
287
|
+
if (isExternalUrl(fallbackRewrite)) return {
|
|
288
|
+
type: "response",
|
|
289
|
+
response: await proxyExternal(request, fallbackRewrite)
|
|
290
|
+
};
|
|
291
|
+
resolvedUrl = mergeRewriteQuery(resolvedUrl, fallbackRewrite);
|
|
292
|
+
resolvedPathname = pathnameForResolvedUrl(resolvedUrl);
|
|
293
|
+
const fallbackFilesystemResult = await serveFilesystemRoute(resolvedPathname, "fallback");
|
|
294
|
+
if (fallbackFilesystemResult) return fallbackFilesystemResult;
|
|
295
|
+
const fallbackApiResult = await handleResolvedApiRoute();
|
|
296
|
+
if (fallbackApiResult) return fallbackApiResult;
|
|
297
|
+
if (deps.matchPageRoute?.(resolvedPathname, request)) break;
|
|
298
|
+
}
|
|
299
|
+
refreshDataRewriteHeader();
|
|
300
|
+
return {
|
|
301
|
+
type: "render",
|
|
302
|
+
resolvedUrl,
|
|
303
|
+
renderOptions: isDataReq ? { isDataReq: true } : void 0,
|
|
304
|
+
stagedHeaders: middlewareHeaders,
|
|
305
|
+
requestHeaders: request.headers,
|
|
306
|
+
middlewareStatus,
|
|
307
|
+
isDataReq
|
|
308
|
+
};
|
|
309
|
+
}
|
|
310
|
+
//#endregion
|
|
311
|
+
export { fetchWorkerFilesystemRoute, runPagesRequest, wrapMiddlewareWithBasePath };
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { IncomingMessage } from "node:http";
|
|
2
|
+
|
|
3
|
+
//#region src/server/pages-revalidate.d.ts
|
|
4
|
+
type RevalidateOptions = {
|
|
5
|
+
/**
|
|
6
|
+
* Only revalidate the path if it was already generated (cached). Mirrors
|
|
7
|
+
* Next.js's `unstable_onlyGenerated`: sets the
|
|
8
|
+
* `x-prerender-revalidate-if-generated` header and makes a 404 response count
|
|
9
|
+
* as a successful no-op rather than an error.
|
|
10
|
+
*/
|
|
11
|
+
unstable_onlyGenerated?: boolean;
|
|
12
|
+
};
|
|
13
|
+
declare function performOnDemandRevalidate(source: IncomingMessage | Headers, urlPath: string, opts?: RevalidateOptions): Promise<void>;
|
|
14
|
+
//#endregion
|
|
15
|
+
export { RevalidateOptions, performOnDemandRevalidate };
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import "./headers.js";
|
|
2
|
+
import { PRERENDER_REVALIDATE_HEADER, PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER, getRevalidateSecret } from "./isr-cache.js";
|
|
3
|
+
import { resolveRequestHost, resolveRequestProtocol } from "./proxy-trust.js";
|
|
4
|
+
//#region src/server/pages-revalidate.ts
|
|
5
|
+
async function performOnDemandRevalidate(source, urlPath, opts = {}) {
|
|
6
|
+
if (typeof urlPath !== "string" || !urlPath.startsWith("/")) throw new Error(`Invalid urlPath provided to revalidate(), must be a path e.g. /blog/post-1, received ${urlPath}`);
|
|
7
|
+
const proto = resolveRequestProtocol(source);
|
|
8
|
+
const host = resolveRequestHost(source, "localhost");
|
|
9
|
+
const target = new URL(urlPath, `${proto}://${host}`);
|
|
10
|
+
const headers = { [PRERENDER_REVALIDATE_HEADER]: getRevalidateSecret() };
|
|
11
|
+
if (opts.unstable_onlyGenerated) headers[PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER] = "1";
|
|
12
|
+
const res = await fetch(target, {
|
|
13
|
+
method: "HEAD",
|
|
14
|
+
headers
|
|
15
|
+
});
|
|
16
|
+
if (!(res.headers.get("x-nextjs-cache")?.toUpperCase() === "REVALIDATED" || res.status === 200 || res.status === 404 && opts.unstable_onlyGenerated === true)) throw new Error(`Failed to revalidate ${urlPath}: ${res.status}`);
|
|
17
|
+
}
|
|
18
|
+
//#endregion
|
|
19
|
+
export { performOnDemandRevalidate };
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
//#region src/server/pages-serializable-props.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* Validate that the value returned as `props` from `getStaticProps` /
|
|
4
|
+
* `getServerSideProps` is JSON-serializable. Throws a friendly
|
|
5
|
+
* `SerializableError` matching Next.js's error shape if it isn't.
|
|
6
|
+
*
|
|
7
|
+
* Ported from Next.js:
|
|
8
|
+
* .nextjs-ref/packages/next/src/lib/is-serializable-props.ts
|
|
9
|
+
* .nextjs-ref/packages/next/src/shared/lib/is-plain-object.ts
|
|
10
|
+
*
|
|
11
|
+
* Tested in Next.js by `test/unit/is-serializable-props.test.ts` and the
|
|
12
|
+
* `non-json` / `non-json-blocking` cases in `test/e2e/prerender.test.ts`.
|
|
13
|
+
*
|
|
14
|
+
* Next.js calls this from `packages/next/src/server/render.tsx` for both
|
|
15
|
+
* `getStaticProps` and `getServerSideProps`. We do the same in
|
|
16
|
+
* `pages-page-data.ts` so users see a clear error instead of an empty page
|
|
17
|
+
* when they accidentally return a `Date`, `Map`, or class instance.
|
|
18
|
+
*/
|
|
19
|
+
declare class SerializableError extends Error {
|
|
20
|
+
constructor(page: string, method: string, path: string, message: string);
|
|
21
|
+
}
|
|
22
|
+
declare function isSerializableProps(page: string, method: string, input: unknown): true;
|
|
23
|
+
//#endregion
|
|
24
|
+
export { SerializableError, isSerializableProps };
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
//#region src/server/pages-serializable-props.ts
|
|
2
|
+
/**
|
|
3
|
+
* Validate that the value returned as `props` from `getStaticProps` /
|
|
4
|
+
* `getServerSideProps` is JSON-serializable. Throws a friendly
|
|
5
|
+
* `SerializableError` matching Next.js's error shape if it isn't.
|
|
6
|
+
*
|
|
7
|
+
* Ported from Next.js:
|
|
8
|
+
* .nextjs-ref/packages/next/src/lib/is-serializable-props.ts
|
|
9
|
+
* .nextjs-ref/packages/next/src/shared/lib/is-plain-object.ts
|
|
10
|
+
*
|
|
11
|
+
* Tested in Next.js by `test/unit/is-serializable-props.test.ts` and the
|
|
12
|
+
* `non-json` / `non-json-blocking` cases in `test/e2e/prerender.test.ts`.
|
|
13
|
+
*
|
|
14
|
+
* Next.js calls this from `packages/next/src/server/render.tsx` for both
|
|
15
|
+
* `getStaticProps` and `getServerSideProps`. We do the same in
|
|
16
|
+
* `pages-page-data.ts` so users see a clear error instead of an empty page
|
|
17
|
+
* when they accidentally return a `Date`, `Map`, or class instance.
|
|
18
|
+
*/
|
|
19
|
+
function getObjectClassLabel(value) {
|
|
20
|
+
return Object.prototype.toString.call(value);
|
|
21
|
+
}
|
|
22
|
+
function isPlainObject(value) {
|
|
23
|
+
if (getObjectClassLabel(value) !== "[object Object]") return false;
|
|
24
|
+
const prototype = Object.getPrototypeOf(value);
|
|
25
|
+
return prototype === null || Object.prototype.hasOwnProperty.call(prototype, "isPrototypeOf");
|
|
26
|
+
}
|
|
27
|
+
const REGEX_PLAIN_IDENTIFIER = /^[A-Za-z_$][A-Za-z0-9_$]*$/;
|
|
28
|
+
var SerializableError = class extends Error {
|
|
29
|
+
constructor(page, method, path, message) {
|
|
30
|
+
super(path ? `Error serializing \`${path}\` returned from \`${method}\` in "${page}".\nReason: ${message}` : `Error serializing props returned from \`${method}\` in "${page}".\nReason: ${message}`);
|
|
31
|
+
this.name = "SerializableError";
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
function isSerializableProps(page, method, input) {
|
|
35
|
+
if (!isPlainObject(input)) throw new SerializableError(page, method, "", `Props must be returned as a plain object from ${method}: \`{ props: { ... } }\` (received: \`${getObjectClassLabel(input)}\`).`);
|
|
36
|
+
function visit(visited, value, path) {
|
|
37
|
+
if (visited.has(value)) throw new SerializableError(page, method, path, `Circular references cannot be expressed in JSON (references: \`${visited.get(value) || "(self)"}\`).`);
|
|
38
|
+
visited.set(value, path);
|
|
39
|
+
}
|
|
40
|
+
function isSerializable(refs, value, path) {
|
|
41
|
+
const type = typeof value;
|
|
42
|
+
if (value === null || type === "boolean" || type === "number" || type === "string") return true;
|
|
43
|
+
if (type === "undefined") throw new SerializableError(page, method, path, "`undefined` cannot be serialized as JSON. Please use `null` or omit this value.");
|
|
44
|
+
if (isPlainObject(value)) {
|
|
45
|
+
visit(refs, value, path);
|
|
46
|
+
const entries = Object.entries(value);
|
|
47
|
+
for (const [key, nestedValue] of entries) {
|
|
48
|
+
const nextPath = REGEX_PLAIN_IDENTIFIER.test(key) ? `${path}.${key}` : `${path}[${JSON.stringify(key)}]`;
|
|
49
|
+
const newRefs = new Map(refs);
|
|
50
|
+
isSerializable(newRefs, key, nextPath);
|
|
51
|
+
isSerializable(newRefs, nestedValue, nextPath);
|
|
52
|
+
}
|
|
53
|
+
return true;
|
|
54
|
+
}
|
|
55
|
+
if (Array.isArray(value)) {
|
|
56
|
+
visit(refs, value, path);
|
|
57
|
+
value.forEach((nestedValue, index) => {
|
|
58
|
+
isSerializable(new Map(refs), nestedValue, `${path}[${index}]`);
|
|
59
|
+
});
|
|
60
|
+
return true;
|
|
61
|
+
}
|
|
62
|
+
throw new SerializableError(page, method, path, `\`${type}\`${type === "object" ? ` ("${Object.prototype.toString.call(value)}")` : ""} cannot be serialized as JSON. Please only return JSON serializable data types.`);
|
|
63
|
+
}
|
|
64
|
+
return isSerializable(/* @__PURE__ */ new Map(), input, "");
|
|
65
|
+
}
|
|
66
|
+
//#endregion
|
|
67
|
+
export { SerializableError, isSerializableProps };
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
//#region src/server/pregenerated-concrete-paths.d.ts
|
|
2
|
+
declare global {
|
|
3
|
+
var __VINEXT_PREGENERATED_CONCRETE_PATHS: unknown;
|
|
4
|
+
}
|
|
5
|
+
declare function normalizePregeneratedPathname(pathname: string): string;
|
|
6
|
+
declare function clearPregeneratedConcretePaths(): void;
|
|
7
|
+
declare function addPregeneratedConcretePath(routePattern: string, pathname: string): void;
|
|
8
|
+
declare function getRenderedConcreteUrlPathsForRoute(routePattern: string): ReadonlySet<string> | undefined;
|
|
9
|
+
/**
|
|
10
|
+
* Populate the registry from `globalThis.__VINEXT_PREGENERATED_CONCRETE_PATHS`.
|
|
11
|
+
* No-op when the global is not set (Node path — seed-cache handles it later).
|
|
12
|
+
* Pathnames are normalised so they match the runtime `cleanPathname`.
|
|
13
|
+
*/
|
|
14
|
+
declare function initPregeneratedPathsFromGlobals(): void;
|
|
15
|
+
//#endregion
|
|
16
|
+
export { addPregeneratedConcretePath, clearPregeneratedConcretePaths, getRenderedConcreteUrlPathsForRoute, initPregeneratedPathsFromGlobals, normalizePregeneratedPathname };
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { normalizePathnameForRouteMatch } from "../routing/utils.js";
|
|
2
|
+
import { normalizePath } from "./normalize-path.js";
|
|
3
|
+
//#region src/server/pregenerated-concrete-paths.ts
|
|
4
|
+
function normalizePregeneratedPathname(pathname) {
|
|
5
|
+
return normalizePath(normalizePathnameForRouteMatch(pathname));
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Stores concrete URL paths pre-rendered at build time per route pattern.
|
|
9
|
+
* Used by the PPR fallback-shell guard to avoid serving fallback shells for
|
|
10
|
+
* known routes whose exact cache entry is temporarily absent.
|
|
11
|
+
*
|
|
12
|
+
* Populated by `seed-cache.ts` (Node) or from `globalThis.__VINEXT_PREGENERATED_CONCRETE_PATHS`
|
|
13
|
+
* injected by `deploy.ts` after prerender (Workers).
|
|
14
|
+
*/
|
|
15
|
+
const concreteUrlPathsByRoute = /* @__PURE__ */ new Map();
|
|
16
|
+
function clearPregeneratedConcretePaths() {
|
|
17
|
+
concreteUrlPathsByRoute.clear();
|
|
18
|
+
}
|
|
19
|
+
function addPregeneratedConcretePath(routePattern, pathname) {
|
|
20
|
+
let paths = concreteUrlPathsByRoute.get(routePattern);
|
|
21
|
+
if (!paths) {
|
|
22
|
+
paths = /* @__PURE__ */ new Set();
|
|
23
|
+
concreteUrlPathsByRoute.set(routePattern, paths);
|
|
24
|
+
}
|
|
25
|
+
paths.add(normalizePregeneratedPathname(pathname));
|
|
26
|
+
}
|
|
27
|
+
function getRenderedConcreteUrlPathsForRoute(routePattern) {
|
|
28
|
+
return concreteUrlPathsByRoute.get(routePattern);
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Populate the registry from `globalThis.__VINEXT_PREGENERATED_CONCRETE_PATHS`.
|
|
32
|
+
* No-op when the global is not set (Node path — seed-cache handles it later).
|
|
33
|
+
* Pathnames are normalised so they match the runtime `cleanPathname`.
|
|
34
|
+
*/
|
|
35
|
+
function initPregeneratedPathsFromGlobals() {
|
|
36
|
+
const raw = globalThis.__VINEXT_PREGENERATED_CONCRETE_PATHS;
|
|
37
|
+
const data = parsePregeneratedConcretePaths(raw);
|
|
38
|
+
if (!data) return;
|
|
39
|
+
clearPregeneratedConcretePaths();
|
|
40
|
+
for (const [routePattern, pathnames] of data) for (const pathname of pathnames) addPregeneratedConcretePath(routePattern, pathname);
|
|
41
|
+
}
|
|
42
|
+
function parsePregeneratedConcretePaths(value) {
|
|
43
|
+
if (!Array.isArray(value)) return void 0;
|
|
44
|
+
const result = [];
|
|
45
|
+
for (const entry of value) {
|
|
46
|
+
if (!Array.isArray(entry)) return void 0;
|
|
47
|
+
if (entry.length !== 2) return void 0;
|
|
48
|
+
const [pattern, paths] = entry;
|
|
49
|
+
if (typeof pattern !== "string") return void 0;
|
|
50
|
+
if (!Array.isArray(paths)) return void 0;
|
|
51
|
+
const strings = [];
|
|
52
|
+
for (const p of paths) {
|
|
53
|
+
if (typeof p !== "string") return void 0;
|
|
54
|
+
strings.push(p);
|
|
55
|
+
}
|
|
56
|
+
result.push([pattern, strings]);
|
|
57
|
+
}
|
|
58
|
+
return result;
|
|
59
|
+
}
|
|
60
|
+
//#endregion
|
|
61
|
+
export { addPregeneratedConcretePath, clearPregeneratedConcretePaths, getRenderedConcreteUrlPathsForRoute, initPregeneratedPathsFromGlobals, normalizePregeneratedPathname };
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
//#region src/server/prerender-manifest.d.ts
|
|
2
|
+
type PrerenderManifestRoute = {
|
|
3
|
+
route: string;
|
|
4
|
+
status?: string;
|
|
5
|
+
revalidate?: number | false;
|
|
6
|
+
expire?: number;
|
|
7
|
+
path?: string;
|
|
8
|
+
router?: string;
|
|
9
|
+
fallback?: boolean;
|
|
10
|
+
};
|
|
11
|
+
type PrerenderManifest = {
|
|
12
|
+
buildId?: string;
|
|
13
|
+
trailingSlash?: boolean;
|
|
14
|
+
routes?: PrerenderManifestRoute[];
|
|
15
|
+
};
|
|
16
|
+
declare function readPrerenderManifest(manifestPath: string): PrerenderManifest | null;
|
|
17
|
+
declare function getRenderedAppRoutes(routes: PrerenderManifestRoute[]): PrerenderManifestRoute[];
|
|
18
|
+
/**
|
|
19
|
+
* Returns true when `pathname` contains bracket-delimited route params,
|
|
20
|
+
* indicating it is a fallback-shell placeholder (e.g. `/en/blog/[slug]`)
|
|
21
|
+
* rather than a concrete rendered URL.
|
|
22
|
+
*/
|
|
23
|
+
declare function isFallbackShellArtifactPath(pathname: string, route?: PrerenderManifestRoute): boolean;
|
|
24
|
+
/**
|
|
25
|
+
* Build the pregenerated concrete-path payload table from a prerender manifest.
|
|
26
|
+
*
|
|
27
|
+
* Filters out fallback-shell placeholder paths and groups remaining concrete
|
|
28
|
+
* paths by route pattern. Returns an empty array when the manifest has no
|
|
29
|
+
* rendered App routes or all routes are fallback-shell artifacts.
|
|
30
|
+
*/
|
|
31
|
+
declare function buildPregeneratedConcretePathTable(manifest: PrerenderManifest): Array<[string, string[]]>;
|
|
32
|
+
//#endregion
|
|
33
|
+
export { buildPregeneratedConcretePathTable, getRenderedAppRoutes, isFallbackShellArtifactPath, readPrerenderManifest };
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
//#region src/server/prerender-manifest.ts
|
|
3
|
+
function readPrerenderManifest(manifestPath) {
|
|
4
|
+
if (!fs.existsSync(manifestPath)) return null;
|
|
5
|
+
try {
|
|
6
|
+
return JSON.parse(fs.readFileSync(manifestPath, "utf-8"));
|
|
7
|
+
} catch (error) {
|
|
8
|
+
console.warn(`[vinext] Failed to read prerender manifest at ${manifestPath}:`, error);
|
|
9
|
+
return null;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
function getRenderedAppRoutes(routes) {
|
|
13
|
+
return routes.filter((r) => r.status === "rendered" && r.router === "app");
|
|
14
|
+
}
|
|
15
|
+
function groupRoutesByPattern(routes) {
|
|
16
|
+
const byPattern = /* @__PURE__ */ new Map();
|
|
17
|
+
for (const r of routes) {
|
|
18
|
+
const pathname = r.path ?? r.route;
|
|
19
|
+
const existing = byPattern.get(r.route);
|
|
20
|
+
if (existing) existing.push(pathname);
|
|
21
|
+
else byPattern.set(r.route, [pathname]);
|
|
22
|
+
}
|
|
23
|
+
return byPattern;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Returns true when `pathname` contains bracket-delimited route params,
|
|
27
|
+
* indicating it is a fallback-shell placeholder (e.g. `/en/blog/[slug]`)
|
|
28
|
+
* rather than a concrete rendered URL.
|
|
29
|
+
*/
|
|
30
|
+
function isFallbackShellArtifactPath(pathname, route) {
|
|
31
|
+
if (route?.fallback === true) return true;
|
|
32
|
+
if (route?.fallback === void 0) {
|
|
33
|
+
if (process.env.NODE_ENV !== "production") console.warn("[vinext] Legacy manifest detected: missing `fallback` flag for route. Using bracket heuristic for fallback-shell detection. A concrete URL containing literal brackets may be misclassified as a fallback shell.");
|
|
34
|
+
return pathname.includes("[") || pathname.includes("]");
|
|
35
|
+
}
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Build the pregenerated concrete-path payload table from a prerender manifest.
|
|
40
|
+
*
|
|
41
|
+
* Filters out fallback-shell placeholder paths and groups remaining concrete
|
|
42
|
+
* paths by route pattern. Returns an empty array when the manifest has no
|
|
43
|
+
* rendered App routes or all routes are fallback-shell artifacts.
|
|
44
|
+
*/
|
|
45
|
+
function buildPregeneratedConcretePathTable(manifest) {
|
|
46
|
+
const routes = manifest?.routes;
|
|
47
|
+
if (!routes?.length) return [];
|
|
48
|
+
const concreteRoutes = getRenderedAppRoutes(routes).filter((r) => {
|
|
49
|
+
return !isFallbackShellArtifactPath(r.path ?? r.route, r);
|
|
50
|
+
});
|
|
51
|
+
return Array.from(groupRoutesByPattern(concreteRoutes).entries());
|
|
52
|
+
}
|
|
53
|
+
//#endregion
|
|
54
|
+
export { buildPregeneratedConcretePathTable, getRenderedAppRoutes, isFallbackShellArtifactPath, readPrerenderManifest };
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
//#region src/server/prerender-route-params.d.ts
|
|
2
|
+
type PrerenderRouteParams = Record<string, string | string[]>;
|
|
3
|
+
type PrerenderRouteParamsPayload = {
|
|
4
|
+
fallbackParamNames?: readonly string[];
|
|
5
|
+
params: PrerenderRouteParams;
|
|
6
|
+
routePattern: string;
|
|
7
|
+
};
|
|
8
|
+
type PrerenderRouteParamsRouteMatch = {
|
|
9
|
+
kind: "exact";
|
|
10
|
+
params: PrerenderRouteParams;
|
|
11
|
+
} | {
|
|
12
|
+
fallbackParamNames: readonly string[];
|
|
13
|
+
kind: "fallback-shell";
|
|
14
|
+
params: PrerenderRouteParams;
|
|
15
|
+
};
|
|
16
|
+
declare function serializePrerenderRouteParamsHeader(payload: PrerenderRouteParamsPayload | null): string | null;
|
|
17
|
+
declare function readTrustedPrerenderRouteParamsFromHeaders(headers: Headers, expectedSecret?: string): PrerenderRouteParamsPayload | null;
|
|
18
|
+
declare function readTrustedPrerenderRouteParams(request: Request): PrerenderRouteParamsPayload | null;
|
|
19
|
+
declare function prerenderRouteParamsPayloadMatchesRoute(payload: PrerenderRouteParamsPayload | null, routePattern: string, params: PrerenderRouteParams): payload is PrerenderRouteParamsPayload;
|
|
20
|
+
declare function matchPrerenderRouteParamsPayload(payload: PrerenderRouteParamsPayload | null, routePattern: string, params: PrerenderRouteParams): PrerenderRouteParamsRouteMatch | null;
|
|
21
|
+
declare function encodePrerenderRouteParams(pattern: string, params: PrerenderRouteParams, fallbackParamNames?: readonly string[]): PrerenderRouteParamsPayload | null;
|
|
22
|
+
//#endregion
|
|
23
|
+
export { PrerenderRouteParams, PrerenderRouteParamsPayload, encodePrerenderRouteParams, matchPrerenderRouteParamsPayload, prerenderRouteParamsPayloadMatchesRoute, readTrustedPrerenderRouteParams, readTrustedPrerenderRouteParamsFromHeaders, serializePrerenderRouteParamsHeader };
|