@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,132 @@
|
|
|
1
|
+
import { LayoutBuildClassification } from "./layout-classification-types.js";
|
|
2
|
+
import { Route } from "../routing/pages-router.js";
|
|
3
|
+
import { AppRoute } from "../routing/app-route-graph.js";
|
|
4
|
+
import { PrerenderResult } from "./prerender.js";
|
|
5
|
+
|
|
6
|
+
//#region src/build/report.d.ts
|
|
7
|
+
type RouteType = "static" | "isr" | "ssr" | "unknown" | "api";
|
|
8
|
+
type RouteRow = {
|
|
9
|
+
pattern: string;
|
|
10
|
+
type: RouteType; /** Only set for `isr` routes. */
|
|
11
|
+
revalidate?: number;
|
|
12
|
+
/**
|
|
13
|
+
* True when the route was classified as `static` by speculative prerender
|
|
14
|
+
* (i.e. was `unknown` from static analysis but rendered successfully).
|
|
15
|
+
* Used by `formatBuildReport` to add a note in the legend.
|
|
16
|
+
*/
|
|
17
|
+
prerendered?: boolean;
|
|
18
|
+
};
|
|
19
|
+
type AppRouteRenderEntry = Pick<AppRoute, "pagePath" | "routePath" | "parallelSlots">;
|
|
20
|
+
declare function getAppRouteRenderEntryPath(route: AppRouteRenderEntry): string | null;
|
|
21
|
+
/**
|
|
22
|
+
* Returns true if the source code contains an export declaration with the given name.
|
|
23
|
+
* For re-export specifiers, this intentionally follows Next.js' static analyzer
|
|
24
|
+
* and checks the local/original binding name.
|
|
25
|
+
* Handles all three common export forms:
|
|
26
|
+
* export function foo() {}
|
|
27
|
+
* export const foo = ...
|
|
28
|
+
* export { foo }
|
|
29
|
+
*/
|
|
30
|
+
declare function hasNamedExport(code: string, name: string): boolean;
|
|
31
|
+
/**
|
|
32
|
+
* Extracts the string value of `export const <name> = "value"`.
|
|
33
|
+
* Handles TypeScript annotations/assertions and no-substitution template literals.
|
|
34
|
+
* Returns null if the export is absent or not a string literal.
|
|
35
|
+
*/
|
|
36
|
+
declare function extractExportConstString(code: string, name: string): string | null;
|
|
37
|
+
/**
|
|
38
|
+
* Extracts the numeric value of `export const <name> = <number|false>`.
|
|
39
|
+
* Supports integers, decimals, negative values, `Infinity`, and `false`.
|
|
40
|
+
* `false` is returned as `Infinity` because `export const revalidate = false`
|
|
41
|
+
* means "cache indefinitely" in Next.js segment config.
|
|
42
|
+
* Handles TypeScript annotations/assertions and JavaScript numeric separators.
|
|
43
|
+
* Returns null if the export is absent or not a number/`false`.
|
|
44
|
+
*/
|
|
45
|
+
declare function extractExportConstNumber(code: string, name: string): number | null;
|
|
46
|
+
/**
|
|
47
|
+
* Extracts the `revalidate` value from inside a `getStaticProps` return object.
|
|
48
|
+
* Looks for: revalidate: <number> or revalidate: false or revalidate: Infinity
|
|
49
|
+
*
|
|
50
|
+
* Returns:
|
|
51
|
+
* number — a positive revalidation interval (enables ISR)
|
|
52
|
+
* 0 — treat as SSR (revalidate every request)
|
|
53
|
+
* false — fully static (no revalidation)
|
|
54
|
+
* Infinity — fully static (treated same as false by Next.js)
|
|
55
|
+
* null — no `revalidate` key found (fully static)
|
|
56
|
+
*/
|
|
57
|
+
declare function extractGetStaticPropsRevalidate(code: string): number | false | null;
|
|
58
|
+
/**
|
|
59
|
+
* Classifies a layout file by its segment config exports (`dynamic`, `revalidate`).
|
|
60
|
+
*
|
|
61
|
+
* Returns a tagged `LayoutBuildClassification` carrying both the decision and
|
|
62
|
+
* the specific segment-config field that produced it. `{ kind: "absent" }`
|
|
63
|
+
* means no segment config is present and the caller should defer to the next
|
|
64
|
+
* layer (module graph analysis).
|
|
65
|
+
*
|
|
66
|
+
* Unlike page classification, positive `revalidate` values are not meaningful
|
|
67
|
+
* for layout skip decisions — ISR is a page-level concept. Only the extremes
|
|
68
|
+
* (`revalidate = 0` → dynamic, `revalidate = Infinity` → static) are decisive.
|
|
69
|
+
*/
|
|
70
|
+
declare function classifyLayoutSegmentConfig(code: string): LayoutBuildClassification;
|
|
71
|
+
/**
|
|
72
|
+
* Classifies a Pages Router page file by reading its source and examining
|
|
73
|
+
* which data-fetching exports it contains.
|
|
74
|
+
*
|
|
75
|
+
* API routes (files under pages/api/) are always `api`.
|
|
76
|
+
*/
|
|
77
|
+
declare function classifyPagesRoute(filePath: string): {
|
|
78
|
+
type: RouteType;
|
|
79
|
+
revalidate?: number;
|
|
80
|
+
};
|
|
81
|
+
/**
|
|
82
|
+
* Classifies an App Router route.
|
|
83
|
+
*
|
|
84
|
+
* @param pagePath Absolute path to the page.tsx (null for API-only routes)
|
|
85
|
+
* @param routePath Absolute path to the route.ts handler (null for page routes)
|
|
86
|
+
* @param isDynamic Whether the URL pattern contains dynamic segments
|
|
87
|
+
*/
|
|
88
|
+
declare function classifyAppRoute(pagePath: string | null, routePath: string | null, isDynamic: boolean): {
|
|
89
|
+
type: RouteType;
|
|
90
|
+
revalidate?: number;
|
|
91
|
+
};
|
|
92
|
+
/**
|
|
93
|
+
* Builds a sorted list of RouteRow objects from the discovered routes.
|
|
94
|
+
* Routes are sorted alphabetically by path, matching filesystem order.
|
|
95
|
+
*
|
|
96
|
+
* When `prerenderResult` is provided, routes that were classified as `unknown`
|
|
97
|
+
* by static analysis but were successfully rendered speculatively are upgraded
|
|
98
|
+
* to `static` (confirmed by execution). The `prerendered` flag is set on those
|
|
99
|
+
* rows so the formatter can add a legend note.
|
|
100
|
+
*/
|
|
101
|
+
declare function buildReportRows(options: {
|
|
102
|
+
pageRoutes?: Route[];
|
|
103
|
+
apiRoutes?: Route[];
|
|
104
|
+
appRoutes?: AppRoute[];
|
|
105
|
+
prerenderResult?: PrerenderResult;
|
|
106
|
+
}): RouteRow[];
|
|
107
|
+
/**
|
|
108
|
+
* Formats a list of RouteRows into a Next.js-style build report string.
|
|
109
|
+
*
|
|
110
|
+
* Example output:
|
|
111
|
+
* Route (pages)
|
|
112
|
+
* ┌ ○ /
|
|
113
|
+
* ├ ◐ /blog/:slug (60s)
|
|
114
|
+
* ├ ƒ /dashboard
|
|
115
|
+
* └ λ /api/posts
|
|
116
|
+
*
|
|
117
|
+
* ○ Static ◐ ISR ƒ Dynamic λ API
|
|
118
|
+
*/
|
|
119
|
+
declare function formatBuildReport(rows: RouteRow[], routerLabel?: string): string;
|
|
120
|
+
/**
|
|
121
|
+
* Scans the project at `root`, classifies all routes, and prints the
|
|
122
|
+
* Next.js-style build report to stdout.
|
|
123
|
+
*
|
|
124
|
+
* Called at the end of `vinext build` in cli.ts.
|
|
125
|
+
*/
|
|
126
|
+
declare function printBuildReport(options: {
|
|
127
|
+
root: string;
|
|
128
|
+
pageExtensions: string[];
|
|
129
|
+
prerenderResult?: PrerenderResult;
|
|
130
|
+
}): Promise<void>;
|
|
131
|
+
//#endregion
|
|
132
|
+
export { RouteRow, RouteType, buildReportRows, classifyAppRoute, classifyLayoutSegmentConfig, classifyPagesRoute, extractExportConstNumber, extractExportConstString, extractGetStaticPropsRevalidate, formatBuildReport, getAppRouteRenderEntryPath, hasNamedExport, printBuildReport };
|
|
@@ -0,0 +1,504 @@
|
|
|
1
|
+
import { findDir } from "../utils/project.js";
|
|
2
|
+
import fs from "node:fs";
|
|
3
|
+
import { parseSync } from "vite";
|
|
4
|
+
//#region src/build/report.ts
|
|
5
|
+
/**
|
|
6
|
+
* Build report — prints a Next.js-style route table after `vinext build`.
|
|
7
|
+
*
|
|
8
|
+
* Classifies every discovered route as:
|
|
9
|
+
* ○ Static — confirmed static: force-static or revalidate=Infinity
|
|
10
|
+
* ◐ ISR — statically rendered, revalidated on a timer (revalidate=N)
|
|
11
|
+
* ƒ Dynamic — confirmed dynamic: force-dynamic, revalidate=0, or getServerSideProps
|
|
12
|
+
* ? Unknown — no explicit config; likely dynamic but not confirmed
|
|
13
|
+
* λ API — API route handler
|
|
14
|
+
*
|
|
15
|
+
* Classification uses AST-based static source analysis (no module execution).
|
|
16
|
+
* Runtime/prerender results are still treated as stronger evidence where
|
|
17
|
+
* available; AST analysis only reads top-level static exports.
|
|
18
|
+
*
|
|
19
|
+
* Limitation: without running the build, we cannot detect dynamic API usage
|
|
20
|
+
* (headers(), cookies(), connection(), etc.) that implicitly forces a route
|
|
21
|
+
* dynamic. Routes without explicit `export const dynamic` or
|
|
22
|
+
* `export const revalidate` are classified as "unknown" rather than "static"
|
|
23
|
+
* to avoid false confidence.
|
|
24
|
+
*/
|
|
25
|
+
function getAppRouteRenderEntryPath(route) {
|
|
26
|
+
if (route.pagePath) return route.pagePath;
|
|
27
|
+
if (route.routePath) return null;
|
|
28
|
+
for (const slot of route.parallelSlots) if (slot.pagePath) return slot.pagePath;
|
|
29
|
+
for (const slot of route.parallelSlots) if (slot.defaultPath) return slot.defaultPath;
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
function parseRouteModuleWithLang(code, lang) {
|
|
33
|
+
try {
|
|
34
|
+
const result = parseSync(`vinext-route.${lang}`, code, {
|
|
35
|
+
astType: "ts",
|
|
36
|
+
lang,
|
|
37
|
+
sourceType: "module"
|
|
38
|
+
});
|
|
39
|
+
return result.errors.some((error) => error.severity === "Error") ? null : result.program;
|
|
40
|
+
} catch {
|
|
41
|
+
return null;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
function parseRouteModule(code) {
|
|
45
|
+
return parseRouteModuleWithLang(code, "tsx") ?? parseRouteModuleWithLang(code, "ts");
|
|
46
|
+
}
|
|
47
|
+
function moduleExportNameValue(name) {
|
|
48
|
+
if (name.type === "Identifier") return name.name;
|
|
49
|
+
if (name.type === "Literal" && typeof name.value === "string") return name.value;
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
function bindingName(pattern) {
|
|
53
|
+
return pattern.type === "Identifier" ? pattern.name : null;
|
|
54
|
+
}
|
|
55
|
+
function declarationHasBindingName(declaration, name) {
|
|
56
|
+
if (declaration === null) return false;
|
|
57
|
+
if (declaration.type === "FunctionDeclaration") return declaration.id?.name === name;
|
|
58
|
+
if (declaration.type !== "VariableDeclaration") return false;
|
|
59
|
+
return declaration.declarations.some((declaration) => bindingName(declaration.id) === name);
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Returns true if the source code contains an export declaration with the given name.
|
|
63
|
+
* For re-export specifiers, this intentionally follows Next.js' static analyzer
|
|
64
|
+
* and checks the local/original binding name.
|
|
65
|
+
* Handles all three common export forms:
|
|
66
|
+
* export function foo() {}
|
|
67
|
+
* export const foo = ...
|
|
68
|
+
* export { foo }
|
|
69
|
+
*/
|
|
70
|
+
function hasNamedExport(code, name) {
|
|
71
|
+
const program = parseRouteModule(code);
|
|
72
|
+
if (!program) return false;
|
|
73
|
+
return hasNamedExportInProgram(program, name);
|
|
74
|
+
}
|
|
75
|
+
function hasNamedExportInProgram(program, name) {
|
|
76
|
+
for (const node of program.body) {
|
|
77
|
+
if (node.type !== "ExportNamedDeclaration") continue;
|
|
78
|
+
if (declarationHasBindingName(node.declaration, name)) return true;
|
|
79
|
+
for (const specifier of node.specifiers) if (moduleExportNameValue(specifier.local) === name) return true;
|
|
80
|
+
}
|
|
81
|
+
return false;
|
|
82
|
+
}
|
|
83
|
+
function unwrapStaticExpression(expression) {
|
|
84
|
+
let current = expression;
|
|
85
|
+
while (current.type === "ParenthesizedExpression" || current.type === "TSAsExpression" || current.type === "TSSatisfiesExpression" || current.type === "TSTypeAssertion" || current.type === "TSNonNullExpression") current = current.expression;
|
|
86
|
+
return current;
|
|
87
|
+
}
|
|
88
|
+
function findExportedConstInitializer(code, name) {
|
|
89
|
+
const program = parseRouteModule(code);
|
|
90
|
+
if (!program) return null;
|
|
91
|
+
return findExportedConstInitializerInProgram(program, name);
|
|
92
|
+
}
|
|
93
|
+
function findExportedConstInitializerInProgram(program, name) {
|
|
94
|
+
for (const node of program.body) {
|
|
95
|
+
if (node.type !== "ExportNamedDeclaration") continue;
|
|
96
|
+
const declaration = node.declaration;
|
|
97
|
+
if (declaration?.type !== "VariableDeclaration" || declaration.kind !== "const") continue;
|
|
98
|
+
for (const declarator of declaration.declarations) if (bindingName(declarator.id) === name) return declarator.init;
|
|
99
|
+
}
|
|
100
|
+
return null;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Extracts the string value of `export const <name> = "value"`.
|
|
104
|
+
* Handles TypeScript annotations/assertions and no-substitution template literals.
|
|
105
|
+
* Returns null if the export is absent or not a string literal.
|
|
106
|
+
*/
|
|
107
|
+
function extractExportConstString(code, name) {
|
|
108
|
+
return extractStringFromConstInitializer(findExportedConstInitializer(code, name));
|
|
109
|
+
}
|
|
110
|
+
function extractExportConstStringFromProgram(program, name) {
|
|
111
|
+
return extractStringFromConstInitializer(findExportedConstInitializerInProgram(program, name));
|
|
112
|
+
}
|
|
113
|
+
function extractStringFromConstInitializer(initializer) {
|
|
114
|
+
if (initializer === null) return null;
|
|
115
|
+
const expression = unwrapStaticExpression(initializer);
|
|
116
|
+
if (expression.type === "Literal" && typeof expression.value === "string") return expression.value;
|
|
117
|
+
if (expression.type === "TemplateLiteral" && expression.expressions.length === 0) return expression.quasis[0]?.value.cooked ?? expression.quasis[0]?.value.raw ?? null;
|
|
118
|
+
return null;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Extracts the numeric value of `export const <name> = <number|false>`.
|
|
122
|
+
* Supports integers, decimals, negative values, `Infinity`, and `false`.
|
|
123
|
+
* `false` is returned as `Infinity` because `export const revalidate = false`
|
|
124
|
+
* means "cache indefinitely" in Next.js segment config.
|
|
125
|
+
* Handles TypeScript annotations/assertions and JavaScript numeric separators.
|
|
126
|
+
* Returns null if the export is absent or not a number/`false`.
|
|
127
|
+
*/
|
|
128
|
+
function extractExportConstNumber(code, name) {
|
|
129
|
+
return extractNumberFromConstInitializer(findExportedConstInitializer(code, name));
|
|
130
|
+
}
|
|
131
|
+
function extractExportConstNumberFromProgram(program, name) {
|
|
132
|
+
return extractNumberFromConstInitializer(findExportedConstInitializerInProgram(program, name));
|
|
133
|
+
}
|
|
134
|
+
function extractNumberFromConstInitializer(initializer) {
|
|
135
|
+
if (initializer === null) return null;
|
|
136
|
+
const value = extractStaticNumberValue(initializer);
|
|
137
|
+
if (value === null) return null;
|
|
138
|
+
return value === false ? Infinity : value;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Extracts the `revalidate` value from inside a `getStaticProps` return object.
|
|
142
|
+
* Looks for: revalidate: <number> or revalidate: false or revalidate: Infinity
|
|
143
|
+
*
|
|
144
|
+
* Returns:
|
|
145
|
+
* number — a positive revalidation interval (enables ISR)
|
|
146
|
+
* 0 — treat as SSR (revalidate every request)
|
|
147
|
+
* false — fully static (no revalidation)
|
|
148
|
+
* Infinity — fully static (treated same as false by Next.js)
|
|
149
|
+
* null — no `revalidate` key found (fully static)
|
|
150
|
+
*/
|
|
151
|
+
function extractGetStaticPropsRevalidate(code) {
|
|
152
|
+
const program = parseRouteModule(code);
|
|
153
|
+
if (!program) return extractWrappedGetStaticPropsRevalidate(code);
|
|
154
|
+
return extractGetStaticPropsRevalidateFromProgram(program, code);
|
|
155
|
+
}
|
|
156
|
+
function extractGetStaticPropsRevalidateFromProgram(program, fallbackCode) {
|
|
157
|
+
const getStaticProps = findExportedGetStaticProps(program);
|
|
158
|
+
if (getStaticProps === "external") return null;
|
|
159
|
+
if (getStaticProps === null) return extractWrappedGetStaticPropsRevalidate(fallbackCode);
|
|
160
|
+
return extractFunctionRevalidate(getStaticProps);
|
|
161
|
+
}
|
|
162
|
+
function extractStaticNumberValue(expression) {
|
|
163
|
+
const unwrapped = unwrapStaticExpression(expression);
|
|
164
|
+
if (unwrapped.type === "Literal") {
|
|
165
|
+
if (typeof unwrapped.value === "number") return unwrapped.value;
|
|
166
|
+
if (unwrapped.value === false) return false;
|
|
167
|
+
return null;
|
|
168
|
+
}
|
|
169
|
+
if (unwrapped.type === "Identifier" && unwrapped.name === "Infinity") return Infinity;
|
|
170
|
+
if (unwrapped.type === "UnaryExpression") {
|
|
171
|
+
const argument = extractStaticNumberValue(unwrapped.argument);
|
|
172
|
+
if (typeof argument !== "number") return null;
|
|
173
|
+
if (unwrapped.operator === "-") return -argument;
|
|
174
|
+
if (unwrapped.operator === "+") return argument;
|
|
175
|
+
return null;
|
|
176
|
+
}
|
|
177
|
+
return null;
|
|
178
|
+
}
|
|
179
|
+
function findExportedGetStaticProps(program) {
|
|
180
|
+
let hasLocalGetStaticPropsExport = false;
|
|
181
|
+
for (const node of program.body) {
|
|
182
|
+
if (node.type !== "ExportNamedDeclaration") continue;
|
|
183
|
+
const declaration = node.declaration;
|
|
184
|
+
if (declaration?.type === "FunctionDeclaration" && declaration.id?.name === "getStaticProps") return declaration;
|
|
185
|
+
if (declaration?.type === "VariableDeclaration") {
|
|
186
|
+
const direct = findFunctionLikeVariable(declaration.declarations, "getStaticProps");
|
|
187
|
+
if (direct) return direct;
|
|
188
|
+
}
|
|
189
|
+
for (const specifier of node.specifiers) {
|
|
190
|
+
if (moduleExportNameValue(specifier.local) !== "getStaticProps") continue;
|
|
191
|
+
if (node.source !== null) return "external";
|
|
192
|
+
hasLocalGetStaticPropsExport = true;
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
if (!hasLocalGetStaticPropsExport) return null;
|
|
196
|
+
for (const node of program.body) {
|
|
197
|
+
if (node.type === "FunctionDeclaration" && node.id?.name === "getStaticProps") return node;
|
|
198
|
+
if (node.type === "VariableDeclaration") {
|
|
199
|
+
const local = findFunctionLikeVariable(node.declarations, "getStaticProps");
|
|
200
|
+
if (local) return local;
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
return null;
|
|
204
|
+
}
|
|
205
|
+
function findFunctionLikeVariable(declarations, name) {
|
|
206
|
+
for (const declaration of declarations) {
|
|
207
|
+
if (bindingName(declaration.id) !== name || declaration.init === null) continue;
|
|
208
|
+
const initializer = unwrapStaticExpression(declaration.init);
|
|
209
|
+
if (initializer.type === "FunctionExpression" || initializer.type === "ArrowFunctionExpression") return initializer;
|
|
210
|
+
}
|
|
211
|
+
return null;
|
|
212
|
+
}
|
|
213
|
+
function extractWrappedGetStaticPropsRevalidate(code) {
|
|
214
|
+
const program = parseRouteModule(`function __vinextGetStaticProps() {\n${code}\n}`);
|
|
215
|
+
if (!program) return null;
|
|
216
|
+
for (const node of program.body) if (node.type === "FunctionDeclaration" && node.id?.name === "__vinextGetStaticProps") return extractFunctionRevalidate(node);
|
|
217
|
+
return null;
|
|
218
|
+
}
|
|
219
|
+
function extractFunctionRevalidate(fn) {
|
|
220
|
+
if (fn.type === "ArrowFunctionExpression" && fn.body.type !== "BlockStatement") {
|
|
221
|
+
const expression = unwrapStaticExpression(fn.body);
|
|
222
|
+
return expression.type === "ObjectExpression" ? extractObjectRevalidate(expression) : null;
|
|
223
|
+
}
|
|
224
|
+
if (!fn.body || fn.body.type !== "BlockStatement") return null;
|
|
225
|
+
return extractBlockRevalidate(fn.body);
|
|
226
|
+
}
|
|
227
|
+
function extractBlockRevalidate(block) {
|
|
228
|
+
for (const statement of block.body) {
|
|
229
|
+
const result = extractStatementRevalidate(statement);
|
|
230
|
+
if (result !== null) return result;
|
|
231
|
+
}
|
|
232
|
+
return null;
|
|
233
|
+
}
|
|
234
|
+
function extractStatementRevalidate(statement) {
|
|
235
|
+
if (statement.type === "ReturnStatement") {
|
|
236
|
+
if (!statement.argument) return null;
|
|
237
|
+
const argument = unwrapStaticExpression(statement.argument);
|
|
238
|
+
return argument.type === "ObjectExpression" ? extractObjectRevalidate(argument) : null;
|
|
239
|
+
}
|
|
240
|
+
if (statement.type === "BlockStatement") return extractBlockRevalidate(statement);
|
|
241
|
+
if (statement.type === "IfStatement") return extractStatementRevalidate(statement.consequent) ?? (statement.alternate ? extractStatementRevalidate(statement.alternate) : null);
|
|
242
|
+
if (statement.type === "ForStatement" || statement.type === "ForInStatement" || statement.type === "ForOfStatement" || statement.type === "WhileStatement" || statement.type === "DoWhileStatement" || statement.type === "WithStatement" || statement.type === "LabeledStatement") return extractStatementRevalidate(statement.body);
|
|
243
|
+
if (statement.type === "SwitchStatement") {
|
|
244
|
+
for (const switchCase of statement.cases) for (const consequent of switchCase.consequent) {
|
|
245
|
+
const result = extractStatementRevalidate(consequent);
|
|
246
|
+
if (result !== null) return result;
|
|
247
|
+
}
|
|
248
|
+
return null;
|
|
249
|
+
}
|
|
250
|
+
if (statement.type === "TryStatement") return extractBlockRevalidate(statement.block) ?? (statement.handler ? extractBlockRevalidate(statement.handler.body) : null) ?? (statement.finalizer ? extractBlockRevalidate(statement.finalizer) : null);
|
|
251
|
+
return null;
|
|
252
|
+
}
|
|
253
|
+
function extractObjectRevalidate(object) {
|
|
254
|
+
for (const property of object.properties) {
|
|
255
|
+
if (property.type !== "Property" || property.computed || propertyName(property.key) !== "revalidate") continue;
|
|
256
|
+
return extractStaticNumberValue(property.value);
|
|
257
|
+
}
|
|
258
|
+
return null;
|
|
259
|
+
}
|
|
260
|
+
function propertyName(key) {
|
|
261
|
+
if (key.type === "Identifier") return key.name;
|
|
262
|
+
if (key.type === "Literal" && typeof key.value === "string") return key.value;
|
|
263
|
+
return null;
|
|
264
|
+
}
|
|
265
|
+
/**
|
|
266
|
+
* Classifies a layout file by its segment config exports (`dynamic`, `revalidate`).
|
|
267
|
+
*
|
|
268
|
+
* Returns a tagged `LayoutBuildClassification` carrying both the decision and
|
|
269
|
+
* the specific segment-config field that produced it. `{ kind: "absent" }`
|
|
270
|
+
* means no segment config is present and the caller should defer to the next
|
|
271
|
+
* layer (module graph analysis).
|
|
272
|
+
*
|
|
273
|
+
* Unlike page classification, positive `revalidate` values are not meaningful
|
|
274
|
+
* for layout skip decisions — ISR is a page-level concept. Only the extremes
|
|
275
|
+
* (`revalidate = 0` → dynamic, `revalidate = Infinity` → static) are decisive.
|
|
276
|
+
*/
|
|
277
|
+
function classifyLayoutSegmentConfig(code) {
|
|
278
|
+
const program = parseRouteModule(code);
|
|
279
|
+
const dynamicValue = program ? extractExportConstStringFromProgram(program, "dynamic") : null;
|
|
280
|
+
if (dynamicValue === "force-dynamic") return {
|
|
281
|
+
kind: "dynamic",
|
|
282
|
+
reason: {
|
|
283
|
+
layer: "segment-config",
|
|
284
|
+
key: "dynamic",
|
|
285
|
+
value: "force-dynamic"
|
|
286
|
+
}
|
|
287
|
+
};
|
|
288
|
+
if (dynamicValue === "force-static" || dynamicValue === "error") return {
|
|
289
|
+
kind: "static",
|
|
290
|
+
reason: {
|
|
291
|
+
layer: "segment-config",
|
|
292
|
+
key: "dynamic",
|
|
293
|
+
value: dynamicValue
|
|
294
|
+
}
|
|
295
|
+
};
|
|
296
|
+
const revalidateValue = program ? extractExportConstNumberFromProgram(program, "revalidate") : null;
|
|
297
|
+
if (revalidateValue === Infinity) return {
|
|
298
|
+
kind: "static",
|
|
299
|
+
reason: {
|
|
300
|
+
layer: "segment-config",
|
|
301
|
+
key: "revalidate",
|
|
302
|
+
value: Infinity
|
|
303
|
+
}
|
|
304
|
+
};
|
|
305
|
+
if (revalidateValue === 0) return {
|
|
306
|
+
kind: "dynamic",
|
|
307
|
+
reason: {
|
|
308
|
+
layer: "segment-config",
|
|
309
|
+
key: "revalidate",
|
|
310
|
+
value: 0
|
|
311
|
+
}
|
|
312
|
+
};
|
|
313
|
+
return { kind: "absent" };
|
|
314
|
+
}
|
|
315
|
+
/**
|
|
316
|
+
* Classifies a Pages Router page file by reading its source and examining
|
|
317
|
+
* which data-fetching exports it contains.
|
|
318
|
+
*
|
|
319
|
+
* API routes (files under pages/api/) are always `api`.
|
|
320
|
+
*/
|
|
321
|
+
function classifyPagesRoute(filePath) {
|
|
322
|
+
if (filePath.replace(/\\/g, "/").includes("/pages/api/")) return { type: "api" };
|
|
323
|
+
let code;
|
|
324
|
+
try {
|
|
325
|
+
code = fs.readFileSync(filePath, "utf8");
|
|
326
|
+
} catch {
|
|
327
|
+
return { type: "unknown" };
|
|
328
|
+
}
|
|
329
|
+
const program = parseRouteModule(code);
|
|
330
|
+
if (program && hasNamedExportInProgram(program, "getServerSideProps")) return { type: "ssr" };
|
|
331
|
+
if (program && hasNamedExportInProgram(program, "getStaticProps")) {
|
|
332
|
+
const revalidate = extractGetStaticPropsRevalidateFromProgram(program, code);
|
|
333
|
+
if (revalidate === null || revalidate === false || revalidate === Infinity) return { type: "static" };
|
|
334
|
+
if (revalidate === 0) return { type: "ssr" };
|
|
335
|
+
return {
|
|
336
|
+
type: "isr",
|
|
337
|
+
revalidate
|
|
338
|
+
};
|
|
339
|
+
}
|
|
340
|
+
return { type: "static" };
|
|
341
|
+
}
|
|
342
|
+
/**
|
|
343
|
+
* Classifies an App Router route.
|
|
344
|
+
*
|
|
345
|
+
* @param pagePath Absolute path to the page.tsx (null for API-only routes)
|
|
346
|
+
* @param routePath Absolute path to the route.ts handler (null for page routes)
|
|
347
|
+
* @param isDynamic Whether the URL pattern contains dynamic segments
|
|
348
|
+
*/
|
|
349
|
+
function classifyAppRoute(pagePath, routePath, isDynamic) {
|
|
350
|
+
if (routePath !== null && pagePath === null) return { type: "api" };
|
|
351
|
+
const filePath = pagePath ?? routePath;
|
|
352
|
+
if (!filePath) return { type: "unknown" };
|
|
353
|
+
let code;
|
|
354
|
+
try {
|
|
355
|
+
code = fs.readFileSync(filePath, "utf8");
|
|
356
|
+
} catch {
|
|
357
|
+
return { type: "unknown" };
|
|
358
|
+
}
|
|
359
|
+
const program = parseRouteModule(code);
|
|
360
|
+
const dynamicValue = program ? extractExportConstStringFromProgram(program, "dynamic") : null;
|
|
361
|
+
if (dynamicValue === "force-dynamic") return { type: "ssr" };
|
|
362
|
+
if (dynamicValue === "force-static" || dynamicValue === "error") return { type: "static" };
|
|
363
|
+
const revalidateValue = program ? extractExportConstNumberFromProgram(program, "revalidate") : null;
|
|
364
|
+
if (revalidateValue !== null) {
|
|
365
|
+
if (revalidateValue === Infinity) return { type: "static" };
|
|
366
|
+
if (revalidateValue === 0) return { type: "ssr" };
|
|
367
|
+
if (revalidateValue > 0) return {
|
|
368
|
+
type: "isr",
|
|
369
|
+
revalidate: revalidateValue
|
|
370
|
+
};
|
|
371
|
+
}
|
|
372
|
+
if (isDynamic) return { type: "ssr" };
|
|
373
|
+
return { type: "unknown" };
|
|
374
|
+
}
|
|
375
|
+
/**
|
|
376
|
+
* Builds a sorted list of RouteRow objects from the discovered routes.
|
|
377
|
+
* Routes are sorted alphabetically by path, matching filesystem order.
|
|
378
|
+
*
|
|
379
|
+
* When `prerenderResult` is provided, routes that were classified as `unknown`
|
|
380
|
+
* by static analysis but were successfully rendered speculatively are upgraded
|
|
381
|
+
* to `static` (confirmed by execution). The `prerendered` flag is set on those
|
|
382
|
+
* rows so the formatter can add a legend note.
|
|
383
|
+
*/
|
|
384
|
+
function buildReportRows(options) {
|
|
385
|
+
const rows = [];
|
|
386
|
+
const renderedRoutes = /* @__PURE__ */ new Set();
|
|
387
|
+
if (options.prerenderResult) {
|
|
388
|
+
for (const r of options.prerenderResult.routes) if (r.status === "rendered") renderedRoutes.add(r.route);
|
|
389
|
+
}
|
|
390
|
+
for (const route of options.pageRoutes ?? []) {
|
|
391
|
+
const { type, revalidate } = classifyPagesRoute(route.filePath);
|
|
392
|
+
rows.push({
|
|
393
|
+
pattern: route.pattern,
|
|
394
|
+
type,
|
|
395
|
+
revalidate
|
|
396
|
+
});
|
|
397
|
+
}
|
|
398
|
+
for (const route of options.apiRoutes ?? []) rows.push({
|
|
399
|
+
pattern: route.pattern,
|
|
400
|
+
type: "api"
|
|
401
|
+
});
|
|
402
|
+
for (const route of options.appRoutes ?? []) {
|
|
403
|
+
const { type, revalidate } = classifyAppRoute(getAppRouteRenderEntryPath(route), route.routePath, route.isDynamic);
|
|
404
|
+
if (type === "unknown" && renderedRoutes.has(route.pattern)) rows.push({
|
|
405
|
+
pattern: route.pattern,
|
|
406
|
+
type: "static",
|
|
407
|
+
prerendered: true
|
|
408
|
+
});
|
|
409
|
+
else rows.push({
|
|
410
|
+
pattern: route.pattern,
|
|
411
|
+
type,
|
|
412
|
+
revalidate
|
|
413
|
+
});
|
|
414
|
+
}
|
|
415
|
+
rows.sort((a, b) => a.pattern.localeCompare(b.pattern));
|
|
416
|
+
return rows;
|
|
417
|
+
}
|
|
418
|
+
const SYMBOLS = {
|
|
419
|
+
static: "○",
|
|
420
|
+
isr: "◐",
|
|
421
|
+
ssr: "ƒ",
|
|
422
|
+
unknown: "?",
|
|
423
|
+
api: "λ"
|
|
424
|
+
};
|
|
425
|
+
const LABELS = {
|
|
426
|
+
static: "Static",
|
|
427
|
+
isr: "ISR",
|
|
428
|
+
ssr: "Dynamic",
|
|
429
|
+
unknown: "Unknown",
|
|
430
|
+
api: "API"
|
|
431
|
+
};
|
|
432
|
+
/**
|
|
433
|
+
* Formats a list of RouteRows into a Next.js-style build report string.
|
|
434
|
+
*
|
|
435
|
+
* Example output:
|
|
436
|
+
* Route (pages)
|
|
437
|
+
* ┌ ○ /
|
|
438
|
+
* ├ ◐ /blog/:slug (60s)
|
|
439
|
+
* ├ ƒ /dashboard
|
|
440
|
+
* └ λ /api/posts
|
|
441
|
+
*
|
|
442
|
+
* ○ Static ◐ ISR ƒ Dynamic λ API
|
|
443
|
+
*/
|
|
444
|
+
function formatBuildReport(rows, routerLabel = "app") {
|
|
445
|
+
if (rows.length === 0) return "";
|
|
446
|
+
const lines = [];
|
|
447
|
+
lines.push(` Route (${routerLabel})`);
|
|
448
|
+
const maxPatternLen = Math.max(...rows.map((r) => r.pattern.length));
|
|
449
|
+
rows.forEach((row, i) => {
|
|
450
|
+
const isLast = i === rows.length - 1;
|
|
451
|
+
const corner = rows.length === 1 ? "─" : i === 0 ? "┌" : isLast ? "└" : "├";
|
|
452
|
+
const sym = SYMBOLS[row.type];
|
|
453
|
+
const suffix = row.type === "isr" && row.revalidate !== void 0 ? ` (${row.revalidate}s)` : "";
|
|
454
|
+
const padding = " ".repeat(maxPatternLen - row.pattern.length);
|
|
455
|
+
lines.push(` ${corner} ${sym} ${row.pattern}${padding}${suffix}`);
|
|
456
|
+
});
|
|
457
|
+
lines.push("");
|
|
458
|
+
const usedTypes = [...new Set(rows.map((r) => r.type))].sort((a, b) => LABELS[a].localeCompare(LABELS[b]));
|
|
459
|
+
lines.push(" " + usedTypes.map((t) => `${SYMBOLS[t]} ${LABELS[t]}`).join(" "));
|
|
460
|
+
if (usedTypes.includes("unknown")) {
|
|
461
|
+
lines.push("");
|
|
462
|
+
lines.push(" ? Some routes could not be classified. vinext currently uses static analysis");
|
|
463
|
+
lines.push(" and cannot detect dynamic API usage (headers(), cookies(), etc.) at build time.");
|
|
464
|
+
lines.push(" Automatic classification will be improved in a future release.");
|
|
465
|
+
}
|
|
466
|
+
if (rows.some((r) => r.prerendered)) {
|
|
467
|
+
lines.push("");
|
|
468
|
+
lines.push(" ○ Routes marked static were confirmed by speculative prerender (attempted render");
|
|
469
|
+
lines.push(" succeeded without dynamic API usage).");
|
|
470
|
+
}
|
|
471
|
+
return lines.join("\n");
|
|
472
|
+
}
|
|
473
|
+
/**
|
|
474
|
+
* Scans the project at `root`, classifies all routes, and prints the
|
|
475
|
+
* Next.js-style build report to stdout.
|
|
476
|
+
*
|
|
477
|
+
* Called at the end of `vinext build` in cli.ts.
|
|
478
|
+
*/
|
|
479
|
+
async function printBuildReport(options) {
|
|
480
|
+
const { root } = options;
|
|
481
|
+
const appDir = findDir(root, "app", "src/app");
|
|
482
|
+
const pagesDir = findDir(root, "pages", "src/pages");
|
|
483
|
+
if (!appDir && !pagesDir) return;
|
|
484
|
+
if (appDir) {
|
|
485
|
+
const { appRouter } = await import("../routing/app-router.js");
|
|
486
|
+
const rows = buildReportRows({
|
|
487
|
+
appRoutes: await appRouter(appDir, options.pageExtensions),
|
|
488
|
+
prerenderResult: options.prerenderResult
|
|
489
|
+
});
|
|
490
|
+
if (rows.length > 0) console.log("\n" + formatBuildReport(rows, "app"));
|
|
491
|
+
}
|
|
492
|
+
if (pagesDir) {
|
|
493
|
+
const { pagesRouter, apiRouter } = await import("../routing/pages-router.js");
|
|
494
|
+
const [pageRoutes, apiRoutes] = await Promise.all([pagesRouter(pagesDir, options.pageExtensions), apiRouter(pagesDir, options.pageExtensions)]);
|
|
495
|
+
const rows = buildReportRows({
|
|
496
|
+
pageRoutes,
|
|
497
|
+
apiRoutes,
|
|
498
|
+
prerenderResult: options.prerenderResult
|
|
499
|
+
});
|
|
500
|
+
if (rows.length > 0) console.log("\n" + formatBuildReport(rows, "pages"));
|
|
501
|
+
}
|
|
502
|
+
}
|
|
503
|
+
//#endregion
|
|
504
|
+
export { buildReportRows, classifyAppRoute, classifyLayoutSegmentConfig, classifyPagesRoute, extractExportConstNumber, extractExportConstString, extractGetStaticPropsRevalidate, formatBuildReport, getAppRouteRenderEntryPath, hasNamedExport, printBuildReport };
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { ModuleInfoProvider } from "./layout-classification.js";
|
|
2
|
+
import { RouteClassificationManifest } from "./route-classification-manifest.js";
|
|
3
|
+
|
|
4
|
+
//#region src/build/route-classification-injector.d.ts
|
|
5
|
+
/**
|
|
6
|
+
* Build-time route classification injection.
|
|
7
|
+
*
|
|
8
|
+
* Codegen describes route shape by emitting stable `__VINEXT_CLASS` stubs and
|
|
9
|
+
* per-route call sites. This module owns the behavioral side of replacing
|
|
10
|
+
* those stubs with build-time decisions once the final RSC module graph exists.
|
|
11
|
+
*/
|
|
12
|
+
type RouteClassificationChunk = {
|
|
13
|
+
code: string;
|
|
14
|
+
fileName: string;
|
|
15
|
+
};
|
|
16
|
+
type RouteClassificationInjectionPlan = {
|
|
17
|
+
kind: "skip";
|
|
18
|
+
} | {
|
|
19
|
+
code: string;
|
|
20
|
+
fileName: string;
|
|
21
|
+
kind: "patch";
|
|
22
|
+
map: null;
|
|
23
|
+
};
|
|
24
|
+
type PlanRouteClassificationInjectionOptions = {
|
|
25
|
+
canonicalizeLayoutPath?: (path: string) => string;
|
|
26
|
+
chunks: readonly RouteClassificationChunk[];
|
|
27
|
+
dynamicShimPaths: ReadonlySet<string>;
|
|
28
|
+
enableDebugReasons: boolean;
|
|
29
|
+
manifest: RouteClassificationManifest;
|
|
30
|
+
moduleInfo: ModuleInfoProvider;
|
|
31
|
+
};
|
|
32
|
+
declare function planRouteClassificationInjection(options: PlanRouteClassificationInjectionOptions): RouteClassificationInjectionPlan;
|
|
33
|
+
//#endregion
|
|
34
|
+
export { planRouteClassificationInjection };
|