vinext 1.0.0-beta.4 → 1.0.0-beta.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +44 -3
- package/dist/build/client-build-config.d.ts +0 -1
- package/dist/build/css-url-assets.d.ts +0 -1
- package/dist/build/google-fonts/build-url.d.ts +5 -2
- package/dist/build/google-fonts/font-metadata.d.ts +7 -3
- package/dist/build/google-fonts/get-axes.d.ts +0 -1
- package/dist/build/layout-classification.d.ts +7 -4
- package/dist/build/next-client-runtime-manifests.d.ts +0 -1
- package/dist/build/next-client-runtime-manifests.js +2 -19
- package/dist/build/nitro-route-rules.d.ts +0 -1
- package/dist/build/pages-client-assets-module.d.ts +0 -1
- package/dist/build/precompress.d.ts +7 -2
- package/dist/build/precompress.js +41 -7
- package/dist/build/prerender-paths.d.ts +2 -2
- package/dist/build/prerender-paths.js +3 -4
- package/dist/build/prerender-phase.d.ts +15 -0
- package/dist/build/prerender-phase.js +37 -0
- package/dist/build/prerender-server-entry.d.ts +1 -1
- package/dist/build/prerender-server-entry.js +3 -3
- package/dist/build/prerender-server-pool.d.ts +4 -2
- package/dist/build/prerender-server-pool.js +2 -0
- package/dist/build/prerender.d.ts +40 -33
- package/dist/build/prerender.js +99 -18
- package/dist/build/public-dir-conflict.d.ts +14 -0
- package/dist/build/public-dir-conflict.js +25 -0
- package/dist/build/report.d.ts +2 -2
- package/dist/build/route-classification-injector.d.ts +0 -1
- package/dist/build/route-classification-manifest.d.ts +5 -3
- package/dist/build/run-prerender.d.ts +3 -2
- package/dist/build/run-prerender.js +9 -6
- package/dist/build/static-export.d.ts +23 -12
- package/dist/cache/cache-adapters-virtual.d.ts +5 -2
- package/dist/check.js +4 -4
- package/dist/cli-dev-config.d.ts +0 -1
- package/dist/cli.d.ts +1 -1
- package/dist/client/client-rewrite-matcher.d.ts +12 -0
- package/dist/client/client-rewrite-matcher.js +20 -0
- package/dist/client/client-rewrites.d.ts +31 -0
- package/dist/client/client-rewrites.js +41 -0
- package/dist/client/dev-error-overlay.d.ts +0 -1
- package/dist/client/empty-module.d.ts +1 -1
- package/dist/client/index.d.ts +2 -0
- package/dist/client/index.js +2 -0
- package/dist/client/instrumentation-client-state.d.ts +0 -1
- package/dist/client/navigation-runtime.d.ts +6 -1
- package/dist/client/navigation-runtime.js +5 -1
- package/dist/client/pages-router-link-navigation.d.ts +3 -21
- package/dist/client/react-instance-bootstrap.d.ts +1 -0
- package/dist/client/react-instance-bootstrap.js +7 -0
- package/dist/client/react-instance.d.ts +13 -0
- package/dist/client/react-instance.js +20 -0
- package/dist/client/vinext-next-data.d.ts +13 -6
- package/dist/client/window-next.d.ts +5 -2
- package/dist/config/config-matchers.d.ts +3 -5
- package/dist/config/config-matchers.js +7 -6
- package/dist/config/dotenv.d.ts +1 -5
- package/dist/config/next-config.d.ts +113 -54
- package/dist/config/next-config.js +27 -7
- package/dist/config/prerender.d.ts +0 -1
- package/dist/deps/.pnpm/image-size@2.0.2/deps/image-size/dist/index.js +808 -0
- package/dist/entries/app-browser-entry.d.ts +0 -1
- package/dist/entries/app-browser-entry.js +8 -3
- package/dist/entries/app-rsc-entry.d.ts +30 -16
- package/dist/entries/app-rsc-entry.js +48 -10
- package/dist/entries/app-rsc-manifest.d.ts +0 -1
- package/dist/entries/app-rsc-manifest.js +1 -0
- package/dist/entries/pages-client-entry.d.ts +0 -1
- package/dist/entries/pages-client-entry.js +15 -5
- package/dist/entries/pages-server-entry.d.ts +1 -2
- package/dist/entries/pages-server-entry.js +21 -5
- package/dist/image/image-adapters-virtual.d.ts +4 -2
- package/dist/index.d.ts +0 -1
- package/dist/index.js +328 -227
- package/dist/init-cloudflare.d.ts +0 -1
- package/dist/init-platform.d.ts +0 -1
- package/dist/init.d.ts +40 -20
- package/dist/plugins/ast-scope.d.ts +0 -1
- package/dist/plugins/async-hooks-stub.d.ts +0 -1
- package/dist/plugins/client-reference-dedup.d.ts +0 -1
- package/dist/plugins/css-data-url.d.ts +0 -1
- package/dist/plugins/css-module-imports.d.ts +0 -1
- package/dist/plugins/dynamic-preload-metadata.d.ts +0 -1
- package/dist/plugins/extensionless-dynamic-import.d.ts +0 -1
- package/dist/plugins/extensionless-dynamic-import.js +352 -13
- package/dist/plugins/fonts.d.ts +0 -1
- package/dist/plugins/ignore-dynamic-requests.d.ts +0 -1
- package/dist/plugins/ignore-dynamic-requests.js +28 -4
- package/dist/plugins/import-meta-url.d.ts +0 -1
- package/dist/plugins/instrumentation-client.d.ts +0 -1
- package/dist/plugins/middleware-server-only.d.ts +0 -1
- package/dist/plugins/og-asset-ownership.d.ts +0 -1
- package/dist/plugins/og-assets.d.ts +0 -1
- package/dist/plugins/optimize-imports.d.ts +0 -1
- package/dist/plugins/pages-node-externals.d.ts +23 -0
- package/dist/plugins/pages-node-externals.js +206 -0
- package/dist/plugins/remove-console.d.ts +0 -1
- package/dist/plugins/require-context.d.ts +0 -1
- package/dist/plugins/require-context.js +143 -26
- package/dist/plugins/rsc-client-reference-loaders.d.ts +0 -1
- package/dist/plugins/rsc-reference-validation-normalizer.d.ts +0 -1
- package/dist/plugins/sass.d.ts +30 -2
- package/dist/plugins/sass.js +64 -1
- package/dist/plugins/server-externals-manifest.d.ts +0 -1
- package/dist/plugins/strip-server-exports.d.ts +0 -1
- package/dist/plugins/styled-jsx.d.ts +0 -1
- package/dist/plugins/transitive-externals.d.ts +24 -0
- package/dist/plugins/transitive-externals.js +121 -0
- package/dist/plugins/typeof-window.d.ts +11 -1
- package/dist/plugins/typeof-window.js +141 -13
- package/dist/plugins/use-cache-callable.d.ts +12 -0
- package/dist/plugins/use-cache-callable.js +209 -0
- package/dist/plugins/wasm-module-import.d.ts +0 -1
- package/dist/routing/app-route-graph.d.ts +115 -56
- package/dist/routing/app-route-graph.js +2 -1
- package/dist/routing/app-router.d.ts +0 -1
- package/dist/routing/pages-router.d.ts +9 -5
- package/dist/routing/route-matching.d.ts +0 -1
- package/dist/routing/utils.d.ts +1 -23
- package/dist/routing/utils.js +1 -30
- package/dist/server/accept-encoding.d.ts +0 -1
- package/dist/server/api-handler.d.ts +0 -1
- package/dist/server/api-handler.js +1 -1
- package/dist/server/app-bfcache-identity.d.ts +9 -10
- package/dist/server/app-bfcache-identity.js +27 -128
- package/dist/server/app-browser-action-result.d.ts +0 -1
- package/dist/server/app-browser-client-reuse-manifest.d.ts +0 -1
- package/dist/server/app-browser-entry.d.ts +1 -1
- package/dist/server/app-browser-entry.js +46 -30
- package/dist/server/app-browser-history-controller.d.ts +8 -5
- package/dist/server/app-browser-hydration.d.ts +0 -1
- package/dist/server/app-browser-interception-context.d.ts +0 -1
- package/dist/server/app-browser-mpa-navigation.d.ts +0 -1
- package/dist/server/app-browser-navigation-controller.d.ts +2 -5
- package/dist/server/app-browser-popstate.d.ts +0 -1
- package/dist/server/app-browser-prefetch-response.d.ts +17 -1
- package/dist/server/app-browser-prefetch-response.js +23 -1
- package/dist/server/app-browser-server-action-client.d.ts +1 -1
- package/dist/server/app-browser-server-action-client.js +3 -2
- package/dist/server/app-browser-server-action-navigation.d.ts +0 -1
- package/dist/server/app-browser-state.d.ts +4 -3
- package/dist/server/app-browser-state.js +2 -4
- package/dist/server/app-browser-stream.d.ts +0 -1
- package/dist/server/app-browser-visible-commit.d.ts +1 -1
- package/dist/server/app-browser-visible-commit.js +6 -2
- package/dist/server/app-elements-wire.d.ts +16 -13
- package/dist/server/app-elements-wire.js +37 -10
- package/dist/server/app-elements.d.ts +2 -3
- package/dist/server/app-elements.js +2 -2
- package/dist/server/app-fallback-renderer.d.ts +8 -4
- package/dist/server/app-fallback-renderer.js +2 -1
- package/dist/server/app-history-state.d.ts +2 -2
- package/dist/server/app-history-state.js +1 -1
- package/dist/server/app-hook-warning-suppression.d.ts +0 -1
- package/dist/server/app-layout-param-observation.d.ts +0 -1
- package/dist/server/app-layout-param-observation.js +1 -1
- package/dist/server/app-middleware.d.ts +5 -1
- package/dist/server/app-middleware.js +96 -31
- package/dist/server/app-optimistic-routing.d.ts +1 -0
- package/dist/server/app-page-boundary-render.d.ts +8 -4
- package/dist/server/app-page-boundary-render.js +4 -7
- package/dist/server/app-page-cache-finalizer.d.ts +3 -3
- package/dist/server/app-page-cache-finalizer.js +45 -19
- package/dist/server/app-page-cache-render.d.ts +3 -2
- package/dist/server/app-page-cache-render.js +5 -2
- package/dist/server/app-page-cache.d.ts +3 -4
- package/dist/server/app-page-cache.js +33 -15
- package/dist/server/app-page-dispatch.d.ts +11 -5
- package/dist/server/app-page-dispatch.js +11 -6
- package/dist/server/app-page-element-builder.d.ts +61 -19
- package/dist/server/app-page-element-builder.js +113 -43
- package/dist/server/app-page-execution.d.ts +12 -5
- package/dist/server/app-page-execution.js +20 -7
- package/dist/server/app-page-head.d.ts +2 -2
- package/dist/server/app-page-http-access-fallback-metadata.d.ts +2 -2
- package/dist/server/app-page-params.d.ts +0 -1
- package/dist/server/app-page-ppr-runtime.d.ts +0 -1
- package/dist/server/app-page-probe.d.ts +4 -3
- package/dist/server/app-page-probe.js +1 -1
- package/dist/server/app-page-render-identity.d.ts +1 -0
- package/dist/server/app-page-render-observation.d.ts +0 -1
- package/dist/server/app-page-render.d.ts +6 -4
- package/dist/server/app-page-render.js +53 -25
- package/dist/server/app-page-request.d.ts +3 -1
- package/dist/server/app-page-request.js +3 -34
- package/dist/server/app-page-response.d.ts +13 -3
- package/dist/server/app-page-response.js +17 -11
- package/dist/server/app-page-route-wiring.d.ts +27 -5
- package/dist/server/app-page-route-wiring.js +110 -58
- package/dist/server/app-page-search-params-observation.d.ts +0 -1
- package/dist/server/app-page-segment-plan.d.ts +56 -0
- package/dist/server/app-page-segment-plan.js +177 -0
- package/dist/server/app-page-segment-state.d.ts +18 -2
- package/dist/server/app-page-segment-state.js +23 -4
- package/dist/server/app-page-stream.d.ts +31 -10
- package/dist/server/app-page-stream.js +10 -3
- package/dist/server/app-pages-bridge.d.ts +0 -1
- package/dist/server/app-pages-bridge.js +12 -1
- package/dist/server/app-post-middleware-context.d.ts +0 -1
- package/dist/server/app-ppr-fallback-shell-render.d.ts +0 -1
- package/dist/server/app-prerender-endpoints.d.ts +1 -1
- package/dist/server/app-prerender-endpoints.js +12 -0
- package/dist/server/app-prerender-static-params.d.ts +0 -1
- package/dist/server/app-render-dependency.d.ts +11 -4
- package/dist/server/app-render-dependency.js +59 -9
- package/dist/server/app-request-context.d.ts +1 -0
- package/dist/server/app-response-header-provenance.d.ts +13 -0
- package/dist/server/app-response-header-provenance.js +26 -0
- package/dist/server/app-route-handler-cache.d.ts +3 -2
- package/dist/server/app-route-handler-cache.js +7 -3
- package/dist/server/app-route-handler-dispatch.d.ts +0 -1
- package/dist/server/app-route-handler-dispatch.js +4 -2
- package/dist/server/app-route-handler-execution.d.ts +2 -2
- package/dist/server/app-route-handler-execution.js +15 -7
- package/dist/server/app-route-handler-policy.d.ts +1 -1
- package/dist/server/app-route-handler-response.d.ts +3 -2
- package/dist/server/app-route-handler-response.js +15 -5
- package/dist/server/app-route-handler-runtime.d.ts +1 -2
- package/dist/server/app-route-handler-runtime.js +218 -85
- package/dist/server/app-route-module-loader.d.ts +32 -6
- package/dist/server/app-route-module-loader.js +73 -3
- package/dist/server/app-route-request-built-ins.d.ts +16 -0
- package/dist/server/app-route-request-built-ins.js +41 -0
- package/dist/server/app-router-entry.d.ts +0 -1
- package/dist/server/app-router-entry.js +4 -4
- package/dist/server/app-rsc-cache-busting.d.ts +2 -1
- package/dist/server/app-rsc-cache-busting.js +24 -16
- package/dist/server/app-rsc-handler.d.ts +9 -2
- package/dist/server/app-rsc-handler.js +176 -47
- package/dist/server/app-rsc-redirect-flight.d.ts +0 -1
- package/dist/server/app-rsc-request-normalization.d.ts +19 -10
- package/dist/server/app-rsc-response-finalizer.d.ts +7 -2
- package/dist/server/app-rsc-response-finalizer.js +34 -18
- package/dist/server/app-rsc-route-matching.d.ts +6 -1
- package/dist/server/app-rsc-route-matching.js +47 -2
- package/dist/server/app-rsc-state-fingerprint.d.ts +14 -0
- package/dist/server/app-rsc-state-fingerprint.js +13 -0
- package/dist/server/app-segment-config.d.ts +0 -1
- package/dist/server/app-server-action-execution.d.ts +41 -8
- package/dist/server/app-server-action-execution.js +191 -113
- package/dist/server/app-ssr-entry.d.ts +11 -3
- package/dist/server/app-ssr-entry.js +19 -8
- package/dist/server/app-ssr-router-instance.d.ts +0 -1
- package/dist/server/app-ssr-stream.d.ts +13 -2
- package/dist/server/app-ssr-stream.js +30 -5
- package/dist/server/app-static-generation.d.ts +0 -1
- package/dist/server/app-visited-response-cache.d.ts +1 -1
- package/dist/server/before-interactive-head.d.ts +0 -1
- package/dist/server/before-interactive-head.js +2 -0
- package/dist/server/bfcache-identity.d.ts +45 -0
- package/dist/server/bfcache-identity.js +52 -0
- package/dist/server/cache-control.d.ts +11 -7
- package/dist/server/cache-control.js +23 -11
- package/dist/server/cache-proof.d.ts +0 -1
- package/dist/server/client-reuse-manifest.d.ts +0 -1
- package/dist/server/config-headers.d.ts +6 -2
- package/dist/server/config-headers.js +19 -3
- package/dist/server/csp.d.ts +0 -1
- package/dist/server/default-global-error-module.d.ts +0 -1
- package/dist/server/default-global-not-found-module.d.ts +0 -1
- package/dist/server/default-not-found-module.d.ts +0 -1
- package/dist/server/dev-lockfile.d.ts +21 -9
- package/dist/server/dev-module-runner.d.ts +0 -1
- package/dist/server/dev-route-files.d.ts +0 -1
- package/dist/server/dev-server.d.ts +4 -8
- package/dist/server/dev-server.js +54 -105
- package/dist/server/dev-stack-sourcemap.d.ts +0 -1
- package/dist/server/document-initial-head.d.ts +12 -2
- package/dist/server/document-initial-head.js +17 -2
- package/dist/server/file-based-metadata.d.ts +0 -1
- package/dist/server/headers.d.ts +21 -2
- package/dist/server/headers.js +23 -2
- package/dist/server/http-conditional.d.ts +22 -0
- package/dist/server/http-conditional.js +117 -0
- package/dist/server/http-date.d.ts +5 -0
- package/dist/server/http-date.js +73 -0
- package/dist/server/http-error-responses.d.ts +3 -2
- package/dist/server/http-error-responses.js +21 -4
- package/dist/server/http-range.d.ts +25 -0
- package/dist/server/http-range.js +67 -0
- package/dist/server/image-optimization.d.ts +14 -6
- package/dist/server/image-optimization.js +0 -1
- package/dist/server/instrumentation.d.ts +7 -4
- package/dist/server/isr-cache.d.ts +28 -6
- package/dist/server/isr-cache.js +19 -13
- package/dist/server/isr-decision.d.ts +6 -4
- package/dist/server/metadata-route-build-data.d.ts +0 -1
- package/dist/server/metadata-route-build-data.js +1 -1
- package/dist/server/metadata-route-cache-policy.d.ts +6 -0
- package/dist/server/metadata-route-cache-policy.js +6 -0
- package/dist/server/metadata-route-response.d.ts +26 -2
- package/dist/server/metadata-route-response.js +225 -11
- package/dist/server/metadata-routes.d.ts +34 -16
- package/dist/server/metadata-routes.js +1 -1
- package/dist/server/middleware-matcher-pattern.d.ts +0 -1
- package/dist/server/middleware-matcher.d.ts +8 -3
- package/dist/server/middleware-matcher.js +23 -18
- package/dist/server/middleware-response-headers.js +4 -2
- package/dist/server/middleware-runtime.d.ts +6 -1
- package/dist/server/middleware-runtime.js +91 -28
- package/dist/server/middleware.d.ts +0 -1
- package/dist/server/navigation-planner.d.ts +1 -1
- package/dist/server/next-error-digest.d.ts +0 -1
- package/dist/server/pages-api-route.d.ts +0 -1
- package/dist/server/pages-api-route.js +30 -5
- package/dist/server/pages-asset-tags.d.ts +2 -1
- package/dist/server/pages-data-route.d.ts +14 -6
- package/dist/server/pages-data-route.js +19 -10
- package/dist/server/pages-dev-hydration.js +14 -4
- package/dist/server/pages-dev-stylesheets.d.ts +10 -0
- package/dist/server/pages-dev-stylesheets.js +150 -0
- package/dist/server/pages-document-initial-props.d.ts +10 -6
- package/dist/server/pages-get-initial-props.d.ts +2 -2
- package/dist/server/pages-i18n.d.ts +1 -7
- package/dist/server/pages-node-compat.d.ts +11 -2
- package/dist/server/pages-node-compat.js +49 -2
- package/dist/server/pages-page-data.d.ts +21 -9
- package/dist/server/pages-page-data.js +109 -30
- package/dist/server/pages-page-handler.d.ts +72 -33
- package/dist/server/pages-page-handler.js +25 -20
- package/dist/server/pages-page-response.d.ts +7 -13
- package/dist/server/pages-page-response.js +16 -23
- package/dist/server/pages-readiness.d.ts +0 -1
- package/dist/server/pages-request-pipeline.d.ts +20 -6
- package/dist/server/pages-request-pipeline.js +40 -20
- package/dist/server/pages-revalidate.d.ts +0 -1
- package/dist/server/pages-revalidate.js +1 -1
- package/dist/server/pages-router-entry.js +13 -9
- package/dist/server/prerender-cache-life-header.d.ts +11 -0
- package/dist/server/prerender-cache-life-header.js +18 -0
- package/dist/server/prerender-manifest.d.ts +11 -2
- package/dist/server/prerender-manifest.js +4 -1
- package/dist/server/prod-server.d.ts +13 -7
- package/dist/server/prod-server.js +280 -92
- package/dist/server/proxy-trust.d.ts +0 -1
- package/dist/server/request-log.d.ts +7 -11
- package/dist/server/request-pipeline.d.ts +13 -4
- package/dist/server/request-pipeline.js +30 -20
- package/dist/server/revalidation-host.d.ts +0 -1
- package/dist/server/revalidation-host.js +1 -1
- package/dist/server/rsc-completion-metadata.d.ts +15 -0
- package/dist/server/rsc-completion-metadata.js +183 -0
- package/dist/server/seed-cache.d.ts +6 -2
- package/dist/server/seed-cache.js +35 -8
- package/dist/server/skip-cache-proof.d.ts +0 -1
- package/dist/server/static-file-cache.d.ts +23 -9
- package/dist/server/static-file-cache.js +47 -23
- package/dist/server/static-layout-client-reuse-proof.d.ts +0 -1
- package/dist/server/worker-revalidation-context.d.ts +0 -1
- package/dist/server/worker-utils.d.ts +3 -1
- package/dist/server/worker-utils.js +12 -3
- package/dist/shims/app-router-scroll.d.ts +2 -8
- package/dist/shims/app.d.ts +1 -5
- package/dist/shims/before-interactive-context.d.ts +5 -3
- package/dist/shims/cache-callable-runtime.d.ts +11 -0
- package/dist/shims/cache-callable-runtime.js +30 -0
- package/dist/shims/cache-handler.d.ts +6 -1
- package/dist/shims/cache-handler.js +4 -2
- package/dist/shims/cache-request-state.d.ts +15 -1
- package/dist/shims/cache-request-state.js +27 -1
- package/dist/shims/cache-runtime.d.ts +15 -6
- package/dist/shims/cache-runtime.js +129 -29
- package/dist/shims/cache.d.ts +2 -3
- package/dist/shims/cache.js +2 -2
- package/dist/shims/cdn-cache.d.ts +18 -7
- package/dist/shims/cdn-cache.js +4 -2
- package/dist/shims/client-locale.d.ts +1 -6
- package/dist/shims/client-only.d.ts +1 -1
- package/dist/shims/compat-router.d.ts +0 -1
- package/dist/shims/constants.d.ts +1 -1
- package/dist/shims/default-global-error.d.ts +1 -4
- package/dist/shims/default-not-found.d.ts +0 -1
- package/dist/shims/document.d.ts +0 -1
- package/dist/shims/document.js +2 -1
- package/dist/shims/dynamic-preload-chunks.d.ts +0 -1
- package/dist/shims/dynamic.d.ts +0 -1
- package/dist/shims/error-boundary-navigation.d.ts +0 -1
- package/dist/shims/error-boundary.d.ts +7 -32
- package/dist/shims/error.d.ts +1 -6
- package/dist/shims/fetch-cache.js +115 -65
- package/dist/shims/font-google-base.d.ts +0 -1
- package/dist/shims/font-local.d.ts +0 -1
- package/dist/shims/font-local.js +3 -3
- package/dist/shims/form.d.ts +5 -3
- package/dist/shims/head-state.d.ts +0 -1
- package/dist/shims/head.d.ts +17 -5
- package/dist/shims/head.js +70 -8
- package/dist/shims/headers.d.ts +2 -2
- package/dist/shims/headers.js +1 -1
- package/dist/shims/i18n-context.d.ts +0 -1
- package/dist/shims/i18n-state.d.ts +0 -1
- package/dist/shims/image.d.ts +0 -1
- package/dist/shims/image.js +1 -2
- package/dist/shims/internal/als-registry.d.ts +31 -2
- package/dist/shims/internal/als-registry.js +50 -2
- package/dist/shims/internal/app-prefetch-fetch-queue.d.ts +17 -2
- package/dist/shims/internal/app-prefetch-fetch-queue.js +69 -7
- package/dist/shims/internal/app-route-detection.d.ts +0 -1
- package/dist/shims/internal/app-route-prefetch-policy.d.ts +33 -0
- package/dist/shims/internal/app-route-prefetch-policy.js +63 -0
- package/dist/shims/internal/app-router-context.d.ts +0 -1
- package/dist/shims/internal/hybrid-client-route-owner-direct.d.ts +1 -5
- package/dist/shims/internal/hybrid-client-route-owner.d.ts +0 -1
- package/dist/shims/internal/hybrid-client-route-owner.js +6 -8
- package/dist/shims/internal/interpolate-as.d.ts +3 -2
- package/dist/shims/internal/pages-data-target.d.ts +22 -11
- package/dist/shims/internal/pages-data-target.js +19 -6
- package/dist/shims/internal/pages-data-url.d.ts +3 -1
- package/dist/shims/internal/router-context.d.ts +0 -1
- package/dist/shims/internal/work-unit-async-storage.d.ts +4 -3
- package/dist/shims/internal/work-unit-async-storage.js +2 -0
- package/dist/shims/layout-segment-context.d.ts +2 -6
- package/dist/shims/legacy-image.d.ts +0 -1
- package/dist/shims/link.d.ts +29 -23
- package/dist/shims/link.js +59 -150
- package/dist/shims/metadata.d.ts +2 -10
- package/dist/shims/navigation-context-state.d.ts +4 -1
- package/dist/shims/navigation-state.d.ts +1 -0
- package/dist/shims/navigation.d.ts +65 -6
- package/dist/shims/navigation.js +360 -71
- package/dist/shims/navigation.react-server.d.ts +1 -0
- package/dist/shims/og.d.ts +0 -1
- package/dist/shims/request-context.d.ts +8 -4
- package/dist/shims/request-state-types.d.ts +1 -0
- package/dist/shims/root-params.d.ts +3 -1
- package/dist/shims/root-params.js +7 -1
- package/dist/shims/router.d.ts +44 -23
- package/dist/shims/router.js +184 -82
- package/dist/shims/script-nonce-context.d.ts +0 -1
- package/dist/shims/script.d.ts +25 -13
- package/dist/shims/server-only.d.ts +1 -1
- package/dist/shims/server.d.ts +1 -3
- package/dist/shims/server.js +7 -7
- package/dist/shims/slot.d.ts +22 -11
- package/dist/shims/slot.js +99 -19
- package/dist/shims/streamed-icons.d.ts +1 -3
- package/dist/shims/unified-request-context.d.ts +44 -4
- package/dist/shims/unified-request-context.js +56 -2
- package/dist/shims/use-merged-ref.d.ts +0 -1
- package/dist/shims/web-vitals.d.ts +0 -1
- package/dist/typegen.d.ts +1 -2
- package/dist/typegen.js +1 -1
- package/dist/utils/cache-control-metadata.d.ts +13 -1
- package/dist/utils/cache-control-metadata.js +17 -1
- package/dist/utils/client-build-manifest.d.ts +0 -1
- package/dist/utils/domain-locale.d.ts +1 -5
- package/dist/utils/encode-cache-tag.d.ts +1 -1
- package/dist/utils/encode-cache-tag.js +1 -1
- package/dist/utils/html-limited-bots.js +1 -1
- package/dist/utils/middleware-request-headers.d.ts +17 -5
- package/dist/utils/middleware-request-headers.js +32 -23
- package/dist/utils/precompressed-variant.d.ts +9 -0
- package/dist/utils/precompressed-variant.js +15 -0
- package/dist/utils/prerender-output-paths.d.ts +3 -1
- package/dist/utils/prerender-output-paths.js +6 -1
- package/dist/utils/project.d.ts +12 -7
- package/dist/utils/public-file-path.d.ts +5 -0
- package/dist/utils/public-file-path.js +12 -0
- package/dist/utils/public-routes.d.ts +1 -1
- package/dist/utils/public-routes.js +6 -5
- package/package.json +10 -6
package/dist/build/prerender.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import path from "../deps/.pnpm/pathslash@0.1.0/deps/pathslash/dist/index.js";
|
|
2
2
|
import { createValidFileMatcher, findFileWithExtensions } from "../routing/file-matcher.js";
|
|
3
3
|
import { VINEXT_PRERENDER_ROUTE_PARAMS_HEADER, VINEXT_PRERENDER_SECRET_HEADER, VINEXT_PRERENDER_SPECULATIVE_HEADER } from "../utils/protocol-headers.js";
|
|
4
|
-
import { NEXT_CACHE_TAGS_HEADER, VINEXT_PRERENDER_CACHE_LIFE_HEADER } from "../server/headers.js";
|
|
4
|
+
import { NEXT_CACHE_TAGS_HEADER, VINEXT_METADATA_ROUTE_CACHE_HEADER, VINEXT_PRERENDER_CACHE_LIFE_HEADER, VINEXT_PRERENDER_METADATA_ROUTES_PATH } from "../server/headers.js";
|
|
5
5
|
import { classifyAppRoute, classifyPagesRoute, getAppRouteRenderEntryPath } from "./report.js";
|
|
6
|
+
import { resolveClientStaleTimeSeconds } from "../utils/cache-control-metadata.js";
|
|
6
7
|
import { NoOpCacheHandler, getCacheHandler, setCacheHandler } from "../shims/cache-handler.js";
|
|
7
8
|
import { headersContextFromRequest, runWithHeadersContext } from "../shims/headers.js";
|
|
8
9
|
import { _consumeRequestScopedCacheLife } from "../shims/cache-request-state.js";
|
|
@@ -14,9 +15,12 @@ import { navigationRuntimeRscBootstrapExpression } from "../server/app-ssr-strea
|
|
|
14
15
|
import { encodePrerenderRouteParams, serializePrerenderRouteParamsHeader } from "../server/prerender-route-params.js";
|
|
15
16
|
import { readPrerenderSecret } from "./server-manifest.js";
|
|
16
17
|
import { createAppPprFallbackShells, markAppPprDynamicFallbackShellHtml } from "../server/app-ppr-fallback-shell.js";
|
|
17
|
-
import { getOutputPath, getRscOutputPath } from "../utils/prerender-output-paths.js";
|
|
18
|
+
import { getAppRouteOutputPath, getOutputPath, getRscOutputPath } from "../utils/prerender-output-paths.js";
|
|
18
19
|
import { startProdServer } from "../server/prod-server.js";
|
|
19
20
|
import { prerenderPoolAvailable, resolvePrerenderPoolSize, startPrerenderServerPool } from "./prerender-server-pool.js";
|
|
21
|
+
import { enterPrerenderPhase } from "./prerender-phase.js";
|
|
22
|
+
import { buildAppRouteCacheValue } from "../server/app-route-handler-response.js";
|
|
23
|
+
import { isMetadataResponseCacheable } from "../server/metadata-route-cache-policy.js";
|
|
20
24
|
import fs from "node:fs";
|
|
21
25
|
import os from "node:os";
|
|
22
26
|
//#region src/build/prerender.ts
|
|
@@ -264,8 +268,7 @@ async function prerenderPages({ routes, apiRoutes, pagesDir, outDir, config, mod
|
|
|
264
268
|
});
|
|
265
269
|
const previousHandler = getCacheHandler();
|
|
266
270
|
setCacheHandler(new NoOpCacheHandler());
|
|
267
|
-
const
|
|
268
|
-
process.env.VINEXT_PRERENDER = "1";
|
|
271
|
+
const restorePrerenderPhase = enterPrerenderPhase();
|
|
269
272
|
let ownedProdServerHandle = null;
|
|
270
273
|
let renderPool = null;
|
|
271
274
|
try {
|
|
@@ -496,11 +499,13 @@ async function prerenderPages({ routes, apiRoutes, pagesDir, outDir, config, mod
|
|
|
496
499
|
});
|
|
497
500
|
return { routes: results };
|
|
498
501
|
} finally {
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
502
|
+
try {
|
|
503
|
+
if (renderPool) await renderPool.close();
|
|
504
|
+
setCacheHandler(previousHandler);
|
|
505
|
+
if (ownedProdServerHandle) await new Promise((resolve) => ownedProdServerHandle.server.close(() => resolve()));
|
|
506
|
+
} finally {
|
|
507
|
+
restorePrerenderPhase();
|
|
508
|
+
}
|
|
504
509
|
}
|
|
505
510
|
}
|
|
506
511
|
/**
|
|
@@ -529,8 +534,7 @@ async function prerenderApp({ routes, metadataRoutes = [], outDir, config, mode,
|
|
|
529
534
|
fs.mkdirSync(outDir, { recursive: true });
|
|
530
535
|
const previousHandler = getCacheHandler();
|
|
531
536
|
setCacheHandler(new NoOpCacheHandler());
|
|
532
|
-
const
|
|
533
|
-
process.env.VINEXT_PRERENDER = "1";
|
|
537
|
+
const restorePrerenderPhase = enterPrerenderPhase();
|
|
534
538
|
const serverDir = path.dirname(rscBundlePath);
|
|
535
539
|
let rscHandler;
|
|
536
540
|
let staticParamsMap = {};
|
|
@@ -742,14 +746,83 @@ async function prerenderApp({ routes, metadataRoutes = [], outDir, config, mode,
|
|
|
742
746
|
isSpeculative: false
|
|
743
747
|
});
|
|
744
748
|
}
|
|
749
|
+
if (metadataRoutes.length > 0) {
|
|
750
|
+
const response = await fetch(`${baseUrl}${VINEXT_PRERENDER_METADATA_ROUTES_PATH}`, { headers: secretHeaders });
|
|
751
|
+
const text = await response.text();
|
|
752
|
+
if (!response.ok) throw new Error(`[vinext] Failed to enumerate prerenderable metadata routes: ${parsePrerenderEndpointError(text)}`);
|
|
753
|
+
const metadataEntries = JSON.parse(text);
|
|
754
|
+
if (!Array.isArray(metadataEntries)) throw new Error("[vinext] Invalid prerender metadata route response");
|
|
755
|
+
const queuedMetadataPaths = /* @__PURE__ */ new Set();
|
|
756
|
+
for (const metadataEntry of metadataEntries) {
|
|
757
|
+
if (typeof metadataEntry !== "object" || metadataEntry === null || typeof Reflect.get(metadataEntry, "path") !== "string" || typeof Reflect.get(metadataEntry, "routePattern") !== "string" || !Array.isArray(Reflect.get(metadataEntry, "routeSegments"))) continue;
|
|
758
|
+
const { path: metadataPath, routePattern, routeSegments } = metadataEntry;
|
|
759
|
+
if (!metadataPath.startsWith("/") || !routePattern.startsWith("/") || routeSegments.some((segment) => typeof segment !== "string") || queuedMetadataPaths.has(metadataPath)) continue;
|
|
760
|
+
queuedMetadataPaths.add(metadataPath);
|
|
761
|
+
urlsToRender.push({
|
|
762
|
+
kind: "metadata",
|
|
763
|
+
metadataRouteSegments: routeSegments,
|
|
764
|
+
urlPath: metadataPath,
|
|
765
|
+
routePattern,
|
|
766
|
+
prerenderRouteParams: null,
|
|
767
|
+
revalidate: false,
|
|
768
|
+
isSpeculative: false
|
|
769
|
+
});
|
|
770
|
+
}
|
|
771
|
+
}
|
|
745
772
|
/**
|
|
746
773
|
* Render a single URL and return its result.
|
|
747
774
|
* `onProgress` is intentionally not called here; the outer loop calls it
|
|
748
775
|
* exactly once per URL after this function returns, keeping the callback
|
|
749
776
|
* at a single, predictable call site.
|
|
750
777
|
*/
|
|
751
|
-
async function renderUrl({ urlPath, routePattern, prerenderRouteParams, revalidate, isSpeculative, isFallback }) {
|
|
778
|
+
async function renderUrl({ kind, metadataRouteSegments, urlPath, routePattern, prerenderRouteParams, revalidate, isSpeculative, isFallback }) {
|
|
752
779
|
try {
|
|
780
|
+
if (kind === "metadata") {
|
|
781
|
+
const request = new Request(`http://localhost${config.basePath ?? ""}${urlPath}`);
|
|
782
|
+
const response = await runWithHeadersContext(headersContextFromRequest(request), () => rscHandler(request));
|
|
783
|
+
if (!response.ok) {
|
|
784
|
+
await response.body?.cancel();
|
|
785
|
+
return {
|
|
786
|
+
route: routePattern,
|
|
787
|
+
status: "error",
|
|
788
|
+
error: `Metadata route returned ${response.status}`
|
|
789
|
+
};
|
|
790
|
+
}
|
|
791
|
+
const cacheControl = response.headers.get("cache-control") ?? "";
|
|
792
|
+
if (!isMetadataResponseCacheable(response)) {
|
|
793
|
+
await response.body?.cancel();
|
|
794
|
+
return {
|
|
795
|
+
route: routePattern,
|
|
796
|
+
status: "skipped",
|
|
797
|
+
reason: "dynamic"
|
|
798
|
+
};
|
|
799
|
+
}
|
|
800
|
+
const requestCacheLife = readPrerenderCacheLifeHeader(response.headers);
|
|
801
|
+
const collectedTags = readPrerenderCacheTagsHeader(response.headers);
|
|
802
|
+
const cacheValue = await buildAppRouteCacheValue(response);
|
|
803
|
+
cacheValue.headers[VINEXT_METADATA_ROUTE_CACHE_HEADER] = "1";
|
|
804
|
+
const outputPath = getAppRouteOutputPath(urlPath);
|
|
805
|
+
const fullPath = path.join(outDir, outputPath);
|
|
806
|
+
fs.mkdirSync(path.dirname(fullPath), { recursive: true });
|
|
807
|
+
fs.writeFileSync(fullPath, new Uint8Array(cacheValue.body));
|
|
808
|
+
const renderedCacheControl = resolveRenderedCacheControl(requestCacheLife ?? {}, cacheControl, config.expireTime);
|
|
809
|
+
const renderedRevalidate = renderedCacheControl.revalidate ?? false;
|
|
810
|
+
const renderedStale = resolveClientStaleTimeSeconds(requestCacheLife ?? void 0);
|
|
811
|
+
return {
|
|
812
|
+
route: routePattern,
|
|
813
|
+
...urlPath === routePattern ? {} : { path: urlPath },
|
|
814
|
+
status: "rendered",
|
|
815
|
+
outputFiles: [outputPath],
|
|
816
|
+
revalidate: renderedRevalidate,
|
|
817
|
+
...typeof renderedRevalidate === "number" ? { expire: renderedCacheControl.expire } : {},
|
|
818
|
+
...renderedStale === void 0 ? {} : { stale: renderedStale },
|
|
819
|
+
router: "metadata",
|
|
820
|
+
headers: cacheValue.headers,
|
|
821
|
+
responseStatus: cacheValue.status,
|
|
822
|
+
routeSegments: metadataRouteSegments ?? [],
|
|
823
|
+
tags: collectedTags
|
|
824
|
+
};
|
|
825
|
+
}
|
|
753
826
|
const prerenderRouteParamsHeader = serializePrerenderRouteParamsHeader(prerenderRouteParams);
|
|
754
827
|
const htmlHeaders = new Headers();
|
|
755
828
|
if (prerenderRouteParamsHeader !== null) htmlHeaders.set(VINEXT_PRERENDER_ROUTE_PARAMS_HEADER, prerenderRouteParamsHeader);
|
|
@@ -838,12 +911,14 @@ async function prerenderApp({ routes, metadataRoutes = [], outDir, config, mode,
|
|
|
838
911
|
outputFiles.push(rscOutputPath);
|
|
839
912
|
const renderedCacheControl = resolveRenderedCacheControl(htmlRender.requestCacheLife ?? {}, htmlCacheControl, config.expireTime);
|
|
840
913
|
const renderedRevalidate = typeof revalidate === "number" ? renderedCacheControl.revalidate === void 0 ? revalidate : Math.min(revalidate, renderedCacheControl.revalidate) : renderedCacheControl.revalidate ?? revalidate;
|
|
914
|
+
const renderedStale = resolveClientStaleTimeSeconds(htmlRender.requestCacheLife);
|
|
841
915
|
return {
|
|
842
916
|
route: routePattern,
|
|
843
917
|
status: "rendered",
|
|
844
918
|
outputFiles,
|
|
845
919
|
revalidate: renderedRevalidate,
|
|
846
920
|
...typeof renderedRevalidate === "number" ? { expire: renderedCacheControl.expire } : {},
|
|
921
|
+
...renderedStale === void 0 ? {} : { stale: renderedStale },
|
|
847
922
|
router: "app",
|
|
848
923
|
...htmlRender.tags.length > 0 ? { tags: htmlRender.tags } : {},
|
|
849
924
|
...htmlRender.linkHeader ? { headers: { link: htmlRender.linkHeader } } : {},
|
|
@@ -916,11 +991,13 @@ async function prerenderApp({ routes, metadataRoutes = [], outDir, config, mode,
|
|
|
916
991
|
...outputFiles.length > 0 ? { outputFiles } : {}
|
|
917
992
|
};
|
|
918
993
|
} finally {
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
994
|
+
try {
|
|
995
|
+
if (renderPool) await renderPool.close();
|
|
996
|
+
setCacheHandler(previousHandler);
|
|
997
|
+
if (ownedProdServerHandle) await new Promise((resolve) => ownedProdServerHandle.server.close(() => resolve()));
|
|
998
|
+
} finally {
|
|
999
|
+
restorePrerenderPhase();
|
|
1000
|
+
}
|
|
924
1001
|
}
|
|
925
1002
|
}
|
|
926
1003
|
function resolveRenderedCacheControl(requestCacheLife, cacheControl, fallbackExpireSeconds) {
|
|
@@ -944,7 +1021,8 @@ function readPrerenderCacheLifeHeader(headers) {
|
|
|
944
1021
|
const cacheLife = {};
|
|
945
1022
|
if (typeof parsed.revalidate === "number" && Number.isFinite(parsed.revalidate)) cacheLife.revalidate = parsed.revalidate;
|
|
946
1023
|
if (typeof parsed.expire === "number" && Number.isFinite(parsed.expire)) cacheLife.expire = parsed.expire;
|
|
947
|
-
|
|
1024
|
+
if (typeof parsed.stale === "number" && Number.isFinite(parsed.stale) && parsed.stale >= 0) cacheLife.stale = parsed.stale;
|
|
1025
|
+
return cacheLife.revalidate === void 0 && cacheLife.expire === void 0 && cacheLife.stale === void 0 ? null : cacheLife;
|
|
948
1026
|
} catch {
|
|
949
1027
|
return null;
|
|
950
1028
|
}
|
|
@@ -984,9 +1062,12 @@ function writePrerenderIndex(routes, outDir, options) {
|
|
|
984
1062
|
status: r.status,
|
|
985
1063
|
revalidate: r.revalidate,
|
|
986
1064
|
...typeof r.revalidate === "number" ? { expire: r.expire } : {},
|
|
1065
|
+
...typeof r.stale === "number" ? { stale: r.stale } : {},
|
|
987
1066
|
router: r.router,
|
|
988
1067
|
...r.tags && r.tags.length > 0 ? { tags: r.tags } : {},
|
|
1068
|
+
...r.routeSegments ? { routeSegments: r.routeSegments } : {},
|
|
989
1069
|
...r.headers ? { headers: r.headers } : {},
|
|
1070
|
+
...typeof r.responseStatus === "number" ? { responseStatus: r.responseStatus } : {},
|
|
990
1071
|
...r.path ? { path: r.path } : {},
|
|
991
1072
|
...r.fallback ? { fallback: true } : {}
|
|
992
1073
|
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
//#region src/build/public-dir-conflict.d.ts
|
|
2
|
+
type PublicDirConflictOptions = {
|
|
3
|
+
root: string;
|
|
4
|
+
publicDir: string | null;
|
|
5
|
+
assetsDir: string;
|
|
6
|
+
};
|
|
7
|
+
type PublicNextRequestConflictOptions = Pick<PublicDirConflictOptions, "root" | "publicDir"> & {
|
|
8
|
+
basePath: string;
|
|
9
|
+
requestUrl: string;
|
|
10
|
+
};
|
|
11
|
+
declare function assertNoPublicNextRequestConflict({ root, publicDir, basePath, requestUrl }: PublicNextRequestConflictOptions): void;
|
|
12
|
+
declare function assertNoPublicDirAssetConflict({ root, publicDir, assetsDir }: PublicDirConflictOptions): void;
|
|
13
|
+
//#endregion
|
|
14
|
+
export { PublicDirConflictOptions, PublicNextRequestConflictOptions, assertNoPublicDirAssetConflict, assertNoPublicNextRequestConflict };
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import path from "../deps/.pnpm/pathslash@0.1.0/deps/pathslash/dist/index.js";
|
|
2
|
+
import { existsSync } from "node:fs";
|
|
3
|
+
//#region src/build/public-dir-conflict.ts
|
|
4
|
+
const PUBLIC_NEXT_CONFLICT_ERROR = "You can not have a '_next' folder inside of your public folder. This conflicts with the internal '/_next' route. https://nextjs.org/docs/messages/public-next-folder-conflict";
|
|
5
|
+
function assertNoPublicNextDir(root, publicDir) {
|
|
6
|
+
if (!publicDir) return;
|
|
7
|
+
if (existsSync(path.join(path.resolve(root, publicDir), "_next"))) throw new Error(PUBLIC_NEXT_CONFLICT_ERROR);
|
|
8
|
+
}
|
|
9
|
+
function assertNoPublicNextRequestConflict({ root, publicDir, basePath, requestUrl }) {
|
|
10
|
+
const internalOrigin = "http://vinext.invalid";
|
|
11
|
+
const parseTarget = requestUrl.startsWith("/") ? internalOrigin + requestUrl : requestUrl;
|
|
12
|
+
let pathname = new URL(parseTarget, internalOrigin).pathname;
|
|
13
|
+
if (basePath && (pathname === basePath || pathname.startsWith(basePath + "/"))) pathname = pathname.slice(basePath.length) || "/";
|
|
14
|
+
if (pathname.startsWith("/_next")) assertNoPublicNextDir(root, publicDir);
|
|
15
|
+
}
|
|
16
|
+
function assertNoPublicDirAssetConflict({ root, publicDir, assetsDir }) {
|
|
17
|
+
assertNoPublicNextDir(root, publicDir);
|
|
18
|
+
if (!publicDir || !assetsDir) return;
|
|
19
|
+
const resolvedPublicDir = path.resolve(root, publicDir);
|
|
20
|
+
const publicAssetsDir = path.resolve(resolvedPublicDir, assetsDir);
|
|
21
|
+
const relativeAssetsDir = path.relative(resolvedPublicDir, publicAssetsDir);
|
|
22
|
+
if (relativeAssetsDir !== "" && !relativeAssetsDir.startsWith("../") && !path.isAbsolute(relativeAssetsDir) && existsSync(publicAssetsDir)) throw new Error(`[vinext] The public directory contains a path reserved for build assets: ${relativeAssetsDir}`);
|
|
23
|
+
}
|
|
24
|
+
//#endregion
|
|
25
|
+
export { assertNoPublicDirAssetConflict, assertNoPublicNextRequestConflict };
|
package/dist/build/report.d.ts
CHANGED
|
@@ -2,12 +2,12 @@ import { LayoutBuildClassification } from "./layout-classification-types.js";
|
|
|
2
2
|
import { Route } from "../routing/pages-router.js";
|
|
3
3
|
import { AppRoute } from "../routing/app-route-graph.js";
|
|
4
4
|
import { PrerenderResult } from "./prerender.js";
|
|
5
|
-
|
|
6
5
|
//#region src/build/report.d.ts
|
|
7
6
|
type RouteType = "static" | "isr" | "ssr" | "unknown" | "api";
|
|
8
7
|
type RouteRow = {
|
|
9
8
|
pattern: string;
|
|
10
|
-
type: RouteType;
|
|
9
|
+
type: RouteType;
|
|
10
|
+
/** Only set for `isr` routes. */
|
|
11
11
|
revalidate?: number;
|
|
12
12
|
/**
|
|
13
13
|
* True when the route was classified as `static` by speculative prerender
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import { ClassificationReason, ModuleGraphStaticReason } from "./layout-classification-types.js";
|
|
2
2
|
import { AppRoute } from "../routing/app-route-graph.js";
|
|
3
|
-
|
|
4
3
|
//#region src/build/route-classification-manifest.d.ts
|
|
5
4
|
type Layer1Class = "static" | "dynamic";
|
|
6
5
|
type RouteManifestEntry = {
|
|
7
|
-
/** Route pattern for diagnostics (e.g. "/blog/:slug"). */
|
|
8
|
-
|
|
6
|
+
/** Route pattern for diagnostics (e.g. "/blog/:slug"). */
|
|
7
|
+
pattern: string;
|
|
8
|
+
/** Absolute file paths for each layout, ordered root → leaf. */
|
|
9
|
+
layoutPaths: string[];
|
|
10
|
+
/** Layer 1 (segment config) results keyed by numeric layout index. */
|
|
9
11
|
layer1: Map<number, Layer1Class>;
|
|
10
12
|
/**
|
|
11
13
|
* Structured reasons for every Layer 1 decision, keyed by the same layout
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { ResolvedNextConfig } from "../config/next-config.js";
|
|
2
2
|
import { PrerenderResult, PrerenderRouteResult } from "./prerender.js";
|
|
3
|
-
|
|
4
3
|
//#region src/build/run-prerender.d.ts
|
|
5
4
|
type RunPrerenderOptions = {
|
|
6
|
-
/** Project root directory. */
|
|
5
|
+
/** Project root directory. */
|
|
6
|
+
root: string;
|
|
7
|
+
/** Fully resolved Next.js config. Loaded from disk when omitted. */
|
|
7
8
|
nextConfig?: ResolvedNextConfig;
|
|
8
9
|
/**
|
|
9
10
|
* Override the path to the Pages Router server bundle.
|
|
@@ -3,9 +3,11 @@ import { findDir } from "../utils/project.js";
|
|
|
3
3
|
import { apiRouter, pagesRouter } from "../routing/pages-router.js";
|
|
4
4
|
import { appRouter } from "../routing/app-router.js";
|
|
5
5
|
import { scanMetadataFiles } from "../server/metadata-routes.js";
|
|
6
|
+
import { PHASE_PRODUCTION_BUILD } from "../shims/constants.js";
|
|
6
7
|
import { loadNextConfig, resolveNextConfig } from "../config/next-config.js";
|
|
7
8
|
import { readPrerenderSecret } from "./server-manifest.js";
|
|
8
9
|
import { rememberCurrentServerEntryImportMtime, startProdServer } from "../server/prod-server.js";
|
|
10
|
+
import { enterPrerenderPhase } from "./prerender-phase.js";
|
|
9
11
|
import { prerenderApp, prerenderPages, writePrerenderIndex } from "./prerender.js";
|
|
10
12
|
import { injectPregeneratedConcretePaths } from "./inject-pregenerated-paths.js";
|
|
11
13
|
import fs from "node:fs";
|
|
@@ -104,12 +106,10 @@ async function runPrerender(options) {
|
|
|
104
106
|
const appDir = findDir(root, "app", "src/app");
|
|
105
107
|
const pagesDir = findDir(root, "pages", "src/pages");
|
|
106
108
|
if (!appDir && !pagesDir) return null;
|
|
107
|
-
const previousPrerenderFlag = process.env.VINEXT_PRERENDER;
|
|
108
|
-
process.env.VINEXT_PRERENDER = "1";
|
|
109
109
|
const manifestDir = path.join(root, "dist", "server");
|
|
110
110
|
const rscBundlePath = options.rscBundlePath ?? path.join(root, "dist", "server", "index.js");
|
|
111
111
|
const serverDir = path.dirname(rscBundlePath);
|
|
112
|
-
const config = options.nextConfig ? { ...options.nextConfig } : { ...await resolveNextConfig(await loadNextConfig(root), root) };
|
|
112
|
+
const config = options.nextConfig ? { ...options.nextConfig } : { ...await resolveNextConfig(await loadNextConfig(root, PHASE_PRODUCTION_BUILD), root) };
|
|
113
113
|
const builtBuildId = readBuiltBuildId(serverDir);
|
|
114
114
|
if (builtBuildId) config.buildId = builtBuildId;
|
|
115
115
|
const mode = config.output === "export" ? "export" : "default";
|
|
@@ -121,6 +121,7 @@ async function runPrerender(options) {
|
|
|
121
121
|
const outDir = mode === "export" ? path.join(root, "dist", "client") : path.join(root, "dist", "server", "prerendered-routes");
|
|
122
122
|
let sharedProdServer = null;
|
|
123
123
|
let sharedPrerenderSecret;
|
|
124
|
+
const restorePrerenderPhase = enterPrerenderPhase();
|
|
124
125
|
try {
|
|
125
126
|
if (appDir && pagesDir) {
|
|
126
127
|
sharedProdServer = await startProdServer({
|
|
@@ -187,9 +188,11 @@ async function runPrerender(options) {
|
|
|
187
188
|
if (result.outputFiles) allOutputFiles.push(...result.outputFiles);
|
|
188
189
|
}
|
|
189
190
|
} finally {
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
191
|
+
try {
|
|
192
|
+
if (sharedProdServer) await new Promise((resolve) => sharedProdServer.server.close(() => resolve()));
|
|
193
|
+
} finally {
|
|
194
|
+
restorePrerenderPhase();
|
|
195
|
+
}
|
|
193
196
|
}
|
|
194
197
|
if (allRoutes.length === 0) {
|
|
195
198
|
progress.finish(0, 0, 0);
|
|
@@ -1,24 +1,32 @@
|
|
|
1
1
|
import { ResolvedNextConfig } from "../config/next-config.js";
|
|
2
2
|
import { Route } from "../routing/pages-router.js";
|
|
3
3
|
import { AppRoute } from "../routing/app-route-graph.js";
|
|
4
|
-
|
|
5
4
|
//#region src/build/static-export.d.ts
|
|
6
5
|
type StaticExportOptions = {
|
|
7
6
|
/**
|
|
8
7
|
* Absolute path to the pre-built Pages Router server bundle
|
|
9
8
|
* (e.g. `dist/server/entry.js`).
|
|
10
9
|
*/
|
|
11
|
-
pagesBundlePath: string;
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
10
|
+
pagesBundlePath: string;
|
|
11
|
+
/** Discovered page routes (excludes API routes) */
|
|
12
|
+
routes: Route[];
|
|
13
|
+
/** Discovered API routes */
|
|
14
|
+
apiRoutes: Route[];
|
|
15
|
+
/** Pages directory path */
|
|
16
|
+
pagesDir: string;
|
|
17
|
+
/** Output directory for static files */
|
|
18
|
+
outDir: string;
|
|
19
|
+
/** Resolved next.config.js */
|
|
16
20
|
config: ResolvedNextConfig;
|
|
17
21
|
};
|
|
18
22
|
type StaticExportResult = {
|
|
19
|
-
/** Number of HTML files generated */
|
|
20
|
-
|
|
21
|
-
|
|
23
|
+
/** Number of HTML files generated */
|
|
24
|
+
pageCount: number;
|
|
25
|
+
/** Generated file paths (relative to outDir) */
|
|
26
|
+
files: string[];
|
|
27
|
+
/** Warnings encountered */
|
|
28
|
+
warnings: string[];
|
|
29
|
+
/** Errors encountered (non-fatal, specific pages) */
|
|
22
30
|
errors: Array<{
|
|
23
31
|
route: string;
|
|
24
32
|
error: string;
|
|
@@ -31,7 +39,8 @@ type StaticExportResult = {
|
|
|
31
39
|
*/
|
|
32
40
|
declare function staticExportPages(options: StaticExportOptions): Promise<StaticExportResult>;
|
|
33
41
|
type AppStaticExportOptions = {
|
|
34
|
-
/** Discovered app routes */
|
|
42
|
+
/** Discovered app routes */
|
|
43
|
+
routes: AppRoute[];
|
|
35
44
|
/**
|
|
36
45
|
* App directory path. When provided, static export scans it for file-based
|
|
37
46
|
* metadata assets such as icon.png and sitemap.xml.
|
|
@@ -41,8 +50,10 @@ type AppStaticExportOptions = {
|
|
|
41
50
|
* Absolute path to the pre-built RSC handler bundle
|
|
42
51
|
* (e.g. `dist/server/index.js`).
|
|
43
52
|
*/
|
|
44
|
-
rscBundlePath: string;
|
|
45
|
-
|
|
53
|
+
rscBundlePath: string;
|
|
54
|
+
/** Output directory */
|
|
55
|
+
outDir: string;
|
|
56
|
+
/** Resolved next.config.js */
|
|
46
57
|
config: ResolvedNextConfig;
|
|
47
58
|
};
|
|
48
59
|
/**
|
|
@@ -11,7 +11,8 @@ type CacheAdapterDescriptor<O extends Record<string, unknown> = Record<string, u
|
|
|
11
11
|
* Module specifier (or absolute path, e.g. from `require.resolve(...)`) whose
|
|
12
12
|
* default export is a cache adapter factory.
|
|
13
13
|
*/
|
|
14
|
-
adapter: string;
|
|
14
|
+
adapter: string;
|
|
15
|
+
/** JSON-serializable options forwarded to the factory at runtime. */
|
|
15
16
|
options?: O;
|
|
16
17
|
};
|
|
17
18
|
/**
|
|
@@ -20,7 +21,9 @@ type CacheAdapterDescriptor<O extends Record<string, unknown> = Record<string, u
|
|
|
20
21
|
* from a worker entry.
|
|
21
22
|
*/
|
|
22
23
|
type VinextCacheConfig = {
|
|
23
|
-
/** Page-level ISR serving strategy (CDN cache adapter). */
|
|
24
|
+
/** Page-level ISR serving strategy (CDN cache adapter). */
|
|
25
|
+
cdn?: CacheAdapterDescriptor;
|
|
26
|
+
/** Data cache (fetch / `"use cache"` / `unstable_cache`) handler. */
|
|
24
27
|
data?: CacheAdapterDescriptor;
|
|
25
28
|
};
|
|
26
29
|
/** Public virtual module id imported by the server entries. */
|
package/dist/check.js
CHANGED
|
@@ -295,12 +295,12 @@ const CONFIG_SUPPORT = {
|
|
|
295
295
|
detail: "not recognized; instrumentation files are enabled automatically"
|
|
296
296
|
},
|
|
297
297
|
skipMiddlewareUrlNormalize: {
|
|
298
|
-
status: "
|
|
299
|
-
detail: "
|
|
298
|
+
status: "partial",
|
|
299
|
+
detail: "preserves raw Pages Router _next/data URLs passed to middleware"
|
|
300
300
|
},
|
|
301
301
|
skipProxyUrlNormalize: {
|
|
302
|
-
status: "
|
|
303
|
-
detail: "
|
|
302
|
+
status: "partial",
|
|
303
|
+
detail: "preserves raw Pages Router _next/data URLs passed to proxy"
|
|
304
304
|
},
|
|
305
305
|
"i18n.domains": {
|
|
306
306
|
status: "partial",
|
package/dist/cli-dev-config.d.ts
CHANGED
package/dist/cli.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export {}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { RequestContext } from "../config/request-context.js";
|
|
2
|
+
import { BasePathMatchState } from "../config/config-matchers.js";
|
|
3
|
+
import { ClientRewrite } from "./client-rewrites.js";
|
|
4
|
+
//#region src/client/client-rewrite-matcher.d.ts
|
|
5
|
+
declare function matchClientRewrite(pathname: string, rewrite: ClientRewrite, context: RequestContext, basePathState: BasePathMatchState): {
|
|
6
|
+
kind: "rewrite";
|
|
7
|
+
destination: string;
|
|
8
|
+
} | {
|
|
9
|
+
kind: "server";
|
|
10
|
+
} | null;
|
|
11
|
+
//#endregion
|
|
12
|
+
export { matchClientRewrite };
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { isExternalUrl } from "../utils/external-url.js";
|
|
2
|
+
import { matchRewrite } from "../config/config-matchers.js";
|
|
3
|
+
//#region src/client/client-rewrite-matcher.ts
|
|
4
|
+
function matchClientRewrite(pathname, rewrite, context, basePathState) {
|
|
5
|
+
const destination = matchRewrite(pathname, [{
|
|
6
|
+
source: rewrite.source,
|
|
7
|
+
destination: rewrite.destination ?? "/",
|
|
8
|
+
has: rewrite.has,
|
|
9
|
+
locale: rewrite.locale,
|
|
10
|
+
basePath: rewrite.basePath
|
|
11
|
+
}], context, basePathState);
|
|
12
|
+
if (destination === null) return null;
|
|
13
|
+
if (rewrite.requiresServerEvaluation || isExternalUrl(destination)) return { kind: "server" };
|
|
14
|
+
return {
|
|
15
|
+
kind: "rewrite",
|
|
16
|
+
destination
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
//#endregion
|
|
20
|
+
export { matchClientRewrite };
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { HasCondition, NextRewrite, ResolvedNextConfig } from "../config/next-config.js";
|
|
2
|
+
//#region src/client/client-rewrites.d.ts
|
|
3
|
+
type ClientHasCondition = Omit<HasCondition, "type"> & {
|
|
4
|
+
type: "host" | "query";
|
|
5
|
+
};
|
|
6
|
+
type ClientRewriteFields = Pick<NextRewrite, "basePath" | "locale" | "source"> & {
|
|
7
|
+
has?: ClientHasCondition[];
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* Rewrite data that is safe to publish in a browser bundle.
|
|
11
|
+
*
|
|
12
|
+
* Rules that require server-only data deliberately omit both the destination
|
|
13
|
+
* and the data that made server evaluation necessary. The client can still
|
|
14
|
+
* use browser-authoritative conditions as a prefilter before handing the
|
|
15
|
+
* navigation to the server.
|
|
16
|
+
*/
|
|
17
|
+
type ClientRewrite = (ClientRewriteFields & {
|
|
18
|
+
destination: string;
|
|
19
|
+
requiresServerEvaluation?: never;
|
|
20
|
+
}) | (ClientRewriteFields & {
|
|
21
|
+
destination?: never;
|
|
22
|
+
requiresServerEvaluation: true;
|
|
23
|
+
});
|
|
24
|
+
type ClientRewrites = {
|
|
25
|
+
afterFiles: ClientRewrite[];
|
|
26
|
+
beforeFiles: ClientRewrite[];
|
|
27
|
+
fallback: ClientRewrite[];
|
|
28
|
+
};
|
|
29
|
+
declare function toClientRewrites(rewrites: ResolvedNextConfig["rewrites"]): ClientRewrites;
|
|
30
|
+
//#endregion
|
|
31
|
+
export { ClientRewrite, ClientRewrites, toClientRewrites };
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { isExternalUrl } from "../utils/external-url.js";
|
|
2
|
+
//#region src/client/client-rewrites.ts
|
|
3
|
+
function isClientHasCondition(condition) {
|
|
4
|
+
switch (condition.type) {
|
|
5
|
+
case "host":
|
|
6
|
+
case "query": return true;
|
|
7
|
+
case "cookie":
|
|
8
|
+
case "header": return false;
|
|
9
|
+
default: return false;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
function toClientRewrite(rewrite) {
|
|
13
|
+
const clientHas = rewrite.has?.filter(isClientHasCondition);
|
|
14
|
+
const hasServerOnlyCondition = rewrite.has?.some((condition) => !isClientHasCondition(condition)) ?? false;
|
|
15
|
+
const common = {
|
|
16
|
+
source: rewrite.source,
|
|
17
|
+
has: clientHas?.length ? clientHas : void 0,
|
|
18
|
+
locale: rewrite.locale,
|
|
19
|
+
basePath: rewrite.basePath
|
|
20
|
+
};
|
|
21
|
+
if (isExternalUrl(rewrite.destination) || (rewrite.missing?.length ?? 0) > 0 || hasServerOnlyCondition) return {
|
|
22
|
+
...common,
|
|
23
|
+
requiresServerEvaluation: true
|
|
24
|
+
};
|
|
25
|
+
return {
|
|
26
|
+
source: rewrite.source,
|
|
27
|
+
destination: rewrite.destination,
|
|
28
|
+
has: common.has,
|
|
29
|
+
locale: rewrite.locale,
|
|
30
|
+
basePath: rewrite.basePath
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
function toClientRewrites(rewrites) {
|
|
34
|
+
return {
|
|
35
|
+
beforeFiles: rewrites.beforeFiles.map(toClientRewrite),
|
|
36
|
+
afterFiles: rewrites.afterFiles.map(toClientRewrite),
|
|
37
|
+
fallback: rewrites.fallback.map(toClientRewrite)
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
//#endregion
|
|
41
|
+
export { toClientRewrites };
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { ReportedError, dismissOverlay } from "./dev-error-overlay-store.js";
|
|
2
|
-
|
|
3
2
|
//#region src/client/dev-error-overlay.d.ts
|
|
4
3
|
declare const DEV_ERROR_OVERLAY_HOST_ID = "__vinext_dev_error_overlay_root";
|
|
5
4
|
declare const DEV_ERROR_OVERLAY_MOUNT_ID = "__vinext_dev_error_overlay_mount";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export {}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { ClientInstrumentationHooks } from "./instrumentation-client.js";
|
|
2
|
-
|
|
3
2
|
//#region src/client/instrumentation-client-state.d.ts
|
|
4
3
|
declare function normalizeClientInstrumentationHooks(hooks: ClientInstrumentationHooks): ClientInstrumentationHooks | null;
|
|
5
4
|
declare function setClientInstrumentationHooks(hooks: ClientInstrumentationHooks | null): ClientInstrumentationHooks | null;
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { RouteManifest } from "../routing/app-route-graph.js";
|
|
2
2
|
import { AppRouterScrollIntent } from "../shims/app-router-scroll-state.js";
|
|
3
|
-
|
|
4
3
|
//#region src/client/navigation-runtime.d.ts
|
|
5
4
|
type NavigationRuntimeSnapshot = {
|
|
6
5
|
pathname: string;
|
|
@@ -14,6 +13,12 @@ type NavigationRuntimeRscBootstrap = {
|
|
|
14
13
|
nav?: NavigationRuntimeSnapshot;
|
|
15
14
|
params?: Record<string, string | string[]>;
|
|
16
15
|
rsc: NavigationRuntimeRscChunk[];
|
|
16
|
+
/**
|
|
17
|
+
* Client reuse bound in seconds resolved from the initial render's completed
|
|
18
|
+
* `cacheLife` — the done-script sibling of `dynamicStaleTimeSeconds`, which
|
|
19
|
+
* carries the `experimental.staleTimes` config value instead.
|
|
20
|
+
*/
|
|
21
|
+
staleTimeSeconds?: number;
|
|
17
22
|
};
|
|
18
23
|
type NavigationRuntimeKind = "navigate" | "traverse" | "refresh";
|
|
19
24
|
type NavigationRuntimeHistoryUpdateMode = "push" | "replace";
|
|
@@ -55,7 +55,11 @@ function isNavigationRuntimeRscBootstrap(value) {
|
|
|
55
55
|
const nav = Reflect.get(value, "nav");
|
|
56
56
|
const params = Reflect.get(value, "params");
|
|
57
57
|
const rsc = Reflect.get(value, "rsc");
|
|
58
|
-
|
|
58
|
+
const staleTimeSeconds = Reflect.get(value, "staleTimeSeconds");
|
|
59
|
+
return (done === void 0 || typeof done === "boolean") && isOptionalStaleTimeSeconds(dynamicStaleTimeSeconds) && (initialCacheKind === void 0 || initialCacheKind === "dynamic" || initialCacheKind === "static") && (nav === void 0 || isNavigationRuntimeSnapshot(nav)) && (params === void 0 || isNavigationRuntimeParams(params)) && Array.isArray(rsc) && rsc.every(isNavigationRuntimeRscChunk) && isOptionalStaleTimeSeconds(staleTimeSeconds);
|
|
60
|
+
}
|
|
61
|
+
function isOptionalStaleTimeSeconds(value) {
|
|
62
|
+
return value === void 0 || typeof value === "number" && Number.isFinite(value) && value >= 0;
|
|
59
63
|
}
|
|
60
64
|
function isReadonlyStringArray(value) {
|
|
61
65
|
return Array.isArray(value) && value.every((entry) => typeof entry === "string");
|