vinext 1.0.0-beta.9 → 1.0.1
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 +150 -92
- package/THIRD_PARTY_LICENSES.md +51 -0
- package/dist/_virtual/_rolldown/runtime.js +25 -0
- package/dist/build/action-owner-manifest.d.ts +8 -9
- package/dist/build/action-owner-manifest.js +23 -5
- package/dist/build/assets-ignore.d.ts +3 -4
- package/dist/build/clean-output.d.ts +2 -3
- package/dist/build/client-build-config.d.ts +40 -12
- package/dist/build/client-build-config.js +76 -6
- package/dist/build/css-url-assets.d.ts +4 -5
- package/dist/build/css-url-assets.js +5 -2
- package/dist/build/google-fonts/build-url.d.ts +3 -4
- package/dist/build/google-fonts/fallback-metrics.d.ts +3 -4
- package/dist/build/google-fonts/find-font-files-in-css.d.ts +2 -3
- package/dist/build/google-fonts/font-metadata.d.ts +2 -3
- package/dist/build/google-fonts/get-axes.d.ts +2 -3
- package/dist/build/google-fonts/sort-variants.d.ts +2 -3
- package/dist/build/google-fonts/validate.d.ts +2 -3
- package/dist/build/google-fonts/validate.js +8 -4
- package/dist/build/inject-pregenerated-paths.d.ts +2 -3
- package/dist/build/inject-pregenerated-paths.js +16 -14
- package/dist/build/inline-css.d.ts +3 -4
- package/dist/build/layout-classification-types.d.ts +4 -5
- package/dist/build/layout-classification.d.ts +7 -8
- package/dist/build/lifecycle.d.ts +42 -0
- package/dist/build/lifecycle.js +253 -0
- package/dist/build/module-dependency-cache.d.ts +2 -3
- package/dist/build/next-client-runtime-manifests.d.ts +4 -5
- package/dist/build/nitro-route-rules.d.ts +6 -7
- package/dist/build/nitro-route-rules.js +1 -1
- package/dist/build/pages-client-assets-module.d.ts +4 -8
- package/dist/build/pages-client-assets-module.js +7 -14
- package/dist/build/precompress.d.ts +2 -3
- package/dist/build/precompress.js +1 -1
- package/dist/build/prerender-cloudflare-loader.d.ts +4 -0
- package/dist/build/prerender-cloudflare-loader.js +49 -0
- package/dist/build/prerender-paths.d.ts +36 -11
- package/dist/build/prerender-paths.js +274 -102
- package/dist/build/prerender-phase.d.ts +2 -3
- package/dist/build/prerender-server-entry.js +11 -3
- package/dist/build/prerender-server-pool.d.ts +9 -6
- package/dist/build/prerender-server-pool.js +8 -5
- package/dist/build/prerender.d.ts +73 -16
- package/dist/build/prerender.js +272 -80
- package/dist/build/preview-credentials.d.ts +5 -6
- package/dist/build/preview-credentials.js +2 -2
- package/dist/build/public-dir-conflict.d.ts +5 -6
- package/dist/build/public-dir-conflict.js +2 -1
- package/dist/build/report.d.ts +24 -20
- package/dist/build/report.js +10 -2
- package/dist/build/route-classification-injector.d.ts +2 -3
- package/dist/build/route-classification-manifest.d.ts +5 -6
- package/dist/build/run-prerender.d.ts +11 -9
- package/dist/build/run-prerender.js +26 -16
- package/dist/build/server-entry.d.ts +6 -0
- package/dist/build/server-entry.js +34 -0
- package/dist/build/server-manifest.d.ts +8 -3
- package/dist/build/server-manifest.js +14 -2
- package/dist/build/ssr-manifest.d.ts +5 -6
- package/dist/build/standalone.d.ts +2 -3
- package/dist/build/standalone.js +2 -2
- package/dist/build/static-export.d.ts +6 -7
- package/dist/cache/cache-adapters-virtual.d.ts +60 -20
- package/dist/cache/cache-adapters-virtual.js +50 -7
- package/dist/check.d.ts +11 -10
- package/dist/check.js +467 -176
- package/dist/cli-args.d.ts +7 -16
- package/dist/cli-args.js +2 -45
- package/dist/cli-dev-config.d.ts +10 -7
- package/dist/cli-dev-config.js +160 -3
- package/dist/cli.js +124 -442
- package/dist/client/app-nav-failure-handler.d.ts +6 -7
- package/dist/client/browser-globals.d.ts +4 -0
- package/dist/client/browser-globals.js +5 -0
- package/dist/client/client-rewrite-matcher.d.ts +2 -3
- package/dist/client/client-rewrites.d.ts +4 -5
- package/dist/client/dev-error-overlay-store.d.ts +13 -14
- package/dist/client/dev-error-overlay.d.ts +15 -15
- package/dist/client/dev-error-overlay.js +8 -5
- package/dist/client/instrumentation-client-inject.d.ts +3 -4
- package/dist/client/instrumentation-client-state.d.ts +5 -6
- package/dist/client/instrumentation-client.d.ts +3 -4
- package/dist/client/navigation-runtime.d.ts +20 -17
- package/dist/client/navigation-runtime.js +4 -3
- package/dist/client/pages-router-link-navigation.d.ts +4 -5
- package/dist/client/react-instance.d.ts +2 -3
- package/dist/client/validate-module-path.d.ts +2 -3
- package/dist/client/vinext-next-data.d.ts +7 -10
- package/dist/client/window-next.d.ts +4 -5
- package/dist/config/config-matchers.d.ts +16 -16
- package/dist/config/config-matchers.js +2 -4
- package/dist/config/dotenv.d.ts +3 -4
- package/dist/config/dotenv.js +14 -2
- package/dist/config/next-config.d.ts +31 -27
- package/dist/config/next-config.js +163 -16
- package/dist/config/prerender.d.ts +20 -16
- package/dist/config/prerender.js +10 -4
- package/dist/config/request-context.d.ts +5 -6
- package/dist/config/server-external-packages.d.ts +14 -3
- package/dist/config/server-external-packages.js +37 -3
- package/dist/config/tsconfig-paths.d.ts +3 -4
- package/dist/deps/.pnpm/ignore@5.3.2/deps/ignore/index.js +189 -0
- package/dist/deps/.pnpm/ua-parser-js@1.0.35/deps/ua-parser-js/src/ua-parser.js +1057 -0
- package/dist/entries/app-browser-entry.d.ts +4 -5
- package/dist/entries/app-browser-entry.js +1 -3
- package/dist/entries/app-rsc-entry.d.ts +10 -3
- package/dist/entries/app-rsc-entry.js +503 -51
- package/dist/entries/app-rsc-manifest.d.ts +4 -3
- package/dist/entries/app-rsc-manifest.js +26 -8
- package/dist/entries/app-ssr-entry.d.ts +2 -3
- package/dist/entries/app-ssr-entry.js +8 -1
- package/dist/entries/pages-client-entry.d.ts +3 -3
- package/dist/entries/pages-client-entry.js +17 -2
- package/dist/entries/pages-server-entry.d.ts +13 -3
- package/dist/entries/pages-server-entry.js +234 -33
- package/dist/entries/runtime-entry-module.d.ts +4 -5
- package/dist/image/image-adapters-virtual.d.ts +4 -5
- package/dist/index.d.ts +10 -11
- package/dist/index.js +848 -255
- package/dist/init-cloudflare.d.ts +26 -17
- package/dist/init-cloudflare.js +711 -103
- package/dist/init-platform.d.ts +26 -22
- package/dist/init-platform.js +85 -29
- package/dist/init.d.ts +19 -13
- package/dist/init.js +126 -42
- package/dist/plugins/action-owner-manifest.d.ts +3 -4
- package/dist/plugins/action-owner-manifest.js +10 -3
- package/dist/plugins/ast-scope.d.ts +10 -11
- package/dist/plugins/ast-scope.js +10 -22
- package/dist/plugins/ast-utils.d.ts +16 -29
- package/dist/plugins/ast-utils.js +27 -71
- package/dist/plugins/async-hooks-stub.d.ts +2 -3
- package/dist/plugins/client-reference-dedup.d.ts +4 -5
- package/dist/plugins/commonjs-syntax.d.ts +16 -0
- package/dist/plugins/commonjs-syntax.js +22 -0
- package/dist/plugins/css-data-url.d.ts +2 -3
- package/dist/plugins/css-module-imports.d.ts +3 -4
- package/dist/plugins/css-module-imports.js +1 -1
- package/dist/plugins/dynamic-preload-metadata.d.ts +3 -4
- package/dist/plugins/dynamic-preload-metadata.js +55 -154
- package/dist/plugins/environment.d.ts +2 -3
- package/dist/plugins/extensionless-dynamic-import.d.ts +2 -3
- package/dist/plugins/extensionless-dynamic-import.js +6 -10
- package/dist/plugins/fonts.d.ts +10 -11
- package/dist/plugins/fonts.js +4 -3
- package/dist/plugins/ignore-dynamic-requests.d.ts +14 -4
- package/dist/plugins/ignore-dynamic-requests.js +113 -91
- package/dist/plugins/import-meta-url.d.ts +6 -7
- package/dist/plugins/import-meta-url.js +36 -48
- package/dist/plugins/instrumentation-client.d.ts +3 -3
- package/dist/plugins/instrumentation-client.js +46 -10
- package/dist/plugins/middleware-export-validation.d.ts +3 -4
- package/dist/plugins/middleware-export-validation.js +3 -3
- package/dist/plugins/middleware-server-only.d.ts +2 -3
- package/dist/plugins/og-asset-ownership.d.ts +5 -4
- package/dist/plugins/og-asset-ownership.js +24 -13
- package/dist/plugins/og-assets.d.ts +22 -5
- package/dist/plugins/og-assets.js +82 -21
- package/dist/plugins/og-harfbuzz.d.ts +24 -0
- package/dist/plugins/og-harfbuzz.js +271 -0
- package/dist/plugins/optimize-imports.d.ts +7 -7
- package/dist/plugins/optimize-imports.js +34 -45
- package/dist/plugins/pages-node-externals.d.ts +2 -3
- package/dist/plugins/pages-node-externals.js +6 -11
- package/dist/plugins/postcss.d.ts +8 -4
- package/dist/plugins/postcss.js +1 -1
- package/dist/plugins/remove-console.d.ts +2 -3
- package/dist/plugins/remove-console.js +0 -1
- package/dist/plugins/require-condition-resolution.d.ts +3 -4
- package/dist/plugins/require-condition-resolution.js +17 -18
- package/dist/plugins/require-context.d.ts +3 -3
- package/dist/plugins/require-context.js +41 -22
- package/dist/plugins/rsc-client-reference-loaders.d.ts +2 -3
- package/dist/plugins/rsc-client-shim-excludes.d.ts +4 -5
- package/dist/plugins/rsc-client-shim-excludes.js +1 -0
- package/dist/plugins/rsc-reference-validation-normalizer.d.ts +2 -3
- package/dist/plugins/sass.d.ts +7 -8
- package/dist/plugins/sass.js +7 -4
- package/dist/plugins/scan-build-css.d.ts +12 -0
- package/dist/plugins/scan-build-css.js +39 -0
- package/dist/plugins/server-externals-manifest.d.ts +2 -3
- package/dist/plugins/strip-server-exports.d.ts +7 -6
- package/dist/plugins/strip-server-exports.js +4 -2
- package/dist/plugins/styled-jsx.d.ts +2 -3
- package/dist/plugins/styled-jsx.js +7 -7
- package/dist/plugins/transform-cache.d.ts +2 -3
- package/dist/plugins/transform-result.d.ts +21 -4
- package/dist/plugins/transform-result.js +23 -2
- package/dist/plugins/transitive-externals.d.ts +2 -3
- package/dist/plugins/typeof-window.d.ts +16 -7
- package/dist/plugins/typeof-window.js +62 -39
- package/dist/plugins/use-cache-callable.d.ts +2 -5
- package/dist/plugins/use-cache-callable.js +43 -22
- package/dist/plugins/wasm-module-import.d.ts +2 -3
- package/dist/plugins/worker-image-imports.d.ts +2 -3
- package/dist/plugins/worker-image-imports.js +6 -8
- package/dist/routing/app-route-graph.d.ts +18 -19
- package/dist/routing/app-route-graph.js +5 -6
- package/dist/routing/app-route-ids.d.ts +3 -0
- package/dist/routing/app-route-ids.js +6 -0
- package/dist/routing/app-router.d.ts +19 -6
- package/dist/routing/app-router.js +24 -2
- package/dist/routing/file-matcher.d.ts +9 -10
- package/dist/routing/pages-router.d.ts +6 -6
- package/dist/routing/pages-router.js +1 -1
- package/dist/routing/route-matching.d.ts +4 -5
- package/dist/routing/route-matching.js +4 -2
- package/dist/routing/route-pattern.d.ts +13 -14
- package/dist/routing/route-trie.d.ts +5 -6
- package/dist/routing/route-validation.d.ts +3 -4
- package/dist/routing/route-validation.js +12 -11
- package/dist/routing/utils.d.ts +13 -14
- package/dist/server/accept-encoding.d.ts +9 -10
- package/dist/server/api-handler.d.ts +2 -3
- package/dist/server/api-handler.js +9 -6
- package/dist/server/app-action-forwarding.d.ts +3 -4
- package/dist/server/app-action-forwarding.js +1 -1
- package/dist/server/app-action-request.d.ts +2 -3
- package/dist/server/app-bfcache-id.d.ts +4 -4
- package/dist/server/app-bfcache-id.js +7 -1
- package/dist/server/app-bfcache-identity.d.ts +8 -9
- package/dist/server/app-bfcache-identity.js +1 -2
- package/dist/server/app-browser-action-result.d.ts +15 -16
- package/dist/server/app-browser-client-reuse-manifest.d.ts +2 -3
- package/dist/server/app-browser-entry.js +91 -36
- package/dist/server/app-browser-error.d.ts +5 -6
- package/dist/server/app-browser-error.js +9 -3
- package/dist/server/app-browser-history-controller.d.ts +4 -5
- package/dist/server/app-browser-hydration.d.ts +16 -6
- package/dist/server/app-browser-hydration.js +15 -2
- package/dist/server/app-browser-interception-context.d.ts +3 -4
- package/dist/server/app-browser-mpa-navigation.d.ts +4 -5
- package/dist/server/app-browser-navigation-abort.d.ts +3 -4
- package/dist/server/app-browser-navigation-controller.d.ts +8 -8
- package/dist/server/app-browser-navigation-controller.js +9 -5
- package/dist/server/app-browser-navigation-response.d.ts +2 -3
- package/dist/server/app-browser-popstate.d.ts +4 -5
- package/dist/server/app-browser-prefetch-response.d.ts +5 -6
- package/dist/server/app-browser-rsc-redirect.d.ts +4 -5
- package/dist/server/app-browser-server-action-client.d.ts +7 -6
- package/dist/server/app-browser-server-action-client.js +9 -5
- package/dist/server/app-browser-server-action-navigation.d.ts +2 -3
- package/dist/server/app-browser-state.d.ts +17 -17
- package/dist/server/app-browser-state.js +7 -3
- package/dist/server/app-browser-stream.d.ts +5 -6
- package/dist/server/app-browser-stream.js +8 -6
- package/dist/server/app-browser-supplemental-refresh.d.ts +11 -12
- package/dist/server/app-browser-visible-commit.d.ts +6 -7
- package/dist/server/app-client-reference-preloader.d.ts +2 -3
- package/dist/server/app-elements-wire-key.d.ts +25 -0
- package/dist/server/app-elements-wire-key.js +69 -0
- package/dist/server/app-elements-wire.d.ts +34 -53
- package/dist/server/app-elements-wire.js +4 -75
- package/dist/server/app-elements.d.ts +5 -5
- package/dist/server/app-elements.js +1 -1
- package/dist/server/app-fallback-renderer.d.ts +4 -4
- package/dist/server/app-fallback-renderer.js +6 -6
- package/dist/server/app-fetch-tracing.d.ts +15 -0
- package/dist/server/app-fetch-tracing.js +38 -0
- package/dist/server/app-history-state.d.ts +25 -27
- package/dist/server/app-history-state.js +21 -16
- package/dist/server/app-hook-warning-suppression.d.ts +2 -3
- package/dist/server/app-hydration-cache-publication.d.ts +3 -4
- package/dist/server/app-inline-css-client.d.ts +3 -4
- package/dist/server/app-interception-context-header.d.ts +2 -3
- package/dist/server/app-layout-param-observation.d.ts +7 -8
- package/dist/server/app-metadata-tracing.d.ts +12 -0
- package/dist/server/app-metadata-tracing.js +17 -0
- package/dist/server/app-middleware.d.ts +7 -7
- package/dist/server/app-middleware.js +2 -3
- package/dist/server/app-mounted-slots-header.d.ts +2 -3
- package/dist/server/app-mounted-slots-header.js +2 -2
- package/dist/server/app-optimistic-routing.d.ts +10 -11
- package/dist/server/app-optimistic-routing.js +3 -2
- package/dist/server/app-page-boundary-render.d.ts +6 -6
- package/dist/server/app-page-boundary-render.js +10 -4
- package/dist/server/app-page-boundary.d.ts +9 -10
- package/dist/server/app-page-boundary.js +1 -1
- package/dist/server/app-page-cache-finalizer.d.ts +18 -9
- package/dist/server/app-page-cache-finalizer.js +51 -16
- package/dist/server/app-page-cache-render.d.ts +8 -5
- package/dist/server/app-page-cache-render.js +22 -4
- package/dist/server/app-page-cache.d.ts +28 -9
- package/dist/server/app-page-cache.js +95 -24
- package/dist/server/app-page-dispatch.d.ts +34 -12
- package/dist/server/app-page-dispatch.js +181 -64
- package/dist/server/app-page-element-builder.d.ts +13 -11
- package/dist/server/app-page-element-builder.js +104 -61
- package/dist/server/app-page-execution.d.ts +14 -14
- package/dist/server/app-page-execution.js +11 -7
- package/dist/server/app-page-head.d.ts +19 -16
- package/dist/server/app-page-head.js +25 -25
- package/dist/server/app-page-http-access-fallback-metadata.d.ts +6 -5
- package/dist/server/app-page-http-access-fallback-metadata.js +9 -2
- package/dist/server/app-page-method.d.ts +5 -11
- package/dist/server/app-page-method.js +2 -9
- package/dist/server/app-page-params.d.ts +5 -6
- package/dist/server/app-page-ppr-runtime.d.ts +2 -2
- package/dist/server/app-page-probe.d.ts +5 -6
- package/dist/server/app-page-probe.js +5 -4
- package/dist/server/app-page-render-identity.d.ts +4 -5
- package/dist/server/app-page-render-observation.d.ts +8 -9
- package/dist/server/app-page-render-observation.js +1 -1
- package/dist/server/app-page-render.d.ts +41 -6
- package/dist/server/app-page-render.js +171 -24
- package/dist/server/app-page-request.d.ts +10 -9
- package/dist/server/app-page-request.js +16 -12
- package/dist/server/app-page-response.d.ts +20 -9
- package/dist/server/app-page-response.js +30 -12
- package/dist/server/app-page-route-wiring.d.ts +15 -15
- package/dist/server/app-page-route-wiring.js +31 -24
- package/dist/server/app-page-search-params-observation.d.ts +26 -5
- package/dist/server/app-page-search-params-observation.js +43 -7
- package/dist/server/app-page-segment-plan.d.ts +2 -3
- package/dist/server/app-page-segment-state.d.ts +11 -12
- package/dist/server/app-page-stream.d.ts +27 -11
- package/dist/server/app-page-stream.js +34 -6
- package/dist/server/app-page-tracing.d.ts +33 -0
- package/dist/server/app-page-tracing.js +50 -0
- package/dist/server/app-pages-bridge.d.ts +6 -6
- package/dist/server/app-pages-bridge.js +18 -4
- package/dist/server/app-post-middleware-context.d.ts +2 -3
- package/dist/server/app-ppr-fallback-shell-render.d.ts +3 -4
- package/dist/server/app-ppr-fallback-shell-render.js +3 -2
- package/dist/server/app-ppr-fallback-shell.d.ts +6 -7
- package/dist/server/app-prerender-endpoints.d.ts +5 -5
- package/dist/server/app-prerender-endpoints.js +3 -1
- package/dist/server/app-prerender-static-params.d.ts +15 -7
- package/dist/server/app-prerender-static-params.js +24 -9
- package/dist/server/app-render-abort-error.d.ts +3 -0
- package/dist/server/app-render-abort-error.js +8 -0
- package/dist/server/app-render-dependency.d.ts +14 -13
- package/dist/server/app-render-dependency.js +5 -1
- package/dist/server/app-request-context.d.ts +3 -4
- package/dist/server/app-request-stage-context.d.ts +5 -0
- package/dist/server/app-request-stage-context.js +11 -0
- package/dist/server/app-request-stage-dispatch.d.ts +25 -0
- package/dist/server/app-request-stage-dispatch.js +54 -0
- package/dist/server/app-request-stage-independent-entry.d.ts +8 -0
- package/dist/server/app-request-stage-independent-entry.js +112 -0
- package/dist/server/app-response-header-provenance.d.ts +13 -7
- package/dist/server/app-response-header-provenance.js +34 -1
- package/dist/server/app-response-stage-entry.d.ts +9 -0
- package/dist/server/app-response-stage-entry.js +87 -0
- package/dist/server/app-route-handler-cache.d.ts +4 -4
- package/dist/server/app-route-handler-cache.js +51 -35
- package/dist/server/app-route-handler-dispatch.d.ts +3 -3
- package/dist/server/app-route-handler-dispatch.js +77 -56
- package/dist/server/app-route-handler-execution.d.ts +26 -14
- package/dist/server/app-route-handler-execution.js +94 -28
- package/dist/server/app-route-handler-middleware-context.d.ts +8 -0
- package/dist/server/app-route-handler-middleware-context.js +15 -0
- package/dist/server/app-route-handler-policy.d.ts +11 -11
- package/dist/server/app-route-handler-policy.js +2 -2
- package/dist/server/app-route-handler-response.d.ts +9 -10
- package/dist/server/app-route-handler-response.js +14 -3
- package/dist/server/app-route-handler-runtime.d.ts +9 -10
- package/dist/server/app-route-handler-runtime.js +20 -16
- package/dist/server/app-route-module-loader.d.ts +6 -7
- package/dist/server/app-route-request-built-ins.d.ts +3 -4
- package/dist/server/app-route-tree-prefetch.d.ts +6 -7
- package/dist/server/app-route-tree-prefetch.js +2 -1
- package/dist/server/app-router-entry.d.ts +4 -1
- package/dist/server/app-router-entry.js +33 -17
- package/dist/server/app-rsc-cache-busting.d.ts +34 -27
- package/dist/server/app-rsc-cache-busting.js +14 -2
- package/dist/server/app-rsc-combined-handler.d.ts +9 -0
- package/dist/server/app-rsc-combined-handler.js +11 -0
- package/dist/server/app-rsc-embedded-chunks.d.ts +6 -7
- package/dist/server/app-rsc-error-handler.d.ts +12 -6
- package/dist/server/app-rsc-error-handler.js +15 -6
- package/dist/server/app-rsc-errors.d.ts +11 -9
- package/dist/server/app-rsc-errors.js +14 -16
- package/dist/server/app-rsc-handler.d.ts +32 -6
- package/dist/server/app-rsc-handler.js +425 -64
- package/dist/server/app-rsc-redirect-flight.d.ts +4 -5
- package/dist/server/app-rsc-render-mode.d.ts +8 -9
- package/dist/server/app-rsc-request-normalization.d.ts +3 -3
- package/dist/server/app-rsc-request-normalization.js +5 -3
- package/dist/server/app-rsc-response-finalizer.d.ts +8 -5
- package/dist/server/app-rsc-response-finalizer.js +10 -7
- package/dist/server/app-rsc-response-stage.d.ts +6 -0
- package/dist/server/app-rsc-response-stage.js +251 -0
- package/dist/server/app-rsc-route-matching.d.ts +3 -4
- package/dist/server/app-rsc-route-matching.js +3 -2
- package/dist/server/app-rsc-state-fingerprint.d.ts +3 -4
- package/dist/server/app-rsc-vary.d.ts +16 -0
- package/dist/server/app-rsc-vary.js +31 -0
- package/dist/server/app-segment-config.d.ts +119 -7
- package/dist/server/app-segment-config.js +242 -2
- package/dist/server/app-server-action-execution.d.ts +18 -13
- package/dist/server/app-server-action-execution.js +86 -33
- package/dist/server/app-ssr-entry.d.ts +14 -4
- package/dist/server/app-ssr-entry.js +62 -15
- package/dist/server/app-ssr-error-meta.d.ts +3 -4
- package/dist/server/app-ssr-error-meta.js +2 -1
- package/dist/server/app-ssr-router-instance.d.ts +2 -3
- package/dist/server/app-ssr-search-params-gate.d.ts +20 -0
- package/dist/server/app-ssr-search-params-gate.js +54 -0
- package/dist/server/app-ssr-stream.d.ts +13 -9
- package/dist/server/app-ssr-stream.js +34 -8
- package/dist/server/app-static-generation.d.ts +4 -5
- package/dist/server/app-visited-response-cache.d.ts +11 -12
- package/dist/server/app-visited-response-cache.js +2 -2
- package/dist/server/app-worker-stages.d.ts +112 -0
- package/dist/server/app-worker-stages.js +105 -0
- package/dist/server/artifact-compatibility.d.ts +11 -12
- package/dist/server/before-interactive-head.d.ts +2 -3
- package/dist/server/bfcache-identity.d.ts +7 -8
- package/dist/server/cache-control.d.ts +35 -13
- package/dist/server/cache-control.js +64 -6
- package/dist/server/cache-headers.d.ts +3 -4
- package/dist/server/cache-proof.d.ts +75 -70
- package/dist/server/cache-proof.js +9 -1
- package/dist/server/cacheability-limits.d.ts +4 -5
- package/dist/server/cacheability-limits.js +2 -2
- package/dist/server/cacheability-manifest.d.ts +42 -16
- package/dist/server/cacheability-manifest.js +60 -10
- package/dist/server/cacheability-request.d.ts +37 -8
- package/dist/server/cacheability-request.js +192 -90
- package/dist/server/client-reuse-manifest.d.ts +17 -18
- package/dist/server/client-reuse-manifest.js +2 -2
- package/dist/server/client-trace-metadata.d.ts +9 -6
- package/dist/server/client-trace-metadata.js +27 -15
- package/dist/server/cloudflare-workers-tracing.d.ts +1 -0
- package/dist/server/cloudflare-workers-tracing.js +8 -0
- package/dist/server/config-headers.d.ts +19 -5
- package/dist/server/config-headers.js +25 -11
- package/dist/server/cookie-utils.d.ts +2 -3
- package/dist/server/csp.d.ts +5 -6
- package/dist/server/default-global-error-module.d.ts +2 -3
- package/dist/server/default-global-not-found-module.d.ts +2 -3
- package/dist/server/default-not-found-module.d.ts +2 -3
- package/dist/server/defer-until-stream-consumed.d.ts +2 -3
- package/dist/server/defer-until-stream-consumed.js +2 -1
- package/dist/server/dev-initial-server-error.d.ts +3 -4
- package/dist/server/dev-initial-server-error.js +2 -1
- package/dist/server/dev-lockfile.d.ts +7 -8
- package/dist/server/dev-lockfile.js +4 -1
- package/dist/server/dev-module-runner.d.ts +2 -3
- package/dist/server/dev-origin-check.d.ts +5 -6
- package/dist/server/dev-route-files.d.ts +2 -3
- package/dist/server/dev-server.d.ts +4 -5
- package/dist/server/dev-server.js +141 -64
- package/dist/server/dev-stack-sourcemap.d.ts +7 -7
- package/dist/server/dev-stack-sourcemap.js +1 -1
- package/dist/server/document-initial-head.d.ts +3 -4
- package/dist/server/edge-api-runtime.d.ts +4 -5
- package/dist/server/fetch-handler.d.ts +3 -2
- package/dist/server/fetch-handler.js +3 -18
- package/dist/server/file-based-metadata.d.ts +2 -3
- package/dist/server/framework-tracer.d.ts +46 -0
- package/dist/server/framework-tracer.js +125 -0
- package/dist/server/fully-buffered-response.d.ts +11 -0
- package/dist/server/fully-buffered-response.js +19 -0
- package/dist/server/headers.d.ts +56 -61
- package/dist/server/headers.js +22 -31
- package/dist/server/html.d.ts +6 -27
- package/dist/server/html.js +16 -1
- package/dist/server/http-conditional.d.ts +5 -6
- package/dist/server/http-date.d.ts +2 -3
- package/dist/server/http-error-responses.d.ts +9 -10
- package/dist/server/http-error-responses.js +1 -0
- package/dist/server/http-range.d.ts +4 -5
- package/dist/server/hybrid-route-priority.d.ts +4 -5
- package/dist/server/image-optimization.d.ts +20 -21
- package/dist/server/implicit-tags.d.ts +3 -4
- package/dist/server/instrumentation-runtime.d.ts +17 -21
- package/dist/server/instrumentation-runtime.js +26 -8
- package/dist/server/instrumentation.d.ts +26 -30
- package/dist/server/instrumentation.js +18 -23
- package/dist/server/isr-cache.d.ts +30 -27
- package/dist/server/isr-cache.js +23 -70
- package/dist/server/isr-decision.d.ts +4 -4
- package/dist/server/metadata-route-build-data.d.ts +4 -5
- package/dist/server/metadata-route-response.d.ts +7 -7
- package/dist/server/metadata-route-response.js +158 -35
- package/dist/server/metadata-routes.d.ts +18 -19
- package/dist/server/middleware-matcher-pattern.d.ts +6 -7
- package/dist/server/middleware-matcher.d.ts +6 -7
- package/dist/server/middleware-path-to-regexp.d.ts +6 -7
- package/dist/server/middleware-path-to-regexp.js +11 -9
- package/dist/server/middleware-response-headers.d.ts +3 -4
- package/dist/server/middleware-runtime.d.ts +7 -8
- package/dist/server/middleware-runtime.js +36 -7
- package/dist/server/middleware.d.ts +5 -5
- package/dist/server/multi-stage.d.ts +141 -0
- package/dist/server/multi-stage.js +8 -0
- package/dist/server/navigation-planner.d.ts +26 -26
- package/dist/server/navigation-trace.d.ts +11 -12
- package/dist/server/next-error-digest.d.ts +4 -5
- package/dist/server/normalize-path.d.ts +5 -6
- package/dist/server/open-redirect.d.ts +2 -3
- package/dist/server/opentelemetry-api.d.ts +59 -0
- package/dist/server/opentelemetry-api.js +53 -0
- package/dist/server/opentelemetry-tracing.d.ts +5 -0
- package/dist/server/opentelemetry-tracing.js +83 -0
- package/dist/server/operation-token.d.ts +11 -12
- package/dist/server/otel-tracer-extension.d.ts +7 -9
- package/dist/server/otel-tracer-extension.js +37 -36
- package/dist/server/pages-api-route.d.ts +5 -4
- package/dist/server/pages-api-route.js +28 -9
- package/dist/server/pages-asset-tags.d.ts +7 -6
- package/dist/server/pages-asset-tags.js +104 -18
- package/dist/server/pages-body-parser-config.d.ts +4 -5
- package/dist/server/pages-body-parser-config.js +4 -4
- package/dist/server/pages-client-assets.d.ts +13 -5
- package/dist/server/pages-data-route.d.ts +11 -12
- package/dist/server/pages-data-route.js +1 -1
- package/dist/server/pages-default-404.d.ts +3 -4
- package/dist/server/pages-dev-hydration.d.ts +9 -4
- package/dist/server/pages-dev-hydration.js +19 -7
- package/dist/server/pages-dev-module-url.d.ts +3 -4
- package/dist/server/pages-dev-stylesheets.d.ts +5 -6
- package/dist/server/pages-document-asset-props.d.ts +6 -7
- package/dist/server/pages-document-initial-props.d.ts +5 -5
- package/dist/server/pages-document-initial-props.js +4 -2
- package/dist/server/pages-execution-tracing.d.ts +40 -0
- package/dist/server/pages-execution-tracing.js +80 -0
- package/dist/server/pages-get-initial-props.d.ts +9 -10
- package/dist/server/pages-i18n.d.ts +8 -8
- package/dist/server/pages-media-type.d.ts +4 -5
- package/dist/server/pages-node-compat.d.ts +11 -10
- package/dist/server/pages-node-compat.js +12 -4
- package/dist/server/pages-page-data.d.ts +23 -19
- package/dist/server/pages-page-data.js +82 -75
- package/dist/server/pages-page-handler.d.ts +7 -6
- package/dist/server/pages-page-handler.js +103 -47
- package/dist/server/pages-page-method.d.ts +2 -3
- package/dist/server/pages-page-response.d.ts +14 -10
- package/dist/server/pages-page-response.js +52 -32
- package/dist/server/pages-preview.d.ts +10 -11
- package/dist/server/pages-readiness.d.ts +2 -3
- package/dist/server/pages-request-pipeline.d.ts +15 -12
- package/dist/server/pages-request-pipeline.js +80 -35
- package/dist/server/pages-request-stage-entry.d.ts +23 -0
- package/dist/server/pages-request-stage-entry.js +316 -0
- package/dist/server/pages-response-stage-entry.d.ts +11 -0
- package/dist/server/pages-response-stage-entry.js +106 -0
- package/dist/server/pages-response-stage.d.ts +31 -0
- package/dist/server/pages-response-stage.js +49 -0
- package/dist/server/pages-revalidate.d.ts +3 -4
- package/dist/server/pages-revalidate.js +9 -4
- package/dist/server/pages-route-data-kind.d.ts +18 -0
- package/dist/server/pages-route-data-kind.js +11 -0
- package/dist/server/pages-router-entry.d.ts +1 -25
- package/dist/server/pages-router-entry.js +35 -148
- package/dist/server/pages-serializable-props.d.ts +3 -4
- package/dist/server/pregenerated-concrete-paths.d.ts +9 -7
- package/dist/server/pregenerated-concrete-paths.js +12 -6
- package/dist/server/prerender-cache-life-header.d.ts +3 -4
- package/dist/server/prerender-manifest.d.ts +17 -11
- package/dist/server/prerender-manifest.js +7 -4
- package/dist/server/prerender-route-params.d.ts +16 -9
- package/dist/server/prerender-route-params.js +18 -3
- package/dist/server/prerender-work-unit-setup.d.ts +2 -3
- package/dist/server/prerender-work-unit-setup.js +5 -5
- package/dist/server/prod-server.d.ts +12 -9
- package/dist/server/prod-server.js +127 -44
- package/dist/server/proxy-trust.d.ts +5 -6
- package/dist/server/request-log.d.ts +3 -4
- package/dist/server/request-pipeline.d.ts +16 -16
- package/dist/server/request-pipeline.js +7 -2
- package/dist/server/request-stage.d.ts +5 -0
- package/dist/server/request-stage.js +7 -0
- package/dist/server/request-tracing.d.ts +22 -0
- package/dist/server/request-tracing.js +180 -0
- package/dist/server/response-stage-cacheability.d.ts +37 -0
- package/dist/server/response-stage-cacheability.js +55 -0
- package/dist/server/response-stage-policy.d.ts +23 -0
- package/dist/server/response-stage-policy.js +89 -0
- package/dist/server/response-stage.d.ts +5 -0
- package/dist/server/response-stage.js +7 -0
- package/dist/server/response-start-tracing.d.ts +14 -0
- package/dist/server/response-start-tracing.js +80 -0
- package/dist/server/revalidation-host.d.ts +2 -3
- package/dist/server/revalidation-host.js +1 -1
- package/dist/server/revalidation-request.d.ts +8 -0
- package/dist/server/revalidation-request.js +37 -0
- package/dist/server/rsc-completion-metadata.d.ts +6 -7
- package/dist/server/rsc-stream-hints.d.ts +18 -7
- package/dist/server/rsc-stream-hints.js +70 -35
- package/dist/server/seed-cache.d.ts +2 -3
- package/dist/server/seed-cache.js +8 -7
- package/dist/server/server-action-not-found.d.ts +5 -6
- package/dist/server/server-globals.d.ts +2 -3
- package/dist/server/skip-cache-proof.d.ts +4 -4
- package/dist/server/socket-error-backstop.d.ts +5 -6
- package/dist/server/socket-error-backstop.js +1 -1
- package/dist/server/static-file-cache.d.ts +5 -6
- package/dist/server/static-file-cache.js +9 -7
- package/dist/server/static-file-signal.d.ts +9 -6
- package/dist/server/static-file-signal.js +51 -2
- package/dist/server/static-layout-client-reuse-proof.d.ts +4 -5
- package/dist/server/streaming-metadata.d.ts +2 -3
- package/dist/server/tracer.d.ts +5 -0
- package/dist/server/tracer.js +13 -0
- package/dist/server/worker-prerender-discovery.d.ts +5 -6
- package/dist/server/worker-revalidation-context.d.ts +4 -4
- package/dist/server/worker-revalidation-context.js +6 -5
- package/dist/server/worker-stages.d.ts +43 -0
- package/dist/server/worker-stages.js +25 -0
- package/dist/server/worker-utils.d.ts +5 -6
- package/dist/server/worker-utils.js +2 -1
- package/dist/server/workers-tracing.d.ts +34 -0
- package/dist/server/workers-tracing.js +67 -0
- package/dist/shims/amp.d.ts +3 -4
- package/dist/shims/app-router-scroll-state.d.ts +9 -10
- package/dist/shims/app-router-scroll.d.ts +4 -5
- package/dist/shims/app-router-scroll.js +2 -1
- package/dist/shims/app.d.ts +5 -6
- package/dist/shims/before-interactive-context.d.ts +5 -6
- package/dist/shims/cache-callable-runtime.d.ts +44 -4
- package/dist/shims/cache-callable-runtime.js +168 -8
- package/dist/shims/cache-for-request.d.ts +2 -3
- package/dist/shims/cache-handler.d.ts +33 -20
- package/dist/shims/cache-handler.js +61 -2
- package/dist/shims/cache-request-state.d.ts +26 -38
- package/dist/shims/cache-request-state.js +2 -13
- package/dist/shims/cache-runtime.d.ts +23 -21
- package/dist/shims/cache-runtime.js +110 -28
- package/dist/shims/cache.d.ts +17 -16
- package/dist/shims/cache.js +19 -15
- package/dist/shims/cacheability-classification.d.ts +50 -29
- package/dist/shims/cacheability-classification.js +29 -14
- package/dist/shims/cdn-cache-state.d.ts +13 -0
- package/dist/shims/cdn-cache-state.js +23 -0
- package/dist/shims/cdn-cache.d.ts +59 -21
- package/dist/shims/cdn-cache.js +31 -47
- package/dist/shims/client-hook-error.d.ts +3 -4
- package/dist/shims/client-locale.d.ts +2 -3
- package/dist/shims/client-page-root.d.ts +24 -0
- package/dist/shims/client-page-root.js +121 -0
- package/dist/shims/compat-router.d.ts +2 -3
- package/dist/shims/config.d.ts +3 -4
- package/dist/shims/constants.d.ts +73 -74
- package/dist/shims/constants.js +1 -1
- package/dist/shims/default-not-found.d.ts +2 -3
- package/dist/shims/document.d.ts +9 -9
- package/dist/shims/dynamic-preload-chunks.d.ts +2 -3
- package/dist/shims/dynamic-preload-chunks.js +17 -13
- package/dist/shims/dynamic.d.ts +3 -3
- package/dist/shims/error-boundary-navigation.d.ts +3 -4
- package/dist/shims/error-boundary.d.ts +17 -18
- package/dist/shims/error-boundary.js +17 -11
- package/dist/shims/error.d.ts +5 -19
- package/dist/shims/error.js +17 -10
- package/dist/shims/error.react-server.d.ts +4 -7
- package/dist/shims/error.react-server.js +4 -1
- package/dist/shims/fetch-cache.d.ts +22 -22
- package/dist/shims/fetch-cache.js +46 -20
- package/dist/shims/font-google-base.d.ts +9 -9
- package/dist/shims/font-google-base.js +2 -1
- package/dist/shims/font-local.d.ts +3 -3
- package/dist/shims/font-local.js +1 -1
- package/dist/shims/font-utils.d.ts +14 -15
- package/dist/shims/form.d.ts +2 -2
- package/dist/shims/form.js +10 -7
- package/dist/shims/hash-scroll.d.ts +5 -6
- package/dist/shims/head-state.d.ts +4 -5
- package/dist/shims/head.d.ts +16 -16
- package/dist/shims/head.js +5 -4
- package/dist/shims/headers.d.ts +44 -73
- package/dist/shims/headers.js +87 -144
- package/dist/shims/i18n-context.d.ts +5 -6
- package/dist/shims/i18n-state.d.ts +4 -5
- package/dist/shims/image-config.d.ts +5 -6
- package/dist/shims/image-config.js +2 -0
- package/dist/shims/image.d.ts +5 -5
- package/dist/shims/image.js +12 -8
- package/dist/shims/internal/als-registry.d.ts +4 -5
- package/dist/shims/internal/api-utils.d.ts +3 -4
- package/dist/shims/internal/app-page-props-cache-key.d.ts +32 -4
- package/dist/shims/internal/app-page-props-cache-key.js +53 -1
- package/dist/shims/internal/app-prefetch-fetch-queue.d.ts +5 -6
- package/dist/shims/internal/app-prefetch-rsc-request.d.ts +5 -17
- package/dist/shims/internal/app-prefetch-rsc-request.js +5 -14
- package/dist/shims/internal/app-route-detection.d.ts +2 -2
- package/dist/shims/internal/app-route-prefetch-policy.d.ts +5 -8
- package/dist/shims/internal/app-route-prefetch-policy.js +0 -1
- package/dist/shims/internal/app-router-context.d.ts +9 -10
- package/dist/shims/internal/cache-context-accessor.d.ts +16 -0
- package/dist/shims/internal/cache-context-accessor.js +15 -0
- package/dist/shims/internal/cookie-serialize.d.ts +4 -5
- package/dist/shims/internal/format-url-object.d.ts +7 -0
- package/dist/shims/internal/format-url-object.js +53 -0
- package/dist/shims/internal/headers-state.d.ts +74 -0
- package/dist/shims/internal/headers-state.js +157 -0
- package/dist/shims/internal/hybrid-client-route-owner-direct.d.ts +6 -7
- package/dist/shims/internal/hybrid-client-route-owner.d.ts +3 -3
- package/dist/shims/internal/hybrid-client-route-owner.js +3 -2
- package/dist/shims/internal/interpolate-as.d.ts +5 -6
- package/dist/shims/internal/interpolate-as.js +4 -2
- package/dist/shims/internal/link-status-registry.d.ts +5 -6
- package/dist/shims/internal/make-hanging-promise.d.ts +3 -4
- package/dist/shims/internal/navigation-untracked.d.ts +2 -3
- package/dist/shims/internal/normalize-router-href.d.ts +15 -0
- package/dist/shims/internal/normalize-router-href.js +41 -0
- package/dist/shims/internal/pages-data-fetch-dedup.d.ts +8 -9
- package/dist/shims/internal/pages-data-target.d.ts +8 -6
- package/dist/shims/internal/pages-data-target.js +32 -36
- package/dist/shims/internal/pages-data-url.d.ts +4 -5
- package/dist/shims/internal/pages-data-url.js +2 -1
- package/dist/shims/internal/pages-router-accessor.d.ts +3 -4
- package/dist/shims/internal/pages-router-components.d.ts +3 -4
- package/dist/shims/internal/route-pattern-for-warning.d.ts +5 -6
- package/dist/shims/internal/route-pattern-for-warning.js +3 -3
- package/dist/shims/internal/router-context.d.ts +2 -3
- package/dist/shims/internal/thenable-well-known-properties.d.ts +10 -0
- package/dist/shims/internal/thenable-well-known-properties.js +33 -0
- package/dist/shims/internal/utils.d.ts +7 -8
- package/dist/shims/internal/work-unit-async-storage.d.ts +10 -11
- package/dist/shims/layout-segment-context.d.ts +3 -4
- package/dist/shims/link-prefetch.d.ts +9 -10
- package/dist/shims/link.d.ts +4 -4
- package/dist/shims/link.js +56 -116
- package/dist/shims/metadata.d.ts +15 -16
- package/dist/shims/metadata.js +40 -36
- package/dist/shims/navigation-context-accessors.d.ts +9 -0
- package/dist/shims/navigation-context-accessors.js +19 -0
- package/dist/shims/navigation-context-state.d.ts +27 -18
- package/dist/shims/navigation-errors.d.ts +18 -19
- package/dist/shims/navigation-state.d.ts +6 -7
- package/dist/shims/navigation.d.ts +80 -68
- package/dist/shims/navigation.js +26 -18
- package/dist/shims/navigation.react-server.d.ts +9 -9
- package/dist/shims/offline.d.ts +2 -3
- package/dist/shims/og.d.ts +2 -2
- package/dist/shims/pages-router-runtime.d.ts +4 -5
- package/dist/shims/ppr-fallback-shell.d.ts +13 -14
- package/dist/shims/readonly-url-search-params.d.ts +2 -3
- package/dist/shims/request-context.d.ts +5 -6
- package/dist/shims/request-state-types.d.ts +2 -1
- package/dist/shims/root-params.d.ts +14 -15
- package/dist/shims/root-params.js +1 -1
- package/dist/shims/router-state.d.ts +5 -6
- package/dist/shims/router-state.js +1 -1
- package/dist/shims/router.d.ts +22 -21
- package/dist/shims/router.js +339 -164
- package/dist/shims/script-nonce-context.d.ts +8 -6
- package/dist/shims/script-nonce-context.js +15 -6
- package/dist/shims/script.d.ts +4 -4
- package/dist/shims/script.js +9 -7
- package/dist/shims/search-params-gate.d.ts +35 -0
- package/dist/shims/search-params-gate.js +32 -0
- package/dist/shims/server.d.ts +19 -51
- package/dist/shims/server.js +66 -30
- package/dist/shims/slot.d.ts +33 -15
- package/dist/shims/slot.js +41 -9
- package/dist/shims/streamed-icons.d.ts +3 -4
- package/dist/shims/thenable-params.d.ts +5 -7
- package/dist/shims/thenable-params.js +3 -24
- package/dist/shims/unified-request-context.d.ts +35 -32
- package/dist/shims/unified-request-context.js +34 -24
- package/dist/shims/unrecognized-action-error.d.ts +3 -4
- package/dist/shims/url-safety.d.ts +5 -6
- package/dist/shims/url-utils.d.ts +12 -13
- package/dist/shims/use-merged-ref.d.ts +2 -3
- package/dist/shims/user-agent.d.ts +31 -0
- package/dist/shims/user-agent.js +16 -0
- package/dist/shims/web-vitals.d.ts +2 -2
- package/dist/typegen.d.ts +3 -4
- package/dist/utils/asset-prefix.d.ts +7 -8
- package/dist/utils/base-path.d.ts +5 -6
- package/dist/utils/built-asset-url.d.ts +2 -3
- package/dist/utils/built-asset-url.js +1 -1
- package/dist/utils/cache-control-metadata.d.ts +4 -5
- package/dist/utils/client-build-manifest.d.ts +6 -7
- package/dist/utils/client-build-manifest.js +2 -1
- package/dist/utils/client-entry-manifest.d.ts +6 -7
- package/dist/utils/client-runtime-metadata.d.ts +8 -3
- package/dist/utils/client-runtime-metadata.js +18 -1
- package/dist/utils/commonjs-loader.d.ts +4 -5
- package/dist/utils/compare.d.ts +2 -3
- package/dist/utils/deployment-id.d.ts +6 -7
- package/dist/utils/dev-error-recovery-event.d.ts +2 -3
- package/dist/utils/dev-stack-sourcemap-endpoint.d.ts +2 -3
- package/dist/utils/domain-locale.d.ts +7 -8
- package/dist/utils/encode-cache-tag.d.ts +4 -4
- package/dist/utils/encode-cache-tag.js +11 -1
- package/dist/utils/error-cause.d.ts +2 -3
- package/dist/utils/external-url.d.ts +2 -3
- package/dist/utils/has-trailing-comma.d.ts +3 -4
- package/dist/utils/hash.d.ts +3 -4
- package/dist/utils/html-limited-bots.d.ts +3 -4
- package/dist/utils/lazy-chunks.d.ts +8 -9
- package/dist/utils/lazy-chunks.js +4 -4
- package/dist/utils/manifest-paths.d.ts +5 -6
- package/dist/utils/mdx-scan.d.ts +11 -4
- package/dist/utils/mdx-scan.js +27 -1
- package/dist/utils/middleware-request-headers.d.ts +7 -6
- package/dist/utils/middleware-request-headers.js +6 -1
- package/dist/utils/navigation-signal.d.ts +3 -3
- package/dist/utils/navigation-signal.js +16 -1
- package/dist/utils/number.d.ts +2 -3
- package/dist/utils/package-name.d.ts +3 -4
- package/dist/utils/parse-cookie.d.ts +4 -5
- package/dist/utils/path.d.ts +8 -9
- package/dist/utils/plugin-options.d.ts +2 -3
- package/dist/utils/precompressed-variant.d.ts +3 -4
- package/dist/utils/prerender-output-paths.d.ts +4 -5
- package/dist/utils/project.d.ts +19 -30
- package/dist/utils/project.js +20 -29
- package/dist/utils/promise.d.ts +2 -3
- package/dist/utils/protocol-headers.d.ts +14 -15
- package/dist/utils/public-file-path.d.ts +2 -3
- package/dist/utils/public-routes.d.ts +2 -3
- package/dist/utils/query.d.ts +14 -9
- package/dist/utils/query.js +22 -1
- package/dist/utils/react-compiler-support.d.ts +6 -7
- package/dist/utils/react-version.d.ts +4 -3
- package/dist/utils/react-version.js +19 -1
- package/dist/utils/record.d.ts +2 -3
- package/dist/utils/redirect-digest.d.ts +3 -4
- package/dist/utils/regex-safety.d.ts +4 -5
- package/dist/utils/regex.d.ts +2 -3
- package/dist/utils/safe-json-file.d.ts +2 -3
- package/dist/utils/sorted-array.d.ts +2 -3
- package/dist/utils/text-stream.d.ts +3 -4
- package/dist/utils/vinext-root.d.ts +2 -3
- package/dist/utils/virtual-module.d.ts +3 -4
- package/dist/utils/vite-cli-invocation.d.ts +21 -0
- package/dist/utils/vite-cli-invocation.js +151 -0
- package/dist/utils/vite-version.d.ts +5 -6
- package/next-package.json +4 -0
- package/package.json +51 -6
- package/dist/server/metadata-route-cache-policy.d.ts +0 -6
- package/dist/server/metadata-route-cache-policy.js +0 -6
|
@@ -1,24 +1,27 @@
|
|
|
1
1
|
import path, { toSlash } from "../deps/.pnpm/pathslash@0.1.0/deps/pathslash/dist/index.js";
|
|
2
2
|
import { findDir } from "../utils/project.js";
|
|
3
|
-
import {
|
|
3
|
+
import { BLOCKED_PAGES, PHASE_PRODUCTION_BUILD } from "../shims/constants.js";
|
|
4
4
|
import { VINEXT_PRERENDER_SECRET_HEADER } from "../utils/protocol-headers.js";
|
|
5
|
-
import "../
|
|
5
|
+
import { isExternalUrl } from "../utils/external-url.js";
|
|
6
6
|
import { matchHeaders, matchesRewriteSource } from "../config/config-matchers.js";
|
|
7
|
-
import {
|
|
8
|
-
import { classifyAppRoute, classifyAppRouteHandler, classifyPagesRoute, extractExportConstString, getAppRouteRenderEntryPath } from "./report.js";
|
|
7
|
+
import { loadNextConfig, resolveNextConfig } from "../config/next-config.js";
|
|
9
8
|
import { appRouteHasMainTreeLoadingBoundary, appRouter, matchAppRoute } from "../routing/app-router.js";
|
|
9
|
+
import { apiRouter, matchRoute, pagesRouter } from "../routing/pages-router.js";
|
|
10
|
+
import "../server/headers.js";
|
|
11
|
+
import { matchesMiddlewarePathname } from "../server/middleware-matcher.js";
|
|
12
|
+
import { extractLocaleFromUrl, normalizeDefaultLocalePathname } from "../server/pages-i18n.js";
|
|
13
|
+
import { classifyAppRoute, classifyAppRouteHandler, classifyPagesRoute, extractExportConstNumber, extractExportConstString, extractMiddlewareMatcherConfig, getAppRouteRenderEntryPath, hasRuntimeExportedName } from "./report.js";
|
|
10
14
|
import { normalizeStaticPathname, normalizeStaticPathsEntry } from "../routing/route-pattern.js";
|
|
11
15
|
import { buildPagesDataHref } from "../shims/internal/pages-data-url.js";
|
|
12
16
|
import { normalizePathTrailingSlash } from "../shims/url-utils.js";
|
|
13
|
-
import { BLOCKED_PAGES, PHASE_PRODUCTION_BUILD } from "../shims/constants.js";
|
|
14
|
-
import { loadNextConfig, resolveNextConfig } from "../config/next-config.js";
|
|
15
|
-
import { CACHEABILITY_POLICY_HEADERS } from "../shims/cacheability-classification.js";
|
|
16
17
|
import { pagesRouteHasPriorityOverAppRoute } from "../server/hybrid-route-priority.js";
|
|
17
18
|
import { readPrerenderSecret } from "./server-manifest.js";
|
|
19
|
+
import { loadMdxEsmReader } from "../utils/mdx-scan.js";
|
|
18
20
|
import { startProdServer } from "../server/prod-server.js";
|
|
19
21
|
import { enterPrerenderPhase } from "./prerender-phase.js";
|
|
20
|
-
import { buildUrlFromParams, resolveParentParams } from "./prerender.js";
|
|
21
|
-
import { resolveAppPageDynamicConfig } from "../server/app-segment-config.js";
|
|
22
|
+
import { buildUrlFromParams, layoutOnlyParamSets, localizePagesPath, resolveParentParams, routeStaticParamSets, validateDiscoveredParams } from "./prerender.js";
|
|
23
|
+
import { collectAppPageStaticGenerationRuntimes, hasAppPageGenerateStaticParamsAtLastDynamicSegment, isAppPageStaticEligible, isEdgeRuntime, resolveAppPageDynamicConfig, resolveAppPageSegmentConfig, resolveAppPageStaticGenerationRuntime } from "../server/app-segment-config.js";
|
|
24
|
+
import { resolveBuiltPagesEntryPath, resolveBuiltRscEntryPath } from "./server-entry.js";
|
|
22
25
|
import fs from "node:fs";
|
|
23
26
|
//#region src/build/prerender-paths.ts
|
|
24
27
|
const PRERENDER_PATH_DISCOVERY_ENV = "__VINEXT_PRERENDER_PATH_DISCOVERY";
|
|
@@ -62,7 +65,7 @@ function addPath(paths, seen, pathname) {
|
|
|
62
65
|
}
|
|
63
66
|
function throwDiscoveryFailure(route, error) {
|
|
64
67
|
const message = error instanceof Error ? error.message : String(error);
|
|
65
|
-
if (/cloudflare:|ERR_UNSUPPORTED_ESM_URL_SCHEME/i.test(message)) throw new Error(`Failed to discover warmup path(s) for ${route}: Cloudflare runtime bindings cannot execute in the local Node prerender server. Use \`vinext-cloudflare deploy --
|
|
68
|
+
if (/cloudflare:|ERR_UNSUPPORTED_ESM_URL_SCHEME/i.test(message)) throw new Error(`Failed to discover warmup path(s) for ${route}: Cloudflare runtime bindings cannot execute in the local Node prerender server. Use \`vinext-cloudflare deploy --warm-cache\` so path discovery runs against the staged Worker version.`, { cause: error });
|
|
66
69
|
throw new Error(`Failed to discover warmup path(s) for ${route}: ${message}`, { cause: error });
|
|
67
70
|
}
|
|
68
71
|
function validatePagesStaticPathsResult(value, route) {
|
|
@@ -85,28 +88,6 @@ function hasUnsafeRawUrlPathCharacter(value) {
|
|
|
85
88
|
}
|
|
86
89
|
return false;
|
|
87
90
|
}
|
|
88
|
-
function getDynamicPatternParams(pattern) {
|
|
89
|
-
return pattern.split("/").filter((segment) => segment.startsWith(":")).map((segment) => ({
|
|
90
|
-
name: segment.slice(1, segment.endsWith("+") || segment.endsWith("*") ? -1 : void 0),
|
|
91
|
-
optional: segment.endsWith("*"),
|
|
92
|
-
repeat: segment.endsWith("+") || segment.endsWith("*")
|
|
93
|
-
}));
|
|
94
|
-
}
|
|
95
|
-
function validateDiscoveredParams(value, pattern, source) {
|
|
96
|
-
if (!value || typeof value !== "object" || Array.isArray(value)) throw new Error(`${source} must return parameter objects for ${pattern}.`);
|
|
97
|
-
const params = { ...value };
|
|
98
|
-
for (const { name, optional, repeat } of getDynamicPatternParams(pattern)) {
|
|
99
|
-
const hasValue = Object.prototype.hasOwnProperty.call(params, name);
|
|
100
|
-
let paramValue = params[name];
|
|
101
|
-
if (optional && hasValue && (paramValue === null || paramValue === void 0 || paramValue === false)) {
|
|
102
|
-
paramValue = [];
|
|
103
|
-
params[name] = paramValue;
|
|
104
|
-
}
|
|
105
|
-
if (!(repeat ? Array.isArray(paramValue) && paramValue.every((entry) => typeof entry === "string") : typeof paramValue === "string")) throw new Error(`Parameter ${name} from ${source} for ${pattern} must be ${repeat ? "an array of strings" : "a string"}.`);
|
|
106
|
-
if ((Array.isArray(paramValue) ? paramValue : [paramValue]).some((entry) => entry === "." || entry === "..")) throw new Error(`Parameter ${name} from ${source} for ${pattern} must not contain dot path segments.`);
|
|
107
|
-
}
|
|
108
|
-
return params;
|
|
109
|
-
}
|
|
110
91
|
function validatePagesStaticPathsEntry(entry, pattern) {
|
|
111
92
|
if (typeof entry === "string") {
|
|
112
93
|
if (!entry.startsWith("/") || entry.includes("//") || entry.includes("?") || entry.includes("#") || hasUnsafeRawUrlPathCharacter(entry)) throw new Error(`The provided path \`${entry}\` from getStaticPaths does not match the route pattern \`${pattern}\`.`);
|
|
@@ -246,6 +227,8 @@ async function collectPagesPaths(options) {
|
|
|
246
227
|
const dataPaths = [];
|
|
247
228
|
const seenDataPaths = /* @__PURE__ */ new Set();
|
|
248
229
|
const fallbackRoutePatterns = [];
|
|
230
|
+
const nonDynamicPaths = [];
|
|
231
|
+
const seenNonDynamicPaths = /* @__PURE__ */ new Set();
|
|
249
232
|
for (const route of pageRoutes) {
|
|
250
233
|
if (apiPatterns.has(route.pattern)) continue;
|
|
251
234
|
if (BLOCKED_PAGES.includes(route.pattern)) continue;
|
|
@@ -256,14 +239,17 @@ async function collectPagesPaths(options) {
|
|
|
256
239
|
if (options.i18n) for (const locale of options.i18n.locales) {
|
|
257
240
|
const pathname = localizePagesPath(route.pattern, locale, options.i18n);
|
|
258
241
|
addPath(paths, seen, pathname);
|
|
242
|
+
addPath(nonDynamicPaths, seenNonDynamicPaths, pathname);
|
|
259
243
|
if (hasStaticProps || hasServerSideProps) addPath(dataPaths, seenDataPaths, pathname);
|
|
260
244
|
}
|
|
261
245
|
else {
|
|
262
246
|
addPath(paths, seen, route.pattern);
|
|
247
|
+
addPath(nonDynamicPaths, seenNonDynamicPaths, route.pattern);
|
|
263
248
|
if (hasStaticProps || hasServerSideProps) addPath(dataPaths, seenDataPaths, route.pattern);
|
|
264
249
|
}
|
|
265
250
|
continue;
|
|
266
251
|
}
|
|
252
|
+
if (!options.enumerateDynamicPaths) continue;
|
|
267
253
|
if (type === "ssr") continue;
|
|
268
254
|
if (!options.baseUrl) continue;
|
|
269
255
|
try {
|
|
@@ -301,6 +287,7 @@ async function collectPagesPaths(options) {
|
|
|
301
287
|
return {
|
|
302
288
|
dataPaths,
|
|
303
289
|
fallbackRoutePatterns,
|
|
290
|
+
nonDynamicPaths,
|
|
304
291
|
paths
|
|
305
292
|
};
|
|
306
293
|
}
|
|
@@ -312,19 +299,31 @@ async function excludePagesApiWarmPaths(options) {
|
|
|
312
299
|
return matchRoute(pagesPathname, apiRoutes) === null;
|
|
313
300
|
});
|
|
314
301
|
}
|
|
315
|
-
async function
|
|
302
|
+
async function resolvePagesWarmRouteMetadata(options) {
|
|
316
303
|
const pageRoutes = await pagesRouter(options.pagesDir, options.pageExtensions);
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
304
|
+
const classifications = /* @__PURE__ */ new Map();
|
|
305
|
+
const dataPaths = [];
|
|
306
|
+
const routePatterns = {};
|
|
307
|
+
for (const pathname of options.paths) {
|
|
308
|
+
const pagesPathname = options.i18n ? extractLocaleFromUrl(pathname, options.i18n).url : pathname;
|
|
309
|
+
const match = matchRoute(pagesPathname, pageRoutes);
|
|
310
|
+
if (!match) continue;
|
|
311
|
+
routePatterns[pathname] = {
|
|
320
312
|
kind: "pages-page",
|
|
321
313
|
pattern: match.route.pattern
|
|
322
|
-
}
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
314
|
+
};
|
|
315
|
+
let classification = classifications.get(match.route.filePath);
|
|
316
|
+
if (!classification) {
|
|
317
|
+
classification = classifyPagesRoute(match.route.filePath);
|
|
318
|
+
classifications.set(match.route.filePath, classification);
|
|
319
|
+
}
|
|
320
|
+
const { hasServerSideProps, hasStaticProps } = classification;
|
|
321
|
+
if (hasServerSideProps || hasStaticProps) dataPaths.push(pathname);
|
|
322
|
+
}
|
|
323
|
+
return {
|
|
324
|
+
dataPaths,
|
|
325
|
+
routePatterns
|
|
326
|
+
};
|
|
328
327
|
}
|
|
329
328
|
/**
|
|
330
329
|
* Next.js data URLs always carry the locale segment, including the default
|
|
@@ -352,27 +351,110 @@ function extractPagesStaticPathLocale(url, i18n) {
|
|
|
352
351
|
url: `${rest || "/"}${query}`
|
|
353
352
|
};
|
|
354
353
|
}
|
|
354
|
+
/**
|
|
355
|
+
* Whether Next.js classifies an App page route as static or SSG, read from its
|
|
356
|
+
* layout, page and parallel-slot sources with the helpers dispatch applies to
|
|
357
|
+
* the loaded modules. Only such a route has listed paths.
|
|
358
|
+
*
|
|
359
|
+
* An MDX source read without the MDX parser has unknown exports, so its route
|
|
360
|
+
* is "unreadable". Its paths are still listed: the built runtime reads the real
|
|
361
|
+
* exports and never stores a route that isn't static, while an unlisted path's
|
|
362
|
+
* render failure would be dropped instead of failing. But no probe renders an
|
|
363
|
+
* unreadable route's fallback, so it never certifies one.
|
|
364
|
+
*/
|
|
365
|
+
function classifyAppPageRouteStaticEligibility(route, readMdxEsm) {
|
|
366
|
+
let unreadable = false;
|
|
367
|
+
const readSegmentConfig = (filePath) => {
|
|
368
|
+
if (!filePath) return null;
|
|
369
|
+
let code = fs.readFileSync(filePath, "utf8");
|
|
370
|
+
if (filePath.toLowerCase().endsWith(".mdx")) {
|
|
371
|
+
let esm = null;
|
|
372
|
+
try {
|
|
373
|
+
esm = readMdxEsm?.(code) ?? null;
|
|
374
|
+
} catch {}
|
|
375
|
+
unreadable ||= esm === null;
|
|
376
|
+
code = esm ?? "";
|
|
377
|
+
}
|
|
378
|
+
const dynamic = extractExportConstString(code, "dynamic");
|
|
379
|
+
const revalidate = extractExportConstNumber(code, "revalidate");
|
|
380
|
+
const runtime = extractExportConstString(code, "runtime");
|
|
381
|
+
return {
|
|
382
|
+
...dynamic === null ? {} : { dynamic },
|
|
383
|
+
...hasRuntimeExportedName(code, "generateStaticParams") ? { generateStaticParams() {} } : {},
|
|
384
|
+
...revalidate === null ? {} : { revalidate },
|
|
385
|
+
...runtime === null ? {} : { runtime }
|
|
386
|
+
};
|
|
387
|
+
};
|
|
388
|
+
const layouts = route.layouts.map(readSegmentConfig);
|
|
389
|
+
const page = readSegmentConfig(route.pagePath);
|
|
390
|
+
const parallelBranches = route.parallelSlots.map((slot) => ({
|
|
391
|
+
configLayouts: (slot.configLayoutPaths ?? []).map(readSegmentConfig),
|
|
392
|
+
configLayoutTreePositions: slot.configLayoutTreePositions ?? [],
|
|
393
|
+
isDefault: !slot.pagePath,
|
|
394
|
+
layout: readSegmentConfig(slot.layoutPath),
|
|
395
|
+
name: slot.name,
|
|
396
|
+
ownerTreePosition: slot.ownerTreePosition ?? null,
|
|
397
|
+
page: readSegmentConfig(slot.pagePath ?? slot.defaultPath),
|
|
398
|
+
routeSegments: slot.routeSegments
|
|
399
|
+
}));
|
|
400
|
+
if (unreadable) return "unreadable";
|
|
401
|
+
const segmentConfig = resolveAppPageSegmentConfig({
|
|
402
|
+
layouts,
|
|
403
|
+
layoutTreePositions: route.layoutTreePositions,
|
|
404
|
+
page,
|
|
405
|
+
parallelBranches,
|
|
406
|
+
routeSegments: route.routeSegments
|
|
407
|
+
});
|
|
408
|
+
return isAppPageStaticEligible({
|
|
409
|
+
dynamicConfig: segmentConfig.dynamicConfig,
|
|
410
|
+
hasGenerateStaticParams: hasAppPageGenerateStaticParamsAtLastDynamicSegment({
|
|
411
|
+
childrenSlot: route.childrenSlot ?? null,
|
|
412
|
+
layouts,
|
|
413
|
+
layoutTreePositions: route.layoutTreePositions,
|
|
414
|
+
page,
|
|
415
|
+
parallelBranches,
|
|
416
|
+
routeSegments: route.routeSegments
|
|
417
|
+
}),
|
|
418
|
+
isDynamicRoute: route.isDynamic,
|
|
419
|
+
isStaticGenerationEdgeRuntime: isEdgeRuntime(resolveAppPageStaticGenerationRuntime(collectAppPageStaticGenerationRuntimes({
|
|
420
|
+
childrenSlot: route.childrenSlot ?? null,
|
|
421
|
+
layouts,
|
|
422
|
+
layoutTreePositions: route.layoutTreePositions,
|
|
423
|
+
page,
|
|
424
|
+
parallelBranches,
|
|
425
|
+
routeSegments: route.routeSegments
|
|
426
|
+
}))),
|
|
427
|
+
revalidateSeconds: segmentConfig.revalidateSeconds
|
|
428
|
+
}) ? "eligible" : "ineligible";
|
|
429
|
+
}
|
|
430
|
+
/** Keys a path an App page route lists by the route and the pathname together. */
|
|
431
|
+
function appPageListingKey(routePattern, pathname) {
|
|
432
|
+
return `${routePattern}\0${pathname}`;
|
|
433
|
+
}
|
|
355
434
|
async function collectAppPaths(options) {
|
|
356
435
|
const routes = await appRouter(options.appDir, options.pageExtensions);
|
|
357
436
|
const paths = [];
|
|
358
437
|
const seen = /* @__PURE__ */ new Set();
|
|
359
|
-
const loadingShellPaths = [];
|
|
360
|
-
const seenLoadingShellPaths = /* @__PURE__ */ new Set();
|
|
361
438
|
const routeHandlerPaths = [];
|
|
362
439
|
const seenRouteHandlerPaths = /* @__PURE__ */ new Set();
|
|
363
440
|
const fallbackRoutePatterns = [];
|
|
441
|
+
const nonDynamicPaths = [];
|
|
442
|
+
const seenNonDynamicPaths = /* @__PURE__ */ new Set();
|
|
443
|
+
const listedRoutePaths = /* @__PURE__ */ new Set();
|
|
364
444
|
const staticParamsCache = /* @__PURE__ */ new Map();
|
|
365
445
|
let requireNonEmptyStaticParams = false;
|
|
366
446
|
const staticParamsMap = new Proxy({}, {
|
|
367
447
|
get(_target, pattern) {
|
|
368
448
|
return async ({ params }) => {
|
|
369
449
|
if (!options.baseUrl) return null;
|
|
370
|
-
const
|
|
450
|
+
const rejectEmptyResults = requireNonEmptyStaticParams;
|
|
451
|
+
const cacheKey = `${pattern}\0${JSON.stringify(params)}\0${rejectEmptyResults}`;
|
|
371
452
|
let request = staticParamsCache.get(cacheKey);
|
|
372
453
|
if (request === void 0) {
|
|
373
454
|
request = (async () => {
|
|
374
455
|
const search = new URLSearchParams({ pattern });
|
|
375
456
|
if (Object.keys(params).length > 0) search.set("parentParams", JSON.stringify(params));
|
|
457
|
+
if (rejectEmptyResults) search.set("rejectEmptyResults", "1");
|
|
376
458
|
const text = await fetchDiscoveryEndpoint(`${options.baseUrl}/__vinext/prerender/static-params?${search}`, options.secretHeaders, options.retryOptions);
|
|
377
459
|
if (text === null) return null;
|
|
378
460
|
const value = JSON.parse(text);
|
|
@@ -389,7 +471,7 @@ async function collectAppPaths(options) {
|
|
|
389
471
|
staticParamsCache.set(cacheKey, request);
|
|
390
472
|
}
|
|
391
473
|
const value = await request;
|
|
392
|
-
if (
|
|
474
|
+
if (rejectEmptyResults && value?.length === 0) throw new Error("When using Cache Components, all `generateStaticParams` functions must return at least one result. This is to ensure that we can perform build-time validation that there is no other dynamic accesses that would cause a runtime error.\n\nLearn more: https://nextjs.org/docs/messages/empty-generate-static-params");
|
|
393
475
|
return value;
|
|
394
476
|
};
|
|
395
477
|
},
|
|
@@ -397,6 +479,7 @@ async function collectAppPaths(options) {
|
|
|
397
479
|
return false;
|
|
398
480
|
}
|
|
399
481
|
});
|
|
482
|
+
const readMdxEsm = !options.cacheComponents && options.pageExtensions.includes("mdx") ? await loadMdxEsmReader(options.root) : null;
|
|
400
483
|
for (const route of routes) {
|
|
401
484
|
const isRouteHandler = route.routePath !== null && route.pagePath === null;
|
|
402
485
|
const renderEntryPath = isRouteHandler ? route.routePath : getAppRouteRenderEntryPath(route);
|
|
@@ -408,19 +491,22 @@ async function collectAppPaths(options) {
|
|
|
408
491
|
const { type } = classifyAppRoute(renderEntryPath, route.routePath, route.isDynamic);
|
|
409
492
|
if (type === "api") continue;
|
|
410
493
|
}
|
|
411
|
-
const
|
|
494
|
+
const staticEligibility = isRouteHandler || options.cacheComponents ? "eligible" : classifyAppPageRouteStaticEligibility(route, readMdxEsm);
|
|
495
|
+
const isStaticEligible = staticEligibility !== "ineligible";
|
|
412
496
|
const addDiscoveredPath = (pathname) => {
|
|
413
497
|
if (isRouteHandler) {
|
|
414
498
|
addPath(routeHandlerPaths, seenRouteHandlerPaths, pathname);
|
|
415
499
|
return;
|
|
416
500
|
}
|
|
417
501
|
addPath(paths, seen, pathname);
|
|
418
|
-
if (
|
|
502
|
+
if (isStaticEligible) listedRoutePaths.add(appPageListingKey(route.pattern, pathname));
|
|
419
503
|
};
|
|
420
504
|
if (!route.isDynamic) {
|
|
421
505
|
addDiscoveredPath(route.pattern);
|
|
506
|
+
addPath(nonDynamicPaths, seenNonDynamicPaths, route.pattern);
|
|
422
507
|
continue;
|
|
423
508
|
}
|
|
509
|
+
if (!options.enumerateDynamicPaths) continue;
|
|
424
510
|
requireNonEmptyStaticParams = options.cacheComponents && !isRouteHandler;
|
|
425
511
|
try {
|
|
426
512
|
const generateStaticParams = staticParamsMap[route.pattern];
|
|
@@ -432,20 +518,21 @@ async function collectAppPaths(options) {
|
|
|
432
518
|
for (const parentParams of parentParamSets) {
|
|
433
519
|
const childResults = await generateStaticParams({ params: parentParams });
|
|
434
520
|
if (childResults === null) {
|
|
435
|
-
paramSets =
|
|
521
|
+
paramSets = layoutOnlyParamSets(route, parentParamSets);
|
|
436
522
|
break;
|
|
437
523
|
}
|
|
438
|
-
if (Array.isArray(childResults))
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
524
|
+
if (Array.isArray(childResults)) {
|
|
525
|
+
if (childResults.length === 0) paramSets.push(parentParams);
|
|
526
|
+
for (const childParams of childResults) paramSets.push({
|
|
527
|
+
...parentParams,
|
|
528
|
+
...childParams
|
|
529
|
+
});
|
|
530
|
+
}
|
|
442
531
|
}
|
|
532
|
+
if (paramSets !== null) paramSets = routeStaticParamSets(route, paramSets);
|
|
443
533
|
} else {
|
|
444
534
|
const results = await generateStaticParams({ params: {} });
|
|
445
|
-
|
|
446
|
-
const layoutParamSets = await resolveParentParams(route, staticParamsMap, { includeLastDynamicSegment: true });
|
|
447
|
-
paramSets = layoutParamSets.length > 0 ? layoutParamSets : null;
|
|
448
|
-
} else paramSets = Array.isArray(results) ? results : [];
|
|
535
|
+
paramSets = results === null ? null : routeStaticParamSets(route, Array.isArray(results) ? results : []);
|
|
449
536
|
}
|
|
450
537
|
if (!paramSets?.length) {
|
|
451
538
|
if (isRouteHandler) {
|
|
@@ -475,7 +562,7 @@ async function collectAppPaths(options) {
|
|
|
475
562
|
page: readDynamicConfig(renderEntryPath),
|
|
476
563
|
parallelSegments: parallelSegments.map(readDynamicConfig)
|
|
477
564
|
});
|
|
478
|
-
if ((paramSets !== null || dynamicConfig === "force-static" || dynamicConfig === "error") && !hasDynamicSegment) fallbackRoutePatterns.push({
|
|
565
|
+
if ((paramSets !== null || dynamicConfig === "force-static" || dynamicConfig === "error") && !hasDynamicSegment && staticEligibility === "eligible") fallbackRoutePatterns.push({
|
|
479
566
|
kind: "app-page",
|
|
480
567
|
pattern: route.pattern
|
|
481
568
|
});
|
|
@@ -491,13 +578,15 @@ async function collectAppPaths(options) {
|
|
|
491
578
|
}
|
|
492
579
|
return {
|
|
493
580
|
fallbackRoutePatterns,
|
|
494
|
-
|
|
581
|
+
nonDynamicPaths,
|
|
495
582
|
paths,
|
|
496
|
-
routeHandlerPaths
|
|
583
|
+
routeHandlerPaths,
|
|
584
|
+
listedRoutePaths
|
|
497
585
|
};
|
|
498
586
|
}
|
|
499
587
|
async function resolveAppWarmPaths(options) {
|
|
500
588
|
const appRoutes = await appRouter(options.appDir, options.pageExtensions);
|
|
589
|
+
const loadingBoundaryRoutePatterns = appRoutes.filter((route) => !(route.routePath && !route.pagePath) && appRouteHasMainTreeLoadingBoundary(route)).map((route) => route.pattern).sort();
|
|
501
590
|
const routeHandlerClassifications = new Map(appRoutes.flatMap((route) => route.routePath && !route.pagePath ? [[route.routePath, classifyAppRouteHandler(route.routePath)]] : []));
|
|
502
591
|
const [pageRoutes, apiRoutes] = options.pagesDir ? await Promise.all([pagesRouter(options.pagesDir, options.pageExtensions), apiRouter(options.pagesDir, options.pageExtensions)]) : [[], []];
|
|
503
592
|
const rscPaths = [];
|
|
@@ -552,13 +641,13 @@ async function resolveAppWarmPaths(options) {
|
|
|
552
641
|
appPaths,
|
|
553
642
|
appRoutePaths,
|
|
554
643
|
htmlPaths,
|
|
644
|
+
loadingBoundaryRoutePatterns,
|
|
555
645
|
loadingShellPaths,
|
|
556
646
|
pagesPaths,
|
|
557
647
|
routePatterns,
|
|
558
648
|
rscPaths
|
|
559
649
|
};
|
|
560
650
|
}
|
|
561
|
-
const CACHEABILITY_POLICY_HEADER_NAMES = new Set(CACHEABILITY_POLICY_HEADERS);
|
|
562
651
|
function cachePolicyRuleMatchesWarmPath(pathname, rule, config) {
|
|
563
652
|
const canonicalPathname = normalizePathTrailingSlash(pathname, config.trailingSlash);
|
|
564
653
|
return [void 0, ...config.i18n?.domains?.map((domain) => domain.domain) ?? []].some((hostname) => {
|
|
@@ -607,8 +696,8 @@ function routePatternCouldIntersectCachePolicyRule(routePattern, rule, basePath)
|
|
|
607
696
|
* request-specific next.config cache policy. The final Worker still evaluates
|
|
608
697
|
* every concrete response before emitting public cache headers.
|
|
609
698
|
*/
|
|
610
|
-
function annotateCacheabilityProbeSafety(routePatterns, config) {
|
|
611
|
-
const cachePolicyRules = config.headers.filter((rule) => rule.headers.some((header) =>
|
|
699
|
+
function annotateCacheabilityProbeSafety(routePatterns, config, routeMayResolve, requestStageMayTerminate, unlisted, isResponsePolicyHeader) {
|
|
700
|
+
const cachePolicyRules = config.headers.filter((rule) => rule.headers.some((header) => isResponsePolicyHeader(header.key)));
|
|
612
701
|
const matchingPolicyRules = new Map(Object.keys(routePatterns).map((pathname) => [pathname, new Set(cachePolicyRules.filter((rule) => cachePolicyRuleMatchesWarmPath(pathname, rule, config)))]));
|
|
613
702
|
const pathsByPattern = /* @__PURE__ */ new Map();
|
|
614
703
|
for (const [pathname, route] of Object.entries(routePatterns)) {
|
|
@@ -628,44 +717,82 @@ function annotateCacheabilityProbeSafety(routePatterns, config) {
|
|
|
628
717
|
const canPrunePattern = canPrunePatterns.get(patternKey) ?? false;
|
|
629
718
|
return [pathname, {
|
|
630
719
|
...route,
|
|
631
|
-
cacheabilityProbe: {
|
|
720
|
+
cacheabilityProbe: {
|
|
721
|
+
canPrunePattern,
|
|
722
|
+
...routeMayResolve.has(pathname) ? { routeMayResolve: true } : {},
|
|
723
|
+
...requestStageMayTerminate.has(pathname) ? { requestStageMayTerminate: true } : {},
|
|
724
|
+
...unlisted.has(pathname) ? { unlisted: true } : {}
|
|
725
|
+
}
|
|
632
726
|
}];
|
|
633
727
|
}));
|
|
634
728
|
}
|
|
635
|
-
function
|
|
729
|
+
function configuredRulesAffectWarmPath(pathname, rules, config) {
|
|
636
730
|
const canonicalPathname = normalizePathTrailingSlash(pathname, config.trailingSlash);
|
|
637
731
|
const hostnames = [void 0, ...config.i18n?.domains?.map((domain) => domain.domain) ?? []];
|
|
638
732
|
const matchPathnames = new Set(hostnames.map((hostname) => normalizeDefaultLocalePathname(canonicalPathname, config.i18n, { hostname })));
|
|
639
|
-
return
|
|
640
|
-
...config.rewrites.beforeFiles,
|
|
641
|
-
...config.rewrites.afterFiles,
|
|
642
|
-
...config.rewrites.fallback
|
|
643
|
-
], ...config.redirects].some((rule) => Array.from(matchPathnames).some((matchPathname) => matchesRewriteSource(matchPathname, rule, {
|
|
733
|
+
return rules.some((rule) => Array.from(matchPathnames).some((matchPathname) => matchesRewriteSource(matchPathname, rule, {
|
|
644
734
|
basePath: config.basePath,
|
|
645
735
|
hadBasePath: true
|
|
646
736
|
})));
|
|
647
737
|
}
|
|
738
|
+
/**
|
|
739
|
+
* Whether a configured rewrite can replace a route-owned warm response.
|
|
740
|
+
* Non-dynamic filesystem routes win before `afterFiles`, while every concrete
|
|
741
|
+
* path discovered here wins dynamic matching before `fallback`.
|
|
742
|
+
*/
|
|
743
|
+
function configuredRewritesCanReplaceWarmPath(pathname, rewrites, hasNonDynamicRoute, config, include) {
|
|
744
|
+
return configuredRulesAffectWarmPath(pathname, [...rewrites.beforeFiles.filter(include), ...hasNonDynamicRoute ? [] : rewrites.afterFiles.filter(include)], config);
|
|
745
|
+
}
|
|
746
|
+
function findMiddlewareConventionFile(root, appDir, pagesDir, pageExtensions) {
|
|
747
|
+
const routeDir = appDir ?? pagesDir;
|
|
748
|
+
const routeRoot = routeDir ? path.dirname(routeDir) : root;
|
|
749
|
+
const conventionDir = routeRoot === path.join(root, "src") ? routeRoot : root;
|
|
750
|
+
for (const name of ["proxy", "middleware"]) for (const extension of pageExtensions) {
|
|
751
|
+
const filePath = path.join(conventionDir, `${name}.${extension}`);
|
|
752
|
+
if (fs.existsSync(filePath)) return filePath;
|
|
753
|
+
}
|
|
754
|
+
return null;
|
|
755
|
+
}
|
|
756
|
+
/** @internal Match the pathname forms and locale provenance used by middleware runtime. */
|
|
757
|
+
function matchesMiddlewareWarmPath(pathname, matcher, i18n) {
|
|
758
|
+
const encodedPathname = new URL(pathname, "https://vinext.invalid").pathname;
|
|
759
|
+
const firstSegment = encodedPathname.split("/", 3)[1]?.toLowerCase();
|
|
760
|
+
const localeContexts = i18n ? i18n.locales.some((locale) => locale.toLowerCase() === firstSegment) ? [{ kind: "literal" }] : Array.from(/* @__PURE__ */ new Set([i18n.defaultLocale, ...i18n.domains?.map((domain) => domain.defaultLocale) ?? []]), (defaultLocale) => ({
|
|
761
|
+
defaultLocale,
|
|
762
|
+
kind: "defaulted"
|
|
763
|
+
})) : [void 0];
|
|
764
|
+
const matchPathnames = [encodedPathname];
|
|
765
|
+
try {
|
|
766
|
+
const decodedPathname = decodeURIComponent(encodedPathname);
|
|
767
|
+
if (decodedPathname !== encodedPathname) matchPathnames.push(decodedPathname);
|
|
768
|
+
} catch {}
|
|
769
|
+
return matchPathnames.some((matchPathname) => localeContexts.some((localeContext) => matchesMiddlewarePathname(matchPathname, matcher, i18n, localeContext)));
|
|
770
|
+
}
|
|
648
771
|
async function startPathDiscoveryServer(options) {
|
|
649
772
|
return startProdServer({
|
|
650
773
|
port: 0,
|
|
651
774
|
host: "127.0.0.1",
|
|
652
775
|
outDir: options.pagesBundlePath ? path.dirname(path.dirname(options.pagesBundlePath)) : path.dirname(options.serverDir),
|
|
653
776
|
rscEntryPath: options.rscBundlePath,
|
|
777
|
+
serverDir: options.serverDir,
|
|
654
778
|
serverEntryPath: options.pagesBundlePath,
|
|
655
779
|
noCompression: true,
|
|
656
780
|
purpose: "prerender"
|
|
657
781
|
});
|
|
658
782
|
}
|
|
659
|
-
async function
|
|
783
|
+
async function discoverPrerenderPathManifest(options) {
|
|
660
784
|
const { root } = options;
|
|
661
785
|
const configuredRouteDirs = resolveConfiguredRouteDirs(root, options.routeRootConfig);
|
|
662
786
|
const appDir = options.appDir !== void 0 ? options.appDir : configuredRouteDirs.appDir;
|
|
663
787
|
const pagesDir = options.pagesDir !== void 0 ? options.pagesDir : configuredRouteDirs.pagesDir;
|
|
664
788
|
if (!appDir && !pagesDir) return null;
|
|
665
|
-
const
|
|
789
|
+
const configuredRscServerDir = options.routeRootConfig?.rscOutDir ? path.resolve(root, options.routeRootConfig.rscOutDir) : path.join(root, "dist", "server");
|
|
790
|
+
const defaultRscBundlePath = resolveBuiltRscEntryPath(configuredRscServerDir);
|
|
666
791
|
const rscBundlePath = options.rscBundlePath ?? defaultRscBundlePath;
|
|
667
|
-
const
|
|
668
|
-
const
|
|
792
|
+
const relativeRscEntryPath = path.relative(configuredRscServerDir, rscBundlePath);
|
|
793
|
+
const rscServerDir = !relativeRscEntryPath.startsWith("../") && !path.isAbsolute(relativeRscEntryPath) ? configuredRscServerDir : path.dirname(rscBundlePath);
|
|
794
|
+
const pagesBundlePath = options.pagesBundlePath ?? resolveBuiltPagesEntryPath(path.resolve(root, options.routeRootConfig?.ssrOutDir ?? path.join("dist", "server")));
|
|
795
|
+
const bundleServerDir = fs.existsSync(rscBundlePath) ? rscServerDir : path.dirname(pagesBundlePath);
|
|
669
796
|
const manifestDir = path.join(root, "dist", "server");
|
|
670
797
|
const config = options.nextConfig ? { ...options.nextConfig } : { ...await resolveNextConfig(await loadNextConfig(root, PHASE_PRODUCTION_BUILD), root) };
|
|
671
798
|
const builtBuildId = readBuiltBuildId(manifestDir) ?? readBuiltBuildId(bundleServerDir);
|
|
@@ -677,12 +804,11 @@ async function emitPrerenderPathManifest(options) {
|
|
|
677
804
|
const seenPagesPaths = /* @__PURE__ */ new Set();
|
|
678
805
|
const discoveredPagesDataPaths = [];
|
|
679
806
|
const seenPagesDataPaths = /* @__PURE__ */ new Set();
|
|
680
|
-
const discoveredAppPaths = [];
|
|
681
|
-
const seenAppPaths = /* @__PURE__ */ new Set();
|
|
682
807
|
const discoveredRouteHandlerPaths = [];
|
|
683
808
|
const seenRouteHandlerPaths = /* @__PURE__ */ new Set();
|
|
684
|
-
const
|
|
685
|
-
const
|
|
809
|
+
const discoveredNonDynamicPathSet = /* @__PURE__ */ new Set();
|
|
810
|
+
const appListedRoutePaths = /* @__PURE__ */ new Set();
|
|
811
|
+
const candidateOnlyPathSet = /* @__PURE__ */ new Set();
|
|
686
812
|
const fallbackRoutePatterns = [];
|
|
687
813
|
await withPrerenderEndpoints(async () => {
|
|
688
814
|
let prodServer = null;
|
|
@@ -718,21 +844,22 @@ async function emitPrerenderPathManifest(options) {
|
|
|
718
844
|
appDir,
|
|
719
845
|
baseUrl,
|
|
720
846
|
cacheComponents: config.cacheComponents,
|
|
847
|
+
enumerateDynamicPaths: options.candidatePathsOnly !== true,
|
|
721
848
|
pageExtensions: config.pageExtensions,
|
|
722
849
|
retryOptions: pathDiscoveryRetryOptions,
|
|
850
|
+
root,
|
|
723
851
|
secretHeaders
|
|
724
852
|
});
|
|
725
|
-
for (const pathname of appPathResult.paths)
|
|
726
|
-
addPath(paths, seen, pathname);
|
|
727
|
-
addPath(discoveredAppPaths, seenAppPaths, pathname);
|
|
728
|
-
}
|
|
729
|
-
for (const pathname of appPathResult.loadingShellPaths) addPath(discoveredLoadingShellPaths, seenLoadingShellPaths, pathname);
|
|
853
|
+
for (const pathname of appPathResult.paths) addPath(paths, seen, pathname);
|
|
730
854
|
for (const pathname of appPathResult.routeHandlerPaths) addPath(discoveredRouteHandlerPaths, seenRouteHandlerPaths, pathname);
|
|
855
|
+
for (const pathname of appPathResult.nonDynamicPaths) discoveredNonDynamicPathSet.add(pathname);
|
|
731
856
|
fallbackRoutePatterns.push(...appPathResult.fallbackRoutePatterns);
|
|
857
|
+
for (const key of appPathResult.listedRoutePaths) appListedRoutePaths.add(key);
|
|
732
858
|
}
|
|
733
859
|
if (pagesDir) {
|
|
734
860
|
const pagesPathResult = await collectPagesPaths({
|
|
735
861
|
baseUrl,
|
|
862
|
+
enumerateDynamicPaths: options.candidatePathsOnly !== true,
|
|
736
863
|
i18n: config.i18n,
|
|
737
864
|
pagesDir,
|
|
738
865
|
pageExtensions: config.pageExtensions,
|
|
@@ -744,13 +871,32 @@ async function emitPrerenderPathManifest(options) {
|
|
|
744
871
|
addPath(discoveredPagesPaths, seenPagesPaths, pathname);
|
|
745
872
|
}
|
|
746
873
|
for (const pathname of pagesPathResult.dataPaths) addPath(discoveredPagesDataPaths, seenPagesDataPaths, pathname);
|
|
874
|
+
for (const pathname of pagesPathResult.nonDynamicPaths) discoveredNonDynamicPathSet.add(pathname);
|
|
747
875
|
fallbackRoutePatterns.push(...pagesPathResult.fallbackRoutePatterns);
|
|
748
876
|
}
|
|
749
877
|
} finally {
|
|
750
878
|
if (prodServer) await new Promise((resolve) => prodServer.server.close(() => resolve()));
|
|
751
879
|
}
|
|
752
880
|
});
|
|
753
|
-
const
|
|
881
|
+
for (const publicPathname of options.candidatePaths ?? []) {
|
|
882
|
+
let pathname = normalizePathTrailingSlash(new URL(publicPathname, "http://vinext.local").pathname, false);
|
|
883
|
+
if (config.basePath) {
|
|
884
|
+
if (pathname === config.basePath) pathname = "/";
|
|
885
|
+
else if (pathname.startsWith(`${config.basePath}/`)) pathname = pathname.slice(config.basePath.length);
|
|
886
|
+
else continue;
|
|
887
|
+
}
|
|
888
|
+
if (!seen.has(pathname)) candidateOnlyPathSet.add(pathname);
|
|
889
|
+
addPath(paths, seen, pathname);
|
|
890
|
+
if (pagesDir) addPath(discoveredPagesPaths, seenPagesPaths, pathname);
|
|
891
|
+
}
|
|
892
|
+
const hasStagedRequestRouting = options.requestRouting === "uncached-stage";
|
|
893
|
+
const middlewarePath = hasStagedRequestRouting ? findMiddlewareConventionFile(root, appDir, pagesDir, config.pageExtensions) : null;
|
|
894
|
+
const configuredMatcher = middlewarePath ? extractMiddlewareMatcherConfig(middlewarePath) : void 0;
|
|
895
|
+
const middlewareMayRouteWarmPath = (pathname) => middlewarePath !== null && matchesMiddlewareWarmPath(pathname, configuredMatcher, config.i18n);
|
|
896
|
+
const routedWarmPaths = [...paths, ...discoveredRouteHandlerPaths];
|
|
897
|
+
const routeMayResolveWarmPathSet = new Set(hasStagedRequestRouting ? routedWarmPaths.filter((pathname) => middlewareMayRouteWarmPath(pathname) || configuredRewritesCanReplaceWarmPath(pathname, config.rewrites, discoveredNonDynamicPathSet.has(pathname), config, (rewrite) => !isExternalUrl(rewrite.destination))) : []);
|
|
898
|
+
const requestStageMayTerminateWarmPathSet = new Set(hasStagedRequestRouting ? routedWarmPaths.filter((pathname) => middlewareMayRouteWarmPath(pathname) || configuredRulesAffectWarmPath(pathname, config.redirects, config) || configuredRewritesCanReplaceWarmPath(pathname, config.rewrites, discoveredNonDynamicPathSet.has(pathname), config, (rewrite) => isExternalUrl(rewrite.destination))) : []);
|
|
899
|
+
const excludedWarmPathSet = new Set(options.responseVary && !hasStagedRequestRouting ? routedWarmPaths.filter((pathname) => configuredRulesAffectWarmPath(pathname, config.redirects, config) || configuredRewritesCanReplaceWarmPath(pathname, config.rewrites, discoveredNonDynamicPathSet.has(pathname), config, () => true)) : []);
|
|
754
900
|
const configuredPagesWarmPaths = discoveredPagesPaths.filter((pathname) => !excludedWarmPathSet.has(pathname));
|
|
755
901
|
const resolvedPagesWarmPaths = !appDir && pagesDir ? await excludePagesApiWarmPaths({
|
|
756
902
|
i18n: config.i18n,
|
|
@@ -758,9 +904,20 @@ async function emitPrerenderPathManifest(options) {
|
|
|
758
904
|
pageExtensions: config.pageExtensions,
|
|
759
905
|
paths: configuredPagesWarmPaths
|
|
760
906
|
}) : configuredPagesWarmPaths;
|
|
761
|
-
const discoveredPagesDataPathSet = new Set(discoveredPagesDataPaths);
|
|
762
907
|
const configuredCandidatePaths = paths.filter((pathname) => !excludedWarmPathSet.has(pathname));
|
|
763
908
|
const configuredRouteHandlerPaths = discoveredRouteHandlerPaths.filter((pathname) => !excludedWarmPathSet.has(pathname));
|
|
909
|
+
const pagesWarmMetadata = pagesDir ? await resolvePagesWarmRouteMetadata({
|
|
910
|
+
i18n: config.i18n,
|
|
911
|
+
pagesDir,
|
|
912
|
+
pageExtensions: config.pageExtensions,
|
|
913
|
+
paths: resolvedPagesWarmPaths
|
|
914
|
+
}) : {
|
|
915
|
+
dataPaths: [],
|
|
916
|
+
routePatterns: {}
|
|
917
|
+
};
|
|
918
|
+
for (const pathname of pagesWarmMetadata.dataPaths) addPath(discoveredPagesDataPaths, seenPagesDataPaths, pathname);
|
|
919
|
+
const discoveredPagesDataPathSet = new Set(discoveredPagesDataPaths);
|
|
920
|
+
const pagesOnlyWarmPaths = resolvedPagesWarmPaths.filter((pathname) => pagesWarmMetadata.routePatterns[pathname] !== void 0);
|
|
764
921
|
const appOwnedWarmPaths = appDir ? await resolveAppWarmPaths({
|
|
765
922
|
appDir,
|
|
766
923
|
i18n: config.i18n,
|
|
@@ -770,22 +927,29 @@ async function emitPrerenderPathManifest(options) {
|
|
|
770
927
|
}) : {
|
|
771
928
|
appPaths: [],
|
|
772
929
|
appRoutePaths: [],
|
|
773
|
-
htmlPaths:
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
pageExtensions: config.pageExtensions,
|
|
780
|
-
paths: resolvedPagesWarmPaths
|
|
781
|
-
}) : {},
|
|
782
|
-
rscPaths: discoveredAppPaths
|
|
930
|
+
htmlPaths: pagesOnlyWarmPaths,
|
|
931
|
+
loadingBoundaryRoutePatterns: [],
|
|
932
|
+
loadingShellPaths: [],
|
|
933
|
+
pagesPaths: pagesOnlyWarmPaths,
|
|
934
|
+
routePatterns: pagesWarmMetadata.routePatterns,
|
|
935
|
+
rscPaths: []
|
|
783
936
|
};
|
|
784
|
-
const
|
|
785
|
-
|
|
937
|
+
for (const pathname of configuredCandidatePaths) {
|
|
938
|
+
if (appOwnedWarmPaths.routePatterns[pathname] || !routeMayResolveWarmPathSet.has(pathname) && !requestStageMayTerminateWarmPathSet.has(pathname)) continue;
|
|
939
|
+
appOwnedWarmPaths.htmlPaths.push(pathname);
|
|
940
|
+
(appDir ? appOwnedWarmPaths.appPaths : appOwnedWarmPaths.pagesPaths).push(pathname);
|
|
941
|
+
if (appDir && routeMayResolveWarmPathSet.has(pathname)) appOwnedWarmPaths.rscPaths.push(pathname);
|
|
942
|
+
appOwnedWarmPaths.routePatterns[pathname] = {
|
|
943
|
+
kind: appDir ? "app-page" : "pages-page",
|
|
944
|
+
pattern: pathname
|
|
945
|
+
};
|
|
946
|
+
}
|
|
947
|
+
const warmPaths = appOwnedWarmPaths.htmlPaths;
|
|
948
|
+
const pagesOwnedWarmPaths = appOwnedWarmPaths.pagesPaths;
|
|
786
949
|
const resolvedPagesDataWarmPaths = pagesOwnedWarmPaths.filter((pathname) => discoveredPagesDataPathSet.has(pathname));
|
|
787
950
|
const pagesDataPaths = resolvedPagesDataWarmPaths.map((pathname) => buildPagesDataHref(config.basePath, config.buildId, localizePagesDataPath(pathname, config.i18n), ""));
|
|
788
|
-
const
|
|
951
|
+
const unlistedPathSet = new Set(Object.entries(appOwnedWarmPaths.routePatterns).flatMap(([pathname, route]) => (route.kind === "app-page" ? !appListedRoutePaths.has(appPageListingKey(route.pattern, pathname)) : candidateOnlyPathSet.has(pathname)) ? [pathname] : []));
|
|
952
|
+
const routePatterns = annotateCacheabilityProbeSafety(appOwnedWarmPaths.routePatterns, config, routeMayResolveWarmPathSet, requestStageMayTerminateWarmPathSet, unlistedPathSet, (name) => name.trim().toLowerCase() === "cache-control" || options.isResponsePolicyHeader?.(name) === true);
|
|
789
953
|
for (let index = 0; index < resolvedPagesDataWarmPaths.length; index++) {
|
|
790
954
|
const route = routePatterns[resolvedPagesDataWarmPaths[index]];
|
|
791
955
|
if (route) {
|
|
@@ -799,6 +963,7 @@ async function emitPrerenderPathManifest(options) {
|
|
|
799
963
|
};
|
|
800
964
|
}
|
|
801
965
|
}
|
|
966
|
+
const includeCanonicalRsc = options.responseVary || options.includeCanonicalRsc;
|
|
802
967
|
const manifest = {
|
|
803
968
|
...appDir ? { appPaths: appOwnedWarmPaths.appPaths } : {},
|
|
804
969
|
...config.basePath ? { basePath: config.basePath } : {},
|
|
@@ -811,19 +976,26 @@ async function emitPrerenderPathManifest(options) {
|
|
|
811
976
|
} : {},
|
|
812
977
|
...excludedWarmPathSet.size > 0 ? { excludedWarmPaths: Array.from(excludedWarmPathSet) } : {},
|
|
813
978
|
...fallbackRoutePatterns.length > 0 ? { fallbackRoutePatterns } : {},
|
|
979
|
+
...appOwnedWarmPaths.loadingBoundaryRoutePatterns.length > 0 ? { loadingBoundaryRoutePatterns: appOwnedWarmPaths.loadingBoundaryRoutePatterns } : {},
|
|
814
980
|
...rscBuildId ? { rscBuildId } : {},
|
|
815
981
|
...options.responseVary ? { responseVary: options.responseVary } : {},
|
|
816
|
-
...
|
|
982
|
+
...includeCanonicalRsc ? { rscPaths: appOwnedWarmPaths.rscPaths } : {},
|
|
817
983
|
...Object.keys(routePatterns).length > 0 ? { routePatterns } : {},
|
|
818
984
|
...appOwnedWarmPaths.appRoutePaths.length > 0 ? { routeHandlerPaths: appOwnedWarmPaths.appRoutePaths } : {},
|
|
819
|
-
...
|
|
985
|
+
...includeCanonicalRsc ? { loadingShellPaths: appOwnedWarmPaths.loadingShellPaths } : {},
|
|
820
986
|
trailingSlash: config.trailingSlash,
|
|
821
987
|
paths: warmPaths
|
|
822
988
|
};
|
|
989
|
+
console.log(` Discovered ${warmPaths.length + appOwnedWarmPaths.appRoutePaths.length} CDN warmup path(s).`);
|
|
990
|
+
return manifest;
|
|
991
|
+
}
|
|
992
|
+
async function emitPrerenderPathManifest(options) {
|
|
993
|
+
const manifest = await discoverPrerenderPathManifest(options);
|
|
994
|
+
if (!manifest) return null;
|
|
995
|
+
const manifestDir = path.join(options.root, "dist", "server");
|
|
823
996
|
fs.mkdirSync(manifestDir, { recursive: true });
|
|
824
997
|
fs.writeFileSync(path.join(manifestDir, PRERENDER_PATHS_MANIFEST), JSON.stringify(manifest, null, 2) + "\n", "utf-8");
|
|
825
|
-
console.log(` Discovered ${warmPaths.length + appOwnedWarmPaths.appRoutePaths.length} CDN warmup path(s).`);
|
|
826
998
|
return manifest;
|
|
827
999
|
}
|
|
828
1000
|
//#endregion
|
|
829
|
-
export { DEFAULT_REMOTE_PATH_DISCOVERY_PHASE_TIMEOUT_MS, DEFAULT_REMOTE_PATH_DISCOVERY_RETRY_DELAY_MS, PRERENDER_PATHS_MANIFEST, PRERENDER_PATH_DISCOVERY_ENV, emitPrerenderPathManifest };
|
|
1001
|
+
export { DEFAULT_REMOTE_PATH_DISCOVERY_PHASE_TIMEOUT_MS, DEFAULT_REMOTE_PATH_DISCOVERY_RETRY_DELAY_MS, PRERENDER_PATHS_MANIFEST, PRERENDER_PATH_DISCOVERY_ENV, discoverPrerenderPathManifest, emitPrerenderPathManifest, matchesMiddlewareWarmPath };
|