@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,59 @@
|
|
|
1
|
+
import { buildClassificationReplacement, buildReasonsReplacement } from "./route-classification-manifest.js";
|
|
2
|
+
import { classifyLayoutByModuleGraph, isStaticModuleGraphResult, moduleGraphReason } from "./layout-classification.js";
|
|
3
|
+
//#region src/build/route-classification-injector.ts
|
|
4
|
+
const CLASS_STUB_RE = /function __VINEXT_CLASS\(routeIdx\)\s*\{\s*return null;?\s*\}/;
|
|
5
|
+
const REASONS_STUB_RE = /function __VINEXT_CLASS_REASONS\(routeIdx\)\s*\{\s*return null;?\s*\}/;
|
|
6
|
+
function identityPath(path) {
|
|
7
|
+
return path;
|
|
8
|
+
}
|
|
9
|
+
function findClassificationChunk(chunks) {
|
|
10
|
+
const chunksMentioningStub = chunks.filter((chunk) => chunk.code.includes("__VINEXT_CLASS"));
|
|
11
|
+
const chunksWithStubBody = chunksMentioningStub.filter((chunk) => CLASS_STUB_RE.test(chunk.code));
|
|
12
|
+
const chunkWithStubBody = chunksWithStubBody[0];
|
|
13
|
+
if (chunksMentioningStub.length === 0) return null;
|
|
14
|
+
if (chunkWithStubBody === void 0) throw new Error(`vinext: build-time classification — __VINEXT_CLASS is referenced in ${chunksMentioningStub.map((chunk) => chunk.fileName).join(", ")} but no chunk contains the stub body. The generator and the classification injector have drifted.`);
|
|
15
|
+
if (chunksWithStubBody.length > 1) throw new Error(`vinext: build-time classification — expected __VINEXT_CLASS stub in exactly one RSC chunk, found ${chunksWithStubBody.length}`);
|
|
16
|
+
return chunkWithStubBody;
|
|
17
|
+
}
|
|
18
|
+
function buildLayer2Classifications(options) {
|
|
19
|
+
const canonicalizeLayoutPath = options.canonicalizeLayoutPath ?? identityPath;
|
|
20
|
+
const layer2PerRoute = /* @__PURE__ */ new Map();
|
|
21
|
+
const graphCache = /* @__PURE__ */ new Map();
|
|
22
|
+
for (let routeIdx = 0; routeIdx < options.manifest.routes.length; routeIdx++) {
|
|
23
|
+
const route = options.manifest.routes[routeIdx];
|
|
24
|
+
const perRoute = /* @__PURE__ */ new Map();
|
|
25
|
+
for (let layoutIdx = 0; layoutIdx < route.layoutPaths.length; layoutIdx++) {
|
|
26
|
+
if (route.layer1.has(layoutIdx)) continue;
|
|
27
|
+
const layoutModuleId = canonicalizeLayoutPath(route.layoutPaths[layoutIdx]);
|
|
28
|
+
if (!options.moduleInfo.getModuleInfo(layoutModuleId)) continue;
|
|
29
|
+
let graphResult = graphCache.get(layoutModuleId);
|
|
30
|
+
if (graphResult === void 0) {
|
|
31
|
+
graphResult = classifyLayoutByModuleGraph(layoutModuleId, options.dynamicShimPaths, options.moduleInfo);
|
|
32
|
+
graphCache.set(layoutModuleId, graphResult);
|
|
33
|
+
}
|
|
34
|
+
if (isStaticModuleGraphResult(graphResult)) perRoute.set(layoutIdx, moduleGraphReason(graphResult));
|
|
35
|
+
}
|
|
36
|
+
if (perRoute.size > 0) layer2PerRoute.set(routeIdx, perRoute);
|
|
37
|
+
}
|
|
38
|
+
return layer2PerRoute;
|
|
39
|
+
}
|
|
40
|
+
function planRouteClassificationInjection(options) {
|
|
41
|
+
const target = findClassificationChunk(options.chunks);
|
|
42
|
+
if (!target) return { kind: "skip" };
|
|
43
|
+
if (options.enableDebugReasons && !REASONS_STUB_RE.test(target.code)) throw new Error("vinext: build-time classification — __VINEXT_CLASS_REASONS stub is missing alongside __VINEXT_CLASS. The generator and the classification injector have drifted.");
|
|
44
|
+
const layer2PerRoute = buildLayer2Classifications(options);
|
|
45
|
+
const patchedBody = `function __VINEXT_CLASS(routeIdx) { return (${buildClassificationReplacement(options.manifest, layer2PerRoute)})(routeIdx); }`;
|
|
46
|
+
let code = target.code.replace(CLASS_STUB_RE, patchedBody);
|
|
47
|
+
if (options.enableDebugReasons) {
|
|
48
|
+
const patchedReasonsBody = `function __VINEXT_CLASS_REASONS(routeIdx) { return (${buildReasonsReplacement(options.manifest, layer2PerRoute)})(routeIdx); }`;
|
|
49
|
+
code = code.replace(REASONS_STUB_RE, patchedReasonsBody);
|
|
50
|
+
}
|
|
51
|
+
return {
|
|
52
|
+
code,
|
|
53
|
+
fileName: target.fileName,
|
|
54
|
+
kind: "patch",
|
|
55
|
+
map: null
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
//#endregion
|
|
59
|
+
export { planRouteClassificationInjection };
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { ClassificationReason, ModuleGraphStaticReason } from "./layout-classification-types.js";
|
|
2
|
+
import { AppRoute } from "../routing/app-route-graph.js";
|
|
3
|
+
|
|
4
|
+
//#region src/build/route-classification-manifest.d.ts
|
|
5
|
+
type Layer1Class = "static" | "dynamic";
|
|
6
|
+
type RouteManifestEntry = {
|
|
7
|
+
/** Route pattern for diagnostics (e.g. "/blog/:slug"). */pattern: string; /** Absolute file paths for each layout, ordered root → leaf. */
|
|
8
|
+
layoutPaths: string[]; /** Layer 1 (segment config) results keyed by numeric layout index. */
|
|
9
|
+
layer1: Map<number, Layer1Class>;
|
|
10
|
+
/**
|
|
11
|
+
* Structured reasons for every Layer 1 decision, keyed by the same layout
|
|
12
|
+
* index. Always populated in lockstep with `layer1` so the debug channel
|
|
13
|
+
* can surface which segment-config field produced the decision.
|
|
14
|
+
*/
|
|
15
|
+
layer1Reasons: Map<number, ClassificationReason>;
|
|
16
|
+
};
|
|
17
|
+
type RouteClassificationManifest = {
|
|
18
|
+
routes: RouteManifestEntry[];
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Reads each layout's source at build time and runs Layer 1 segment-config
|
|
22
|
+
* classification. Fails loudly if any layout file is missing — a missing
|
|
23
|
+
* layout means the routing scan and the filesystem have drifted, and shipping
|
|
24
|
+
* a build in that state would silently break layout rendering.
|
|
25
|
+
*/
|
|
26
|
+
declare function collectRouteClassificationManifest(routes: readonly AppRoute[]): RouteClassificationManifest;
|
|
27
|
+
/**
|
|
28
|
+
* Builds a JavaScript arrow-function expression that dispatches route index
|
|
29
|
+
* to a pre-computed `Map<layoutIndex, "static" | "dynamic">` of build-time
|
|
30
|
+
* classifications. The returned string is suitable for embedding into the
|
|
31
|
+
* generated RSC entry via the `renderChunk` hook.
|
|
32
|
+
*
|
|
33
|
+
* `layer2PerRoute` is typed to only carry `"static"` entries — the
|
|
34
|
+
* module-graph classifier can only prove static, so "needs-probe" results
|
|
35
|
+
* are omitted by the caller before this map is constructed.
|
|
36
|
+
*/
|
|
37
|
+
declare function buildClassificationReplacement(manifest: RouteClassificationManifest, layer2PerRoute: ReadonlyMap<number, ReadonlyMap<number, ModuleGraphStaticReason>>): string;
|
|
38
|
+
/**
|
|
39
|
+
* Sibling of `buildClassificationReplacement`: emits a dispatch function
|
|
40
|
+
* that returns `Map<layoutIndex, ClassificationReason>` per route.
|
|
41
|
+
*
|
|
42
|
+
* The runtime consults this map only when `VINEXT_DEBUG_CLASSIFICATION` is
|
|
43
|
+
* set, and the plugin only patches this dispatcher into the built bundle when
|
|
44
|
+
* that env var is present at build time.
|
|
45
|
+
*
|
|
46
|
+
* Layer 1 priority applies the same way as in `buildClassificationReplacement`:
|
|
47
|
+
* a segment-config reason must override a module-graph reason for the same
|
|
48
|
+
* layout index.
|
|
49
|
+
*/
|
|
50
|
+
declare function buildReasonsReplacement(manifest: RouteClassificationManifest, layer2PerRoute: ReadonlyMap<number, ReadonlyMap<number, ModuleGraphStaticReason>>): string;
|
|
51
|
+
//#endregion
|
|
52
|
+
export { RouteClassificationManifest, buildClassificationReplacement, buildReasonsReplacement, collectRouteClassificationManifest };
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import { classifyLayoutSegmentConfig } from "./report.js";
|
|
2
|
+
import fs from "node:fs";
|
|
3
|
+
//#region src/build/route-classification-manifest.ts
|
|
4
|
+
/**
|
|
5
|
+
* Build-time layout classification manifest.
|
|
6
|
+
*
|
|
7
|
+
* Bridges the classifier in `./layout-classification.ts` with the RSC entry
|
|
8
|
+
* codegen so that the per-layout static/dynamic classifications produced at
|
|
9
|
+
* build time are visible to the runtime probe loop in
|
|
10
|
+
* `server/app-page-execution.ts`.
|
|
11
|
+
*
|
|
12
|
+
* The runtime probe looks up entries by numeric `layoutIndex`, so this module
|
|
13
|
+
* is responsible for flattening the classifier's string-keyed layout IDs into
|
|
14
|
+
* a per-route, index-keyed structure that can be emitted from codegen.
|
|
15
|
+
*/
|
|
16
|
+
/**
|
|
17
|
+
* Reads each layout's source at build time and runs Layer 1 segment-config
|
|
18
|
+
* classification. Fails loudly if any layout file is missing — a missing
|
|
19
|
+
* layout means the routing scan and the filesystem have drifted, and shipping
|
|
20
|
+
* a build in that state would silently break layout rendering.
|
|
21
|
+
*/
|
|
22
|
+
function collectRouteClassificationManifest(routes) {
|
|
23
|
+
const manifestRoutes = [];
|
|
24
|
+
const sourceCache = /* @__PURE__ */ new Map();
|
|
25
|
+
for (const route of routes) {
|
|
26
|
+
const layer1 = /* @__PURE__ */ new Map();
|
|
27
|
+
const layer1Reasons = /* @__PURE__ */ new Map();
|
|
28
|
+
for (let layoutIndex = 0; layoutIndex < route.layouts.length; layoutIndex++) {
|
|
29
|
+
const layoutPath = route.layouts[layoutIndex];
|
|
30
|
+
let source = sourceCache.get(layoutPath);
|
|
31
|
+
if (source === void 0) try {
|
|
32
|
+
source = fs.readFileSync(layoutPath, "utf8");
|
|
33
|
+
sourceCache.set(layoutPath, source);
|
|
34
|
+
} catch (cause) {
|
|
35
|
+
throw new Error(`vinext: failed to read layout for route ${route.pattern} at ${layoutPath}`, { cause });
|
|
36
|
+
}
|
|
37
|
+
const result = classifyLayoutSegmentConfig(source);
|
|
38
|
+
if (result.kind === "static" || result.kind === "dynamic") {
|
|
39
|
+
layer1.set(layoutIndex, result.kind);
|
|
40
|
+
layer1Reasons.set(layoutIndex, result.reason);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
manifestRoutes.push({
|
|
44
|
+
pattern: route.pattern,
|
|
45
|
+
layoutPaths: [...route.layouts],
|
|
46
|
+
layer1,
|
|
47
|
+
layer1Reasons
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
return { routes: manifestRoutes };
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Merges Layer 1 (segment config) and Layer 2 (module graph) into a single
|
|
54
|
+
* per-route map, applying the Layer-1-wins priority rule.
|
|
55
|
+
*
|
|
56
|
+
* Layer 1 always takes priority over Layer 2 for the same layout index:
|
|
57
|
+
* segment config is a user-authored guarantee, so a layout that explicitly
|
|
58
|
+
* says `force-dynamic` must never be demoted to "static" because its module
|
|
59
|
+
* graph happened to be clean.
|
|
60
|
+
*/
|
|
61
|
+
function mergeLayersForRoute(route, layer2) {
|
|
62
|
+
const merged = /* @__PURE__ */ new Map();
|
|
63
|
+
if (layer2) for (const [layoutIdx, reason] of layer2) merged.set(layoutIdx, {
|
|
64
|
+
kind: "static",
|
|
65
|
+
reason
|
|
66
|
+
});
|
|
67
|
+
for (const [layoutIdx, kind] of route.layer1) {
|
|
68
|
+
const reason = route.layer1Reasons.get(layoutIdx);
|
|
69
|
+
if (reason === void 0) throw new Error(`vinext: layout ${layoutIdx} in route ${route.pattern} has a Layer 1 decision without a reason`);
|
|
70
|
+
merged.set(layoutIdx, {
|
|
71
|
+
kind,
|
|
72
|
+
reason
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
return merged;
|
|
76
|
+
}
|
|
77
|
+
function serializeReasonExpression(reason) {
|
|
78
|
+
switch (reason.layer) {
|
|
79
|
+
case "segment-config": {
|
|
80
|
+
const value = reason.value === Infinity ? "Infinity" : JSON.stringify(reason.value);
|
|
81
|
+
return `{ layer: "segment-config", key: ${JSON.stringify(reason.key)}, value: ${value} }`;
|
|
82
|
+
}
|
|
83
|
+
case "module-graph": {
|
|
84
|
+
const props = [`layer: "module-graph"`, `result: ${JSON.stringify(reason.result)}`];
|
|
85
|
+
if (reason.firstShimMatch !== void 0) props.push(`firstShimMatch: ${JSON.stringify(reason.firstShimMatch)}`);
|
|
86
|
+
return `{ ${props.join(", ")} }`;
|
|
87
|
+
}
|
|
88
|
+
case "runtime-probe": {
|
|
89
|
+
const props = [`layer: "runtime-probe"`, `outcome: ${JSON.stringify(reason.outcome)}`];
|
|
90
|
+
if (reason.error !== void 0) props.push(`error: ${JSON.stringify(reason.error)}`);
|
|
91
|
+
return `{ ${props.join(", ")} }`;
|
|
92
|
+
}
|
|
93
|
+
case "no-classifier": return `{ layer: "no-classifier" }`;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
function buildRouteDispatchReplacement(manifest, layer2PerRoute, serializeEntry) {
|
|
97
|
+
const cases = [];
|
|
98
|
+
for (let routeIdx = 0; routeIdx < manifest.routes.length; routeIdx++) {
|
|
99
|
+
const route = manifest.routes[routeIdx];
|
|
100
|
+
const merged = mergeLayersForRoute(route, layer2PerRoute.get(routeIdx));
|
|
101
|
+
if (merged.size === 0) continue;
|
|
102
|
+
const entries = [...merged.entries()].sort((a, b) => a[0] - b[0]).map(([idx, value]) => `[${idx}, ${serializeEntry(value)}]`).join(", ");
|
|
103
|
+
cases.push(` case ${routeIdx}: return new Map([${entries}]);`);
|
|
104
|
+
}
|
|
105
|
+
return [
|
|
106
|
+
"(routeIdx) => {",
|
|
107
|
+
" switch (routeIdx) {",
|
|
108
|
+
...cases,
|
|
109
|
+
" default: return null;",
|
|
110
|
+
" }",
|
|
111
|
+
" }"
|
|
112
|
+
].join("\n");
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Builds a JavaScript arrow-function expression that dispatches route index
|
|
116
|
+
* to a pre-computed `Map<layoutIndex, "static" | "dynamic">` of build-time
|
|
117
|
+
* classifications. The returned string is suitable for embedding into the
|
|
118
|
+
* generated RSC entry via the `renderChunk` hook.
|
|
119
|
+
*
|
|
120
|
+
* `layer2PerRoute` is typed to only carry `"static"` entries — the
|
|
121
|
+
* module-graph classifier can only prove static, so "needs-probe" results
|
|
122
|
+
* are omitted by the caller before this map is constructed.
|
|
123
|
+
*/
|
|
124
|
+
function buildClassificationReplacement(manifest, layer2PerRoute) {
|
|
125
|
+
return buildRouteDispatchReplacement(manifest, layer2PerRoute, (value) => JSON.stringify(value.kind));
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Sibling of `buildClassificationReplacement`: emits a dispatch function
|
|
129
|
+
* that returns `Map<layoutIndex, ClassificationReason>` per route.
|
|
130
|
+
*
|
|
131
|
+
* The runtime consults this map only when `VINEXT_DEBUG_CLASSIFICATION` is
|
|
132
|
+
* set, and the plugin only patches this dispatcher into the built bundle when
|
|
133
|
+
* that env var is present at build time.
|
|
134
|
+
*
|
|
135
|
+
* Layer 1 priority applies the same way as in `buildClassificationReplacement`:
|
|
136
|
+
* a segment-config reason must override a module-graph reason for the same
|
|
137
|
+
* layout index.
|
|
138
|
+
*/
|
|
139
|
+
function buildReasonsReplacement(manifest, layer2PerRoute) {
|
|
140
|
+
return buildRouteDispatchReplacement(manifest, layer2PerRoute, (value) => serializeReasonExpression(value.reason));
|
|
141
|
+
}
|
|
142
|
+
//#endregion
|
|
143
|
+
export { buildClassificationReplacement, buildReasonsReplacement, collectRouteClassificationManifest };
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { ResolvedNextConfig } from "../config/next-config.js";
|
|
2
|
+
import { PrerenderResult, PrerenderRouteResult } from "./prerender.js";
|
|
3
|
+
|
|
4
|
+
//#region src/build/run-prerender.d.ts
|
|
5
|
+
type RunPrerenderOptions = {
|
|
6
|
+
/** Project root directory. */root: string;
|
|
7
|
+
/**
|
|
8
|
+
* Override next.config values. Merged on top of the config loaded from disk.
|
|
9
|
+
* Intended for tests that need to exercise a specific config (e.g. output: 'export')
|
|
10
|
+
* without writing a next.config file.
|
|
11
|
+
*/
|
|
12
|
+
nextConfigOverride?: Partial<ResolvedNextConfig>;
|
|
13
|
+
/**
|
|
14
|
+
* Override the path to the Pages Router server bundle.
|
|
15
|
+
* Defaults to `<root>/dist/server/entry.js`.
|
|
16
|
+
* Intended for tests that build to a custom outDir.
|
|
17
|
+
*/
|
|
18
|
+
pagesBundlePath?: string;
|
|
19
|
+
/**
|
|
20
|
+
* Override the path to the App Router RSC bundle.
|
|
21
|
+
* Defaults to `<root>/dist/server/index.js`.
|
|
22
|
+
* Intended for tests that build to a custom outDir.
|
|
23
|
+
*/
|
|
24
|
+
rscBundlePath?: string;
|
|
25
|
+
/**
|
|
26
|
+
* Maximum number of routes rendered in parallel.
|
|
27
|
+
* Defaults to prerenderApp/prerenderPages internal defaults when omitted.
|
|
28
|
+
*/
|
|
29
|
+
concurrency?: number;
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* Run the prerender phase using pre-built production bundles.
|
|
33
|
+
*
|
|
34
|
+
* Scans routes, starts a local production server, renders every static/ISR
|
|
35
|
+
* route via HTTP, writes output files to `dist/server/prerendered-routes/`
|
|
36
|
+
* (non-export) or `dist/client/` (export), and prints a progress bar + summary
|
|
37
|
+
* to stderr/stdout. Returns the full PrerenderResult so callers can pass it to
|
|
38
|
+
* printBuildReport.
|
|
39
|
+
*
|
|
40
|
+
* Works for both plain Node and Cloudflare Workers builds — the CF Workers
|
|
41
|
+
* bundle outputs `dist/server/index.js` which is a standard Node server entry,
|
|
42
|
+
* so no wrangler/miniflare is needed.
|
|
43
|
+
*
|
|
44
|
+
* Hybrid projects (both `app/` and `pages/` present) run both prerender
|
|
45
|
+
* phases sharing a single prod server instance. The merged results are written
|
|
46
|
+
* to a single `dist/server/vinext-prerender.json`.
|
|
47
|
+
*
|
|
48
|
+
* If a required production bundle does not exist, an error is thrown directing
|
|
49
|
+
* the user to run `vinext build` first.
|
|
50
|
+
*/
|
|
51
|
+
/**
|
|
52
|
+
* Throw if any route is a `fatal` error (a thrown generateStaticParams /
|
|
53
|
+
* getStaticPaths). These fail the build in ALL modes — default included —
|
|
54
|
+
* matching `next build`, unlike intentionally-skipped dynamic/SSR routes and
|
|
55
|
+
* non-fatal errors (e.g. transport failures), which only fail under
|
|
56
|
+
* `output: 'export'`. Exported for direct unit testing. Refs cloudflare/vinext#1982
|
|
57
|
+
*/
|
|
58
|
+
declare function assertNoFatalPrerenderRoutes(routes: readonly PrerenderRouteResult[]): void;
|
|
59
|
+
declare function runPrerender(options: RunPrerenderOptions): Promise<PrerenderResult | null>;
|
|
60
|
+
//#endregion
|
|
61
|
+
export { assertNoFatalPrerenderRoutes, runPrerender };
|
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
import { findDir } from "../utils/project.js";
|
|
2
|
+
import { apiRouter, pagesRouter } from "../routing/pages-router.js";
|
|
3
|
+
import { appRouter } from "../routing/app-router.js";
|
|
4
|
+
import { scanMetadataFiles } from "../server/metadata-routes.js";
|
|
5
|
+
import { loadNextConfig, resolveNextConfig } from "../config/next-config.js";
|
|
6
|
+
import { readPrerenderSecret } from "./server-manifest.js";
|
|
7
|
+
import { startProdServer } from "../server/prod-server.js";
|
|
8
|
+
import { prerenderApp, prerenderPages, writePrerenderIndex } from "./prerender.js";
|
|
9
|
+
import fs from "node:fs";
|
|
10
|
+
import path from "node:path";
|
|
11
|
+
//#region src/build/run-prerender.ts
|
|
12
|
+
/**
|
|
13
|
+
* Shared prerender runner used by both `vinext build` (cli.ts) and
|
|
14
|
+
* `vinext deploy --prerender-all` (deploy.ts).
|
|
15
|
+
*
|
|
16
|
+
* `runPrerender` handles route scanning, dynamic imports, progress reporting,
|
|
17
|
+
* and result summarisation.
|
|
18
|
+
*
|
|
19
|
+
* Output files (HTML/RSC payloads) are written to
|
|
20
|
+
* `dist/server/prerendered-routes/` for non-export builds, co-located with
|
|
21
|
+
* server artifacts and away from the static assets directory. On Cloudflare
|
|
22
|
+
* Workers, `not_found_handling: "none"` means every request hits the worker
|
|
23
|
+
* first, so files in `dist/client/` are never auto-served for page requests.
|
|
24
|
+
* For `output: 'export'` builds the caller controls `outDir` via
|
|
25
|
+
* `static-export.ts`, which passes `dist/client/` directly.
|
|
26
|
+
*
|
|
27
|
+
* Hybrid projects (both `app/` and `pages/` directories) are handled by
|
|
28
|
+
* running both prerender phases and merging results into a single
|
|
29
|
+
* `dist/server/vinext-prerender.json` manifest.
|
|
30
|
+
*/
|
|
31
|
+
/**
|
|
32
|
+
* Live progress reporter for the prerender phase.
|
|
33
|
+
*
|
|
34
|
+
* Writes a single updating line to stderr using \r so it doesn't interleave
|
|
35
|
+
* with Vite's stdout output. Automatically clears on finish().
|
|
36
|
+
*/
|
|
37
|
+
var PrerenderProgress = class {
|
|
38
|
+
isTTY = process.stderr.isTTY;
|
|
39
|
+
lastLineLen = 0;
|
|
40
|
+
update(completed, total, route) {
|
|
41
|
+
if (!this.isTTY) return;
|
|
42
|
+
const pct = total > 0 ? Math.floor(completed / total * 100) : 0;
|
|
43
|
+
const bar = `[${"█".repeat(Math.floor(pct / 5))}${" ".repeat(20 - Math.floor(pct / 5))}]`;
|
|
44
|
+
const routeLabel = route.length > 40 ? "…" + route.slice(-39) : route;
|
|
45
|
+
const line = `Prerendering routes... ${bar} ${String(completed).padStart(String(total).length)}/${total} ${routeLabel}`;
|
|
46
|
+
const padded = line.padEnd(this.lastLineLen);
|
|
47
|
+
this.lastLineLen = line.length;
|
|
48
|
+
process.stderr.write(`\r${padded}`);
|
|
49
|
+
}
|
|
50
|
+
finish(rendered, skipped, errors) {
|
|
51
|
+
if (this.isTTY) process.stderr.write(`\r${" ".repeat(this.lastLineLen)}\r`);
|
|
52
|
+
const errorPart = errors > 0 ? `, ${errors} error${errors !== 1 ? "s" : ""}` : "";
|
|
53
|
+
console.log(` Prerendered ${rendered} routes (${skipped} skipped${errorPart}).`);
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
function readBuiltBuildId(serverDir) {
|
|
57
|
+
try {
|
|
58
|
+
const buildId = fs.readFileSync(path.join(serverDir, "BUILD_ID"), "utf-8").trim();
|
|
59
|
+
return buildId.length > 0 ? buildId : null;
|
|
60
|
+
} catch (error) {
|
|
61
|
+
if (error && typeof error === "object" && "code" in error && error.code === "ENOENT") return null;
|
|
62
|
+
throw error;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Run the prerender phase using pre-built production bundles.
|
|
67
|
+
*
|
|
68
|
+
* Scans routes, starts a local production server, renders every static/ISR
|
|
69
|
+
* route via HTTP, writes output files to `dist/server/prerendered-routes/`
|
|
70
|
+
* (non-export) or `dist/client/` (export), and prints a progress bar + summary
|
|
71
|
+
* to stderr/stdout. Returns the full PrerenderResult so callers can pass it to
|
|
72
|
+
* printBuildReport.
|
|
73
|
+
*
|
|
74
|
+
* Works for both plain Node and Cloudflare Workers builds — the CF Workers
|
|
75
|
+
* bundle outputs `dist/server/index.js` which is a standard Node server entry,
|
|
76
|
+
* so no wrangler/miniflare is needed.
|
|
77
|
+
*
|
|
78
|
+
* Hybrid projects (both `app/` and `pages/` present) run both prerender
|
|
79
|
+
* phases sharing a single prod server instance. The merged results are written
|
|
80
|
+
* to a single `dist/server/vinext-prerender.json`.
|
|
81
|
+
*
|
|
82
|
+
* If a required production bundle does not exist, an error is thrown directing
|
|
83
|
+
* the user to run `vinext build` first.
|
|
84
|
+
*/
|
|
85
|
+
/**
|
|
86
|
+
* Throw if any route is a `fatal` error (a thrown generateStaticParams /
|
|
87
|
+
* getStaticPaths). These fail the build in ALL modes — default included —
|
|
88
|
+
* matching `next build`, unlike intentionally-skipped dynamic/SSR routes and
|
|
89
|
+
* non-fatal errors (e.g. transport failures), which only fail under
|
|
90
|
+
* `output: 'export'`. Exported for direct unit testing. Refs cloudflare/vinext#1982
|
|
91
|
+
*/
|
|
92
|
+
function assertNoFatalPrerenderRoutes(routes) {
|
|
93
|
+
const fatalRoutes = routes.filter((r) => r.status === "error" && r.fatal === true);
|
|
94
|
+
if (fatalRoutes.length === 0) return;
|
|
95
|
+
const fatalList = fatalRoutes.map((r) => ` ${r.route}: ${r.error}`).join("\n");
|
|
96
|
+
throw new Error(`Prerender failed: ${fatalRoutes.length} route${fatalRoutes.length !== 1 ? "s" : ""} errored during static generation.\n${fatalList}`);
|
|
97
|
+
}
|
|
98
|
+
async function runPrerender(options) {
|
|
99
|
+
const { root } = options;
|
|
100
|
+
const appDir = findDir(root, "app", "src/app");
|
|
101
|
+
const pagesDir = findDir(root, "pages", "src/pages");
|
|
102
|
+
if (!appDir && !pagesDir) return null;
|
|
103
|
+
const previousPrerenderFlag = process.env.VINEXT_PRERENDER;
|
|
104
|
+
process.env.VINEXT_PRERENDER = "1";
|
|
105
|
+
const manifestDir = path.join(root, "dist", "server");
|
|
106
|
+
const rscBundlePath = options.rscBundlePath ?? path.join(root, "dist", "server", "index.js");
|
|
107
|
+
const serverDir = path.dirname(rscBundlePath);
|
|
108
|
+
const loadedConfig = await resolveNextConfig(await loadNextConfig(root), root);
|
|
109
|
+
const config = options.nextConfigOverride ? {
|
|
110
|
+
...loadedConfig,
|
|
111
|
+
...options.nextConfigOverride
|
|
112
|
+
} : { ...loadedConfig };
|
|
113
|
+
const builtBuildId = readBuiltBuildId(serverDir);
|
|
114
|
+
if (builtBuildId) config.buildId = builtBuildId;
|
|
115
|
+
const mode = config.output === "export" ? "export" : "default";
|
|
116
|
+
const allRoutes = [];
|
|
117
|
+
const allOutputFiles = [];
|
|
118
|
+
let totalUrls = 0;
|
|
119
|
+
let completedUrls = 0;
|
|
120
|
+
const progress = new PrerenderProgress();
|
|
121
|
+
const outDir = mode === "export" ? path.join(root, "dist", "client") : path.join(root, "dist", "server", "prerendered-routes");
|
|
122
|
+
let sharedProdServer = null;
|
|
123
|
+
let sharedPrerenderSecret;
|
|
124
|
+
try {
|
|
125
|
+
if (appDir && pagesDir) {
|
|
126
|
+
sharedProdServer = await startProdServer({
|
|
127
|
+
port: 0,
|
|
128
|
+
host: "127.0.0.1",
|
|
129
|
+
outDir: path.dirname(serverDir),
|
|
130
|
+
noCompression: true,
|
|
131
|
+
purpose: "prerender"
|
|
132
|
+
});
|
|
133
|
+
sharedPrerenderSecret = readPrerenderSecret(serverDir);
|
|
134
|
+
}
|
|
135
|
+
if (appDir) {
|
|
136
|
+
const routes = await appRouter(appDir, config.pageExtensions);
|
|
137
|
+
const metadataRoutes = scanMetadataFiles(appDir);
|
|
138
|
+
let appTotal = 0;
|
|
139
|
+
const result = await prerenderApp({
|
|
140
|
+
mode,
|
|
141
|
+
routes,
|
|
142
|
+
metadataRoutes,
|
|
143
|
+
outDir,
|
|
144
|
+
skipManifest: true,
|
|
145
|
+
config,
|
|
146
|
+
concurrency: options.concurrency,
|
|
147
|
+
rscBundlePath,
|
|
148
|
+
...sharedProdServer ? { _prodServer: sharedProdServer } : {},
|
|
149
|
+
onProgress: ({ total, route }) => {
|
|
150
|
+
if (appTotal === 0) {
|
|
151
|
+
appTotal = total;
|
|
152
|
+
totalUrls += total;
|
|
153
|
+
}
|
|
154
|
+
completedUrls += 1;
|
|
155
|
+
progress.update(completedUrls, totalUrls, route);
|
|
156
|
+
}
|
|
157
|
+
});
|
|
158
|
+
allRoutes.push(...result.routes);
|
|
159
|
+
if (result.outputFiles) allOutputFiles.push(...result.outputFiles);
|
|
160
|
+
}
|
|
161
|
+
if (pagesDir) {
|
|
162
|
+
const [pageRoutes, apiRoutes] = await Promise.all([pagesRouter(pagesDir, config.pageExtensions), apiRouter(pagesDir, config.pageExtensions)]);
|
|
163
|
+
let pagesTotal = 0;
|
|
164
|
+
const result = await prerenderPages({
|
|
165
|
+
mode,
|
|
166
|
+
routes: pageRoutes,
|
|
167
|
+
apiRoutes,
|
|
168
|
+
pagesDir,
|
|
169
|
+
outDir,
|
|
170
|
+
skipManifest: true,
|
|
171
|
+
config,
|
|
172
|
+
concurrency: options.concurrency,
|
|
173
|
+
...sharedProdServer ? {
|
|
174
|
+
_prodServer: sharedProdServer,
|
|
175
|
+
_prerenderSecret: sharedPrerenderSecret
|
|
176
|
+
} : { pagesBundlePath: options.pagesBundlePath ?? path.join(root, "dist", "server", "entry.js") },
|
|
177
|
+
onProgress: ({ total, route }) => {
|
|
178
|
+
if (pagesTotal === 0) {
|
|
179
|
+
pagesTotal = total;
|
|
180
|
+
totalUrls += total;
|
|
181
|
+
}
|
|
182
|
+
completedUrls += 1;
|
|
183
|
+
progress.update(completedUrls, totalUrls, route);
|
|
184
|
+
}
|
|
185
|
+
});
|
|
186
|
+
allRoutes.push(...result.routes);
|
|
187
|
+
if (result.outputFiles) allOutputFiles.push(...result.outputFiles);
|
|
188
|
+
}
|
|
189
|
+
} finally {
|
|
190
|
+
if (sharedProdServer) await new Promise((resolve) => sharedProdServer.server.close(() => resolve()));
|
|
191
|
+
if (previousPrerenderFlag === void 0) delete process.env.VINEXT_PRERENDER;
|
|
192
|
+
else process.env.VINEXT_PRERENDER = previousPrerenderFlag;
|
|
193
|
+
}
|
|
194
|
+
if (allRoutes.length === 0) {
|
|
195
|
+
progress.finish(0, 0, 0);
|
|
196
|
+
return null;
|
|
197
|
+
}
|
|
198
|
+
let rendered = 0;
|
|
199
|
+
let skipped = 0;
|
|
200
|
+
let errors = 0;
|
|
201
|
+
for (const r of allRoutes) if (r.status === "rendered") rendered++;
|
|
202
|
+
else if (r.status === "skipped") skipped++;
|
|
203
|
+
else errors++;
|
|
204
|
+
try {
|
|
205
|
+
fs.mkdirSync(manifestDir, { recursive: true });
|
|
206
|
+
writePrerenderIndex(allRoutes, manifestDir, {
|
|
207
|
+
buildId: config.buildId,
|
|
208
|
+
trailingSlash: config.trailingSlash
|
|
209
|
+
});
|
|
210
|
+
} finally {
|
|
211
|
+
progress.finish(rendered, skipped, errors);
|
|
212
|
+
}
|
|
213
|
+
assertNoFatalPrerenderRoutes(allRoutes);
|
|
214
|
+
if (mode === "export" && errors > 0) {
|
|
215
|
+
const errorRoutes = allRoutes.filter((r) => r.status === "error").map((r) => ` ${r.route}: ${r.error}`).join("\n");
|
|
216
|
+
throw new Error(`Static export failed: ${errors} route${errors !== 1 ? "s" : ""} cannot be statically exported.\n${errorRoutes}\n\nRemove server-side data fetching (getServerSideProps, force-dynamic, revalidate) from these routes, or remove \`output: "export"\` from next.config.js.`);
|
|
217
|
+
}
|
|
218
|
+
return {
|
|
219
|
+
routes: allRoutes,
|
|
220
|
+
...allOutputFiles.length > 0 ? { outputFiles: allOutputFiles } : {}
|
|
221
|
+
};
|
|
222
|
+
}
|
|
223
|
+
//#endregion
|
|
224
|
+
export { assertNoFatalPrerenderRoutes, runPrerender };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
//#region src/build/server-manifest.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* Shared utilities for reading/writing vinext-server.json.
|
|
4
|
+
*
|
|
5
|
+
* Kept in a separate file so both build-time code (prerender.ts) and
|
|
6
|
+
* runtime code (prod-server.ts) can import it without creating a circular
|
|
7
|
+
* dependency.
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Read the prerender secret from `vinext-server.json` in `serverDir`.
|
|
11
|
+
*
|
|
12
|
+
* Returns `undefined` if the file does not exist or cannot be parsed.
|
|
13
|
+
* Callers that require a secret (i.e. the prerender phase itself) should
|
|
14
|
+
* warn when this returns `undefined`.
|
|
15
|
+
*/
|
|
16
|
+
declare function readPrerenderSecret(serverDir: string): string | undefined;
|
|
17
|
+
//#endregion
|
|
18
|
+
export { readPrerenderSecret };
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { readJsonFile } from "../utils/safe-json-file.js";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
//#region src/build/server-manifest.ts
|
|
4
|
+
/**
|
|
5
|
+
* Shared utilities for reading/writing vinext-server.json.
|
|
6
|
+
*
|
|
7
|
+
* Kept in a separate file so both build-time code (prerender.ts) and
|
|
8
|
+
* runtime code (prod-server.ts) can import it without creating a circular
|
|
9
|
+
* dependency.
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* Read the prerender secret from `vinext-server.json` in `serverDir`.
|
|
13
|
+
*
|
|
14
|
+
* Returns `undefined` if the file does not exist or cannot be parsed.
|
|
15
|
+
* Callers that require a secret (i.e. the prerender phase itself) should
|
|
16
|
+
* warn when this returns `undefined`.
|
|
17
|
+
*/
|
|
18
|
+
function readPrerenderSecret(serverDir) {
|
|
19
|
+
return readJsonFile(path.join(serverDir, "vinext-server.json"))?.prerenderSecret;
|
|
20
|
+
}
|
|
21
|
+
//#endregion
|
|
22
|
+
export { readPrerenderSecret };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
//#region src/build/ssr-manifest.d.ts
|
|
2
|
+
type BundleBackfillChunk = {
|
|
3
|
+
type: "chunk";
|
|
4
|
+
fileName: string;
|
|
5
|
+
imports?: string[];
|
|
6
|
+
modules?: Record<string, unknown>;
|
|
7
|
+
viteMetadata?: {
|
|
8
|
+
importedCss?: Set<string>;
|
|
9
|
+
importedAssets?: Set<string>;
|
|
10
|
+
};
|
|
11
|
+
};
|
|
12
|
+
declare function tryRealpathSync(candidate: string): string | null;
|
|
13
|
+
declare function relativeWithinRoot(root: string, moduleId: string): string | null;
|
|
14
|
+
declare function augmentSsrManifestFromBundle(ssrManifest: Record<string, string[]>, bundle: Record<string, BundleBackfillChunk | {
|
|
15
|
+
type: string;
|
|
16
|
+
}>, root: string, base?: string): Record<string, string[]>;
|
|
17
|
+
//#endregion
|
|
18
|
+
export { BundleBackfillChunk, augmentSsrManifestFromBundle, relativeWithinRoot, tryRealpathSync };
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { collapseDuplicateBase, manifestFileWithBase } from "../utils/manifest-paths.js";
|
|
2
|
+
import fs from "node:fs";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
//#region src/build/ssr-manifest.ts
|
|
5
|
+
function tryRealpathSync(candidate) {
|
|
6
|
+
try {
|
|
7
|
+
return fs.realpathSync.native(candidate);
|
|
8
|
+
} catch {
|
|
9
|
+
return null;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
function isWindowsAbsolutePath(candidate) {
|
|
13
|
+
return /^[a-zA-Z]:[\\/]/.test(candidate) || candidate.startsWith("\\\\");
|
|
14
|
+
}
|
|
15
|
+
function relativeWithinRoot(root, moduleId) {
|
|
16
|
+
const relativeId = (isWindowsAbsolutePath(root) || isWindowsAbsolutePath(moduleId) ? path.win32.relative(root, moduleId) : path.relative(root, moduleId)).replace(/\\/g, "/");
|
|
17
|
+
if (!relativeId || relativeId === ".." || relativeId.startsWith("../")) return null;
|
|
18
|
+
return relativeId;
|
|
19
|
+
}
|
|
20
|
+
function normalizeManifestModuleId(moduleId, root) {
|
|
21
|
+
const normalizedId = moduleId.replace(/\\/g, "/");
|
|
22
|
+
if (normalizedId.startsWith("\0")) return normalizedId;
|
|
23
|
+
if (normalizedId.startsWith("node_modules/") || normalizedId.includes("/node_modules/")) return normalizedId;
|
|
24
|
+
if (!isWindowsAbsolutePath(moduleId) && !path.isAbsolute(moduleId)) {
|
|
25
|
+
if (!normalizedId.startsWith(".") && !normalizedId.includes("../")) return normalizedId;
|
|
26
|
+
}
|
|
27
|
+
const rootCandidates = new Set([root]);
|
|
28
|
+
const realRoot = tryRealpathSync(root);
|
|
29
|
+
if (realRoot) rootCandidates.add(realRoot);
|
|
30
|
+
const moduleCandidates = /* @__PURE__ */ new Set();
|
|
31
|
+
if (isWindowsAbsolutePath(moduleId) || path.isAbsolute(moduleId)) moduleCandidates.add(moduleId);
|
|
32
|
+
else moduleCandidates.add(path.resolve(root, moduleId));
|
|
33
|
+
for (const candidate of moduleCandidates) {
|
|
34
|
+
const realCandidate = tryRealpathSync(candidate);
|
|
35
|
+
if (realCandidate) moduleCandidates.add(realCandidate);
|
|
36
|
+
}
|
|
37
|
+
for (const rootCandidate of rootCandidates) for (const moduleCandidate of moduleCandidates) {
|
|
38
|
+
const relativeId = relativeWithinRoot(rootCandidate, moduleCandidate);
|
|
39
|
+
if (relativeId) return relativeId;
|
|
40
|
+
}
|
|
41
|
+
return normalizedId;
|
|
42
|
+
}
|
|
43
|
+
function augmentSsrManifestFromBundle(ssrManifest, bundle, root, base = "/") {
|
|
44
|
+
const nextManifest = {};
|
|
45
|
+
for (const [key, files] of Object.entries(ssrManifest)) {
|
|
46
|
+
const normalizedKey = normalizeManifestModuleId(key, root);
|
|
47
|
+
if (!nextManifest[normalizedKey]) nextManifest[normalizedKey] = /* @__PURE__ */ new Set();
|
|
48
|
+
for (const file of files) nextManifest[normalizedKey].add(collapseDuplicateBase(file, base));
|
|
49
|
+
}
|
|
50
|
+
for (const item of Object.values(bundle)) {
|
|
51
|
+
if (item.type !== "chunk") continue;
|
|
52
|
+
const chunk = item;
|
|
53
|
+
const files = /* @__PURE__ */ new Set();
|
|
54
|
+
files.add(manifestFileWithBase(chunk.fileName, base));
|
|
55
|
+
for (const importedFile of chunk.imports ?? []) files.add(manifestFileWithBase(importedFile, base));
|
|
56
|
+
for (const cssFile of chunk.viteMetadata?.importedCss ?? []) files.add(manifestFileWithBase(cssFile, base));
|
|
57
|
+
for (const assetFile of chunk.viteMetadata?.importedAssets ?? []) files.add(manifestFileWithBase(assetFile, base));
|
|
58
|
+
for (const moduleId of Object.keys(chunk.modules ?? {})) {
|
|
59
|
+
const key = normalizeManifestModuleId(moduleId, root);
|
|
60
|
+
if (key.startsWith("node_modules/") || key.includes("/node_modules/")) continue;
|
|
61
|
+
if (key.startsWith("\0")) continue;
|
|
62
|
+
if (!nextManifest[key]) nextManifest[key] = /* @__PURE__ */ new Set();
|
|
63
|
+
for (const file of files) nextManifest[key].add(file);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
return Object.fromEntries(Object.entries(nextManifest).map(([key, files]) => [key, [...files]]));
|
|
67
|
+
}
|
|
68
|
+
//#endregion
|
|
69
|
+
export { augmentSsrManifestFromBundle, relativeWithinRoot, tryRealpathSync };
|