vinext 1.0.0-beta.8 → 1.0.0
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 +158 -84
- package/THIRD_PARTY_LICENSES.md +25 -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 +1 -13
- package/dist/build/precompress.d.ts +2 -3
- 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 +82 -8
- package/dist/build/prerender-paths.js +814 -99
- 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 +67 -15
- package/dist/build/prerender.js +177 -64
- 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 +38 -19
- package/dist/build/report.js +73 -4
- 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 +25 -16
- package/dist/build/server-entry.d.ts +4 -0
- package/dist/build/server-entry.js +28 -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 +7 -8
- package/dist/cache/cache-adapters-virtual.d.ts +95 -9
- package/dist/cache/cache-adapters-virtual.js +58 -6
- 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 -435
- package/dist/client/app-nav-failure-handler.d.ts +6 -7
- 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 +21 -17
- package/dist/client/navigation-runtime.js +2 -1
- 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 -8
- package/dist/client/window-next.d.ts +4 -5
- package/dist/config/config-matchers.d.ts +16 -16
- package/dist/config/config-matchers.js +10 -7
- package/dist/config/dotenv.d.ts +3 -4
- package/dist/config/dotenv.js +2 -1
- 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 +5 -6
- package/dist/entries/app-browser-entry.js +3 -2
- package/dist/entries/app-rsc-entry.d.ts +12 -3
- package/dist/entries/app-rsc-entry.js +530 -55
- package/dist/entries/app-rsc-manifest.d.ts +4 -3
- package/dist/entries/app-rsc-manifest.js +27 -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 +237 -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 +832 -199
- package/dist/init-cloudflare.d.ts +27 -16
- package/dist/init-cloudflare.js +754 -113
- 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 +123 -41
- 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/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 +3 -4
- package/dist/plugins/ignore-dynamic-requests.js +60 -89
- package/dist/plugins/import-meta-url.d.ts +6 -7
- package/dist/plugins/import-meta-url.js +31 -43
- 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 +3 -4
- package/dist/plugins/og-assets.d.ts +4 -5
- package/dist/plugins/og-assets.js +32 -13
- package/dist/plugins/og-harfbuzz.d.ts +24 -0
- package/dist/plugins/og-harfbuzz.js +260 -0
- package/dist/plugins/optimize-imports.d.ts +7 -7
- package/dist/plugins/optimize-imports.js +32 -44
- 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 +2 -3
- package/dist/plugins/require-context.js +13 -21
- 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/server-externals-manifest.d.ts +2 -3
- package/dist/plugins/strip-server-exports.d.ts +5 -6
- package/dist/plugins/strip-server-exports.js +1 -1
- 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 +3 -4
- package/dist/plugins/transitive-externals.d.ts +2 -3
- package/dist/plugins/typeof-window.d.ts +6 -7
- package/dist/plugins/typeof-window.js +30 -31
- 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 +19 -19
- package/dist/routing/app-route-graph.js +3 -2
- package/dist/routing/app-router.d.ts +20 -5
- package/dist/routing/app-router.js +28 -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 +3 -4
- package/dist/server/app-bfcache-identity.d.ts +8 -9
- 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 +121 -40
- 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 +14 -1
- 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 +4 -5
- 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-browser-visible-commit.js +1 -1
- 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 +26 -27
- package/dist/server/app-history-state.js +19 -11
- 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 +15 -7
- package/dist/server/app-middleware.js +30 -5
- 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 +14 -10
- package/dist/server/app-optimistic-routing.js +16 -3
- 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 +2 -1
- package/dist/server/app-page-cache-finalizer.d.ts +32 -8
- package/dist/server/app-page-cache-finalizer.js +118 -14
- package/dist/server/app-page-cache-render.d.ts +8 -5
- package/dist/server/app-page-cache-render.js +22 -5
- package/dist/server/app-page-cache.d.ts +28 -9
- package/dist/server/app-page-cache.js +96 -25
- package/dist/server/app-page-dispatch.d.ts +36 -12
- package/dist/server/app-page-dispatch.js +188 -63
- 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 +12 -8
- 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 +42 -6
- package/dist/server/app-page-render.js +192 -28
- 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 +31 -13
- 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 +42 -6
- 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 +35 -6
- package/dist/server/app-page-tracing.d.ts +33 -0
- package/dist/server/app-page-tracing.js +49 -0
- package/dist/server/app-pages-bridge.d.ts +6 -6
- package/dist/server/app-pages-bridge.js +19 -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 +26 -12
- package/dist/server/app-prerender-static-params.d.ts +15 -7
- package/dist/server/app-prerender-static-params.js +33 -11
- 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 +115 -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 +2 -3
- package/dist/server/app-route-handler-cache.js +46 -34
- package/dist/server/app-route-handler-dispatch.d.ts +3 -3
- package/dist/server/app-route-handler-dispatch.js +75 -57
- package/dist/server/app-route-handler-execution.d.ts +18 -13
- package/dist/server/app-route-handler-execution.js +189 -25
- 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 +22 -10
- package/dist/server/app-route-handler-policy.js +19 -4
- package/dist/server/app-route-handler-response.d.ts +9 -10
- package/dist/server/app-route-handler-response.js +2 -0
- 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 +2 -0
- package/dist/server/app-router-entry.js +76 -12
- package/dist/server/app-rsc-cache-busting.d.ts +47 -22
- package/dist/server/app-rsc-cache-busting.js +80 -18
- 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 +12 -9
- package/dist/server/app-rsc-errors.js +15 -13
- package/dist/server/app-rsc-handler.d.ts +33 -6
- package/dist/server/app-rsc-handler.js +498 -83
- 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 +2 -1
- package/dist/server/app-rsc-response-finalizer.d.ts +8 -5
- package/dist/server/app-rsc-response-finalizer.js +24 -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 +4 -4
- package/dist/server/app-rsc-route-matching.js +4 -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 +120 -6
- package/dist/server/app-segment-config.js +264 -12
- package/dist/server/app-server-action-execution.d.ts +16 -12
- package/dist/server/app-server-action-execution.js +88 -35
- package/dist/server/app-ssr-entry.d.ts +14 -4
- package/dist/server/app-ssr-entry.js +64 -17
- 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 +33 -7
- 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 +39 -11
- package/dist/server/cache-control.js +104 -7
- 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 +8 -0
- package/dist/server/cacheability-limits.js +9 -0
- package/dist/server/cacheability-manifest.d.ts +68 -0
- package/dist/server/cacheability-manifest.js +241 -0
- package/dist/server/cacheability-request.d.ts +49 -0
- package/dist/server/cacheability-request.js +559 -0
- 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 +39 -5
- 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 +130 -61
- 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 +62 -56
- package/dist/server/headers.js +33 -20
- 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-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 +28 -27
- package/dist/server/isr-cache.js +18 -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-cache-policy.d.ts +2 -3
- package/dist/server/metadata-route-response.d.ts +7 -7
- package/dist/server/metadata-route-response.js +68 -2
- 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 +13 -6
- package/dist/server/middleware-matcher.js +22 -1
- 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 +13 -8
- package/dist/server/middleware-runtime.js +54 -10
- 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/normalize-path.js +1 -1
- 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 +21 -8
- package/dist/server/pages-asset-tags.d.ts +6 -6
- package/dist/server/pages-asset-tags.js +37 -2
- 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 +11 -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-i18n.js +3 -2
- 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 +18 -19
- package/dist/server/pages-page-data.js +11 -10
- package/dist/server/pages-page-handler.d.ts +7 -6
- package/dist/server/pages-page-handler.js +98 -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 +49 -31
- 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 +16 -12
- package/dist/server/pages-request-pipeline.js +69 -28
- package/dist/server/pages-request-stage-entry.d.ts +23 -0
- package/dist/server/pages-request-stage-entry.js +314 -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 +48 -114
- 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 +11 -11
- package/dist/server/prerender-manifest.js +6 -3
- package/dist/server/prerender-route-params.d.ts +16 -9
- package/dist/server/prerender-route-params.js +18 -2
- package/dist/server/prerender-work-unit-setup.d.ts +4 -4
- package/dist/server/prerender-work-unit-setup.js +37 -14
- package/dist/server/prod-server.d.ts +12 -9
- package/dist/server/prod-server.js +129 -36
- 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 +17 -21
- package/dist/server/request-pipeline.js +8 -10
- 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 +2 -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/server-globals.js +13 -0
- 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 +16 -0
- package/dist/server/static-file-signal.js +82 -0
- 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 +18 -0
- package/dist/server/worker-prerender-discovery.js +55 -0
- package/dist/server/worker-revalidation-context.d.ts +2 -3
- package/dist/server/worker-revalidation-context.js +5 -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 +4 -4
- package/dist/server/workers-tracing.d.ts +17 -0
- package/dist/server/workers-tracing.js +27 -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 +28 -29
- package/dist/shims/cache-runtime.d.ts +23 -21
- package/dist/shims/cache-runtime.js +239 -121
- package/dist/shims/cache.d.ts +15 -15
- package/dist/shims/cache.js +25 -13
- package/dist/shims/cacheability-classification.d.ts +106 -0
- package/dist/shims/cacheability-classification.js +161 -0
- 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 +76 -18
- package/dist/shims/cdn-cache.js +40 -39
- 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 +4 -4
- package/dist/shims/error.js +1 -1
- package/dist/shims/error.react-server.d.ts +3 -4
- package/dist/shims/fetch-cache.d.ts +22 -22
- package/dist/shims/fetch-cache.js +50 -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 +68 -32
- package/dist/shims/headers.js +101 -10
- 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 +13 -0
- package/dist/shims/internal/app-prefetch-rsc-request.js +12 -0
- package/dist/shims/internal/app-route-detection.d.ts +2 -2
- package/dist/shims/internal/app-route-prefetch-policy.d.ts +5 -6
- package/dist/shims/internal/app-route-prefetch-policy.js +1 -0
- package/dist/shims/internal/app-router-context.d.ts +9 -10
- 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/hybrid-client-route-owner-direct.d.ts +6 -7
- package/dist/shims/internal/hybrid-client-route-owner-direct.js +29 -11
- package/dist/shims/internal/hybrid-client-route-owner.d.ts +3 -3
- package/dist/shims/internal/hybrid-client-route-owner.js +5 -4
- 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 +8 -3
- package/dist/shims/internal/make-hanging-promise.js +13 -2
- 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 +12 -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 +67 -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 +45 -17
- package/dist/shims/navigation.react-server.d.ts +9 -9
- package/dist/shims/navigation.react-server.js +1 -1
- 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 +7 -6
- package/dist/shims/root-params.d.ts +14 -15
- 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 +14 -28
- 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 +34 -31
- 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 +18 -12
- package/dist/shims/url-utils.js +10 -1
- 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 +3 -4
- 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 +9 -10
- package/dist/utils/prerender-output-paths.js +16 -9
- 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 +144 -0
- package/dist/utils/vite-version.d.ts +5 -6
- package/next-package.json +4 -0
- package/package.json +55 -6
package/dist/shims/router.js
CHANGED
|
@@ -1,27 +1,30 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { hasBasePath, removeTrailingSlash, stripBasePath } from "../utils/base-path.js";
|
|
1
|
+
import { isUnknownRecord } from "../utils/record.js";
|
|
3
2
|
import { parseCookieHeader } from "../utils/parse-cookie.js";
|
|
4
|
-
import { assertSafeNavigationUrl } from "./url-safety.js";
|
|
5
3
|
import { isExternalUrl } from "../utils/external-url.js";
|
|
4
|
+
import { sortRoutes, splitPathSegments } from "../routing/utils.js";
|
|
5
|
+
import { hasBasePath, removeTrailingSlash, stripBasePath } from "../utils/base-path.js";
|
|
6
|
+
import { assertSafeNavigationUrl } from "./url-safety.js";
|
|
6
7
|
import { addLocalePrefix, getDomainLocaleUrl, getLocalePathPrefix } from "../utils/domain-locale.js";
|
|
7
|
-
import { isUnknownRecord } from "../utils/record.js";
|
|
8
8
|
import { AppRouterContext } from "./internal/app-router-context.js";
|
|
9
9
|
import { RouterContext } from "./internal/router-context.js";
|
|
10
10
|
import { applyVinextLocaleGlobals, extractVinextNextDataJson, parseVinextNextDataJson } from "../client/vinext-next-data.js";
|
|
11
11
|
import { isValidModulePath } from "../client/validate-module-path.js";
|
|
12
|
-
import {
|
|
12
|
+
import { matchRoutePattern, routePattern, routePatternParts } from "../routing/route-pattern.js";
|
|
13
13
|
import { NEXT_DEPLOYMENT_ID_HEADER, getDeploymentId } from "../utils/deployment-id.js";
|
|
14
14
|
import { dedupedPagesDataFetch, evictPagesDataCache, fetchCachedPagesData, fetchStaticPagesData, getPagesStaticDataCache } from "./internal/pages-data-fetch-dedup.js";
|
|
15
|
-
import { getPagesMiddlewareDataHref, prefetchPagesData, resolvePagesDataNavigationTarget } from "./internal/pages-data-target.js";
|
|
15
|
+
import { getPagesMiddlewareDataHref, matchesPagesMiddlewarePath, prefetchPagesData, resolvePagesDataNavigationTarget } from "./internal/pages-data-target.js";
|
|
16
16
|
import { getPagesRouterComponentsMap } from "./internal/pages-router-components.js";
|
|
17
17
|
import { markAppRouteDetectedOnPrefetch } from "./internal/app-route-detection.js";
|
|
18
18
|
import { resolveDirectHybridClientRouteOwner } from "./internal/hybrid-client-route-owner-direct.js";
|
|
19
19
|
import { installWindowNext } from "../client/window-next.js";
|
|
20
|
-
import { getWindowOrigin, isAbsoluteOrProtocolRelativeUrl, isHashOnlyBrowserUrlChange, normalizePathTrailingSlash, toBrowserNavigationHref, toSameOriginAppPath, withBasePath } from "./url-utils.js";
|
|
21
|
-
import { addQueryParam,
|
|
20
|
+
import { getWindowOrigin, isAbsoluteOrProtocolRelativeUrl, isAbsoluteUrl, isHashOnlyBrowserUrlChange, normalizePathTrailingSlash, toBrowserNavigationHref, toSameOriginAppPath, toSameOriginPath, withBasePath } from "./url-utils.js";
|
|
21
|
+
import { addQueryParam, mergeRewriteQuery, mergeRouteParamsIntoQuery, parseQueryString } from "../utils/query.js";
|
|
22
22
|
import { scrollToHashTarget } from "./hash-scroll.js";
|
|
23
23
|
import { installPagesRouterRuntime, setPagesRouterPopStateHandler, setStampInitialHistoryState } from "./pages-router-runtime.js";
|
|
24
|
-
import { interpolateDynamicRouteHref } from "./internal/interpolate-as.js";
|
|
24
|
+
import { interpolateDynamicRouteHref, resolveDynamicRouteHref } from "./internal/interpolate-as.js";
|
|
25
|
+
import { formatUrlObject, formatUrlObjectWithValidation } from "./internal/format-url-object.js";
|
|
26
|
+
import { normalizeRouterHref, resolvePagesRouterHref } from "./internal/normalize-router-href.js";
|
|
27
|
+
import { getCurrentRoutePathnameForWarning } from "./internal/route-pattern-for-warning.js";
|
|
25
28
|
import { getCurrentBrowserLocale } from "./client-locale.js";
|
|
26
29
|
import { Component, Fragment, StrictMode, createElement, useContext, useEffect, useLayoutEffect, useMemo, useState } from "react";
|
|
27
30
|
//#region src/shims/router.ts
|
|
@@ -217,36 +220,69 @@ function getPagesRouterRuntimeComponents() {
|
|
|
217
220
|
routerRuntimeState.components = components;
|
|
218
221
|
return components;
|
|
219
222
|
}
|
|
220
|
-
function
|
|
223
|
+
function resolvePagesUrlPath(formatted) {
|
|
224
|
+
if (typeof window === "undefined") return formatted;
|
|
225
|
+
const routePathname = window.__NEXT_DATA__?.page ?? stripBasePath(window.location.pathname, __basePath);
|
|
226
|
+
const visibleAsPath = stripBasePath(window.location.pathname, __basePath) + window.location.search;
|
|
227
|
+
return resolvePagesRouterHref(formatted, {
|
|
228
|
+
pathname: routePathname,
|
|
229
|
+
asPath: formatted.startsWith("#") ? visibleAsPath : routePathname
|
|
230
|
+
}, __basePath);
|
|
231
|
+
}
|
|
232
|
+
function hasUrlObjectAuthority(url) {
|
|
233
|
+
return Boolean(url.host || url.hostname || url.slashes);
|
|
234
|
+
}
|
|
235
|
+
function resolveUrl(url, resolveQueryFromRoute = false) {
|
|
221
236
|
if (typeof url === "string") return url;
|
|
222
|
-
const
|
|
223
|
-
|
|
224
|
-
const
|
|
225
|
-
const
|
|
226
|
-
const
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
237
|
+
const formatted = formatUrlObject(url);
|
|
238
|
+
if (url.protocol || hasUrlObjectAuthority(url) || url.pathname) return resolvePagesUrlPath(formatted);
|
|
239
|
+
const visiblePathname = typeof window === "undefined" ? "/" : stripBasePath(window.location.pathname, __basePath);
|
|
240
|
+
const routePathname = typeof window === "undefined" ? void 0 : window.__NEXT_DATA__?.page;
|
|
241
|
+
const matchingDynamicRoute = resolveQueryFromRoute && formatted.startsWith("?") && routePathname && extractRouteParamNames(routePathname).length > 0 && extractRouteParamsFromPath(routePathname, removeNavigationLocalePrefix(visiblePathname)) !== null ? routePathname : void 0;
|
|
242
|
+
return resolvePagesUrlPath((typeof window === "undefined" ? "/" : matchingDynamicRoute ?? (formatted ? visiblePathname : routePathname ?? visiblePathname)) + (formatted.startsWith("#") && typeof window !== "undefined" ? window.location.search : "") + formatted);
|
|
243
|
+
}
|
|
244
|
+
function toPreparedSameOriginPath(url) {
|
|
245
|
+
const appPath = toSameOriginAppPath(url, __basePath);
|
|
246
|
+
if (appPath !== null) return appPath;
|
|
247
|
+
if (!isAbsoluteUrl(url)) return null;
|
|
248
|
+
const localPath = toSameOriginPath(url);
|
|
249
|
+
if (localPath === null) return null;
|
|
250
|
+
const parsed = new URL(url);
|
|
251
|
+
return parsed.username || parsed.password ? null : localPath;
|
|
252
|
+
}
|
|
253
|
+
/** Next.js only strips a same-origin URL when the origin is a literal prefix. */
|
|
254
|
+
function credentialedSameOriginHref(url) {
|
|
255
|
+
if (!url) return void 0;
|
|
256
|
+
const href = resolveUrl(url);
|
|
257
|
+
try {
|
|
258
|
+
const parsed = new URL(href, window.location.href);
|
|
259
|
+
if (!parsed.username && !parsed.password) return void 0;
|
|
260
|
+
} catch {
|
|
261
|
+
return;
|
|
262
|
+
}
|
|
263
|
+
return toSameOriginPath(href) !== null ? href : void 0;
|
|
238
264
|
}
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
265
|
+
function hasUrlObjectQuery(url) {
|
|
266
|
+
return typeof url.query === "string" ? url.query.length > 0 : url.query !== null && typeof url.query === "object" && Object.keys(url.query).length > 0;
|
|
267
|
+
}
|
|
268
|
+
function inheritsVisiblePath(url) {
|
|
269
|
+
return !url.pathname && (hasUrlObjectQuery(url) || typeof url.search === "string" && url.search.length > 0 || typeof url.hash === "string" && url.hash.length > 0);
|
|
270
|
+
}
|
|
271
|
+
function prepareUrl(url) {
|
|
272
|
+
const routePathname = getCurrentRoutePathnameForWarning();
|
|
273
|
+
if (typeof url === "string") {
|
|
274
|
+
const normalized = normalizeRouterHref(url, routePathname);
|
|
275
|
+
return normalized === url ? url : resolvePagesUrlPath(normalized);
|
|
276
|
+
}
|
|
277
|
+
const formatted = formatUrlObjectWithValidation(url);
|
|
278
|
+
const normalized = normalizeRouterHref(formatted, routePathname);
|
|
279
|
+
if (normalized === formatted) return url;
|
|
280
|
+
if (!hasUrlObjectAuthority(url) && (url.protocol || url.pathname)) return resolvePagesUrlPath(normalized);
|
|
281
|
+
if (!url.pathname && normalized.startsWith("#")) return {
|
|
282
|
+
...url,
|
|
283
|
+
hash: normalized
|
|
284
|
+
};
|
|
285
|
+
return normalized;
|
|
250
286
|
}
|
|
251
287
|
/**
|
|
252
288
|
* Next.js's internal `_h` replacement receives browser-visible URLs, which may
|
|
@@ -266,34 +302,43 @@ function normalizeHydrationNavigationUrl(url) {
|
|
|
266
302
|
}
|
|
267
303
|
}
|
|
268
304
|
var HrefInterpolationError = class extends Error {};
|
|
269
|
-
function
|
|
270
|
-
|
|
305
|
+
function getHrefInterpolationError(href, routePattern, query) {
|
|
306
|
+
const missingParams = routePatternParts(routePattern).filter((part) => part.startsWith(":") && !part.endsWith("*")).map((part) => part.slice(1, part.endsWith("+") ? -1 : void 0)).filter((paramName) => {
|
|
307
|
+
const value = query[paramName];
|
|
308
|
+
return value === void 0 || value === "" || Array.isArray(value) && value.length === 0;
|
|
309
|
+
});
|
|
310
|
+
return missingParams.length > 0 ? new HrefInterpolationError(`The provided \`href\` (${href}) value is missing query values (${missingParams.join(", ")}) to be interpolated properly. Read more: https://nextjs.org/docs/messages/href-interpolation-failed`) : null;
|
|
311
|
+
}
|
|
312
|
+
function resolveCurrentDynamicRoute(resolved, displayHref) {
|
|
313
|
+
if (typeof window === "undefined") return null;
|
|
271
314
|
const routePattern = window.__NEXT_DATA__?.page;
|
|
272
|
-
if (!routePattern || extractRouteParamNames(routePattern).length === 0) return
|
|
315
|
+
if (!routePattern || extractRouteParamNames(routePattern).length === 0) return null;
|
|
273
316
|
try {
|
|
274
317
|
const target = new URL(resolved, "http://vinext.local");
|
|
275
318
|
const currentOrigin = getWindowOrigin();
|
|
276
|
-
if (currentOrigin && target.origin !== "http://vinext.local" && target.origin !== currentOrigin) return
|
|
319
|
+
if (currentOrigin && target.origin !== "http://vinext.local" && target.origin !== currentOrigin) return null;
|
|
277
320
|
const visiblePath = stripBasePath(window.location.pathname, __basePath);
|
|
278
321
|
const visibleLocale = getLocalePathPrefix(visiblePath, window.__VINEXT_LOCALES__);
|
|
279
|
-
if (extractRouteParamsFromPath(routePattern, visibleLocale ? visiblePath.slice(visibleLocale.length + 1) || "/" : visiblePath) === null) return
|
|
280
|
-
const
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
}
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
322
|
+
if (extractRouteParamsFromPath(routePattern, visibleLocale ? visiblePath.slice(visibleLocale.length + 1) || "/" : visiblePath) === null) return null;
|
|
323
|
+
const href = routePattern + target.search + target.hash;
|
|
324
|
+
if (displayHref !== void 0) return {
|
|
325
|
+
href,
|
|
326
|
+
as: interpolateDynamicRouteHref(href, displayHref)?.href || null
|
|
327
|
+
};
|
|
328
|
+
const dynamicRoute = resolveDynamicRouteHref(href);
|
|
329
|
+
if (!dynamicRoute) {
|
|
330
|
+
const error = getHrefInterpolationError(href, routePattern, parseQueryString(target.search));
|
|
331
|
+
if (error) throw error;
|
|
332
|
+
return null;
|
|
333
|
+
}
|
|
290
334
|
const targetLocale = getLocalePathPrefix(target.pathname, window.__VINEXT_LOCALES__);
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
335
|
+
return {
|
|
336
|
+
href,
|
|
337
|
+
as: targetLocale ? `/${targetLocale}${dynamicRoute.as}` : dynamicRoute.as
|
|
338
|
+
};
|
|
294
339
|
} catch (error) {
|
|
295
340
|
if (error instanceof HrefInterpolationError) throw error;
|
|
296
|
-
return
|
|
341
|
+
return null;
|
|
297
342
|
}
|
|
298
343
|
}
|
|
299
344
|
function getCurrentUrlLocale() {
|
|
@@ -327,7 +372,8 @@ function resolvePagesErrorHtmlFetchUrl(url, locale) {
|
|
|
327
372
|
} catch {
|
|
328
373
|
return null;
|
|
329
374
|
}
|
|
330
|
-
|
|
375
|
+
const fetchTarget = `${stripBasePath(parsed.pathname, __basePath)}${parsed.search}${parsed.hash}`;
|
|
376
|
+
return normalizePathTrailingSlash(toBrowserNavigationHref(fetchTarget, window.location.href, __basePath), __trailingSlash);
|
|
331
377
|
}
|
|
332
378
|
function replaceUrlPathname(url, pathname) {
|
|
333
379
|
try {
|
|
@@ -361,7 +407,11 @@ function getDomainLocalePath(url, locale) {
|
|
|
361
407
|
*/
|
|
362
408
|
function applyNavigationLocale(url, locale, replaceExistingLocale = false) {
|
|
363
409
|
if (!locale || typeof window === "undefined") return url;
|
|
364
|
-
if (isAbsoluteOrProtocolRelativeUrl(url))
|
|
410
|
+
if (isAbsoluteOrProtocolRelativeUrl(url)) {
|
|
411
|
+
const localPath = window.location ? toSameOriginAppPath(url, __basePath) : null;
|
|
412
|
+
if (localPath == null) return url;
|
|
413
|
+
url = localPath;
|
|
414
|
+
}
|
|
365
415
|
if (!replaceExistingLocale && getLocalePathPrefix(url, window.__VINEXT_LOCALES__)) return url;
|
|
366
416
|
const normalizedUrl = replaceExistingLocale ? removeNavigationLocalePrefix(url) : url;
|
|
367
417
|
const domainLocalePath = getDomainLocalePath(normalizedUrl, locale);
|
|
@@ -394,7 +444,8 @@ function isDefaultLocaleRootNavigation(url, locale) {
|
|
|
394
444
|
function getPagesHtmlFetchUrl(browserUrl, locale) {
|
|
395
445
|
if (!isDefaultLocaleRootNavigation(browserUrl, locale)) return browserUrl;
|
|
396
446
|
const parsed = new URL(browserUrl, window.location.href);
|
|
397
|
-
|
|
447
|
+
const localeRoot = normalizePathTrailingSlash(`/${locale}`, __trailingSlash);
|
|
448
|
+
return normalizePathTrailingSlash(toBrowserNavigationHref(`${localeRoot}${parsed.search}${parsed.hash}`, window.location.href, __basePath), __trailingSlash);
|
|
398
449
|
}
|
|
399
450
|
/** Resolve a hash URL to the browser-visible URL used by Next.js router events. */
|
|
400
451
|
function resolveHashUrl(url) {
|
|
@@ -413,6 +464,15 @@ function isHashOnlyChange(href) {
|
|
|
413
464
|
if (typeof window === "undefined") return false;
|
|
414
465
|
return isHashOnlyBrowserUrlChange(href, window.location.href, __basePath);
|
|
415
466
|
}
|
|
467
|
+
function toHistoryAppPath(url) {
|
|
468
|
+
const localUrl = isAbsoluteUrl(url) ? toSameOriginPath(url) ?? url : url;
|
|
469
|
+
if (!localUrl.startsWith("/") || localUrl.startsWith("//")) return url;
|
|
470
|
+
if (!__basePath) return localUrl;
|
|
471
|
+
const suffixIndex = localUrl.search(/[?#]/);
|
|
472
|
+
const pathname = suffixIndex === -1 ? localUrl : localUrl.slice(0, suffixIndex);
|
|
473
|
+
if (!hasBasePath(pathname, __basePath)) return localUrl;
|
|
474
|
+
return stripBasePath(pathname, __basePath) + (suffixIndex === -1 ? "" : localUrl.slice(suffixIndex));
|
|
475
|
+
}
|
|
416
476
|
/**
|
|
417
477
|
* Build router-shaped state for the initial document entry. Captures the
|
|
418
478
|
* active locale (from `window.__VINEXT_LOCALE__`) so a back-navigation
|
|
@@ -421,12 +481,18 @@ function isHashOnlyChange(href) {
|
|
|
421
481
|
* navigates back.
|
|
422
482
|
*/
|
|
423
483
|
function buildInitialRouterState() {
|
|
424
|
-
const
|
|
484
|
+
const browserPath = window.location.pathname + window.location.search;
|
|
485
|
+
const nextData = window.__NEXT_DATA__;
|
|
486
|
+
const middlewareMatches = nextData?.__vinext?.hasMiddleware && matchesPagesMiddlewarePath(stripBasePath(window.location.pathname, __basePath));
|
|
487
|
+
const routeUrl = normalizePathTrailingSlash(nextData?.page && !middlewareMatches ? withBasePath(formatUrlObject({
|
|
488
|
+
pathname: nextData.page,
|
|
489
|
+
query: mergeRouteParamsIntoQuery(parseQueryString(browserPath), nextData.query ?? {})
|
|
490
|
+
}), __basePath) : browserPath, __trailingSlash);
|
|
425
491
|
const options = {};
|
|
426
492
|
if (window.__VINEXT_LOCALE__ !== void 0) options.locale = window.__VINEXT_LOCALE__;
|
|
427
493
|
return {
|
|
428
|
-
url:
|
|
429
|
-
as:
|
|
494
|
+
url: routeUrl,
|
|
495
|
+
as: browserPath,
|
|
430
496
|
options,
|
|
431
497
|
__N: true,
|
|
432
498
|
key: createHistoryKey()
|
|
@@ -434,8 +500,8 @@ function buildInitialRouterState() {
|
|
|
434
500
|
}
|
|
435
501
|
/**
|
|
436
502
|
* Stamp the initial document entry with router-shaped state (only if no
|
|
437
|
-
* state is present).
|
|
438
|
-
*
|
|
503
|
+
* state is present). An early next/router import may precede the generated
|
|
504
|
+
* entry's __NEXT_DATA__ and matcher setup, so the ready transition retries it.
|
|
439
505
|
*/
|
|
440
506
|
function stampInitialHistoryState() {
|
|
441
507
|
installManualScrollRestoration();
|
|
@@ -445,6 +511,8 @@ function stampInitialHistoryState() {
|
|
|
445
511
|
routerRuntimeState.currentHistoryKey = getRouterStateKey(existingState) ?? routerRuntimeState.currentHistoryKey;
|
|
446
512
|
return;
|
|
447
513
|
}
|
|
514
|
+
const nextData = window.__NEXT_DATA__;
|
|
515
|
+
if (!nextData || nextData.__vinext?.hasMiddleware && !Object.hasOwn(window, "__VINEXT_MIDDLEWARE_MATCHER__")) return;
|
|
448
516
|
const initialState = buildInitialRouterState();
|
|
449
517
|
routerRuntimeState.currentHistoryKey = initialState.key;
|
|
450
518
|
window.history.replaceState(initialState, "");
|
|
@@ -739,12 +807,13 @@ function getCurrentHistoryAsPath() {
|
|
|
739
807
|
try {
|
|
740
808
|
const browserUrl = new URL(window.location.href);
|
|
741
809
|
const stateLocale = state.options.locale === false ? void 0 : state.options.locale;
|
|
742
|
-
const
|
|
810
|
+
const stateAs = toHistoryAppPath(state.as);
|
|
811
|
+
const localizedStateAs = applyNavigationLocale(stateAs, stateLocale);
|
|
743
812
|
const stateUrl = new URL(toBrowserNavigationHref(localizedStateAs, window.location.href, __basePath), window.location.href);
|
|
744
813
|
if (stateUrl.pathname !== browserUrl.pathname || stateUrl.search !== browserUrl.search) return null;
|
|
745
|
-
const
|
|
814
|
+
const appAs = removeNavigationLocalePrefix(stripHash(stateAs));
|
|
746
815
|
const visibleAs = `${removeNavigationLocalePrefix(stripBasePath(window.location.pathname, __basePath))}${window.location.search}`;
|
|
747
|
-
return `${
|
|
816
|
+
return `${appAs || visibleAs}${window.location.hash}`;
|
|
748
817
|
} catch {
|
|
749
818
|
return null;
|
|
750
819
|
}
|
|
@@ -780,6 +849,7 @@ function markPagesRouterReady() {
|
|
|
780
849
|
}
|
|
781
850
|
function initializePagesRouterReadyFromNextData(nextData, forceReady = false) {
|
|
782
851
|
if (typeof window === "undefined") return;
|
|
852
|
+
stampInitialHistoryState();
|
|
783
853
|
routerRuntimeState.pagesRouterReady = forceReady || getPagesNavigationIsReadyFromSerializedState(nextData.page, window.location.search, nextData);
|
|
784
854
|
}
|
|
785
855
|
function markPagesRouterHydrated() {
|
|
@@ -1000,7 +1070,8 @@ function matchSimpleClientConfigPattern(pathname, source) {
|
|
|
1000
1070
|
}
|
|
1001
1071
|
function simpleClientConfigSourceCouldMatch(pathname, source) {
|
|
1002
1072
|
const wildcardIndex = source.search(/[:(\\*+?]/);
|
|
1003
|
-
const
|
|
1073
|
+
const literalPrefix = wildcardIndex === -1 ? source : source.slice(0, wildcardIndex);
|
|
1074
|
+
const normalizedPrefix = removeTrailingSlash(literalPrefix);
|
|
1004
1075
|
if (!normalizedPrefix || normalizedPrefix === "/") return true;
|
|
1005
1076
|
const normalizedPathname = removeTrailingSlash(pathname);
|
|
1006
1077
|
return normalizedPathname === normalizedPrefix || normalizedPathname.startsWith(`${normalizedPrefix}/`);
|
|
@@ -1094,8 +1165,8 @@ async function resolveClientConfigRewrite(href) {
|
|
|
1094
1165
|
kind: "rewrite"
|
|
1095
1166
|
} : null;
|
|
1096
1167
|
}
|
|
1097
|
-
function getMiddlewarePagesDataFetchUrl(browserUrl, dataTarget) {
|
|
1098
|
-
const middlewareDataHref = getPagesMiddlewareDataHref(browserUrl, __basePath, dataTarget?.prefetchLocale ? { locale: dataTarget.prefetchLocale } : void 0);
|
|
1168
|
+
function getMiddlewarePagesDataFetchUrl(browserUrl, dataTarget, routeUrl = browserUrl) {
|
|
1169
|
+
const middlewareDataHref = getPagesMiddlewareDataHref(browserUrl, __basePath, dataTarget?.prefetchLocale ? { locale: dataTarget.prefetchLocale } : void 0, routeUrl);
|
|
1099
1170
|
if (!middlewareDataHref) return null;
|
|
1100
1171
|
if (dataTarget?.dataKind === "static" && dataTarget.middlewareDataHref === middlewareDataHref && dataTarget.prefetchDataHref) return dataTarget.prefetchDataHref;
|
|
1101
1172
|
return middlewareDataHref;
|
|
@@ -1110,8 +1181,8 @@ function getPagesDataCacheHref(dataHref) {
|
|
|
1110
1181
|
function shouldEvictMiddlewareDataCache(middlewareEffect, dataTarget) {
|
|
1111
1182
|
return middlewareEffect?.redirectLocation != null || dataTarget?.dataKind !== "static";
|
|
1112
1183
|
}
|
|
1113
|
-
async function resolveMiddlewareDataEffect(browserUrl, signal, dataTarget) {
|
|
1114
|
-
const dataUrl = getMiddlewarePagesDataFetchUrl(browserUrl, dataTarget);
|
|
1184
|
+
async function resolveMiddlewareDataEffect(browserUrl, signal, dataTarget, routeUrl = browserUrl) {
|
|
1185
|
+
const dataUrl = getMiddlewarePagesDataFetchUrl(browserUrl, dataTarget, routeUrl);
|
|
1115
1186
|
if (!dataUrl) return null;
|
|
1116
1187
|
if (signal.aborted) throw new DOMException("Aborted", "AbortError");
|
|
1117
1188
|
try {
|
|
@@ -1409,6 +1480,7 @@ async function navigateClientHtml(url, fetchUrl, controller, navId, assertStillC
|
|
|
1409
1480
|
scheduleHardNavigationAndThrow(url, "Navigation failed: missing __NEXT_DATA__ in response");
|
|
1410
1481
|
}
|
|
1411
1482
|
const nextData = parseVinextNextDataJson(nextDataJson);
|
|
1483
|
+
if (options.routePattern && nextData.page !== options.routePattern) scheduleHardNavigationAndThrow(browserUrl, "Navigation fallback resolved a different page");
|
|
1412
1484
|
let nextDataRouteState = options.nextDataRouteState;
|
|
1413
1485
|
let isDevelopmentNotFound = false;
|
|
1414
1486
|
if (res.status === 404 && options.allowNotFoundResponse !== true && (nextData.page === "/404" || nextData.page === "/_error") && typeof nextData.notFoundSrcPage === "string") {
|
|
@@ -1455,19 +1527,34 @@ async function navigateClientHtml(url, fetchUrl, controller, navId, assertStillC
|
|
|
1455
1527
|
assertStillCurrent();
|
|
1456
1528
|
const PageComponent = pageModule.default;
|
|
1457
1529
|
if (!isPageComponent(PageComponent)) scheduleHardNavigationAndThrow(browserUrl, "Navigation failed: page module default export is not a component");
|
|
1530
|
+
const pageLoaders = window.__VINEXT_PAGE_LOADERS__ ??= {};
|
|
1531
|
+
pageLoaders[nextData.page] ??= () => Promise.resolve(pageModule);
|
|
1532
|
+
const pagePatterns = window.__VINEXT_PAGE_PATTERNS__ ??= [];
|
|
1533
|
+
if (!pagePatterns.includes(nextData.page)) {
|
|
1534
|
+
pagePatterns.push(nextData.page);
|
|
1535
|
+
const sortedPatterns = sortRoutes(pagePatterns.map((pagePattern) => ({
|
|
1536
|
+
pagePattern,
|
|
1537
|
+
pattern: routePattern(pagePattern)
|
|
1538
|
+
})));
|
|
1539
|
+
pagePatterns.splice(0, pagePatterns.length, ...sortedPatterns.map(({ pagePattern }) => pagePattern));
|
|
1540
|
+
_cachedPagesRoutePatternKey = null;
|
|
1541
|
+
_cachedPagesRoutePattern = void 0;
|
|
1542
|
+
}
|
|
1458
1543
|
const React = (await import("react")).default;
|
|
1459
1544
|
assertStillCurrent();
|
|
1460
1545
|
let AppComponent = window.__VINEXT_APP__;
|
|
1461
1546
|
const appModuleUrl = nextData.__vinext?.appModuleUrl;
|
|
1462
|
-
if (!AppComponent && appModuleUrl)
|
|
1463
|
-
|
|
1464
|
-
|
|
1465
|
-
|
|
1466
|
-
|
|
1547
|
+
if (!AppComponent && appModuleUrl) {
|
|
1548
|
+
if (!isValidModulePath(appModuleUrl)) console.error("[vinext] Blocked import of invalid app module path:", appModuleUrl);
|
|
1549
|
+
else try {
|
|
1550
|
+
const appModule = await import(
|
|
1551
|
+
/* @vite-ignore */
|
|
1552
|
+
appModuleUrl
|
|
1467
1553
|
);
|
|
1468
|
-
|
|
1469
|
-
|
|
1470
|
-
|
|
1554
|
+
AppComponent = isAppComponent(appModule.default) ? appModule.default : void 0;
|
|
1555
|
+
window.__VINEXT_APP__ = AppComponent;
|
|
1556
|
+
} catch {}
|
|
1557
|
+
}
|
|
1471
1558
|
assertStillCurrent();
|
|
1472
1559
|
let element;
|
|
1473
1560
|
if (AppComponent) element = React.createElement(AppComponent, {
|
|
@@ -1518,6 +1605,7 @@ async function navigateClient(url, fetchUrl = url, options = {}, routeUrl = url)
|
|
|
1518
1605
|
else {
|
|
1519
1606
|
let browserUrl = url;
|
|
1520
1607
|
let htmlFetchUrl = fetchUrl;
|
|
1608
|
+
const routeMasked = options.routeMasked ?? routeUrl !== url;
|
|
1521
1609
|
const configRedirect = hasClientRedirectRules() && clientConfigRedirectCouldMatch(browserUrl) ? await resolveClientConfigRedirect(browserUrl) : null;
|
|
1522
1610
|
if (configRedirect) {
|
|
1523
1611
|
const redirectedUrl = resolveLocalRedirectUrl(configRedirect);
|
|
@@ -1525,32 +1613,41 @@ async function navigateClient(url, fetchUrl = url, options = {}, routeUrl = url)
|
|
|
1525
1613
|
throw new InternalNavigationRedirect(redirectedUrl);
|
|
1526
1614
|
}
|
|
1527
1615
|
let routeLookupUrl = routeUrl;
|
|
1528
|
-
|
|
1616
|
+
let routePattern = options.routePattern;
|
|
1617
|
+
if (!routeMasked && hasClientRewriteRules()) {
|
|
1529
1618
|
const syncConfigRewrite = hasClientAppRouteManifest() ? void 0 : resolveClientConfigRewriteSync(browserUrl);
|
|
1530
1619
|
const configRewrite = syncConfigRewrite === void 0 ? await resolveClientConfigRewrite(browserUrl) : syncConfigRewrite;
|
|
1531
1620
|
if (configRewrite?.kind === "document") scheduleHardNavigationAndThrow(browserUrl, "Navigation rewritten to a document route");
|
|
1532
1621
|
else if (configRewrite?.kind === "rewrite") {
|
|
1533
1622
|
routeLookupUrl = configRewrite.href;
|
|
1534
1623
|
htmlFetchUrl = configRewrite.href;
|
|
1624
|
+
routePattern = void 0;
|
|
1535
1625
|
}
|
|
1536
1626
|
}
|
|
1537
|
-
const pagesDataTargetOptions = {
|
|
1627
|
+
const pagesDataTargetOptions = {
|
|
1628
|
+
locale: options.locale,
|
|
1629
|
+
routePattern
|
|
1630
|
+
};
|
|
1631
|
+
const middlewareTargetOptions = { locale: options.locale };
|
|
1538
1632
|
let dataTarget = resolvePagesDataNavigationTarget(routeLookupUrl, __basePath, pagesDataTargetOptions);
|
|
1539
1633
|
let middlewareDataResponse;
|
|
1540
1634
|
let middlewareEffect = null;
|
|
1541
1635
|
let middlewareRewrittenTarget;
|
|
1542
|
-
const
|
|
1636
|
+
const middlewareUrl = routeMasked ? browserUrl : routeUrl;
|
|
1637
|
+
const middlewareProbeDataHref = getMiddlewarePagesDataFetchUrl(middlewareUrl, dataTarget, routeUrl);
|
|
1543
1638
|
if (middlewareProbeDataHref !== null) {
|
|
1544
1639
|
middlewareDataCacheEvictHref = getPagesDataCacheHref(middlewareProbeDataHref);
|
|
1545
1640
|
try {
|
|
1546
|
-
middlewareEffect = await resolveMiddlewareDataEffect(
|
|
1641
|
+
middlewareEffect = await resolveMiddlewareDataEffect(middlewareUrl, controller.signal, dataTarget, routeUrl);
|
|
1547
1642
|
} catch (err) {
|
|
1548
1643
|
if (err instanceof DOMException && err.name === "AbortError") throw new NavigationCancelledError(browserUrl);
|
|
1549
1644
|
throw err;
|
|
1550
1645
|
}
|
|
1551
|
-
if (middlewareEffect?.rewriteTarget) middlewareRewrittenTarget = resolvePagesDataNavigationTarget(middlewareEffect.rewriteTarget, __basePath,
|
|
1552
|
-
if (middlewareEffect)
|
|
1553
|
-
|
|
1646
|
+
if (middlewareEffect?.rewriteTarget) middlewareRewrittenTarget = resolvePagesDataNavigationTarget(middlewareEffect.rewriteTarget, __basePath, middlewareTargetOptions);
|
|
1647
|
+
if (middlewareEffect) {
|
|
1648
|
+
if (shouldEvictMiddlewareDataCache(middlewareEffect, middlewareRewrittenTarget !== void 0 ? middlewareRewrittenTarget : dataTarget)) middlewareDataCacheEvictHref = middlewareEffect.dataHref;
|
|
1649
|
+
else middlewareDataCacheEvictHref = null;
|
|
1650
|
+
}
|
|
1554
1651
|
assertStillCurrent();
|
|
1555
1652
|
}
|
|
1556
1653
|
const redirectLocation = middlewareEffect?.redirectLocation ?? null;
|
|
@@ -1559,14 +1656,14 @@ async function navigateClient(url, fetchUrl = url, options = {}, routeUrl = url)
|
|
|
1559
1656
|
if (!redirectedUrl) scheduleHardNavigationAndThrow(redirectLocation, "Navigation redirected externally");
|
|
1560
1657
|
throw new InternalNavigationRedirect(redirectedUrl);
|
|
1561
1658
|
} else if (middlewareEffect) {
|
|
1562
|
-
if (middlewareEffect.rewriteTarget ||
|
|
1659
|
+
if (middlewareEffect.rewriteTarget || !routeMasked) middlewareDataResponse = middlewareEffect.response;
|
|
1563
1660
|
if (middlewareEffect.rewriteTarget) {
|
|
1564
1661
|
const rewrittenOwner = resolveDirectHybridClientRouteOwner(middlewareEffect.rewriteTarget, __basePath);
|
|
1565
1662
|
if (rewrittenOwner === "app" || rewrittenOwner === "document") {
|
|
1566
1663
|
options.beforeHistoryChange?.();
|
|
1567
1664
|
scheduleHardNavigationAndThrow(browserUrl, "Navigation rewritten to a non-Pages route");
|
|
1568
1665
|
}
|
|
1569
|
-
const rewrittenTarget = middlewareRewrittenTarget ?? resolvePagesDataNavigationTarget(middlewareEffect.rewriteTarget, __basePath,
|
|
1666
|
+
const rewrittenTarget = middlewareRewrittenTarget ?? resolvePagesDataNavigationTarget(middlewareEffect.rewriteTarget, __basePath, middlewareTargetOptions);
|
|
1570
1667
|
if (!rewrittenTarget) {
|
|
1571
1668
|
options.beforeHistoryChange?.();
|
|
1572
1669
|
scheduleHardNavigationAndThrow(browserUrl, "Navigation rewritten to a non-Pages route");
|
|
@@ -1576,9 +1673,13 @@ async function navigateClient(url, fetchUrl = url, options = {}, routeUrl = url)
|
|
|
1576
1673
|
}
|
|
1577
1674
|
if (middlewareEffect && shouldEvictMiddlewareDataCache(middlewareEffect, dataTarget)) middlewareDataCacheEvictHref = middlewareEffect.dataHref;
|
|
1578
1675
|
else if (middlewareEffect) middlewareDataCacheEvictHref = null;
|
|
1676
|
+
if (middlewareEffect?.rewriteTarget) routePattern = void 0;
|
|
1579
1677
|
if (dataTarget?.dataKind === "static" || dataTarget?.dataKind === "server") await navigateClientData(browserUrl, dataTarget, controller, navId, assertStillCurrent, options, middlewareDataResponse);
|
|
1580
1678
|
else if (dataTarget) await navigateClientNoData(browserUrl, dataTarget, controller, assertStillCurrent, options);
|
|
1581
|
-
else await navigateClientHtml(browserUrl, htmlFetchUrl, controller, navId, assertStillCurrent,
|
|
1679
|
+
else await navigateClientHtml(browserUrl, htmlFetchUrl, controller, navId, assertStillCurrent, {
|
|
1680
|
+
...options,
|
|
1681
|
+
routePattern
|
|
1682
|
+
});
|
|
1582
1683
|
}
|
|
1583
1684
|
} finally {
|
|
1584
1685
|
if (navId === routerRuntimeState.navigationId) routerRuntimeState.activeAbortController = null;
|
|
@@ -1669,7 +1770,7 @@ function dispatchNavigateEvent() {
|
|
|
1669
1770
|
* @param fullUrl absolute URL committed to the browser (with basePath)
|
|
1670
1771
|
* @param navState router-level metadata (`url`, `as`, `options`) the popstate
|
|
1671
1772
|
* handler needs to honour stickiness — most importantly the active
|
|
1672
|
-
* locale and the
|
|
1773
|
+
* locale and the Next-compatible basePath-prefixed `as` path.
|
|
1673
1774
|
*/
|
|
1674
1775
|
function updateHistory(mode, fullUrl, navState) {
|
|
1675
1776
|
const previousKey = getRouterStateKey(window.history.state);
|
|
@@ -1711,9 +1812,8 @@ function throwNoRouterInstance() {
|
|
|
1711
1812
|
/**
|
|
1712
1813
|
* Shared client-side navigation flow used by both `useRouter()` and the
|
|
1713
1814
|
* `Router` singleton. The only differences between push/replace are the
|
|
1714
|
-
* history method (`pushState` vs `replaceState`)
|
|
1715
|
-
*
|
|
1716
|
-
* back/forward restoration while replace does not.
|
|
1815
|
+
* history method (`pushState` vs `replaceState`) and the fact that push saves
|
|
1816
|
+
* scroll position for back/forward restoration while replace does not.
|
|
1717
1817
|
*
|
|
1718
1818
|
* `onStateUpdate` lets the hook trigger a `setState` re-render at the same
|
|
1719
1819
|
* point that hashChangeComplete/routeChangeComplete fires; the singleton
|
|
@@ -1721,36 +1821,69 @@ function throwNoRouterInstance() {
|
|
|
1721
1821
|
*/
|
|
1722
1822
|
async function performNavigation(url, as, options, mode, onStateUpdate, redirectBrowserHref) {
|
|
1723
1823
|
if (typeof window === "undefined") throwNoRouterInstance();
|
|
1824
|
+
const inputHref = resolveUrl(url);
|
|
1825
|
+
const sameOriginPath = isAbsoluteUrl(inputHref) ? toSameOriginPath(inputHref) : null;
|
|
1826
|
+
const origin = getWindowOrigin();
|
|
1827
|
+
const absoluteHistoryUrl = sameOriginPath === null ? void 0 : origin && inputHref.startsWith(origin) ? inputHref.slice(origin.length) : sameOriginPath;
|
|
1828
|
+
const currentRoute = window.__NEXT_DATA__?.page ?? stripBasePath(window.location.pathname, __basePath);
|
|
1829
|
+
const currentAs = stripBasePath(window.location.pathname, __basePath) + window.location.search;
|
|
1830
|
+
const preparedHistoryHref = (isAbsoluteUrl(inputHref) ? toSameOriginAppPath(inputHref, __basePath) : null) ?? absoluteHistoryUrl ?? resolvePagesRouterHref(inputHref, {
|
|
1831
|
+
pathname: currentRoute,
|
|
1832
|
+
asPath: currentAs
|
|
1833
|
+
}, __basePath);
|
|
1834
|
+
const isQueryOnlyString = typeof url === "string" && url.startsWith("?");
|
|
1835
|
+
const urlInheritsCurrentPath = typeof url === "string" && (isQueryOnlyString || options?._vinextInterpolateDynamicRoute === true) || typeof url !== "string" && !url.pathname && (hasUrlObjectQuery(url) || typeof url.search === "string" && url.search.length > 0);
|
|
1836
|
+
const replaceInheritedLocale = options?.locale !== void 0 && (!as ? urlInheritsCurrentPath || typeof url !== "string" && inheritsVisiblePath(url) : typeof as !== "string" && inheritsVisiblePath(as));
|
|
1837
|
+
const credentialedHistoryHref = credentialedSameOriginHref(url);
|
|
1838
|
+
const credentialedDisplayHref = credentialedSameOriginHref(as) ?? (!as ? credentialedHistoryHref : void 0);
|
|
1839
|
+
as = as ? resolveUrl(as, true) : void 0;
|
|
1724
1840
|
assertSafeNavigationUrl(resolveUrl(url));
|
|
1725
|
-
if (as !== void 0) assertSafeNavigationUrl(
|
|
1841
|
+
if (as !== void 0) assertSafeNavigationUrl(as);
|
|
1726
1842
|
const isHydrationQueryUpdate = options?._h === 1;
|
|
1727
1843
|
const navigationLocale = resolveTransitionLocale(options?.locale);
|
|
1728
|
-
const
|
|
1729
|
-
|
|
1730
|
-
|
|
1731
|
-
|
|
1732
|
-
|
|
1733
|
-
|
|
1844
|
+
const unlocalizedRouteHref = resolveUrl(isQueryOnlyString ? `${stripBasePath(window.location.pathname, __basePath)}${url}` : url);
|
|
1845
|
+
const localRouteHref = isExternalUrl(unlocalizedRouteHref) ? toSameOriginAppPath(unlocalizedRouteHref, __basePath) : unlocalizedRouteHref;
|
|
1846
|
+
const implicitDynamicRoute = !isHydrationQueryUpdate && as === void 0 && localRouteHref !== null ? resolveDynamicRouteHref(localRouteHref) : null;
|
|
1847
|
+
const routeForNavigation = implicitDynamicRoute?.as ?? unlocalizedRouteHref;
|
|
1848
|
+
let resolved = isHydrationQueryUpdate ? normalizeHydrationNavigationUrl(as ?? resolveUrl(url)) : applyNavigationLocale(as ?? resolveUrl(routeForNavigation), navigationLocale, replaceInheritedLocale);
|
|
1849
|
+
let resolvedRoute = isHydrationQueryUpdate ? normalizeHydrationNavigationUrl(resolveUrl(url)) : applyNavigationLocale(routeForNavigation, navigationLocale, replaceInheritedLocale);
|
|
1850
|
+
let routeIdentityHref = implicitDynamicRoute ? removeNavigationLocalePrefix(implicitDynamicRoute.href) : void 0;
|
|
1851
|
+
if (urlInheritsCurrentPath) {
|
|
1852
|
+
const internalDynamicRoute = resolveCurrentDynamicRoute(unlocalizedRouteHref, as);
|
|
1853
|
+
if (internalDynamicRoute) {
|
|
1854
|
+
if (internalDynamicRoute.as) {
|
|
1855
|
+
const localizedRoute = applyNavigationLocale(internalDynamicRoute.as, navigationLocale, replaceInheritedLocale);
|
|
1856
|
+
if (as === void 0) resolved = localizedRoute;
|
|
1857
|
+
resolvedRoute = localizedRoute;
|
|
1858
|
+
} else resolvedRoute = internalDynamicRoute.href;
|
|
1859
|
+
routeIdentityHref = internalDynamicRoute.href;
|
|
1860
|
+
}
|
|
1861
|
+
}
|
|
1862
|
+
if (isExternalUrl(resolvedRoute)) {
|
|
1863
|
+
const localPath = toPreparedSameOriginPath(resolvedRoute);
|
|
1864
|
+
if (localPath == null) {
|
|
1865
|
+
window.location.href = resolvedRoute;
|
|
1866
|
+
return false;
|
|
1867
|
+
}
|
|
1868
|
+
resolvedRoute = localPath;
|
|
1734
1869
|
}
|
|
1735
1870
|
if (isExternalUrl(resolved)) {
|
|
1736
|
-
const localPath =
|
|
1871
|
+
const localPath = toPreparedSameOriginPath(resolved);
|
|
1737
1872
|
if (localPath == null) {
|
|
1738
|
-
if (
|
|
1739
|
-
|
|
1740
|
-
|
|
1873
|
+
if (process.env.NODE_ENV !== "production") throw new Error(`Invalid href: "${toBrowserNavigationHref(resolvedRoute, window.location.href, __basePath)}" and as: "${resolved}", received relative href and external as
|
|
1874
|
+
See more info: https://nextjs.org/docs/messages/invalid-relative-url-external-as`);
|
|
1875
|
+
window.location.href = resolved;
|
|
1876
|
+
return false;
|
|
1741
1877
|
}
|
|
1742
1878
|
resolved = localPath;
|
|
1743
1879
|
}
|
|
1744
|
-
if (isExternalUrl(resolvedRoute)) {
|
|
1745
|
-
const localPath = toSameOriginAppPath(resolvedRoute, __basePath);
|
|
1746
|
-
if (localPath != null) resolvedRoute = localPath;
|
|
1747
|
-
}
|
|
1748
1880
|
resolved = normalizePathTrailingSlash(resolved, __trailingSlash);
|
|
1749
1881
|
resolvedRoute = normalizePathTrailingSlash(resolvedRoute, __trailingSlash);
|
|
1750
1882
|
let interpolatedRoute = resolvedRoute;
|
|
1751
1883
|
if (resolvedRoute.includes("[")) {
|
|
1752
|
-
const projection = interpolateDynamicRouteHref(resolvedRoute, resolved, typeof url === "string" || !url.query || typeof url.query === "string" ? void 0 : url.query);
|
|
1884
|
+
const projection = interpolateDynamicRouteHref(resolvedRoute, resolved, typeof url === "string" || url.search || !url.query || typeof url.query === "string" ? void 0 : url.query);
|
|
1753
1885
|
if (projection?.href) {
|
|
1886
|
+
routeIdentityHref ??= removeNavigationLocalePrefix(resolvedRoute);
|
|
1754
1887
|
interpolatedRoute = projection.href;
|
|
1755
1888
|
if (as === void 0 && stripHash(resolved).split("?", 1)[0] === projection.routePathname) {
|
|
1756
1889
|
const remaining = new URLSearchParams();
|
|
@@ -1766,16 +1899,14 @@ async function performNavigation(url, as, options, mode, onStateUpdate, redirect
|
|
|
1766
1899
|
resolved = normalizePathTrailingSlash(`${projection.href.split(/[?#]/, 1)[0]}${searchStr ? `?${searchStr}` : ""}${hashStr}`, __trailingSlash);
|
|
1767
1900
|
}
|
|
1768
1901
|
} else {
|
|
1769
|
-
const
|
|
1770
|
-
|
|
1771
|
-
return value === void 0 || value === "" || Array.isArray(value) && value.length === 0;
|
|
1772
|
-
}) : [];
|
|
1773
|
-
const hasExplicitHrefPathname = typeof url === "string" || url.pathname !== void 0;
|
|
1902
|
+
const hrefInterpolationError = projection ? getHrefInterpolationError(resolvedRoute, projection.routePathname, projection.query) : null;
|
|
1903
|
+
const hasExplicitHrefPathname = typeof url === "string" || !urlInheritsCurrentPath;
|
|
1774
1904
|
const isMiddlewareMatch = options?.shallow !== true && getPagesMiddlewareDataHref(resolved, __basePath, { locale: navigationLocale }) !== null;
|
|
1775
|
-
if (
|
|
1905
|
+
if (hrefInterpolationError && hasExplicitHrefPathname && !isMiddlewareMatch) {
|
|
1776
1906
|
const asPathname = stripHash(resolved).split("?", 1)[0];
|
|
1777
1907
|
const routePathname = projection?.routePathname ?? stripHash(resolvedRoute).split("?", 1)[0];
|
|
1778
|
-
|
|
1908
|
+
if (asPathname === routePathname) throw hrefInterpolationError;
|
|
1909
|
+
throw new HrefInterpolationError(`The provided \`as\` value (${asPathname}) is incompatible with the \`href\` value (${routePathname}). Read more: https://nextjs.org/docs/messages/incompatible-href-as`);
|
|
1779
1910
|
}
|
|
1780
1911
|
interpolatedRoute = resolved;
|
|
1781
1912
|
}
|
|
@@ -1787,50 +1918,59 @@ async function performNavigation(url, as, options, mode, onStateUpdate, redirect
|
|
|
1787
1918
|
if (parsed.origin === getWindowOrigin()) browserEventUrl = parsed.pathname + parsed.search + parsed.hash;
|
|
1788
1919
|
} catch {}
|
|
1789
1920
|
const fullRouteUrl = interpolatedRoute !== resolved ? normalizePathTrailingSlash(toBrowserNavigationHref(interpolatedRoute, window.location.href, __basePath), __trailingSlash) : full;
|
|
1921
|
+
if (routeIdentityHref && !routeIdentityHref.startsWith("/") && !isAbsoluteUrl(routeIdentityHref)) routeIdentityHref = resolvePagesRouterHref(routeIdentityHref, {
|
|
1922
|
+
pathname: currentRoute,
|
|
1923
|
+
asPath: currentAs
|
|
1924
|
+
}, __basePath);
|
|
1925
|
+
const routeFetchUrl = routeIdentityHref ? replaceUrlPathname(routeIdentityHref, new URL(fullRouteUrl, window.location.href).pathname) : void 0;
|
|
1790
1926
|
const errorRouteHtmlFetchUrl = resolvePagesErrorHtmlFetchUrl(url, navigationLocale);
|
|
1791
|
-
const htmlFetchUrl = errorRouteHtmlFetchUrl ?? getPagesHtmlFetchUrl(fullRouteUrl, navigationLocale);
|
|
1927
|
+
const htmlFetchUrl = errorRouteHtmlFetchUrl ?? getPagesHtmlFetchUrl(routeFetchUrl ?? fullRouteUrl, navigationLocale);
|
|
1792
1928
|
const shallow = options?.shallow ?? false;
|
|
1793
1929
|
const doScroll = options?.scroll !== false;
|
|
1794
1930
|
const hash = extractHash(resolved);
|
|
1795
|
-
const
|
|
1796
|
-
|
|
1797
|
-
y: 0
|
|
1798
|
-
} : null;
|
|
1799
|
-
const navigateOptions = errorRouteHtmlFetchUrl ? {
|
|
1800
|
-
allowNotFoundResponse: true,
|
|
1931
|
+
const navigateOptions = {
|
|
1932
|
+
allowNotFoundResponse: errorRouteHtmlFetchUrl !== null,
|
|
1801
1933
|
locale: navigationLocale,
|
|
1802
1934
|
mode,
|
|
1803
|
-
scroll:
|
|
1804
|
-
|
|
1805
|
-
|
|
1806
|
-
|
|
1807
|
-
mode,
|
|
1808
|
-
scroll: scrollTarget,
|
|
1935
|
+
scroll: doScroll ? {
|
|
1936
|
+
x: 0,
|
|
1937
|
+
y: 0
|
|
1938
|
+
} : null,
|
|
1809
1939
|
isHydrationQueryUpdate: options?._h === 1
|
|
1810
1940
|
};
|
|
1811
1941
|
if (redirectBrowserHref !== void 0) navigateOptions.redirectBrowserHref = redirectBrowserHref;
|
|
1812
|
-
|
|
1813
|
-
if (
|
|
1942
|
+
navigateOptions.routeMasked = as !== void 0 && stripHash(interpolatedRoute).split("?", 1)[0] !== stripHash(resolved).split("?", 1)[0];
|
|
1943
|
+
if (routeIdentityHref) navigateOptions.routePattern = removeTrailingSlash(stripHash(routeIdentityHref).split("?", 1)[0]);
|
|
1944
|
+
const isHashOnlyNavigation = options?._h !== 1 && isHashOnlyChange(full);
|
|
1814
1945
|
const navStateOptions = { shallow };
|
|
1815
1946
|
if (navigationLocale !== void 0) navStateOptions.locale = navigationLocale;
|
|
1816
|
-
const
|
|
1947
|
+
const currentAppUrl = stripBasePath(window.location.pathname, __basePath) + window.location.search;
|
|
1948
|
+
const historyRouteUrl = routeIdentityHref ?? (redirectBrowserHref === void 0 ? preparedHistoryHref : interpolatedRoute);
|
|
1949
|
+
const absoluteInputHistoryUrl = redirectBrowserHref === void 0 && absoluteHistoryUrl !== void 0 && (__basePath === "" || !hasBasePath(new URL(absoluteHistoryUrl, window.location.href).pathname, __basePath)) ? absoluteHistoryUrl : void 0;
|
|
1950
|
+
const historyUrl = historyRouteUrl.startsWith("#") ? currentAppUrl + historyRouteUrl : historyRouteUrl;
|
|
1951
|
+
const preparedHistoryAs = resolved.startsWith("#") ? currentAppUrl + resolved : redirectBrowserHref !== void 0 || resolved.startsWith("//") ? resolved : resolvePagesRouterHref(resolved, {
|
|
1952
|
+
pathname: currentRoute,
|
|
1953
|
+
asPath: currentAs
|
|
1954
|
+
}, __basePath);
|
|
1817
1955
|
const navState = {
|
|
1818
|
-
url:
|
|
1819
|
-
as:
|
|
1956
|
+
url: credentialedHistoryHref ?? normalizePathTrailingSlash(absoluteInputHistoryUrl === void 0 ? withBasePath(historyUrl, __basePath) : historyUrl, __trailingSlash),
|
|
1957
|
+
as: credentialedDisplayHref ?? normalizePathTrailingSlash(withBasePath(preparedHistoryAs, __basePath), __trailingSlash),
|
|
1820
1958
|
options: navStateOptions
|
|
1821
1959
|
};
|
|
1822
1960
|
if (options?._h !== 1) cancelActiveNavigationEvent({ shallow });
|
|
1823
|
-
if (
|
|
1961
|
+
if (isHashOnlyNavigation) {
|
|
1824
1962
|
if (mode === "push") saveScrollPosition();
|
|
1825
1963
|
const eventUrl = resolveHashUrl(browserEventUrl);
|
|
1826
1964
|
routerEvents.emit("hashChangeStart", eventUrl, { shallow });
|
|
1827
|
-
updateHistory(mode, resolved.startsWith("#") ? resolved : redirectBrowserHref ?? full, navState);
|
|
1965
|
+
updateHistory(mode, resolved.startsWith("#") ? resolved : redirectBrowserHref ?? credentialedDisplayHref ?? full, navState);
|
|
1828
1966
|
if (doScroll) scrollToHashTarget(extractHash(resolved));
|
|
1829
1967
|
onStateUpdate?.();
|
|
1830
1968
|
routerEvents.emit("hashChangeComplete", eventUrl, { shallow });
|
|
1831
1969
|
dispatchNavigateEvent();
|
|
1832
1970
|
return true;
|
|
1833
1971
|
}
|
|
1972
|
+
const currentLocale = getCurrentUrlLocale();
|
|
1973
|
+
if (mode === "push" && interpolatedRoute !== resolved && stripHash(full) === routerRuntimeState.lastPathnameAndSearch && navigationLocale === currentLocale) mode = "replace";
|
|
1834
1974
|
const appPath = getLocalPathname(resolved);
|
|
1835
1975
|
const appPathNorm = appPath !== null ? removeTrailingSlash(appPath) : null;
|
|
1836
1976
|
const appPathEntry = appPathNorm !== null ? getPagesRouterComponentsMap()[appPathNorm] : void 0;
|
|
@@ -1859,12 +1999,12 @@ async function performNavigation(url, as, options, mode, onStateUpdate, redirect
|
|
|
1859
1999
|
if (beforeHistoryChangeEmitted) return;
|
|
1860
2000
|
beforeHistoryChangeEmitted = true;
|
|
1861
2001
|
routerEvents.emit("beforeHistoryChange", browserEventUrl, { shallow });
|
|
1862
|
-
updateHistory(mode, redirectBrowserHref ?? full, navState);
|
|
2002
|
+
updateHistory(mode, redirectBrowserHref ?? credentialedDisplayHref ?? full, navState);
|
|
1863
2003
|
};
|
|
1864
2004
|
if (!shallow) {
|
|
1865
2005
|
if (reusesMountedConfigRewritePage(full)) emitBeforeHistoryChange();
|
|
1866
2006
|
navigateOptions.beforeHistoryChange = emitBeforeHistoryChange;
|
|
1867
|
-
const result = await runNavigateClient(full, browserEventUrl, redirectBrowserHref ?? htmlFetchUrl, navigateOptions, fullRouteUrl, eventContext);
|
|
2007
|
+
const result = await runNavigateClient(full, browserEventUrl, redirectBrowserHref ?? htmlFetchUrl, navigateOptions, routeFetchUrl ?? fullRouteUrl, eventContext);
|
|
1868
2008
|
if (typeof result === "object") {
|
|
1869
2009
|
if (eventContext) clearActiveNavigationEvent(eventContext);
|
|
1870
2010
|
return performNavigation(result.redirectDestination, void 0, {
|
|
@@ -1876,8 +2016,10 @@ async function performNavigation(url, as, options, mode, onStateUpdate, redirect
|
|
|
1876
2016
|
if (result === "failed") return false;
|
|
1877
2017
|
} else {
|
|
1878
2018
|
emitBeforeHistoryChange();
|
|
1879
|
-
if (doScroll)
|
|
1880
|
-
|
|
2019
|
+
if (doScroll) {
|
|
2020
|
+
if (hash) scrollToHashTarget(hash);
|
|
2021
|
+
else window.scrollTo(0, 0);
|
|
2022
|
+
}
|
|
1881
2023
|
}
|
|
1882
2024
|
onStateUpdate?.();
|
|
1883
2025
|
if (!isQueryUpdating) {
|
|
@@ -1911,7 +2053,7 @@ async function prefetchUrl(url, as) {
|
|
|
1911
2053
|
const displayUrl = as ?? url;
|
|
1912
2054
|
const dataTarget = resolvePagesDataNavigationTarget(url, __basePath);
|
|
1913
2055
|
if (dataTarget) {
|
|
1914
|
-
const middlewareDataHref = displayUrl === url ? dataTarget.middlewareDataHref : getPagesMiddlewareDataHref(displayUrl, __basePath) ?? void 0;
|
|
2056
|
+
const middlewareDataHref = displayUrl === url ? dataTarget.middlewareDataHref : getPagesMiddlewareDataHref(displayUrl, __basePath, {}, url) ?? void 0;
|
|
1915
2057
|
prefetchPagesData({
|
|
1916
2058
|
...dataTarget,
|
|
1917
2059
|
middlewareDataHref
|
|
@@ -2017,7 +2159,8 @@ function handlePagesRouterPopState(e) {
|
|
|
2017
2159
|
if (state !== null && state !== void 0 && !isNextRouterState(state)) return;
|
|
2018
2160
|
if (wasFirst && !routerRuntimeState.routerDidNavigate && isNextRouterState(state)) {
|
|
2019
2161
|
const currentLocale = window.__VINEXT_LOCALE__;
|
|
2020
|
-
|
|
2162
|
+
const stateAs = typeof state.as === "string" ? removeNavigationLocalePrefix(stripHash(toHistoryAppPath(state.as))) : void 0;
|
|
2163
|
+
if (state.options?.locale === currentLocale && stateAs === getTrackedPagesRouterAsPath()) return;
|
|
2021
2164
|
}
|
|
2022
2165
|
const currentHash = window.location.hash;
|
|
2023
2166
|
const isHashOnly = browserUrl === routerRuntimeState.lastPathnameAndSearch && (currentHash !== routerRuntimeState.lastHash || currentHash !== "");
|
|
@@ -2075,14 +2218,28 @@ function handlePagesRouterPopState(e) {
|
|
|
2075
2218
|
x: 0,
|
|
2076
2219
|
y: 0
|
|
2077
2220
|
} : readScrollPosition(state);
|
|
2078
|
-
|
|
2079
|
-
|
|
2080
|
-
|
|
2081
|
-
|
|
2082
|
-
|
|
2221
|
+
let stateFetchUrl = browserUrl;
|
|
2222
|
+
let routePattern;
|
|
2223
|
+
let routeMasked = false;
|
|
2224
|
+
if (isNextRouterState(state) && typeof state.url === "string" && typeof state.as === "string" && stripHash(state.url) !== stripHash(state.as)) {
|
|
2225
|
+
const stateUrl = toHistoryAppPath(state.url);
|
|
2226
|
+
const stateAs = toHistoryAppPath(state.as);
|
|
2227
|
+
const dynamicRoute = interpolateDynamicRouteHref(stateUrl, removeNavigationLocalePrefix(stateAs));
|
|
2228
|
+
const concreteRouteUrl = dynamicRoute?.href || stateUrl;
|
|
2229
|
+
const fetchRouteUrl = applyNavigationLocale(concreteRouteUrl, effectiveLocale);
|
|
2230
|
+
stateFetchUrl = normalizePathTrailingSlash(withBasePath(fetchRouteUrl, __basePath), __trailingSlash);
|
|
2231
|
+
if (dynamicRoute?.href) routePattern = removeTrailingSlash(stripHash(removeNavigationLocalePrefix(stateUrl)).split("?", 1)[0]);
|
|
2232
|
+
const routePathname = getLocalPathname(concreteRouteUrl);
|
|
2233
|
+
const displayPathname = getLocalPathname(stateAs);
|
|
2234
|
+
routeMasked = routePathname === null || displayPathname === null || removeNavigationLocalePrefix(routePathname) !== removeNavigationLocalePrefix(displayPathname);
|
|
2235
|
+
}
|
|
2236
|
+
const result = await runNavigateClient(browserUrl, fullEventUrl, getPagesHtmlFetchUrl(stateFetchUrl, effectiveLocale), {
|
|
2237
|
+
locale: effectiveLocale,
|
|
2238
|
+
routePattern,
|
|
2239
|
+
routeMasked,
|
|
2083
2240
|
scroll: scrollTarget,
|
|
2084
2241
|
beforeHistoryChange: emitBeforeHistoryChange
|
|
2085
|
-
},
|
|
2242
|
+
}, stateFetchUrl, eventContext);
|
|
2086
2243
|
if (typeof result === "object") {
|
|
2087
2244
|
clearActiveNavigationEvent(eventContext);
|
|
2088
2245
|
await performNavigation(result.redirectDestination, void 0, { locale: false }, "replace", void 0, isAbsoluteOrProtocolRelativeUrl(result.redirectDestination) ? result.redirectDestination : void 0);
|
|
@@ -2143,10 +2300,11 @@ function wrapWithRouterContext(element, onCommit = noopCommit, onError = noopCom
|
|
|
2143
2300
|
*/
|
|
2144
2301
|
function withRouter(ComposedComponent) {
|
|
2145
2302
|
function WithRouterWrapper(props) {
|
|
2146
|
-
|
|
2303
|
+
const merged = {
|
|
2147
2304
|
router: useRouter(),
|
|
2148
2305
|
...props
|
|
2149
|
-
}
|
|
2306
|
+
};
|
|
2307
|
+
return createElement(ComposedComponent, merged);
|
|
2150
2308
|
}
|
|
2151
2309
|
const composed = ComposedComponent;
|
|
2152
2310
|
WithRouterWrapper.getInitialProps = composed.getInitialProps;
|
|
@@ -2154,6 +2312,33 @@ function withRouter(ComposedComponent) {
|
|
|
2154
2312
|
if (process.env.NODE_ENV !== "production") WithRouterWrapper.displayName = `withRouter(${composed.displayName || composed.name || "Unknown"})`;
|
|
2155
2313
|
return WithRouterWrapper;
|
|
2156
2314
|
}
|
|
2315
|
+
/**
|
|
2316
|
+
* Pages Router `components` map exposed on the singleton.
|
|
2317
|
+
*
|
|
2318
|
+
* In Next.js, `Router.components` doubles as (a) the cached `PrivateRouteInfo`
|
|
2319
|
+
* keyed by route pattern after a real page render, and (b) a marker store
|
|
2320
|
+
* (`{ __appRouter: true }`) for App Router routes detected via prefetch (see
|
|
2321
|
+
* `packages/next/src/shared/lib/router/router.ts:2525`). The Next.js deploy
|
|
2322
|
+
* test suite asserts the latter through `window.next.router.components`.
|
|
2323
|
+
*
|
|
2324
|
+
* vinext only writes the marker variant — the cached-page-info side is handled
|
|
2325
|
+
* by Vite's module graph + our own loader manifest — but the property must be
|
|
2326
|
+
* present and mutable so the deploy assertion can find it. The map lives
|
|
2327
|
+
* behind a `Symbol.for` global so the Link shim's Pages-mode prefetch branch
|
|
2328
|
+
* writes to the same instance even when Vite resolves the router shim and
|
|
2329
|
+
* the link shim through different module IDs.
|
|
2330
|
+
*
|
|
2331
|
+
* Issue: https://github.com/cloudflare/vinext/issues/1526
|
|
2332
|
+
*/
|
|
2333
|
+
const _components = getPagesRouterComponentsMap();
|
|
2334
|
+
function navigatePagesRouter(url, as, options, mode) {
|
|
2335
|
+
if (typeof window === "undefined") throwNoRouterInstance();
|
|
2336
|
+
const preparedUrl = prepareUrl(url);
|
|
2337
|
+
const preparedAs = as ? prepareUrl(as) : void 0;
|
|
2338
|
+
assertSafeNavigationUrl(resolveUrl(preparedUrl));
|
|
2339
|
+
if (preparedAs) assertSafeNavigationUrl(resolveUrl(preparedAs));
|
|
2340
|
+
return performNavigation(preparedUrl, preparedAs, options, mode);
|
|
2341
|
+
}
|
|
2157
2342
|
const RouterMethods = {
|
|
2158
2343
|
router: null,
|
|
2159
2344
|
readyCallbacks: [],
|
|
@@ -2161,20 +2346,10 @@ const RouterMethods = {
|
|
|
2161
2346
|
callback();
|
|
2162
2347
|
},
|
|
2163
2348
|
/** See `_components` comment above for the dual role this map plays. */
|
|
2164
|
-
components:
|
|
2349
|
+
components: _components,
|
|
2165
2350
|
sdc: getPagesStaticDataCache(),
|
|
2166
|
-
push: (url, as, options) =>
|
|
2167
|
-
|
|
2168
|
-
assertSafeNavigationUrl(resolveUrl(url));
|
|
2169
|
-
if (as !== void 0) assertSafeNavigationUrl(String(as));
|
|
2170
|
-
return performNavigation(url, as, options, "push");
|
|
2171
|
-
},
|
|
2172
|
-
replace: (url, as, options) => {
|
|
2173
|
-
if (typeof window === "undefined") throwNoRouterInstance();
|
|
2174
|
-
assertSafeNavigationUrl(resolveUrl(url));
|
|
2175
|
-
if (as !== void 0) assertSafeNavigationUrl(String(as));
|
|
2176
|
-
return performNavigation(url, as, options, "replace");
|
|
2177
|
-
},
|
|
2351
|
+
push: (url, as, options) => navigatePagesRouter(url, as, options, "push"),
|
|
2352
|
+
replace: (url, as, options) => navigatePagesRouter(url, as, options, "replace"),
|
|
2178
2353
|
back: () => {
|
|
2179
2354
|
if (typeof window === "undefined") throwNoRouterInstance();
|
|
2180
2355
|
window.history.back();
|