vinext 0.0.50 → 0.0.52
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/dist/build/google-fonts/fallback-metrics-data.js +14031 -0
- package/dist/build/google-fonts/fallback-metrics-data.js.map +1 -0
- package/dist/build/google-fonts/fallback-metrics.d.ts +13 -0
- package/dist/build/google-fonts/fallback-metrics.js +46 -0
- package/dist/build/google-fonts/fallback-metrics.js.map +1 -0
- package/dist/build/precompress.d.ts +13 -2
- package/dist/build/precompress.js +23 -13
- package/dist/build/precompress.js.map +1 -1
- package/dist/build/prerender.d.ts +4 -15
- package/dist/build/prerender.js +83 -53
- package/dist/build/prerender.js.map +1 -1
- package/dist/build/report.d.ts +5 -4
- package/dist/build/report.js +196 -348
- package/dist/build/report.js.map +1 -1
- package/dist/check.js +5 -0
- package/dist/check.js.map +1 -1
- package/dist/cli-args.d.ts +1 -0
- package/dist/cli-args.js +5 -0
- package/dist/cli-args.js.map +1 -1
- package/dist/cli.js +99 -3
- package/dist/cli.js.map +1 -1
- package/dist/client/navigation-runtime.d.ts +47 -0
- package/dist/client/navigation-runtime.js +156 -0
- package/dist/client/navigation-runtime.js.map +1 -0
- package/dist/client/pages-router-link-navigation.d.ts +26 -0
- package/dist/client/pages-router-link-navigation.js +14 -0
- package/dist/client/pages-router-link-navigation.js.map +1 -0
- package/dist/client/vinext-next-data.d.ts +12 -2
- package/dist/client/vinext-next-data.js +50 -1
- package/dist/client/vinext-next-data.js.map +1 -0
- package/dist/client/window-next.d.ts +3 -1
- package/dist/client/window-next.js.map +1 -1
- package/dist/cloudflare/kv-cache-handler.js +2 -1
- package/dist/cloudflare/kv-cache-handler.js.map +1 -1
- package/dist/config/config-matchers.d.ts +63 -16
- package/dist/config/config-matchers.js +143 -8
- package/dist/config/config-matchers.js.map +1 -1
- package/dist/config/dotenv.d.ts +11 -1
- package/dist/config/dotenv.js.map +1 -1
- package/dist/config/next-config.d.ts +107 -5
- package/dist/config/next-config.js +233 -7
- package/dist/config/next-config.js.map +1 -1
- package/dist/config/tsconfig-paths.d.ts +13 -0
- package/dist/config/tsconfig-paths.js +117 -0
- package/dist/config/tsconfig-paths.js.map +1 -0
- package/dist/deploy.js +104 -41
- package/dist/deploy.js.map +1 -1
- package/dist/entries/app-browser-entry.d.ts +2 -2
- package/dist/entries/app-browser-entry.js +34 -3
- package/dist/entries/app-browser-entry.js.map +1 -1
- package/dist/entries/app-rsc-entry.d.ts +19 -1
- package/dist/entries/app-rsc-entry.js +89 -23
- package/dist/entries/app-rsc-entry.js.map +1 -1
- package/dist/entries/app-rsc-manifest.d.ts +10 -0
- package/dist/entries/app-rsc-manifest.js +57 -7
- package/dist/entries/app-rsc-manifest.js.map +1 -1
- package/dist/entries/app-ssr-entry.d.ts +3 -3
- package/dist/entries/app-ssr-entry.js +4 -4
- package/dist/entries/app-ssr-entry.js.map +1 -1
- package/dist/entries/pages-client-entry.js +21 -7
- package/dist/entries/pages-client-entry.js.map +1 -1
- package/dist/entries/pages-server-entry.js +77 -9
- package/dist/entries/pages-server-entry.js.map +1 -1
- package/dist/entries/runtime-entry-module.d.ts +2 -1
- package/dist/entries/runtime-entry-module.js +9 -3
- package/dist/entries/runtime-entry-module.js.map +1 -1
- package/dist/index.js +260 -75
- package/dist/index.js.map +1 -1
- package/dist/plugins/client-reference-dedup.d.ts +15 -2
- package/dist/plugins/client-reference-dedup.js +138 -16
- package/dist/plugins/client-reference-dedup.js.map +1 -1
- package/dist/plugins/css-data-url.d.ts +7 -0
- package/dist/plugins/css-data-url.js +81 -0
- package/dist/plugins/css-data-url.js.map +1 -0
- package/dist/plugins/fonts.d.ts +2 -2
- package/dist/plugins/fonts.js +20 -9
- package/dist/plugins/fonts.js.map +1 -1
- package/dist/plugins/middleware-server-only.d.ts +54 -0
- package/dist/plugins/middleware-server-only.js +91 -0
- package/dist/plugins/middleware-server-only.js.map +1 -0
- package/dist/plugins/optimize-imports.js +4 -4
- package/dist/plugins/optimize-imports.js.map +1 -1
- package/dist/plugins/sass.d.ts +34 -0
- package/dist/plugins/sass.js +22 -0
- package/dist/plugins/sass.js.map +1 -0
- package/dist/plugins/strip-server-exports.js +5 -8
- package/dist/plugins/strip-server-exports.js.map +1 -1
- package/dist/routing/app-route-graph.d.ts +50 -2
- package/dist/routing/app-route-graph.js +140 -16
- package/dist/routing/app-route-graph.js.map +1 -1
- package/dist/routing/app-router.d.ts +2 -2
- package/dist/routing/app-router.js +2 -2
- package/dist/routing/app-router.js.map +1 -1
- package/dist/routing/route-pattern.d.ts +56 -1
- package/dist/routing/route-pattern.js +60 -1
- package/dist/routing/route-pattern.js.map +1 -1
- package/dist/routing/utils.d.ts +2 -1
- package/dist/routing/utils.js +4 -1
- package/dist/routing/utils.js.map +1 -1
- package/dist/server/api-handler.js +139 -37
- package/dist/server/api-handler.js.map +1 -1
- package/dist/server/app-browser-action-result.d.ts +27 -2
- package/dist/server/app-browser-action-result.js +63 -2
- package/dist/server/app-browser-action-result.js.map +1 -1
- package/dist/server/app-browser-entry.js +493 -195
- package/dist/server/app-browser-entry.js.map +1 -1
- package/dist/server/app-browser-hydration.d.ts +13 -1
- package/dist/server/app-browser-hydration.js +9 -1
- package/dist/server/app-browser-hydration.js.map +1 -1
- package/dist/server/app-browser-interception-context.d.ts +24 -0
- package/dist/server/app-browser-interception-context.js +32 -0
- package/dist/server/app-browser-interception-context.js.map +1 -0
- package/dist/server/app-browser-navigation-controller.d.ts +17 -2
- package/dist/server/app-browser-navigation-controller.js +33 -10
- package/dist/server/app-browser-navigation-controller.js.map +1 -1
- package/dist/server/app-browser-popstate.d.ts +16 -0
- package/dist/server/app-browser-popstate.js +17 -0
- package/dist/server/app-browser-popstate.js.map +1 -0
- package/dist/server/app-browser-rsc-redirect.d.ts +29 -0
- package/dist/server/app-browser-rsc-redirect.js +37 -0
- package/dist/server/app-browser-rsc-redirect.js.map +1 -0
- package/dist/server/app-browser-state.d.ts +28 -7
- package/dist/server/app-browser-state.js +63 -27
- package/dist/server/app-browser-state.js.map +1 -1
- package/dist/server/app-browser-stream.d.ts +9 -17
- package/dist/server/app-browser-stream.js +18 -13
- package/dist/server/app-browser-stream.js.map +1 -1
- package/dist/server/app-browser-visible-commit.d.ts +7 -1
- package/dist/server/app-browser-visible-commit.js +39 -5
- package/dist/server/app-browser-visible-commit.js.map +1 -1
- package/dist/server/app-elements-wire.d.ts +43 -6
- package/dist/server/app-elements-wire.js +189 -7
- package/dist/server/app-elements-wire.js.map +1 -1
- package/dist/server/app-elements.d.ts +3 -2
- package/dist/server/app-elements.js +3 -2
- package/dist/server/app-elements.js.map +1 -1
- package/dist/server/app-fallback-renderer.d.ts +10 -1
- package/dist/server/app-fallback-renderer.js +41 -3
- package/dist/server/app-fallback-renderer.js.map +1 -1
- package/dist/server/app-history-state.d.ts +26 -0
- package/dist/server/app-history-state.js +53 -0
- package/dist/server/app-history-state.js.map +1 -0
- package/dist/server/app-middleware.d.ts +13 -0
- package/dist/server/app-middleware.js +3 -1
- package/dist/server/app-middleware.js.map +1 -1
- package/dist/server/app-optimistic-routing.d.ts +54 -0
- package/dist/server/app-optimistic-routing.js +200 -0
- package/dist/server/app-optimistic-routing.js.map +1 -0
- package/dist/server/app-page-boundary-render.d.ts +10 -1
- package/dist/server/app-page-boundary-render.js +13 -6
- package/dist/server/app-page-boundary-render.js.map +1 -1
- package/dist/server/app-page-boundary.js +3 -2
- package/dist/server/app-page-boundary.js.map +1 -1
- package/dist/server/app-page-cache.d.ts +26 -1
- package/dist/server/app-page-cache.js +86 -14
- package/dist/server/app-page-cache.js.map +1 -1
- package/dist/server/app-page-dispatch.d.ts +7 -0
- package/dist/server/app-page-dispatch.js +96 -12
- package/dist/server/app-page-dispatch.js.map +1 -1
- package/dist/server/app-page-element-builder.d.ts +7 -0
- package/dist/server/app-page-element-builder.js +34 -5
- package/dist/server/app-page-element-builder.js.map +1 -1
- package/dist/server/app-page-execution.d.ts +28 -1
- package/dist/server/app-page-execution.js +91 -7
- package/dist/server/app-page-execution.js.map +1 -1
- package/dist/server/app-page-head.d.ts +7 -0
- package/dist/server/app-page-head.js +23 -3
- package/dist/server/app-page-head.js.map +1 -1
- package/dist/server/app-page-probe.d.ts +23 -1
- package/dist/server/app-page-probe.js +29 -1
- package/dist/server/app-page-probe.js.map +1 -1
- package/dist/server/app-page-render-observation.d.ts +35 -0
- package/dist/server/app-page-render-observation.js +68 -0
- package/dist/server/app-page-render-observation.js.map +1 -0
- package/dist/server/app-page-render.d.ts +7 -1
- package/dist/server/app-page-render.js +81 -4
- package/dist/server/app-page-render.js.map +1 -1
- package/dist/server/app-page-request.d.ts +1 -0
- package/dist/server/app-page-request.js.map +1 -1
- package/dist/server/app-page-response.js +7 -5
- package/dist/server/app-page-response.js.map +1 -1
- package/dist/server/app-page-route-wiring.d.ts +3 -1
- package/dist/server/app-page-route-wiring.js +59 -24
- package/dist/server/app-page-route-wiring.js.map +1 -1
- package/dist/server/app-page-stream.d.ts +5 -0
- package/dist/server/app-page-stream.js +2 -0
- package/dist/server/app-page-stream.js.map +1 -1
- package/dist/server/app-prerender-static-params.d.ts +2 -1
- package/dist/server/app-prerender-static-params.js +44 -8
- package/dist/server/app-prerender-static-params.js.map +1 -1
- package/dist/server/app-route-handler-cache.d.ts +2 -2
- package/dist/server/app-route-handler-cache.js +3 -2
- package/dist/server/app-route-handler-cache.js.map +1 -1
- package/dist/server/app-route-handler-dispatch.d.ts +6 -1
- package/dist/server/app-route-handler-dispatch.js +1 -1
- package/dist/server/app-route-handler-dispatch.js.map +1 -1
- package/dist/server/app-route-handler-execution.d.ts +17 -2
- package/dist/server/app-route-handler-execution.js.map +1 -1
- package/dist/server/app-route-handler-response.js +5 -4
- package/dist/server/app-route-handler-response.js.map +1 -1
- package/dist/server/app-router-entry.js +7 -15
- package/dist/server/app-router-entry.js.map +1 -1
- package/dist/server/app-rsc-cache-busting.d.ts +19 -1
- package/dist/server/app-rsc-cache-busting.js +36 -1
- package/dist/server/app-rsc-cache-busting.js.map +1 -1
- package/dist/server/app-rsc-embedded-chunks.d.ts +9 -0
- package/dist/server/app-rsc-embedded-chunks.js +34 -0
- package/dist/server/app-rsc-embedded-chunks.js.map +1 -0
- package/dist/server/app-rsc-errors.d.ts +4 -1
- package/dist/server/app-rsc-errors.js +1 -1
- package/dist/server/app-rsc-errors.js.map +1 -1
- package/dist/server/app-rsc-handler.d.ts +21 -5
- package/dist/server/app-rsc-handler.js +38 -15
- package/dist/server/app-rsc-handler.js.map +1 -1
- package/dist/server/app-rsc-render-mode.d.ts +4 -3
- package/dist/server/app-rsc-render-mode.js +7 -1
- package/dist/server/app-rsc-render-mode.js.map +1 -1
- package/dist/server/app-rsc-request-normalization.d.ts +4 -1
- package/dist/server/app-rsc-request-normalization.js +4 -1
- package/dist/server/app-rsc-request-normalization.js.map +1 -1
- package/dist/server/app-rsc-response-finalizer.d.ts +8 -1
- package/dist/server/app-rsc-response-finalizer.js +10 -3
- package/dist/server/app-rsc-response-finalizer.js.map +1 -1
- package/dist/server/app-rsc-route-matching.d.ts +23 -0
- package/dist/server/app-rsc-route-matching.js +47 -25
- package/dist/server/app-rsc-route-matching.js.map +1 -1
- package/dist/server/app-server-action-execution.d.ts +35 -3
- package/dist/server/app-server-action-execution.js +87 -33
- package/dist/server/app-server-action-execution.js.map +1 -1
- package/dist/server/app-ssr-entry.d.ts +3 -0
- package/dist/server/app-ssr-entry.js +83 -58
- package/dist/server/app-ssr-entry.js.map +1 -1
- package/dist/server/app-ssr-error-meta.d.ts +14 -0
- package/dist/server/app-ssr-error-meta.js +50 -0
- package/dist/server/app-ssr-error-meta.js.map +1 -0
- package/dist/server/app-ssr-stream.d.ts +7 -2
- package/dist/server/app-ssr-stream.js +26 -15
- package/dist/server/app-ssr-stream.js.map +1 -1
- package/dist/server/artifact-compatibility.d.ts +13 -3
- package/dist/server/artifact-compatibility.js +12 -8
- package/dist/server/artifact-compatibility.js.map +1 -1
- package/dist/server/cache-headers.d.ts +7 -0
- package/dist/server/cache-headers.js +19 -0
- package/dist/server/cache-headers.js.map +1 -0
- package/dist/server/cache-proof.d.ts +170 -5
- package/dist/server/cache-proof.js +472 -18
- package/dist/server/cache-proof.js.map +1 -1
- package/dist/server/client-reuse-manifest.d.ts +99 -0
- package/dist/server/client-reuse-manifest.js +212 -0
- package/dist/server/client-reuse-manifest.js.map +1 -0
- package/dist/server/default-global-error-module.d.ts +20 -0
- package/dist/server/default-global-error-module.js +20 -0
- package/dist/server/default-global-error-module.js.map +1 -0
- package/dist/server/dev-lockfile.d.ts +110 -0
- package/dist/server/dev-lockfile.js +180 -0
- package/dist/server/dev-lockfile.js.map +1 -0
- package/dist/server/dev-server.d.ts +9 -1
- package/dist/server/dev-server.js +76 -19
- package/dist/server/dev-server.js.map +1 -1
- package/dist/server/edge-api-runtime.d.ts +5 -0
- package/dist/server/edge-api-runtime.js +8 -0
- package/dist/server/edge-api-runtime.js.map +1 -0
- package/dist/server/file-based-metadata.d.ts +13 -0
- package/dist/server/file-based-metadata.js +49 -2
- package/dist/server/file-based-metadata.js.map +1 -1
- package/dist/server/headers.d.ts +20 -1
- package/dist/server/headers.js +22 -2
- package/dist/server/headers.js.map +1 -1
- package/dist/server/html.js +1 -1
- package/dist/server/html.js.map +1 -1
- package/dist/server/http-error-responses.d.ts +26 -1
- package/dist/server/http-error-responses.js +32 -2
- package/dist/server/http-error-responses.js.map +1 -1
- package/dist/server/isr-cache.d.ts +8 -3
- package/dist/server/isr-cache.js +24 -6
- package/dist/server/isr-cache.js.map +1 -1
- package/dist/server/metadata-route-response.js +22 -5
- package/dist/server/metadata-route-response.js.map +1 -1
- package/dist/server/metadata-routes.js +27 -8
- package/dist/server/metadata-routes.js.map +1 -1
- package/dist/server/middleware-runtime.d.ts +15 -0
- package/dist/server/middleware-runtime.js +60 -7
- package/dist/server/middleware-runtime.js.map +1 -1
- package/dist/server/middleware.d.ts +13 -1
- package/dist/server/middleware.js +16 -2
- package/dist/server/middleware.js.map +1 -1
- package/dist/server/navigation-planner.d.ts +26 -6
- package/dist/server/navigation-planner.js +358 -24
- package/dist/server/navigation-planner.js.map +1 -1
- package/dist/server/navigation-trace.d.ts +9 -1
- package/dist/server/navigation-trace.js +8 -0
- package/dist/server/navigation-trace.js.map +1 -1
- package/dist/server/normalize-path.d.ts +2 -1
- package/dist/server/normalize-path.js +4 -1
- package/dist/server/normalize-path.js.map +1 -1
- package/dist/server/pages-api-route.d.ts +27 -1
- package/dist/server/pages-api-route.js +25 -3
- package/dist/server/pages-api-route.js.map +1 -1
- package/dist/server/pages-data-route.d.ts +77 -0
- package/dist/server/pages-data-route.js +97 -0
- package/dist/server/pages-data-route.js.map +1 -0
- package/dist/server/pages-i18n.d.ts +51 -1
- package/dist/server/pages-i18n.js +61 -1
- package/dist/server/pages-i18n.js.map +1 -1
- package/dist/server/pages-page-data.d.ts +32 -4
- package/dist/server/pages-page-data.js +52 -19
- package/dist/server/pages-page-data.js.map +1 -1
- package/dist/server/pages-page-response.d.ts +11 -1
- package/dist/server/pages-page-response.js +6 -4
- package/dist/server/pages-page-response.js.map +1 -1
- package/dist/server/prod-server.d.ts +26 -1
- package/dist/server/prod-server.js +150 -44
- package/dist/server/prod-server.js.map +1 -1
- package/dist/server/request-pipeline.d.ts +11 -2
- package/dist/server/request-pipeline.js +28 -11
- package/dist/server/request-pipeline.js.map +1 -1
- package/dist/server/seed-cache.d.ts +12 -31
- package/dist/server/seed-cache.js +22 -35
- package/dist/server/seed-cache.js.map +1 -1
- package/dist/server/server-action-not-found.d.ts +16 -3
- package/dist/server/server-action-not-found.js +27 -4
- package/dist/server/server-action-not-found.js.map +1 -1
- package/dist/server/server-globals.d.ts +5 -0
- package/dist/server/server-globals.js +37 -0
- package/dist/server/server-globals.js.map +1 -0
- package/dist/server/skip-cache-proof.d.ts +41 -0
- package/dist/server/skip-cache-proof.js +101 -0
- package/dist/server/skip-cache-proof.js.map +1 -0
- package/dist/server/static-file-cache.d.ts +1 -1
- package/dist/server/static-file-cache.js +7 -6
- package/dist/server/static-file-cache.js.map +1 -1
- package/dist/shims/cache-runtime.d.ts +19 -2
- package/dist/shims/cache-runtime.js +67 -11
- package/dist/shims/cache-runtime.js.map +1 -1
- package/dist/shims/cache.d.ts +5 -18
- package/dist/shims/cache.js +2 -0
- package/dist/shims/cache.js.map +1 -1
- package/dist/shims/client-locale.d.ts +15 -0
- package/dist/shims/client-locale.js +13 -0
- package/dist/shims/client-locale.js.map +1 -0
- package/dist/shims/default-global-error.d.ts +32 -0
- package/dist/shims/default-global-error.js +181 -0
- package/dist/shims/default-global-error.js.map +1 -0
- package/dist/shims/document.d.ts +59 -3
- package/dist/shims/document.js +36 -5
- package/dist/shims/document.js.map +1 -1
- package/dist/shims/error-boundary.d.ts +2 -2
- package/dist/shims/error-boundary.js +6 -8
- package/dist/shims/error-boundary.js.map +1 -1
- package/dist/shims/error.d.ts +18 -1
- package/dist/shims/error.js +56 -1
- package/dist/shims/error.js.map +1 -1
- package/dist/shims/fetch-cache.d.ts +4 -1
- package/dist/shims/fetch-cache.js +40 -5
- package/dist/shims/fetch-cache.js.map +1 -1
- package/dist/shims/font-google-base.d.ts +22 -8
- package/dist/shims/font-google-base.js +41 -71
- package/dist/shims/font-google-base.js.map +1 -1
- package/dist/shims/font-local.d.ts +3 -20
- package/dist/shims/font-local.js +23 -75
- package/dist/shims/font-local.js.map +1 -1
- package/dist/shims/font-utils.d.ts +51 -0
- package/dist/shims/font-utils.js +97 -0
- package/dist/shims/font-utils.js.map +1 -0
- package/dist/shims/form.js +13 -6
- package/dist/shims/form.js.map +1 -1
- package/dist/shims/hash-scroll.d.ts +7 -0
- package/dist/shims/hash-scroll.js +30 -0
- package/dist/shims/hash-scroll.js.map +1 -0
- package/dist/shims/headers.d.ts +8 -11
- package/dist/shims/headers.js +22 -2
- package/dist/shims/headers.js.map +1 -1
- package/dist/shims/image.d.ts +1 -0
- package/dist/shims/image.js +144 -78
- package/dist/shims/image.js.map +1 -1
- package/dist/shims/internal/app-router-context.d.ts +6 -6
- package/dist/shims/internal/app-router-context.js +17 -6
- package/dist/shims/internal/app-router-context.js.map +1 -1
- package/dist/shims/link-prefetch.d.ts +9 -1
- package/dist/shims/link-prefetch.js +11 -6
- package/dist/shims/link-prefetch.js.map +1 -1
- package/dist/shims/link.d.ts +33 -5
- package/dist/shims/link.js +205 -50
- package/dist/shims/link.js.map +1 -1
- package/dist/shims/metadata.d.ts +16 -30
- package/dist/shims/metadata.js +91 -32
- package/dist/shims/metadata.js.map +1 -1
- package/dist/shims/navigation.d.ts +164 -17
- package/dist/shims/navigation.js +355 -84
- package/dist/shims/navigation.js.map +1 -1
- package/dist/shims/navigation.react-server.d.ts +3 -2
- package/dist/shims/navigation.react-server.js +5 -2
- package/dist/shims/navigation.react-server.js.map +1 -1
- package/dist/shims/og.d.ts +18 -2
- package/dist/shims/og.js +49 -1
- package/dist/shims/og.js.map +1 -0
- package/dist/shims/pages-router-runtime.d.ts +7 -0
- package/dist/shims/pages-router-runtime.js +16 -0
- package/dist/shims/pages-router-runtime.js.map +1 -0
- package/dist/shims/request-state-types.d.ts +1 -1
- package/dist/shims/root-params.d.ts +3 -1
- package/dist/shims/root-params.js +11 -3
- package/dist/shims/root-params.js.map +1 -1
- package/dist/shims/router-state.d.ts +1 -0
- package/dist/shims/router-state.js.map +1 -1
- package/dist/shims/router.d.ts +40 -7
- package/dist/shims/router.js +355 -250
- package/dist/shims/router.js.map +1 -1
- package/dist/shims/script.js +110 -32
- package/dist/shims/script.js.map +1 -1
- package/dist/shims/server.d.ts +21 -4
- package/dist/shims/server.js +31 -10
- package/dist/shims/server.js.map +1 -1
- package/dist/shims/slot.d.ts +1 -0
- package/dist/shims/slot.js +45 -1
- package/dist/shims/slot.js.map +1 -1
- package/dist/shims/unified-request-context.d.ts +1 -1
- package/dist/shims/unified-request-context.js +2 -0
- package/dist/shims/unified-request-context.js.map +1 -1
- package/dist/shims/unrecognized-action-error.d.ts +35 -0
- package/dist/shims/unrecognized-action-error.js +41 -0
- package/dist/shims/unrecognized-action-error.js.map +1 -0
- package/dist/shims/url-safety.d.ts +23 -1
- package/dist/shims/url-safety.js +29 -2
- package/dist/shims/url-safety.js.map +1 -1
- package/dist/shims/url-utils.d.ts +21 -1
- package/dist/shims/url-utils.js +67 -3
- package/dist/shims/url-utils.js.map +1 -1
- package/dist/typegen.d.ts +10 -0
- package/dist/typegen.js +242 -0
- package/dist/typegen.js.map +1 -0
- package/dist/utils/asset-prefix.d.ts +97 -0
- package/dist/utils/asset-prefix.js +124 -0
- package/dist/utils/asset-prefix.js.map +1 -0
- package/dist/utils/base-path.d.ts +7 -1
- package/dist/utils/base-path.js +10 -1
- package/dist/utils/base-path.js.map +1 -1
- package/dist/utils/cache-control-metadata.d.ts +2 -1
- package/dist/utils/cache-control-metadata.js +1 -3
- package/dist/utils/cache-control-metadata.js.map +1 -1
- package/dist/utils/domain-locale.d.ts +2 -1
- package/dist/utils/domain-locale.js +9 -1
- package/dist/utils/domain-locale.js.map +1 -1
- package/dist/utils/lazy-chunks.d.ts +1 -1
- package/dist/utils/lazy-chunks.js +1 -1
- package/dist/utils/lazy-chunks.js.map +1 -1
- package/dist/utils/navigation-signal.d.ts +1 -2
- package/dist/utils/navigation-signal.js +1 -1
- package/dist/utils/navigation-signal.js.map +1 -1
- package/dist/utils/prerender-output-paths.d.ts +15 -0
- package/dist/utils/prerender-output-paths.js +24 -0
- package/dist/utils/prerender-output-paths.js.map +1 -0
- package/dist/utils/query.d.ts +17 -1
- package/dist/utils/query.js +36 -1
- package/dist/utils/query.js.map +1 -1
- package/dist/utils/record.d.ts +5 -0
- package/dist/utils/record.js +8 -0
- package/dist/utils/record.js.map +1 -0
- package/dist/utils/sorted-array.d.ts +9 -0
- package/dist/utils/sorted-array.js +22 -0
- package/dist/utils/sorted-array.js.map +1 -0
- package/package.json +13 -5
package/dist/shims/router.js
CHANGED
|
@@ -1,11 +1,17 @@
|
|
|
1
1
|
import { stripBasePath } from "../utils/base-path.js";
|
|
2
|
+
import { assertSafeNavigationUrl } from "./url-safety.js";
|
|
3
|
+
import { addQueryParam, appendSearchParamsToUrl, urlQueryToSearchParams } from "../utils/query.js";
|
|
4
|
+
import { matchRoutePattern, routePatternParts } from "../routing/route-pattern.js";
|
|
2
5
|
import { RouterContext } from "./internal/router-context.js";
|
|
6
|
+
import { applyVinextLocaleGlobals, extractVinextNextDataJson, parseVinextNextDataJson } from "../client/vinext-next-data.js";
|
|
3
7
|
import { isValidModulePath } from "../client/validate-module-path.js";
|
|
4
8
|
import { installWindowNext } from "../client/window-next.js";
|
|
5
|
-
import { isHashOnlyBrowserUrlChange, toBrowserNavigationHref, toSameOriginAppPath } from "./url-utils.js";
|
|
6
|
-
import { addLocalePrefix, getDomainLocaleUrl } from "../utils/domain-locale.js";
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
+
import { isAbsoluteOrProtocolRelativeUrl, isHashOnlyBrowserUrlChange, normalizePathTrailingSlash, toBrowserNavigationHref, toSameOriginAppPath } from "./url-utils.js";
|
|
10
|
+
import { addLocalePrefix, getDomainLocaleUrl, getLocalePathPrefix } from "../utils/domain-locale.js";
|
|
11
|
+
import { scrollToHashTarget } from "./hash-scroll.js";
|
|
12
|
+
import { setPagesRouterPopStateHandler } from "./pages-router-runtime.js";
|
|
13
|
+
import { getCurrentBrowserLocale } from "./client-locale.js";
|
|
14
|
+
import { createElement, useContext, useEffect, useMemo, useState } from "react";
|
|
9
15
|
//#region src/shims/router.ts
|
|
10
16
|
/**
|
|
11
17
|
* next/router shim
|
|
@@ -16,6 +22,8 @@ import { createElement, useCallback, useEffect, useMemo, useState } from "react"
|
|
|
16
22
|
*/
|
|
17
23
|
/** basePath from next.config.js, injected by the plugin at build time */
|
|
18
24
|
const __basePath = process.env.__NEXT_ROUTER_BASEPATH ?? "";
|
|
25
|
+
/** trailingSlash from next.config.js, injected by the plugin at build time */
|
|
26
|
+
const __trailingSlash = process.env.__VINEXT_TRAILING_SLASH === "true";
|
|
19
27
|
function createRouterEvents() {
|
|
20
28
|
const listeners = /* @__PURE__ */ new Map();
|
|
21
29
|
return {
|
|
@@ -51,6 +59,18 @@ function resolveUrl(url) {
|
|
|
51
59
|
function resolveNavigationTarget(url, as, locale) {
|
|
52
60
|
return applyNavigationLocale(as ?? resolveUrl(url), locale);
|
|
53
61
|
}
|
|
62
|
+
function getCurrentUrlLocale() {
|
|
63
|
+
return getCurrentBrowserLocale({
|
|
64
|
+
basePath: __basePath,
|
|
65
|
+
domainLocales: getDomainLocales(),
|
|
66
|
+
hostname: getCurrentHostname()
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
function resolveTransitionLocale(locale) {
|
|
70
|
+
if (typeof window === "undefined") return void 0;
|
|
71
|
+
if (locale === false) return window.__VINEXT_DEFAULT_LOCALE__;
|
|
72
|
+
return locale ?? getCurrentUrlLocale();
|
|
73
|
+
}
|
|
54
74
|
function getDomainLocales() {
|
|
55
75
|
return window.__NEXT_DATA__?.domainLocales;
|
|
56
76
|
}
|
|
@@ -70,14 +90,31 @@ function getDomainLocalePath(url, locale) {
|
|
|
70
90
|
*/
|
|
71
91
|
function applyNavigationLocale(url, locale) {
|
|
72
92
|
if (!locale || typeof window === "undefined") return url;
|
|
73
|
-
if (
|
|
93
|
+
if (isAbsoluteOrProtocolRelativeUrl(url)) return url;
|
|
94
|
+
if (getLocalePathPrefix(url, window.__VINEXT_LOCALES__)) return url;
|
|
74
95
|
const domainLocalePath = getDomainLocalePath(url, locale);
|
|
75
96
|
if (domainLocalePath) return domainLocalePath;
|
|
76
97
|
return addLocalePrefix(url, locale, window.__VINEXT_DEFAULT_LOCALE__ ?? "");
|
|
77
98
|
}
|
|
99
|
+
function isDefaultLocaleRootNavigation(url, locale) {
|
|
100
|
+
if (typeof window === "undefined") return false;
|
|
101
|
+
if (!locale || locale !== window.__VINEXT_DEFAULT_LOCALE__) return false;
|
|
102
|
+
let parsed;
|
|
103
|
+
try {
|
|
104
|
+
parsed = new URL(url, window.location.href);
|
|
105
|
+
} catch {
|
|
106
|
+
return false;
|
|
107
|
+
}
|
|
108
|
+
return stripBasePath(parsed.pathname, __basePath) === "/";
|
|
109
|
+
}
|
|
110
|
+
function getPagesHtmlFetchUrl(browserUrl, locale) {
|
|
111
|
+
if (!isDefaultLocaleRootNavigation(browserUrl, locale)) return browserUrl;
|
|
112
|
+
const parsed = new URL(browserUrl, window.location.href);
|
|
113
|
+
return normalizePathTrailingSlash(toBrowserNavigationHref(`${normalizePathTrailingSlash(`/${locale}`, __trailingSlash)}${parsed.search}${parsed.hash}`, window.location.href, __basePath), __trailingSlash);
|
|
114
|
+
}
|
|
78
115
|
/** Check if a URL is external (any URL scheme per RFC 3986, or protocol-relative) */
|
|
79
116
|
function isExternalUrl(url) {
|
|
80
|
-
return
|
|
117
|
+
return isAbsoluteOrProtocolRelativeUrl(url);
|
|
81
118
|
}
|
|
82
119
|
/** Resolve a hash URL to a basePath-stripped app URL for event payloads */
|
|
83
120
|
function resolveHashUrl(url) {
|
|
@@ -96,15 +133,6 @@ function isHashOnlyChange(href) {
|
|
|
96
133
|
if (typeof window === "undefined") return false;
|
|
97
134
|
return isHashOnlyBrowserUrlChange(href, window.location.href, __basePath);
|
|
98
135
|
}
|
|
99
|
-
/** Scroll to hash target element, or top if no hash */
|
|
100
|
-
function scrollToHash(hash) {
|
|
101
|
-
if (!hash || hash === "#") {
|
|
102
|
-
window.scrollTo(0, 0);
|
|
103
|
-
return;
|
|
104
|
-
}
|
|
105
|
-
const el = document.getElementById(hash.slice(1));
|
|
106
|
-
if (el) el.scrollIntoView({ behavior: "auto" });
|
|
107
|
-
}
|
|
108
136
|
/** Save current scroll position into history state for back/forward restoration */
|
|
109
137
|
function saveScrollPosition() {
|
|
110
138
|
const state = window.history.state ?? {};
|
|
@@ -137,6 +165,60 @@ function _registerRouterStateAccessors(accessors) {
|
|
|
137
165
|
function setSSRContext(ctx) {
|
|
138
166
|
_setSSRContextImpl(ctx);
|
|
139
167
|
}
|
|
168
|
+
let _cachedClientPagesNavCtx = null;
|
|
169
|
+
let _cachedClientPagesNavCtxKey = null;
|
|
170
|
+
function _buildClientPagesNavigationContext(routePattern, resolvedPath, searchString) {
|
|
171
|
+
const cacheKey = `${routePattern}|${resolvedPath}|${searchString}`;
|
|
172
|
+
if (_cachedClientPagesNavCtxKey === cacheKey && _cachedClientPagesNavCtx) return _cachedClientPagesNavCtx;
|
|
173
|
+
const ctx = {
|
|
174
|
+
pathname: resolvedPath,
|
|
175
|
+
searchParams: new URLSearchParams(searchString),
|
|
176
|
+
params: routePattern ? extractRouteParamsFromPath(routePattern, resolvedPath) ?? {} : {}
|
|
177
|
+
};
|
|
178
|
+
_cachedClientPagesNavCtx = ctx;
|
|
179
|
+
_cachedClientPagesNavCtxKey = cacheKey;
|
|
180
|
+
return ctx;
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Cross-router compat shim source for `next/navigation` hooks.
|
|
184
|
+
*
|
|
185
|
+
* Returns the current Pages Router state shaped as a navigation context so
|
|
186
|
+
* the App Router hooks (useParams/useSearchParams/usePathname) can act as
|
|
187
|
+
* compat shims when invoked inside a Pages Router render. Mirrors Next.js's
|
|
188
|
+
* `adaptForPathParams` and `adaptForSearchParams` in
|
|
189
|
+
* .nextjs-ref/packages/next/src/shared/lib/router/adapters.tsx, which Next.js
|
|
190
|
+
* uses to populate SearchParamsContext / PathParamsContext for the Pages
|
|
191
|
+
* Router (see packages/next/src/server/render.tsx and
|
|
192
|
+
* packages/next/src/client/index.tsx).
|
|
193
|
+
*
|
|
194
|
+
* Returns `null` when there is no Pages Router state available — e.g. App
|
|
195
|
+
* Router pages, RSC-only renders, or pre-router renders. Callers should
|
|
196
|
+
* treat null as "App Router context, use normal app-router state".
|
|
197
|
+
*/
|
|
198
|
+
function getPagesNavigationContext() {
|
|
199
|
+
if (typeof window === "undefined") {
|
|
200
|
+
const ssrCtx = _getSSRContext();
|
|
201
|
+
if (!ssrCtx) return null;
|
|
202
|
+
let searchParams;
|
|
203
|
+
let resolvedPath;
|
|
204
|
+
try {
|
|
205
|
+
const url = new URL(ssrCtx.asPath, "http://_");
|
|
206
|
+
searchParams = url.searchParams;
|
|
207
|
+
resolvedPath = url.pathname;
|
|
208
|
+
} catch {
|
|
209
|
+
searchParams = new URLSearchParams();
|
|
210
|
+
resolvedPath = ssrCtx.pathname;
|
|
211
|
+
}
|
|
212
|
+
const params = extractRouteParamsFromPath(ssrCtx.pathname, resolvedPath) ?? {};
|
|
213
|
+
return {
|
|
214
|
+
pathname: resolvedPath,
|
|
215
|
+
searchParams,
|
|
216
|
+
params
|
|
217
|
+
};
|
|
218
|
+
}
|
|
219
|
+
const resolvedPath = stripBasePath(window.location.pathname, __basePath);
|
|
220
|
+
return _buildClientPagesNavigationContext(window.__NEXT_DATA__?.page ?? "", resolvedPath, window.location.search);
|
|
221
|
+
}
|
|
140
222
|
/**
|
|
141
223
|
* Extract param names from a Next.js route pattern.
|
|
142
224
|
* E.g., "/posts/[id]" → ["id"], "/docs/[...slug]" → ["slug"],
|
|
@@ -152,6 +234,26 @@ function extractRouteParamNames(pattern) {
|
|
|
152
234
|
for (const m of colonMatches) names.push(m[1]);
|
|
153
235
|
return names;
|
|
154
236
|
}
|
|
237
|
+
function splitPathSegments(pathname) {
|
|
238
|
+
return pathname.split("/").filter(Boolean);
|
|
239
|
+
}
|
|
240
|
+
function extractRouteParamsFromPath(pattern, pathname) {
|
|
241
|
+
return matchRoutePattern(splitPathSegments(pathname), routePatternParts(pattern));
|
|
242
|
+
}
|
|
243
|
+
function getRouteQueryFromNextData(nextData, resolvedPath) {
|
|
244
|
+
const routeQuery = {};
|
|
245
|
+
if (!nextData?.query || !nextData.page) return routeQuery;
|
|
246
|
+
const routeParamNames = extractRouteParamNames(nextData.page);
|
|
247
|
+
if (routeParamNames.length === 0) return routeQuery;
|
|
248
|
+
const currentRouteParams = extractRouteParamsFromPath(nextData.page, resolvedPath);
|
|
249
|
+
if (currentRouteParams) return currentRouteParams;
|
|
250
|
+
for (const key of routeParamNames) {
|
|
251
|
+
const value = nextData.query[key];
|
|
252
|
+
if (typeof value === "string") routeQuery[key] = value;
|
|
253
|
+
else if (Array.isArray(value)) routeQuery[key] = [...value];
|
|
254
|
+
}
|
|
255
|
+
return routeQuery;
|
|
256
|
+
}
|
|
155
257
|
function getPathnameAndQuery() {
|
|
156
258
|
if (typeof window === "undefined") {
|
|
157
259
|
const _ssrCtx = _getSSRContext();
|
|
@@ -172,16 +274,8 @@ function getPathnameAndQuery() {
|
|
|
172
274
|
}
|
|
173
275
|
const resolvedPath = stripBasePath(window.location.pathname, __basePath);
|
|
174
276
|
const pathname = window.__NEXT_DATA__?.page ?? resolvedPath;
|
|
175
|
-
const routeQuery = {};
|
|
176
277
|
const nextData = window.__NEXT_DATA__;
|
|
177
|
-
|
|
178
|
-
const routeParamNames = extractRouteParamNames(nextData.page);
|
|
179
|
-
for (const key of routeParamNames) {
|
|
180
|
-
const value = nextData.query[key];
|
|
181
|
-
if (typeof value === "string") routeQuery[key] = value;
|
|
182
|
-
else if (Array.isArray(value)) routeQuery[key] = [...value];
|
|
183
|
-
}
|
|
184
|
-
}
|
|
278
|
+
const routeQuery = getRouteQueryFromNextData(nextData, resolvedPath);
|
|
185
279
|
const searchQuery = {};
|
|
186
280
|
const params = new URLSearchParams(window.location.search);
|
|
187
281
|
for (const [key, value] of params) addQueryParam(searchQuery, key, value);
|
|
@@ -243,7 +337,7 @@ function scheduleHardNavigationAndThrow(url, message) {
|
|
|
243
337
|
* Throws on hard-navigation failures (non-OK response, missing data) so the
|
|
244
338
|
* caller can distinguish success from failure for event emission.
|
|
245
339
|
*/
|
|
246
|
-
async function navigateClient(url) {
|
|
340
|
+
async function navigateClient(url, fetchUrl = url) {
|
|
247
341
|
if (typeof window === "undefined") return;
|
|
248
342
|
const root = window.__VINEXT_ROOT__;
|
|
249
343
|
if (!root) {
|
|
@@ -261,7 +355,7 @@ async function navigateClient(url) {
|
|
|
261
355
|
try {
|
|
262
356
|
let res;
|
|
263
357
|
try {
|
|
264
|
-
res = await fetch(
|
|
358
|
+
res = await fetch(fetchUrl, {
|
|
265
359
|
headers: { Accept: "text/html" },
|
|
266
360
|
signal: controller.signal
|
|
267
361
|
});
|
|
@@ -273,9 +367,9 @@ async function navigateClient(url) {
|
|
|
273
367
|
if (!res.ok) scheduleHardNavigationAndThrow(url, `Navigation failed: ${res.status} ${res.statusText}`);
|
|
274
368
|
const html = await res.text();
|
|
275
369
|
assertStillCurrent();
|
|
276
|
-
const
|
|
277
|
-
if (!
|
|
278
|
-
const nextData =
|
|
370
|
+
const nextDataJson = extractVinextNextDataJson(html);
|
|
371
|
+
if (!nextDataJson) scheduleHardNavigationAndThrow(url, "Navigation failed: missing __NEXT_DATA__ in response");
|
|
372
|
+
const nextData = parseVinextNextDataJson(nextDataJson);
|
|
279
373
|
const { pageProps } = nextData.props;
|
|
280
374
|
let pageModuleUrl = nextData.__vinext?.pageModuleUrl;
|
|
281
375
|
if (!pageModuleUrl) {
|
|
@@ -316,6 +410,7 @@ async function navigateClient(url) {
|
|
|
316
410
|
else element = React.createElement(PageComponent, pageProps);
|
|
317
411
|
element = wrapWithRouterContext(element);
|
|
318
412
|
window.__NEXT_DATA__ = nextData;
|
|
413
|
+
applyVinextLocaleGlobals(window, nextData);
|
|
319
414
|
root.render(element);
|
|
320
415
|
} finally {
|
|
321
416
|
if (navId === _navigationId) _activeAbortController = null;
|
|
@@ -333,9 +428,9 @@ async function navigateClient(url) {
|
|
|
333
428
|
* - "failed" — genuine error, caller should return false (hard nav is already
|
|
334
429
|
* scheduled as recovery)
|
|
335
430
|
*/
|
|
336
|
-
async function runNavigateClient(fullUrl, resolvedUrl) {
|
|
431
|
+
async function runNavigateClient(fullUrl, resolvedUrl, fetchUrl = fullUrl) {
|
|
337
432
|
try {
|
|
338
|
-
await navigateClient(fullUrl);
|
|
433
|
+
await navigateClient(fullUrl, fetchUrl);
|
|
339
434
|
return "completed";
|
|
340
435
|
} catch (err) {
|
|
341
436
|
routerEvents.emit("routeChangeError", err, resolvedUrl, { shallow: false });
|
|
@@ -346,9 +441,8 @@ async function runNavigateClient(fullUrl, resolvedUrl) {
|
|
|
346
441
|
}
|
|
347
442
|
/**
|
|
348
443
|
* Build the full router value object from the current pathname, query, asPath,
|
|
349
|
-
* and a set of navigation methods.
|
|
350
|
-
*
|
|
351
|
-
* singleton methods) so the shape stays in sync.
|
|
444
|
+
* and a set of navigation methods. Shared by the Pages Router context provider
|
|
445
|
+
* and tests so the public router shape stays in sync.
|
|
352
446
|
*/
|
|
353
447
|
function buildRouterValue(pathname, query, asPath, methods) {
|
|
354
448
|
const _ssrState = _getSSRContext();
|
|
@@ -369,15 +463,125 @@ function buildRouterValue(pathname, query, asPath, methods) {
|
|
|
369
463
|
domainLocales,
|
|
370
464
|
isReady: true,
|
|
371
465
|
isPreview: false,
|
|
372
|
-
isFallback: typeof window !== "undefined"
|
|
466
|
+
isFallback: typeof window !== "undefined" ? nextData?.isFallback === true : _ssrState?.isFallback === true,
|
|
373
467
|
...methods,
|
|
374
468
|
events: routerEvents
|
|
375
469
|
};
|
|
376
470
|
}
|
|
471
|
+
/** Extract the hash fragment from a URL, including the leading `#`. */
|
|
472
|
+
function extractHash(url) {
|
|
473
|
+
const i = url.indexOf("#");
|
|
474
|
+
return i === -1 ? "" : url.slice(i);
|
|
475
|
+
}
|
|
476
|
+
/** Notify in-page listeners (e.g. useRouter hooks) that navigation occurred. */
|
|
477
|
+
function dispatchNavigateEvent() {
|
|
478
|
+
window.dispatchEvent(new CustomEvent("vinext:navigate"));
|
|
479
|
+
}
|
|
480
|
+
/**
|
|
481
|
+
* Update history with the new URL and refresh the hash-only-detection tracker.
|
|
482
|
+
* Centralises the `pushState`/`replaceState` branch so callers don't repeat it.
|
|
483
|
+
*/
|
|
484
|
+
function updateHistory(mode, url) {
|
|
485
|
+
if (mode === "push") window.history.pushState({}, "", url);
|
|
486
|
+
else window.history.replaceState({}, "", url);
|
|
487
|
+
_lastPathnameAndSearch = window.location.pathname + window.location.search;
|
|
488
|
+
}
|
|
489
|
+
/**
|
|
490
|
+
* Throw the canonical "no router instance" error used when a Pages Router
|
|
491
|
+
* navigation method (push/replace/back/reload/prefetch/beforePopState) is
|
|
492
|
+
* invoked during SSR or prerendering.
|
|
493
|
+
*
|
|
494
|
+
* Mirrors Next.js's `ServerRouter.push`/`replace`/etc. which all call
|
|
495
|
+
* `noRouter()` in `packages/next/src/server/render.tsx`. The error message
|
|
496
|
+
* matches Next.js verbatim so userland error handling and docs links work
|
|
497
|
+
* unchanged.
|
|
498
|
+
*
|
|
499
|
+
* Ported from Next.js: packages/next/src/server/render.tsx
|
|
500
|
+
* https://github.com/vercel/next.js/blob/canary/packages/next/src/server/render.tsx
|
|
501
|
+
*/
|
|
502
|
+
function throwNoRouterInstance() {
|
|
503
|
+
throw new Error("No router instance found. you should only use \"next/router\" inside the client side of your app. https://nextjs.org/docs/messages/no-router-instance");
|
|
504
|
+
}
|
|
505
|
+
/**
|
|
506
|
+
* Shared client-side navigation flow used by both `useRouter()` and the
|
|
507
|
+
* `Router` singleton. The only differences between push/replace are the
|
|
508
|
+
* history method (`pushState` vs `replaceState`), the external-URL fallback
|
|
509
|
+
* (`assign` vs `replace`), and the fact that push saves scroll position for
|
|
510
|
+
* back/forward restoration while replace does not.
|
|
511
|
+
*
|
|
512
|
+
* `onStateUpdate` lets the hook trigger a `setState` re-render at the same
|
|
513
|
+
* point that hashChangeComplete/routeChangeComplete fires; the singleton
|
|
514
|
+
* passes no callback.
|
|
515
|
+
*/
|
|
516
|
+
async function performNavigation(url, as, options, mode, onStateUpdate) {
|
|
517
|
+
if (typeof window === "undefined") throwNoRouterInstance();
|
|
518
|
+
assertSafeNavigationUrl(resolveUrl(url));
|
|
519
|
+
if (as !== void 0) assertSafeNavigationUrl(String(as));
|
|
520
|
+
const navigationLocale = resolveTransitionLocale(options?.locale);
|
|
521
|
+
let resolved = resolveNavigationTarget(url, as, navigationLocale);
|
|
522
|
+
if (isExternalUrl(resolved)) {
|
|
523
|
+
const localPath = toSameOriginAppPath(resolved, __basePath);
|
|
524
|
+
if (localPath == null) {
|
|
525
|
+
if (mode === "push") window.location.assign(resolved);
|
|
526
|
+
else window.location.replace(resolved);
|
|
527
|
+
return true;
|
|
528
|
+
}
|
|
529
|
+
resolved = localPath;
|
|
530
|
+
}
|
|
531
|
+
resolved = normalizePathTrailingSlash(resolved, __trailingSlash);
|
|
532
|
+
const full = normalizePathTrailingSlash(toBrowserNavigationHref(resolved, window.location.href, __basePath), __trailingSlash);
|
|
533
|
+
const htmlFetchUrl = getPagesHtmlFetchUrl(full, navigationLocale);
|
|
534
|
+
const shallow = options?.shallow ?? false;
|
|
535
|
+
const doScroll = options?.scroll !== false;
|
|
536
|
+
if (isHashOnlyChange(full)) {
|
|
537
|
+
const eventUrl = resolveHashUrl(full);
|
|
538
|
+
routerEvents.emit("hashChangeStart", eventUrl, { shallow });
|
|
539
|
+
updateHistory(mode, resolved.startsWith("#") ? resolved : full);
|
|
540
|
+
if (doScroll) scrollToHashTarget(extractHash(resolved));
|
|
541
|
+
onStateUpdate?.();
|
|
542
|
+
routerEvents.emit("hashChangeComplete", eventUrl, { shallow });
|
|
543
|
+
dispatchNavigateEvent();
|
|
544
|
+
return true;
|
|
545
|
+
}
|
|
546
|
+
if (mode === "push") saveScrollPosition();
|
|
547
|
+
routerEvents.emit("routeChangeStart", resolved, { shallow });
|
|
548
|
+
routerEvents.emit("beforeHistoryChange", resolved, { shallow });
|
|
549
|
+
updateHistory(mode, full);
|
|
550
|
+
if (!shallow) {
|
|
551
|
+
const result = await runNavigateClient(full, resolved, htmlFetchUrl);
|
|
552
|
+
if (result === "cancelled") return true;
|
|
553
|
+
if (result === "failed") return false;
|
|
554
|
+
}
|
|
555
|
+
onStateUpdate?.();
|
|
556
|
+
routerEvents.emit("routeChangeComplete", resolved, { shallow });
|
|
557
|
+
const hash = extractHash(resolved);
|
|
558
|
+
if (doScroll) if (hash) scrollToHashTarget(hash);
|
|
559
|
+
else window.scrollTo(0, 0);
|
|
560
|
+
dispatchNavigateEvent();
|
|
561
|
+
return true;
|
|
562
|
+
}
|
|
563
|
+
/** Inject a `<link rel="prefetch">` for the target page. */
|
|
564
|
+
async function prefetchUrl(url) {
|
|
565
|
+
if (typeof document !== "undefined") {
|
|
566
|
+
const link = document.createElement("link");
|
|
567
|
+
link.rel = "prefetch";
|
|
568
|
+
link.href = url;
|
|
569
|
+
link.as = "document";
|
|
570
|
+
document.head.appendChild(link);
|
|
571
|
+
}
|
|
572
|
+
}
|
|
377
573
|
/**
|
|
378
574
|
* useRouter hook - Pages Router compatible.
|
|
575
|
+
*
|
|
576
|
+
* Ported from Next.js: packages/next/src/client/router.ts
|
|
577
|
+
* https://github.com/vercel/next.js/blob/canary/packages/next/src/client/router.ts
|
|
379
578
|
*/
|
|
380
579
|
function useRouter() {
|
|
580
|
+
const router = useContext(RouterContext);
|
|
581
|
+
if (!router) throw new Error("NextRouter was not mounted. https://nextjs.org/docs/messages/next-router-not-mounted");
|
|
582
|
+
return router;
|
|
583
|
+
}
|
|
584
|
+
function PagesRouterProvider({ children }) {
|
|
381
585
|
const [{ pathname, query, asPath }, setState] = useState(getPathnameAndQuery);
|
|
382
586
|
useEffect(() => {
|
|
383
587
|
const onNavigate = ((_e) => {
|
|
@@ -386,125 +590,23 @@ function useRouter() {
|
|
|
386
590
|
window.addEventListener("vinext:navigate", onNavigate);
|
|
387
591
|
return () => window.removeEventListener("vinext:navigate", onNavigate);
|
|
388
592
|
}, []);
|
|
389
|
-
const
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
}
|
|
397
|
-
resolved = localPath;
|
|
398
|
-
}
|
|
399
|
-
const full = toBrowserNavigationHref(resolved, window.location.href, __basePath);
|
|
400
|
-
if (isHashOnlyChange(full)) {
|
|
401
|
-
const eventUrl = resolveHashUrl(full);
|
|
402
|
-
routerEvents.emit("hashChangeStart", eventUrl, { shallow: options?.shallow ?? false });
|
|
403
|
-
const hash = resolved.includes("#") ? resolved.slice(resolved.indexOf("#")) : "";
|
|
404
|
-
window.history.pushState({}, "", resolved.startsWith("#") ? resolved : full);
|
|
405
|
-
_lastPathnameAndSearch = window.location.pathname + window.location.search;
|
|
406
|
-
scrollToHash(hash);
|
|
407
|
-
setState(getPathnameAndQuery());
|
|
408
|
-
routerEvents.emit("hashChangeComplete", eventUrl, { shallow: options?.shallow ?? false });
|
|
409
|
-
window.dispatchEvent(new CustomEvent("vinext:navigate"));
|
|
410
|
-
return true;
|
|
411
|
-
}
|
|
412
|
-
saveScrollPosition();
|
|
413
|
-
routerEvents.emit("routeChangeStart", resolved, { shallow: options?.shallow ?? false });
|
|
414
|
-
routerEvents.emit("beforeHistoryChange", resolved, { shallow: options?.shallow ?? false });
|
|
415
|
-
window.history.pushState({}, "", full);
|
|
416
|
-
_lastPathnameAndSearch = window.location.pathname + window.location.search;
|
|
417
|
-
if (!options?.shallow) {
|
|
418
|
-
const result = await runNavigateClient(full, resolved);
|
|
419
|
-
if (result === "cancelled") return true;
|
|
420
|
-
if (result === "failed") return false;
|
|
421
|
-
}
|
|
422
|
-
setState(getPathnameAndQuery());
|
|
423
|
-
routerEvents.emit("routeChangeComplete", resolved, { shallow: options?.shallow ?? false });
|
|
424
|
-
const hash = resolved.includes("#") ? resolved.slice(resolved.indexOf("#")) : "";
|
|
425
|
-
if (hash) scrollToHash(hash);
|
|
426
|
-
else if (options?.scroll !== false) window.scrollTo(0, 0);
|
|
427
|
-
window.dispatchEvent(new CustomEvent("vinext:navigate"));
|
|
428
|
-
return true;
|
|
429
|
-
}, []);
|
|
430
|
-
const replace = useCallback(async (url, as, options) => {
|
|
431
|
-
let resolved = resolveNavigationTarget(url, as, options?.locale);
|
|
432
|
-
if (isExternalUrl(resolved)) {
|
|
433
|
-
const localPath = toSameOriginAppPath(resolved, __basePath);
|
|
434
|
-
if (localPath == null) {
|
|
435
|
-
window.location.replace(resolved);
|
|
436
|
-
return true;
|
|
437
|
-
}
|
|
438
|
-
resolved = localPath;
|
|
439
|
-
}
|
|
440
|
-
const full = toBrowserNavigationHref(resolved, window.location.href, __basePath);
|
|
441
|
-
if (isHashOnlyChange(full)) {
|
|
442
|
-
const eventUrl = resolveHashUrl(full);
|
|
443
|
-
routerEvents.emit("hashChangeStart", eventUrl, { shallow: options?.shallow ?? false });
|
|
444
|
-
const hash = resolved.includes("#") ? resolved.slice(resolved.indexOf("#")) : "";
|
|
445
|
-
window.history.replaceState({}, "", resolved.startsWith("#") ? resolved : full);
|
|
446
|
-
_lastPathnameAndSearch = window.location.pathname + window.location.search;
|
|
447
|
-
scrollToHash(hash);
|
|
448
|
-
setState(getPathnameAndQuery());
|
|
449
|
-
routerEvents.emit("hashChangeComplete", eventUrl, { shallow: options?.shallow ?? false });
|
|
450
|
-
window.dispatchEvent(new CustomEvent("vinext:navigate"));
|
|
451
|
-
return true;
|
|
452
|
-
}
|
|
453
|
-
routerEvents.emit("routeChangeStart", resolved, { shallow: options?.shallow ?? false });
|
|
454
|
-
routerEvents.emit("beforeHistoryChange", resolved, { shallow: options?.shallow ?? false });
|
|
455
|
-
window.history.replaceState({}, "", full);
|
|
456
|
-
_lastPathnameAndSearch = window.location.pathname + window.location.search;
|
|
457
|
-
if (!options?.shallow) {
|
|
458
|
-
const result = await runNavigateClient(full, resolved);
|
|
459
|
-
if (result === "cancelled") return true;
|
|
460
|
-
if (result === "failed") return false;
|
|
461
|
-
}
|
|
462
|
-
setState(getPathnameAndQuery());
|
|
463
|
-
routerEvents.emit("routeChangeComplete", resolved, { shallow: options?.shallow ?? false });
|
|
464
|
-
const hash = resolved.includes("#") ? resolved.slice(resolved.indexOf("#")) : "";
|
|
465
|
-
if (hash) scrollToHash(hash);
|
|
466
|
-
else if (options?.scroll !== false) window.scrollTo(0, 0);
|
|
467
|
-
window.dispatchEvent(new CustomEvent("vinext:navigate"));
|
|
468
|
-
return true;
|
|
469
|
-
}, []);
|
|
470
|
-
const back = useCallback(() => {
|
|
471
|
-
window.history.back();
|
|
472
|
-
}, []);
|
|
473
|
-
const reload = useCallback(() => {
|
|
474
|
-
window.location.reload();
|
|
475
|
-
}, []);
|
|
476
|
-
const prefetch = useCallback(async (url) => {
|
|
477
|
-
if (typeof document !== "undefined") {
|
|
478
|
-
const link = document.createElement("link");
|
|
479
|
-
link.rel = "prefetch";
|
|
480
|
-
link.href = url;
|
|
481
|
-
link.as = "document";
|
|
482
|
-
document.head.appendChild(link);
|
|
483
|
-
}
|
|
484
|
-
}, []);
|
|
485
|
-
return useMemo(() => buildRouterValue(pathname, query, asPath, {
|
|
486
|
-
push,
|
|
487
|
-
replace,
|
|
488
|
-
back,
|
|
489
|
-
reload,
|
|
490
|
-
prefetch,
|
|
491
|
-
beforePopState: (cb) => {
|
|
492
|
-
_beforePopStateCb = cb;
|
|
493
|
-
}
|
|
593
|
+
const router = useMemo(() => buildRouterValue(pathname, query, asPath, {
|
|
594
|
+
push: Router.push,
|
|
595
|
+
replace: Router.replace,
|
|
596
|
+
back: Router.back,
|
|
597
|
+
reload: Router.reload,
|
|
598
|
+
prefetch: Router.prefetch,
|
|
599
|
+
beforePopState: Router.beforePopState
|
|
494
600
|
}), [
|
|
495
601
|
pathname,
|
|
496
602
|
query,
|
|
497
|
-
asPath
|
|
498
|
-
push,
|
|
499
|
-
replace,
|
|
500
|
-
back,
|
|
501
|
-
reload,
|
|
502
|
-
prefetch
|
|
603
|
+
asPath
|
|
503
604
|
]);
|
|
605
|
+
return createElement(RouterContext.Provider, { value: router }, children);
|
|
504
606
|
}
|
|
505
607
|
let _beforePopStateCb;
|
|
506
608
|
let _lastPathnameAndSearch = typeof window !== "undefined" ? window.location.pathname + window.location.search : "";
|
|
507
|
-
|
|
609
|
+
function handlePagesRouterPopState(e) {
|
|
508
610
|
const browserUrl = window.location.pathname + window.location.search;
|
|
509
611
|
const appUrl = stripBasePath(window.location.pathname, __basePath) + window.location.search;
|
|
510
612
|
const isHashOnly = browserUrl === _lastPathnameAndSearch;
|
|
@@ -519,42 +621,33 @@ if (typeof window !== "undefined") window.addEventListener("popstate", (e) => {
|
|
|
519
621
|
if (isHashOnly) {
|
|
520
622
|
const hashUrl = appUrl + window.location.hash;
|
|
521
623
|
routerEvents.emit("hashChangeStart", hashUrl, { shallow: false });
|
|
522
|
-
|
|
624
|
+
scrollToHashTarget(window.location.hash);
|
|
523
625
|
routerEvents.emit("hashChangeComplete", hashUrl, { shallow: false });
|
|
524
|
-
|
|
626
|
+
dispatchNavigateEvent();
|
|
525
627
|
return;
|
|
526
628
|
}
|
|
527
629
|
const fullAppUrl = appUrl + window.location.hash;
|
|
528
630
|
routerEvents.emit("routeChangeStart", fullAppUrl, { shallow: false });
|
|
529
631
|
routerEvents.emit("beforeHistoryChange", fullAppUrl, { shallow: false });
|
|
530
632
|
(async () => {
|
|
531
|
-
if (await runNavigateClient(browserUrl, fullAppUrl) === "completed") {
|
|
633
|
+
if (await runNavigateClient(browserUrl, fullAppUrl, getPagesHtmlFetchUrl(browserUrl, window.__VINEXT_LOCALE__)) === "completed") {
|
|
532
634
|
routerEvents.emit("routeChangeComplete", fullAppUrl, { shallow: false });
|
|
533
635
|
restoreScrollPosition(e.state);
|
|
534
|
-
|
|
636
|
+
dispatchNavigateEvent();
|
|
535
637
|
}
|
|
536
638
|
})();
|
|
537
|
-
}
|
|
639
|
+
}
|
|
640
|
+
setPagesRouterPopStateHandler(handlePagesRouterPopState);
|
|
538
641
|
/**
|
|
539
642
|
* Wrap a React element in a RouterContext.Provider so that
|
|
540
643
|
* next/compat/router's useRouter() returns the real Pages Router value.
|
|
541
644
|
*
|
|
542
|
-
*
|
|
543
|
-
*
|
|
544
|
-
*
|
|
545
|
-
* that a hook-based component would create.
|
|
645
|
+
* The provider owns the reactive Pages Router snapshot so next/router and
|
|
646
|
+
* next/compat/router consumers share one context value instead of each hook
|
|
647
|
+
* installing its own global URL-change listener.
|
|
546
648
|
*/
|
|
547
649
|
function wrapWithRouterContext(element) {
|
|
548
|
-
|
|
549
|
-
const routerValue = buildRouterValue(pathname, query, asPath, {
|
|
550
|
-
push: Router.push,
|
|
551
|
-
replace: Router.replace,
|
|
552
|
-
back: Router.back,
|
|
553
|
-
reload: Router.reload,
|
|
554
|
-
prefetch: Router.prefetch,
|
|
555
|
-
beforePopState: Router.beforePopState
|
|
556
|
-
});
|
|
557
|
-
return createElement(RouterContext.Provider, { value: routerValue }, element);
|
|
650
|
+
return createElement(PagesRouterProvider, null, element);
|
|
558
651
|
}
|
|
559
652
|
/**
|
|
560
653
|
* Higher-order component that injects the Pages Router `router` instance as
|
|
@@ -588,102 +681,114 @@ function withRouter(ComposedComponent) {
|
|
|
588
681
|
if (process.env.NODE_ENV !== "production") WithRouterWrapper.displayName = `withRouter(${composed.displayName || composed.name || "Unknown"})`;
|
|
589
682
|
return WithRouterWrapper;
|
|
590
683
|
}
|
|
591
|
-
const Router = {
|
|
592
|
-
push:
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
684
|
+
const Router = Object.defineProperties({
|
|
685
|
+
push: (url, as, options) => {
|
|
686
|
+
if (typeof window === "undefined") throwNoRouterInstance();
|
|
687
|
+
return performNavigation(url, as, options, "push");
|
|
688
|
+
},
|
|
689
|
+
replace: (url, as, options) => {
|
|
690
|
+
if (typeof window === "undefined") throwNoRouterInstance();
|
|
691
|
+
return performNavigation(url, as, options, "replace");
|
|
692
|
+
},
|
|
693
|
+
back: () => {
|
|
694
|
+
if (typeof window === "undefined") throwNoRouterInstance();
|
|
695
|
+
window.history.back();
|
|
696
|
+
},
|
|
697
|
+
reload: () => {
|
|
698
|
+
if (typeof window === "undefined") throwNoRouterInstance();
|
|
699
|
+
window.location.reload();
|
|
700
|
+
},
|
|
701
|
+
prefetch: (url) => {
|
|
702
|
+
if (typeof window === "undefined") throwNoRouterInstance();
|
|
703
|
+
return prefetchUrl(url);
|
|
704
|
+
},
|
|
705
|
+
beforePopState: (cb) => {
|
|
706
|
+
if (typeof window === "undefined") throwNoRouterInstance();
|
|
707
|
+
_beforePopStateCb = cb;
|
|
708
|
+
},
|
|
709
|
+
events: routerEvents
|
|
710
|
+
}, {
|
|
711
|
+
pathname: {
|
|
712
|
+
enumerable: true,
|
|
713
|
+
get() {
|
|
714
|
+
return getPathnameAndQuery().pathname;
|
|
601
715
|
}
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
const
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
716
|
+
},
|
|
717
|
+
route: {
|
|
718
|
+
enumerable: true,
|
|
719
|
+
get() {
|
|
720
|
+
const { pathname } = getPathnameAndQuery();
|
|
721
|
+
if (typeof window === "undefined") return pathname;
|
|
722
|
+
return window.__NEXT_DATA__?.page ?? pathname;
|
|
723
|
+
}
|
|
724
|
+
},
|
|
725
|
+
query: {
|
|
726
|
+
enumerable: true,
|
|
727
|
+
get() {
|
|
728
|
+
return getPathnameAndQuery().query;
|
|
613
729
|
}
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
if (!options?.shallow) {
|
|
620
|
-
const result = await runNavigateClient(full, resolved);
|
|
621
|
-
if (result === "cancelled") return true;
|
|
622
|
-
if (result === "failed") return false;
|
|
730
|
+
},
|
|
731
|
+
asPath: {
|
|
732
|
+
enumerable: true,
|
|
733
|
+
get() {
|
|
734
|
+
return getPathnameAndQuery().asPath;
|
|
623
735
|
}
|
|
624
|
-
routerEvents.emit("routeChangeComplete", resolved, { shallow: options?.shallow ?? false });
|
|
625
|
-
const hash = resolved.includes("#") ? resolved.slice(resolved.indexOf("#")) : "";
|
|
626
|
-
if (hash) scrollToHash(hash);
|
|
627
|
-
else if (options?.scroll !== false) window.scrollTo(0, 0);
|
|
628
|
-
window.dispatchEvent(new CustomEvent("vinext:navigate"));
|
|
629
|
-
return true;
|
|
630
736
|
},
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
737
|
+
basePath: {
|
|
738
|
+
enumerable: true,
|
|
739
|
+
value: __basePath,
|
|
740
|
+
writable: false
|
|
741
|
+
},
|
|
742
|
+
locale: {
|
|
743
|
+
enumerable: true,
|
|
744
|
+
get() {
|
|
745
|
+
if (typeof window === "undefined") return _getSSRContext()?.locale;
|
|
746
|
+
return window.__VINEXT_LOCALE__;
|
|
640
747
|
}
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
window.
|
|
647
|
-
_lastPathnameAndSearch = window.location.pathname + window.location.search;
|
|
648
|
-
scrollToHash(hash);
|
|
649
|
-
routerEvents.emit("hashChangeComplete", eventUrl, { shallow: options?.shallow ?? false });
|
|
650
|
-
window.dispatchEvent(new CustomEvent("vinext:navigate"));
|
|
651
|
-
return true;
|
|
748
|
+
},
|
|
749
|
+
locales: {
|
|
750
|
+
enumerable: true,
|
|
751
|
+
get() {
|
|
752
|
+
if (typeof window === "undefined") return _getSSRContext()?.locales;
|
|
753
|
+
return window.__VINEXT_LOCALES__;
|
|
652
754
|
}
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
if (result === "cancelled") return true;
|
|
660
|
-
if (result === "failed") return false;
|
|
755
|
+
},
|
|
756
|
+
defaultLocale: {
|
|
757
|
+
enumerable: true,
|
|
758
|
+
get() {
|
|
759
|
+
if (typeof window === "undefined") return _getSSRContext()?.defaultLocale;
|
|
760
|
+
return window.__VINEXT_DEFAULT_LOCALE__;
|
|
661
761
|
}
|
|
662
|
-
routerEvents.emit("routeChangeComplete", resolved, { shallow: options?.shallow ?? false });
|
|
663
|
-
const hash = resolved.includes("#") ? resolved.slice(resolved.indexOf("#")) : "";
|
|
664
|
-
if (hash) scrollToHash(hash);
|
|
665
|
-
else if (options?.scroll !== false) window.scrollTo(0, 0);
|
|
666
|
-
window.dispatchEvent(new CustomEvent("vinext:navigate"));
|
|
667
|
-
return true;
|
|
668
762
|
},
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
link.rel = "prefetch";
|
|
675
|
-
link.href = url;
|
|
676
|
-
link.as = "document";
|
|
677
|
-
document.head.appendChild(link);
|
|
763
|
+
domainLocales: {
|
|
764
|
+
enumerable: true,
|
|
765
|
+
get() {
|
|
766
|
+
if (typeof window === "undefined") return _getSSRContext()?.domainLocales;
|
|
767
|
+
return window.__NEXT_DATA__?.domainLocales;
|
|
678
768
|
}
|
|
679
769
|
},
|
|
680
|
-
|
|
681
|
-
|
|
770
|
+
isReady: {
|
|
771
|
+
enumerable: true,
|
|
772
|
+
value: true,
|
|
773
|
+
writable: false
|
|
682
774
|
},
|
|
683
|
-
|
|
684
|
-
|
|
775
|
+
isPreview: {
|
|
776
|
+
enumerable: true,
|
|
777
|
+
value: false,
|
|
778
|
+
writable: false
|
|
779
|
+
},
|
|
780
|
+
isFallback: {
|
|
781
|
+
enumerable: true,
|
|
782
|
+
get() {
|
|
783
|
+
if (typeof window === "undefined") return _getSSRContext()?.isFallback === true;
|
|
784
|
+
return window.__NEXT_DATA__?.isFallback === true;
|
|
785
|
+
}
|
|
786
|
+
}
|
|
787
|
+
});
|
|
685
788
|
if (typeof window !== "undefined") installWindowNext({ router: Router });
|
|
789
|
+
const _PAGES_NAVIGATION_ACCESSOR_KEY = Symbol.for("vinext.navigation.pagesNavigationContextAccessor");
|
|
790
|
+
globalThis[_PAGES_NAVIGATION_ACCESSOR_KEY] = getPagesNavigationContext;
|
|
686
791
|
//#endregion
|
|
687
|
-
export { _registerRouterStateAccessors, applyNavigationLocale, Router as default, isExternalUrl, isHashOnlyChange, setSSRContext, useRouter, withRouter, wrapWithRouterContext };
|
|
792
|
+
export { _registerRouterStateAccessors, applyNavigationLocale, Router as default, getPagesNavigationContext, isExternalUrl, isHashOnlyChange, setSSRContext, useRouter, withRouter, wrapWithRouterContext };
|
|
688
793
|
|
|
689
794
|
//# sourceMappingURL=router.js.map
|