vinext 0.0.49 → 0.0.51
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/client-build-config.js.map +1 -1
- package/dist/build/google-fonts/build-url.js.map +1 -1
- 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/google-fonts/get-axes.js.map +1 -1
- package/dist/build/google-fonts/sort-variants.js.map +1 -1
- package/dist/build/google-fonts/validate.js.map +1 -1
- package/dist/build/layout-classification.js.map +1 -1
- package/dist/build/nitro-route-rules.js.map +1 -1
- package/dist/build/precompress.d.ts +13 -2
- package/dist/build/precompress.js +12 -3
- package/dist/build/precompress.js.map +1 -1
- package/dist/build/prerender.d.ts +17 -1
- package/dist/build/prerender.js +114 -23
- 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/build/route-classification-injector.js.map +1 -1
- package/dist/build/route-classification-manifest.js.map +1 -1
- package/dist/build/run-prerender.js.map +1 -1
- package/dist/build/server-manifest.js.map +1 -1
- package/dist/build/ssr-manifest.js.map +1 -1
- package/dist/build/standalone.js.map +1 -1
- package/dist/build/static-export.js.map +1 -1
- package/dist/check.js +2 -1
- package/dist/check.js.map +1 -1
- package/dist/cli-args.js.map +1 -1
- package/dist/cli.js +68 -7
- package/dist/cli.js.map +1 -1
- package/dist/client/instrumentation-client-state.js.map +1 -1
- package/dist/client/validate-module-path.js.map +1 -1
- package/dist/client/vinext-next-data.d.ts +5 -1
- package/dist/client/window-next.d.ts +151 -0
- package/dist/client/window-next.js +48 -0
- package/dist/client/window-next.js.map +1 -0
- package/dist/cloudflare/kv-cache-handler.js.map +1 -1
- package/dist/cloudflare/tpr.js +2 -1
- package/dist/cloudflare/tpr.js.map +1 -1
- package/dist/config/config-matchers.d.ts +3 -1
- package/dist/config/config-matchers.js +5 -4
- 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 +93 -6
- package/dist/config/next-config.js +233 -6
- 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 +16 -7
- package/dist/deploy.js.map +1 -1
- package/dist/entries/app-browser-entry.d.ts +3 -1
- package/dist/entries/app-browser-entry.js +36 -2
- 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 +49 -12
- package/dist/entries/app-rsc-entry.js.map +1 -1
- package/dist/entries/app-rsc-manifest.d.ts +9 -0
- package/dist/entries/app-rsc-manifest.js +8 -1
- package/dist/entries/app-rsc-manifest.js.map +1 -1
- package/dist/entries/app-ssr-entry.js.map +1 -1
- package/dist/entries/pages-client-entry.js +3 -5
- package/dist/entries/pages-client-entry.js.map +1 -1
- package/dist/entries/pages-entry-helpers.js.map +1 -1
- package/dist/entries/pages-server-entry.js +34 -1
- package/dist/entries/pages-server-entry.js.map +1 -1
- package/dist/entries/runtime-entry-module.js.map +1 -1
- package/dist/index.js +204 -53
- package/dist/index.js.map +1 -1
- package/dist/init.js.map +1 -1
- package/dist/plugins/async-hooks-stub.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/fonts.d.ts +2 -2
- package/dist/plugins/fonts.js +15 -6
- package/dist/plugins/fonts.js.map +1 -1
- package/dist/plugins/instrumentation-client.js.map +1 -1
- package/dist/plugins/og-assets.js.map +1 -1
- package/dist/plugins/optimize-imports.js.map +1 -1
- package/dist/plugins/postcss.js.map +1 -1
- package/dist/plugins/rsc-client-reference-loaders.d.ts +7 -0
- package/dist/plugins/rsc-client-reference-loaders.js +48 -0
- package/dist/plugins/rsc-client-reference-loaders.js.map +1 -0
- package/dist/plugins/rsc-client-shim-excludes.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/server-externals-manifest.js.map +1 -1
- package/dist/plugins/strip-server-exports.js.map +1 -1
- package/dist/routing/app-route-graph.d.ts +78 -6
- package/dist/routing/app-route-graph.js +241 -25
- package/dist/routing/app-route-graph.js.map +1 -1
- package/dist/routing/app-router.js.map +1 -1
- package/dist/routing/file-matcher.js.map +1 -1
- package/dist/routing/pages-router.js.map +1 -1
- package/dist/routing/route-matching.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/route-trie.js.map +1 -1
- package/dist/routing/route-validation.js.map +1 -1
- package/dist/routing/utils.js.map +1 -1
- package/dist/server/api-handler.js.map +1 -1
- package/dist/server/app-browser-action-result.d.ts +44 -0
- package/dist/server/app-browser-action-result.js +79 -0
- package/dist/server/app-browser-action-result.js.map +1 -0
- package/dist/server/app-browser-entry.js +330 -133
- package/dist/server/app-browser-entry.js.map +1 -1
- package/dist/server/app-browser-error.js.map +1 -1
- package/dist/server/app-browser-hydration.d.ts +31 -0
- package/dist/server/app-browser-hydration.js +30 -0
- package/dist/server/app-browser-hydration.js.map +1 -0
- package/dist/server/app-browser-navigation-controller.d.ts +20 -4
- package/dist/server/app-browser-navigation-controller.js +90 -23
- 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 +28 -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 +27 -23
- package/dist/server/app-browser-state.js +158 -54
- package/dist/server/app-browser-state.js.map +1 -1
- package/dist/server/app-browser-stream.d.ts +9 -4
- package/dist/server/app-browser-stream.js +29 -8
- package/dist/server/app-browser-stream.js.map +1 -1
- package/dist/server/app-browser-visible-commit.d.ts +11 -1
- package/dist/server/app-browser-visible-commit.js +69 -21
- package/dist/server/app-browser-visible-commit.js.map +1 -1
- package/dist/server/app-client-reference-preloader.js.map +1 -1
- package/dist/server/app-elements-wire.d.ts +43 -6
- package/dist/server/app-elements-wire.js +121 -5
- package/dist/server/app-elements-wire.js.map +1 -1
- package/dist/server/app-elements.d.ts +2 -2
- package/dist/server/app-elements.js +2 -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 +37 -1
- 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-hook-warning-suppression.js.map +1 -1
- package/dist/server/app-middleware.d.ts +1 -1
- package/dist/server/app-middleware.js +4 -9
- package/dist/server/app-middleware.js.map +1 -1
- package/dist/server/app-mounted-slots-header.js.map +1 -1
- package/dist/server/app-page-boundary-render.d.ts +11 -1
- package/dist/server/app-page-boundary-render.js +27 -19
- package/dist/server/app-page-boundary-render.js.map +1 -1
- package/dist/server/app-page-boundary.d.ts +1 -0
- package/dist/server/app-page-boundary.js +10 -7
- package/dist/server/app-page-boundary.js.map +1 -1
- package/dist/server/app-page-cache.d.ts +23 -3
- package/dist/server/app-page-cache.js +63 -27
- package/dist/server/app-page-cache.js.map +1 -1
- package/dist/server/app-page-dispatch.d.ts +11 -1
- package/dist/server/app-page-dispatch.js +85 -14
- package/dist/server/app-page-dispatch.js.map +1 -1
- package/dist/server/app-page-element-builder.d.ts +10 -1
- package/dist/server/app-page-element-builder.js +38 -6
- package/dist/server/app-page-element-builder.js.map +1 -1
- package/dist/server/app-page-execution.js +2 -3
- 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 +6 -1
- package/dist/server/app-page-head.js.map +1 -1
- package/dist/server/app-page-method.js.map +1 -1
- package/dist/server/app-page-params.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 +12 -2
- package/dist/server/app-page-render.js +90 -7
- 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 +2 -1
- package/dist/server/app-page-request.js.map +1 -1
- package/dist/server/app-page-response.d.ts +2 -0
- package/dist/server/app-page-response.js +18 -7
- package/dist/server/app-page-response.js.map +1 -1
- package/dist/server/app-page-route-wiring.d.ts +9 -3
- package/dist/server/app-page-route-wiring.js +91 -62
- package/dist/server/app-page-route-wiring.js.map +1 -1
- package/dist/server/app-page-segment-state.d.ts +10 -0
- package/dist/server/app-page-segment-state.js +87 -0
- package/dist/server/app-page-segment-state.js.map +1 -0
- package/dist/server/app-page-stream.d.ts +9 -2
- package/dist/server/app-page-stream.js +4 -1
- package/dist/server/app-page-stream.js.map +1 -1
- package/dist/server/app-post-middleware-context.js.map +1 -1
- package/dist/server/app-prerender-endpoints.js.map +1 -1
- package/dist/server/app-prerender-static-params.js.map +1 -1
- package/dist/server/app-render-dependency.js.map +1 -1
- package/dist/server/app-request-context.js.map +1 -1
- package/dist/server/app-route-handler-cache.js.map +1 -1
- package/dist/server/app-route-handler-dispatch.js +3 -1
- package/dist/server/app-route-handler-dispatch.js.map +1 -1
- package/dist/server/app-route-handler-execution.js.map +1 -1
- package/dist/server/app-route-handler-policy.js +1 -0
- package/dist/server/app-route-handler-policy.js.map +1 -1
- package/dist/server/app-route-handler-response.js +4 -3
- package/dist/server/app-route-handler-response.js.map +1 -1
- package/dist/server/app-route-handler-runtime.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 +23 -2
- package/dist/server/app-rsc-cache-busting.js +75 -19
- 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-error-handler.js.map +1 -1
- 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 +18 -1
- package/dist/server/app-rsc-handler.js +55 -16
- package/dist/server/app-rsc-handler.js.map +1 -1
- package/dist/server/app-rsc-render-mode.d.ts +11 -0
- package/dist/server/app-rsc-render-mode.js +21 -0
- package/dist/server/app-rsc-render-mode.js.map +1 -0
- package/dist/server/app-rsc-request-normalization.d.ts +4 -1
- package/dist/server/app-rsc-request-normalization.js +7 -2
- package/dist/server/app-rsc-request-normalization.js.map +1 -1
- package/dist/server/app-rsc-response-finalizer.d.ts +2 -1
- package/dist/server/app-rsc-response-finalizer.js +6 -1
- 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 +45 -23
- package/dist/server/app-rsc-route-matching.js.map +1 -1
- package/dist/server/app-segment-config.js.map +1 -1
- package/dist/server/app-server-action-execution.d.ts +51 -5
- package/dist/server/app-server-action-execution.js +161 -51
- package/dist/server/app-server-action-execution.js.map +1 -1
- package/dist/server/app-ssr-entry.d.ts +7 -0
- package/dist/server/app-ssr-entry.js +44 -14
- 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 +1 -1
- package/dist/server/app-ssr-stream.js +9 -12
- package/dist/server/app-ssr-stream.js.map +1 -1
- package/dist/server/app-static-generation.js.map +1 -1
- package/dist/server/artifact-compatibility.d.ts +12 -2
- package/dist/server/artifact-compatibility.js +12 -8
- package/dist/server/artifact-compatibility.js.map +1 -1
- package/dist/server/cache-control.js +1 -0
- package/dist/server/cache-control.js.map +1 -1
- package/dist/server/cache-proof.d.ts +124 -5
- package/dist/server/cache-proof.js +416 -18
- package/dist/server/cache-proof.js.map +1 -1
- package/dist/server/csp.js.map +1 -1
- package/dist/server/dev-error-overlay-store.js.map +1 -1
- package/dist/server/dev-error-overlay.js +5 -0
- package/dist/server/dev-error-overlay.js.map +1 -1
- 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-module-runner.js.map +1 -1
- package/dist/server/dev-origin-check.js.map +1 -1
- package/dist/server/dev-route-files.js.map +1 -1
- package/dist/server/dev-server.js +23 -10
- package/dist/server/dev-server.js.map +1 -1
- 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 +81 -0
- package/dist/server/headers.js +104 -0
- package/dist/server/headers.js.map +1 -0
- package/dist/server/html.js +1 -1
- package/dist/server/html.js.map +1 -1
- package/dist/server/http-error-responses.d.ts +10 -0
- package/dist/server/http-error-responses.js +11 -1
- package/dist/server/http-error-responses.js.map +1 -1
- package/dist/server/image-optimization.d.ts +11 -1
- package/dist/server/image-optimization.js.map +1 -1
- package/dist/server/implicit-tags.js +2 -1
- package/dist/server/implicit-tags.js.map +1 -1
- package/dist/server/instrumentation-runtime.js.map +1 -1
- package/dist/server/instrumentation.js.map +1 -1
- package/dist/server/isr-cache.d.ts +12 -2
- package/dist/server/isr-cache.js +16 -5
- package/dist/server/isr-cache.js.map +1 -1
- package/dist/server/metadata-route-build-data.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-matcher.js.map +1 -1
- package/dist/server/middleware-request-headers.d.ts +4 -1
- package/dist/server/middleware-request-headers.js +15 -8
- package/dist/server/middleware-request-headers.js.map +1 -1
- package/dist/server/middleware-response-headers.d.ts +2 -1
- package/dist/server/middleware-response-headers.js +1 -1
- package/dist/server/middleware-response-headers.js.map +1 -1
- package/dist/server/middleware-runtime.d.ts +1 -0
- package/dist/server/middleware-runtime.js +7 -3
- package/dist/server/middleware-runtime.js.map +1 -1
- package/dist/server/middleware.d.ts +12 -0
- package/dist/server/middleware.js +12 -0
- package/dist/server/middleware.js.map +1 -1
- package/dist/server/navigation-planner.d.ts +133 -0
- package/dist/server/navigation-planner.js +432 -0
- package/dist/server/navigation-planner.js.map +1 -0
- package/dist/server/navigation-trace.d.ts +19 -2
- package/dist/server/navigation-trace.js +20 -1
- package/dist/server/navigation-trace.js.map +1 -1
- package/dist/server/next-error-digest.d.ts +3 -2
- package/dist/server/next-error-digest.js +4 -2
- package/dist/server/next-error-digest.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.js +1 -0
- package/dist/server/pages-api-route.js.map +1 -1
- package/dist/server/pages-i18n.js.map +1 -1
- package/dist/server/pages-media-type.js.map +1 -1
- package/dist/server/pages-node-compat.js.map +1 -1
- package/dist/server/pages-page-data.d.ts +3 -2
- package/dist/server/pages-page-data.js +27 -5
- package/dist/server/pages-page-data.js.map +1 -1
- package/dist/server/pages-page-response.js +2 -1
- package/dist/server/pages-page-response.js.map +1 -1
- package/dist/server/prerender-work-unit-setup.js +1 -1
- package/dist/server/prerender-work-unit-setup.js.map +1 -1
- package/dist/server/prod-server.d.ts +28 -1
- package/dist/server/prod-server.js +97 -22
- package/dist/server/prod-server.js.map +1 -1
- package/dist/server/request-log.js.map +1 -1
- package/dist/server/request-pipeline.d.ts +1 -13
- package/dist/server/request-pipeline.js +3 -25
- package/dist/server/request-pipeline.js.map +1 -1
- package/dist/server/rsc-stream-hints.js.map +1 -1
- 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 +22 -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/socket-error-backstop.js.map +1 -1
- package/dist/server/static-file-cache.js +1 -1
- package/dist/server/static-file-cache.js.map +1 -1
- package/dist/server/worker-utils.d.ts +0 -7
- package/dist/server/worker-utils.js +3 -2
- package/dist/server/worker-utils.js.map +1 -1
- package/dist/shims/amp.js.map +1 -1
- package/dist/shims/app.d.ts +37 -4
- package/dist/shims/app.js +50 -1
- package/dist/shims/app.js.map +1 -0
- package/dist/shims/cache-for-request.js.map +1 -1
- package/dist/shims/cache-runtime.d.ts +19 -2
- package/dist/shims/cache-runtime.js +87 -19
- package/dist/shims/cache-runtime.js.map +1 -1
- package/dist/shims/cache.d.ts +20 -21
- package/dist/shims/cache.js +101 -15
- package/dist/shims/cache.js.map +1 -1
- package/dist/shims/client-hook-error.js.map +1 -1
- package/dist/shims/compat-router.js.map +1 -1
- package/dist/shims/config.js.map +1 -1
- package/dist/shims/constants.js.map +1 -1
- package/dist/shims/document.js.map +1 -1
- package/dist/shims/dynamic.d.ts +18 -10
- package/dist/shims/dynamic.js +107 -51
- package/dist/shims/dynamic.js.map +1 -1
- package/dist/shims/error-boundary.d.ts +35 -6
- package/dist/shims/error-boundary.js +116 -33
- 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 +25 -1
- package/dist/shims/fetch-cache.js +159 -13
- 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 +3 -1
- 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/head-state.js.map +1 -1
- package/dist/shims/head.d.ts +3 -1
- package/dist/shims/head.js +28 -16
- package/dist/shims/head.js.map +1 -1
- package/dist/shims/headers.d.ts +11 -12
- package/dist/shims/headers.js +45 -8
- package/dist/shims/headers.js.map +1 -1
- package/dist/shims/i18n-context.js.map +1 -1
- package/dist/shims/i18n-state.js.map +1 -1
- package/dist/shims/image-config.d.ts +14 -1
- package/dist/shims/image-config.js +24 -1
- package/dist/shims/image-config.js.map +1 -1
- package/dist/shims/image.d.ts +1 -0
- package/dist/shims/image.js +159 -80
- package/dist/shims/image.js.map +1 -1
- package/dist/shims/internal/als-registry.js.map +1 -1
- package/dist/shims/internal/app-router-context.d.ts +7 -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/internal/cookie-serialize.js.map +1 -1
- package/dist/shims/internal/make-hanging-promise.d.ts +1 -1
- package/dist/shims/internal/make-hanging-promise.js +1 -1
- package/dist/shims/internal/make-hanging-promise.js.map +1 -1
- package/dist/shims/internal/parse-cookie-header.js.map +1 -1
- package/dist/shims/internal/utils.js.map +1 -1
- package/dist/shims/internal/work-unit-async-storage.js +2 -2
- package/dist/shims/internal/work-unit-async-storage.js.map +1 -1
- package/dist/shims/layout-segment-context.js.map +1 -1
- package/dist/shims/legacy-image.js.map +1 -1
- package/dist/shims/link-prefetch.d.ts +42 -0
- package/dist/shims/link-prefetch.js +45 -0
- package/dist/shims/link-prefetch.js.map +1 -0
- package/dist/shims/link.d.ts +37 -4
- package/dist/shims/link.js +156 -46
- package/dist/shims/link.js.map +1 -1
- package/dist/shims/metadata.d.ts +16 -30
- package/dist/shims/metadata.js +87 -28
- package/dist/shims/metadata.js.map +1 -1
- package/dist/shims/navigation-state.js.map +1 -1
- package/dist/shims/navigation.d.ts +172 -10
- package/dist/shims/navigation.js +335 -70
- 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/offline.js.map +1 -1
- 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/readonly-url-search-params.js.map +1 -1
- package/dist/shims/request-context.js.map +1 -1
- package/dist/shims/root-params.js.map +1 -1
- package/dist/shims/router-state.js.map +1 -1
- package/dist/shims/router.d.ts +69 -7
- package/dist/shims/router.js +232 -249
- package/dist/shims/router.js.map +1 -1
- package/dist/shims/script-nonce-context.js.map +1 -1
- package/dist/shims/script.js +110 -32
- package/dist/shims/script.js.map +1 -1
- package/dist/shims/server.js +12 -15
- package/dist/shims/server.js.map +1 -1
- package/dist/shims/slot.d.ts +7 -1
- package/dist/shims/slot.js +60 -7
- package/dist/shims/slot.js.map +1 -1
- package/dist/shims/thenable-params.js.map +1 -1
- package/dist/shims/unified-request-context.js +5 -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.js.map +1 -1
- package/dist/shims/url-utils.d.ts +22 -1
- package/dist/shims/url-utils.js +76 -3
- package/dist/shims/url-utils.js.map +1 -1
- package/dist/shims/use-merged-ref.js.map +1 -1
- package/dist/shims/web-vitals.d.ts +4 -21
- package/dist/shims/web-vitals.js +19 -6
- package/dist/shims/web-vitals.js.map +1 -1
- package/dist/utils/asset-prefix.d.ts +69 -0
- package/dist/utils/asset-prefix.js +91 -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.js.map +1 -1
- package/dist/utils/domain-locale.js.map +1 -1
- package/dist/utils/encode-cache-tag.d.ts +31 -0
- package/dist/utils/encode-cache-tag.js +38 -0
- package/dist/utils/encode-cache-tag.js.map +1 -0
- package/dist/utils/error-cause.js.map +1 -1
- package/dist/utils/hash.js.map +1 -1
- package/dist/utils/lazy-chunks.js.map +1 -1
- package/dist/utils/manifest-paths.js.map +1 -1
- package/dist/utils/mdx-scan.js.map +1 -1
- package/dist/utils/navigation-signal.d.ts +5 -0
- package/dist/utils/navigation-signal.js +14 -0
- package/dist/utils/navigation-signal.js.map +1 -0
- package/dist/utils/project.js.map +1 -1
- package/dist/utils/public-routes.js.map +1 -1
- package/dist/utils/query.js.map +1 -1
- package/dist/utils/safe-json-file.js.map +1 -1
- 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/dist/utils/text-stream.js.map +1 -1
- package/dist/utils/vinext-root.js.map +1 -1
- package/package.json +8 -6
package/dist/shims/router.js
CHANGED
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
import { stripBasePath } from "../utils/base-path.js";
|
|
2
|
+
import { matchRoutePattern, routePatternParts } from "../routing/route-pattern.js";
|
|
2
3
|
import { RouterContext } from "./internal/router-context.js";
|
|
3
4
|
import { isValidModulePath } from "../client/validate-module-path.js";
|
|
4
|
-
import {
|
|
5
|
+
import { installWindowNext } from "../client/window-next.js";
|
|
6
|
+
import { isAbsoluteOrProtocolRelativeUrl, isHashOnlyBrowserUrlChange, toBrowserNavigationHref, toSameOriginAppPath } from "./url-utils.js";
|
|
5
7
|
import { addLocalePrefix, getDomainLocaleUrl } from "../utils/domain-locale.js";
|
|
6
8
|
import { addQueryParam, appendSearchParamsToUrl, urlQueryToSearchParams } from "../utils/query.js";
|
|
7
|
-
import {
|
|
9
|
+
import { scrollToHashTarget } from "./hash-scroll.js";
|
|
10
|
+
import { setPagesRouterPopStateHandler } from "./pages-router-runtime.js";
|
|
11
|
+
import { createElement, useContext, useEffect, useMemo, useState } from "react";
|
|
8
12
|
//#region src/shims/router.ts
|
|
9
13
|
/**
|
|
10
14
|
* next/router shim
|
|
@@ -69,14 +73,14 @@ function getDomainLocalePath(url, locale) {
|
|
|
69
73
|
*/
|
|
70
74
|
function applyNavigationLocale(url, locale) {
|
|
71
75
|
if (!locale || typeof window === "undefined") return url;
|
|
72
|
-
if (
|
|
76
|
+
if (isAbsoluteOrProtocolRelativeUrl(url)) return url;
|
|
73
77
|
const domainLocalePath = getDomainLocalePath(url, locale);
|
|
74
78
|
if (domainLocalePath) return domainLocalePath;
|
|
75
79
|
return addLocalePrefix(url, locale, window.__VINEXT_DEFAULT_LOCALE__ ?? "");
|
|
76
80
|
}
|
|
77
81
|
/** Check if a URL is external (any URL scheme per RFC 3986, or protocol-relative) */
|
|
78
82
|
function isExternalUrl(url) {
|
|
79
|
-
return
|
|
83
|
+
return isAbsoluteOrProtocolRelativeUrl(url);
|
|
80
84
|
}
|
|
81
85
|
/** Resolve a hash URL to a basePath-stripped app URL for event payloads */
|
|
82
86
|
function resolveHashUrl(url) {
|
|
@@ -93,22 +97,7 @@ function resolveHashUrl(url) {
|
|
|
93
97
|
function isHashOnlyChange(href) {
|
|
94
98
|
if (href.startsWith("#")) return true;
|
|
95
99
|
if (typeof window === "undefined") return false;
|
|
96
|
-
|
|
97
|
-
const current = new URL(window.location.href);
|
|
98
|
-
const next = new URL(href, window.location.href);
|
|
99
|
-
return current.pathname === next.pathname && current.search === next.search && next.hash !== "";
|
|
100
|
-
} catch {
|
|
101
|
-
return false;
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
/** Scroll to hash target element, or top if no hash */
|
|
105
|
-
function scrollToHash(hash) {
|
|
106
|
-
if (!hash || hash === "#") {
|
|
107
|
-
window.scrollTo(0, 0);
|
|
108
|
-
return;
|
|
109
|
-
}
|
|
110
|
-
const el = document.getElementById(hash.slice(1));
|
|
111
|
-
if (el) el.scrollIntoView({ behavior: "auto" });
|
|
100
|
+
return isHashOnlyBrowserUrlChange(href, window.location.href, __basePath);
|
|
112
101
|
}
|
|
113
102
|
/** Save current scroll position into history state for back/forward restoration */
|
|
114
103
|
function saveScrollPosition() {
|
|
@@ -142,6 +131,60 @@ function _registerRouterStateAccessors(accessors) {
|
|
|
142
131
|
function setSSRContext(ctx) {
|
|
143
132
|
_setSSRContextImpl(ctx);
|
|
144
133
|
}
|
|
134
|
+
let _cachedClientPagesNavCtx = null;
|
|
135
|
+
let _cachedClientPagesNavCtxKey = null;
|
|
136
|
+
function _buildClientPagesNavigationContext(routePattern, resolvedPath, searchString) {
|
|
137
|
+
const cacheKey = `${routePattern}|${resolvedPath}|${searchString}`;
|
|
138
|
+
if (_cachedClientPagesNavCtxKey === cacheKey && _cachedClientPagesNavCtx) return _cachedClientPagesNavCtx;
|
|
139
|
+
const ctx = {
|
|
140
|
+
pathname: resolvedPath,
|
|
141
|
+
searchParams: new URLSearchParams(searchString),
|
|
142
|
+
params: routePattern ? extractRouteParamsFromPath(routePattern, resolvedPath) ?? {} : {}
|
|
143
|
+
};
|
|
144
|
+
_cachedClientPagesNavCtx = ctx;
|
|
145
|
+
_cachedClientPagesNavCtxKey = cacheKey;
|
|
146
|
+
return ctx;
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Cross-router compat shim source for `next/navigation` hooks.
|
|
150
|
+
*
|
|
151
|
+
* Returns the current Pages Router state shaped as a navigation context so
|
|
152
|
+
* the App Router hooks (useParams/useSearchParams/usePathname) can act as
|
|
153
|
+
* compat shims when invoked inside a Pages Router render. Mirrors Next.js's
|
|
154
|
+
* `adaptForPathParams` and `adaptForSearchParams` in
|
|
155
|
+
* .nextjs-ref/packages/next/src/shared/lib/router/adapters.tsx, which Next.js
|
|
156
|
+
* uses to populate SearchParamsContext / PathParamsContext for the Pages
|
|
157
|
+
* Router (see packages/next/src/server/render.tsx and
|
|
158
|
+
* packages/next/src/client/index.tsx).
|
|
159
|
+
*
|
|
160
|
+
* Returns `null` when there is no Pages Router state available — e.g. App
|
|
161
|
+
* Router pages, RSC-only renders, or pre-router renders. Callers should
|
|
162
|
+
* treat null as "App Router context, use normal app-router state".
|
|
163
|
+
*/
|
|
164
|
+
function getPagesNavigationContext() {
|
|
165
|
+
if (typeof window === "undefined") {
|
|
166
|
+
const ssrCtx = _getSSRContext();
|
|
167
|
+
if (!ssrCtx) return null;
|
|
168
|
+
let searchParams;
|
|
169
|
+
let resolvedPath;
|
|
170
|
+
try {
|
|
171
|
+
const url = new URL(ssrCtx.asPath, "http://_");
|
|
172
|
+
searchParams = url.searchParams;
|
|
173
|
+
resolvedPath = url.pathname;
|
|
174
|
+
} catch {
|
|
175
|
+
searchParams = new URLSearchParams();
|
|
176
|
+
resolvedPath = ssrCtx.pathname;
|
|
177
|
+
}
|
|
178
|
+
const params = extractRouteParamsFromPath(ssrCtx.pathname, resolvedPath) ?? {};
|
|
179
|
+
return {
|
|
180
|
+
pathname: resolvedPath,
|
|
181
|
+
searchParams,
|
|
182
|
+
params
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
const resolvedPath = stripBasePath(window.location.pathname, __basePath);
|
|
186
|
+
return _buildClientPagesNavigationContext(window.__NEXT_DATA__?.page ?? "", resolvedPath, window.location.search);
|
|
187
|
+
}
|
|
145
188
|
/**
|
|
146
189
|
* Extract param names from a Next.js route pattern.
|
|
147
190
|
* E.g., "/posts/[id]" → ["id"], "/docs/[...slug]" → ["slug"],
|
|
@@ -157,6 +200,26 @@ function extractRouteParamNames(pattern) {
|
|
|
157
200
|
for (const m of colonMatches) names.push(m[1]);
|
|
158
201
|
return names;
|
|
159
202
|
}
|
|
203
|
+
function splitPathSegments(pathname) {
|
|
204
|
+
return pathname.split("/").filter(Boolean);
|
|
205
|
+
}
|
|
206
|
+
function extractRouteParamsFromPath(pattern, pathname) {
|
|
207
|
+
return matchRoutePattern(splitPathSegments(pathname), routePatternParts(pattern));
|
|
208
|
+
}
|
|
209
|
+
function getRouteQueryFromNextData(nextData, resolvedPath) {
|
|
210
|
+
const routeQuery = {};
|
|
211
|
+
if (!nextData?.query || !nextData.page) return routeQuery;
|
|
212
|
+
const routeParamNames = extractRouteParamNames(nextData.page);
|
|
213
|
+
if (routeParamNames.length === 0) return routeQuery;
|
|
214
|
+
const currentRouteParams = extractRouteParamsFromPath(nextData.page, resolvedPath);
|
|
215
|
+
if (currentRouteParams) return currentRouteParams;
|
|
216
|
+
for (const key of routeParamNames) {
|
|
217
|
+
const value = nextData.query[key];
|
|
218
|
+
if (typeof value === "string") routeQuery[key] = value;
|
|
219
|
+
else if (Array.isArray(value)) routeQuery[key] = [...value];
|
|
220
|
+
}
|
|
221
|
+
return routeQuery;
|
|
222
|
+
}
|
|
160
223
|
function getPathnameAndQuery() {
|
|
161
224
|
if (typeof window === "undefined") {
|
|
162
225
|
const _ssrCtx = _getSSRContext();
|
|
@@ -177,16 +240,8 @@ function getPathnameAndQuery() {
|
|
|
177
240
|
}
|
|
178
241
|
const resolvedPath = stripBasePath(window.location.pathname, __basePath);
|
|
179
242
|
const pathname = window.__NEXT_DATA__?.page ?? resolvedPath;
|
|
180
|
-
const routeQuery = {};
|
|
181
243
|
const nextData = window.__NEXT_DATA__;
|
|
182
|
-
|
|
183
|
-
const routeParamNames = extractRouteParamNames(nextData.page);
|
|
184
|
-
for (const key of routeParamNames) {
|
|
185
|
-
const value = nextData.query[key];
|
|
186
|
-
if (typeof value === "string") routeQuery[key] = value;
|
|
187
|
-
else if (Array.isArray(value)) routeQuery[key] = [...value];
|
|
188
|
-
}
|
|
189
|
-
}
|
|
244
|
+
const routeQuery = getRouteQueryFromNextData(nextData, resolvedPath);
|
|
190
245
|
const searchQuery = {};
|
|
191
246
|
const params = new URLSearchParams(window.location.search);
|
|
192
247
|
for (const [key, value] of params) addQueryParam(searchQuery, key, value);
|
|
@@ -351,9 +406,8 @@ async function runNavigateClient(fullUrl, resolvedUrl) {
|
|
|
351
406
|
}
|
|
352
407
|
/**
|
|
353
408
|
* Build the full router value object from the current pathname, query, asPath,
|
|
354
|
-
* and a set of navigation methods.
|
|
355
|
-
*
|
|
356
|
-
* singleton methods) so the shape stays in sync.
|
|
409
|
+
* and a set of navigation methods. Shared by the Pages Router context provider
|
|
410
|
+
* and tests so the public router shape stays in sync.
|
|
357
411
|
*/
|
|
358
412
|
function buildRouterValue(pathname, query, asPath, methods) {
|
|
359
413
|
const _ssrState = _getSSRContext();
|
|
@@ -379,10 +433,98 @@ function buildRouterValue(pathname, query, asPath, methods) {
|
|
|
379
433
|
events: routerEvents
|
|
380
434
|
};
|
|
381
435
|
}
|
|
436
|
+
/** Extract the hash fragment from a URL, including the leading `#`. */
|
|
437
|
+
function extractHash(url) {
|
|
438
|
+
const i = url.indexOf("#");
|
|
439
|
+
return i === -1 ? "" : url.slice(i);
|
|
440
|
+
}
|
|
441
|
+
/** Notify in-page listeners (e.g. useRouter hooks) that navigation occurred. */
|
|
442
|
+
function dispatchNavigateEvent() {
|
|
443
|
+
window.dispatchEvent(new CustomEvent("vinext:navigate"));
|
|
444
|
+
}
|
|
445
|
+
/**
|
|
446
|
+
* Update history with the new URL and refresh the hash-only-detection tracker.
|
|
447
|
+
* Centralises the `pushState`/`replaceState` branch so callers don't repeat it.
|
|
448
|
+
*/
|
|
449
|
+
function updateHistory(mode, url) {
|
|
450
|
+
if (mode === "push") window.history.pushState({}, "", url);
|
|
451
|
+
else window.history.replaceState({}, "", url);
|
|
452
|
+
_lastPathnameAndSearch = window.location.pathname + window.location.search;
|
|
453
|
+
}
|
|
454
|
+
/**
|
|
455
|
+
* Shared client-side navigation flow used by both `useRouter()` and the
|
|
456
|
+
* `Router` singleton. The only differences between push/replace are the
|
|
457
|
+
* history method (`pushState` vs `replaceState`), the external-URL fallback
|
|
458
|
+
* (`assign` vs `replace`), and the fact that push saves scroll position for
|
|
459
|
+
* back/forward restoration while replace does not.
|
|
460
|
+
*
|
|
461
|
+
* `onStateUpdate` lets the hook trigger a `setState` re-render at the same
|
|
462
|
+
* point that hashChangeComplete/routeChangeComplete fires; the singleton
|
|
463
|
+
* passes no callback.
|
|
464
|
+
*/
|
|
465
|
+
async function performNavigation(url, as, options, mode, onStateUpdate) {
|
|
466
|
+
let resolved = resolveNavigationTarget(url, as, options?.locale);
|
|
467
|
+
if (isExternalUrl(resolved)) {
|
|
468
|
+
const localPath = toSameOriginAppPath(resolved, __basePath);
|
|
469
|
+
if (localPath == null) {
|
|
470
|
+
if (mode === "push") window.location.assign(resolved);
|
|
471
|
+
else window.location.replace(resolved);
|
|
472
|
+
return true;
|
|
473
|
+
}
|
|
474
|
+
resolved = localPath;
|
|
475
|
+
}
|
|
476
|
+
const full = toBrowserNavigationHref(resolved, window.location.href, __basePath);
|
|
477
|
+
const shallow = options?.shallow ?? false;
|
|
478
|
+
const doScroll = options?.scroll !== false;
|
|
479
|
+
if (isHashOnlyChange(full)) {
|
|
480
|
+
const eventUrl = resolveHashUrl(full);
|
|
481
|
+
routerEvents.emit("hashChangeStart", eventUrl, { shallow });
|
|
482
|
+
updateHistory(mode, resolved.startsWith("#") ? resolved : full);
|
|
483
|
+
if (doScroll) scrollToHashTarget(extractHash(resolved));
|
|
484
|
+
onStateUpdate?.();
|
|
485
|
+
routerEvents.emit("hashChangeComplete", eventUrl, { shallow });
|
|
486
|
+
dispatchNavigateEvent();
|
|
487
|
+
return true;
|
|
488
|
+
}
|
|
489
|
+
if (mode === "push") saveScrollPosition();
|
|
490
|
+
routerEvents.emit("routeChangeStart", resolved, { shallow });
|
|
491
|
+
routerEvents.emit("beforeHistoryChange", resolved, { shallow });
|
|
492
|
+
updateHistory(mode, full);
|
|
493
|
+
if (!shallow) {
|
|
494
|
+
const result = await runNavigateClient(full, resolved);
|
|
495
|
+
if (result === "cancelled") return true;
|
|
496
|
+
if (result === "failed") return false;
|
|
497
|
+
}
|
|
498
|
+
onStateUpdate?.();
|
|
499
|
+
routerEvents.emit("routeChangeComplete", resolved, { shallow });
|
|
500
|
+
const hash = extractHash(resolved);
|
|
501
|
+
if (doScroll) if (hash) scrollToHashTarget(hash);
|
|
502
|
+
else window.scrollTo(0, 0);
|
|
503
|
+
dispatchNavigateEvent();
|
|
504
|
+
return true;
|
|
505
|
+
}
|
|
506
|
+
/** Inject a `<link rel="prefetch">` for the target page. */
|
|
507
|
+
async function prefetchUrl(url) {
|
|
508
|
+
if (typeof document !== "undefined") {
|
|
509
|
+
const link = document.createElement("link");
|
|
510
|
+
link.rel = "prefetch";
|
|
511
|
+
link.href = url;
|
|
512
|
+
link.as = "document";
|
|
513
|
+
document.head.appendChild(link);
|
|
514
|
+
}
|
|
515
|
+
}
|
|
382
516
|
/**
|
|
383
517
|
* useRouter hook - Pages Router compatible.
|
|
518
|
+
*
|
|
519
|
+
* Ported from Next.js: packages/next/src/client/router.ts
|
|
520
|
+
* https://github.com/vercel/next.js/blob/canary/packages/next/src/client/router.ts
|
|
384
521
|
*/
|
|
385
522
|
function useRouter() {
|
|
523
|
+
const router = useContext(RouterContext);
|
|
524
|
+
if (!router) throw new Error("NextRouter was not mounted. https://nextjs.org/docs/messages/next-router-not-mounted");
|
|
525
|
+
return router;
|
|
526
|
+
}
|
|
527
|
+
function PagesRouterProvider({ children }) {
|
|
386
528
|
const [{ pathname, query, asPath }, setState] = useState(getPathnameAndQuery);
|
|
387
529
|
useEffect(() => {
|
|
388
530
|
const onNavigate = ((_e) => {
|
|
@@ -391,125 +533,23 @@ function useRouter() {
|
|
|
391
533
|
window.addEventListener("vinext:navigate", onNavigate);
|
|
392
534
|
return () => window.removeEventListener("vinext:navigate", onNavigate);
|
|
393
535
|
}, []);
|
|
394
|
-
const
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
}
|
|
402
|
-
resolved = localPath;
|
|
403
|
-
}
|
|
404
|
-
const full = toBrowserNavigationHref(resolved, window.location.href, __basePath);
|
|
405
|
-
if (isHashOnlyChange(resolved)) {
|
|
406
|
-
const eventUrl = resolveHashUrl(resolved);
|
|
407
|
-
routerEvents.emit("hashChangeStart", eventUrl, { shallow: options?.shallow ?? false });
|
|
408
|
-
const hash = resolved.includes("#") ? resolved.slice(resolved.indexOf("#")) : "";
|
|
409
|
-
window.history.pushState({}, "", resolved.startsWith("#") ? resolved : full);
|
|
410
|
-
_lastPathnameAndSearch = window.location.pathname + window.location.search;
|
|
411
|
-
scrollToHash(hash);
|
|
412
|
-
setState(getPathnameAndQuery());
|
|
413
|
-
routerEvents.emit("hashChangeComplete", eventUrl, { shallow: options?.shallow ?? false });
|
|
414
|
-
window.dispatchEvent(new CustomEvent("vinext:navigate"));
|
|
415
|
-
return true;
|
|
416
|
-
}
|
|
417
|
-
saveScrollPosition();
|
|
418
|
-
routerEvents.emit("routeChangeStart", resolved, { shallow: options?.shallow ?? false });
|
|
419
|
-
routerEvents.emit("beforeHistoryChange", resolved, { shallow: options?.shallow ?? false });
|
|
420
|
-
window.history.pushState({}, "", full);
|
|
421
|
-
_lastPathnameAndSearch = window.location.pathname + window.location.search;
|
|
422
|
-
if (!options?.shallow) {
|
|
423
|
-
const result = await runNavigateClient(full, resolved);
|
|
424
|
-
if (result === "cancelled") return true;
|
|
425
|
-
if (result === "failed") return false;
|
|
426
|
-
}
|
|
427
|
-
setState(getPathnameAndQuery());
|
|
428
|
-
routerEvents.emit("routeChangeComplete", resolved, { shallow: options?.shallow ?? false });
|
|
429
|
-
const hash = resolved.includes("#") ? resolved.slice(resolved.indexOf("#")) : "";
|
|
430
|
-
if (hash) scrollToHash(hash);
|
|
431
|
-
else if (options?.scroll !== false) window.scrollTo(0, 0);
|
|
432
|
-
window.dispatchEvent(new CustomEvent("vinext:navigate"));
|
|
433
|
-
return true;
|
|
434
|
-
}, []);
|
|
435
|
-
const replace = useCallback(async (url, as, options) => {
|
|
436
|
-
let resolved = resolveNavigationTarget(url, as, options?.locale);
|
|
437
|
-
if (isExternalUrl(resolved)) {
|
|
438
|
-
const localPath = toSameOriginAppPath(resolved, __basePath);
|
|
439
|
-
if (localPath == null) {
|
|
440
|
-
window.location.replace(resolved);
|
|
441
|
-
return true;
|
|
442
|
-
}
|
|
443
|
-
resolved = localPath;
|
|
444
|
-
}
|
|
445
|
-
const full = toBrowserNavigationHref(resolved, window.location.href, __basePath);
|
|
446
|
-
if (isHashOnlyChange(resolved)) {
|
|
447
|
-
const eventUrl = resolveHashUrl(resolved);
|
|
448
|
-
routerEvents.emit("hashChangeStart", eventUrl, { shallow: options?.shallow ?? false });
|
|
449
|
-
const hash = resolved.includes("#") ? resolved.slice(resolved.indexOf("#")) : "";
|
|
450
|
-
window.history.replaceState({}, "", resolved.startsWith("#") ? resolved : full);
|
|
451
|
-
_lastPathnameAndSearch = window.location.pathname + window.location.search;
|
|
452
|
-
scrollToHash(hash);
|
|
453
|
-
setState(getPathnameAndQuery());
|
|
454
|
-
routerEvents.emit("hashChangeComplete", eventUrl, { shallow: options?.shallow ?? false });
|
|
455
|
-
window.dispatchEvent(new CustomEvent("vinext:navigate"));
|
|
456
|
-
return true;
|
|
457
|
-
}
|
|
458
|
-
routerEvents.emit("routeChangeStart", resolved, { shallow: options?.shallow ?? false });
|
|
459
|
-
routerEvents.emit("beforeHistoryChange", resolved, { shallow: options?.shallow ?? false });
|
|
460
|
-
window.history.replaceState({}, "", full);
|
|
461
|
-
_lastPathnameAndSearch = window.location.pathname + window.location.search;
|
|
462
|
-
if (!options?.shallow) {
|
|
463
|
-
const result = await runNavigateClient(full, resolved);
|
|
464
|
-
if (result === "cancelled") return true;
|
|
465
|
-
if (result === "failed") return false;
|
|
466
|
-
}
|
|
467
|
-
setState(getPathnameAndQuery());
|
|
468
|
-
routerEvents.emit("routeChangeComplete", resolved, { shallow: options?.shallow ?? false });
|
|
469
|
-
const hash = resolved.includes("#") ? resolved.slice(resolved.indexOf("#")) : "";
|
|
470
|
-
if (hash) scrollToHash(hash);
|
|
471
|
-
else if (options?.scroll !== false) window.scrollTo(0, 0);
|
|
472
|
-
window.dispatchEvent(new CustomEvent("vinext:navigate"));
|
|
473
|
-
return true;
|
|
474
|
-
}, []);
|
|
475
|
-
const back = useCallback(() => {
|
|
476
|
-
window.history.back();
|
|
477
|
-
}, []);
|
|
478
|
-
const reload = useCallback(() => {
|
|
479
|
-
window.location.reload();
|
|
480
|
-
}, []);
|
|
481
|
-
const prefetch = useCallback(async (url) => {
|
|
482
|
-
if (typeof document !== "undefined") {
|
|
483
|
-
const link = document.createElement("link");
|
|
484
|
-
link.rel = "prefetch";
|
|
485
|
-
link.href = url;
|
|
486
|
-
link.as = "document";
|
|
487
|
-
document.head.appendChild(link);
|
|
488
|
-
}
|
|
489
|
-
}, []);
|
|
490
|
-
return useMemo(() => buildRouterValue(pathname, query, asPath, {
|
|
491
|
-
push,
|
|
492
|
-
replace,
|
|
493
|
-
back,
|
|
494
|
-
reload,
|
|
495
|
-
prefetch,
|
|
496
|
-
beforePopState: (cb) => {
|
|
497
|
-
_beforePopStateCb = cb;
|
|
498
|
-
}
|
|
536
|
+
const router = useMemo(() => buildRouterValue(pathname, query, asPath, {
|
|
537
|
+
push: Router.push,
|
|
538
|
+
replace: Router.replace,
|
|
539
|
+
back: Router.back,
|
|
540
|
+
reload: Router.reload,
|
|
541
|
+
prefetch: Router.prefetch,
|
|
542
|
+
beforePopState: Router.beforePopState
|
|
499
543
|
}), [
|
|
500
544
|
pathname,
|
|
501
545
|
query,
|
|
502
|
-
asPath
|
|
503
|
-
push,
|
|
504
|
-
replace,
|
|
505
|
-
back,
|
|
506
|
-
reload,
|
|
507
|
-
prefetch
|
|
546
|
+
asPath
|
|
508
547
|
]);
|
|
548
|
+
return createElement(RouterContext.Provider, { value: router }, children);
|
|
509
549
|
}
|
|
510
550
|
let _beforePopStateCb;
|
|
511
551
|
let _lastPathnameAndSearch = typeof window !== "undefined" ? window.location.pathname + window.location.search : "";
|
|
512
|
-
|
|
552
|
+
function handlePagesRouterPopState(e) {
|
|
513
553
|
const browserUrl = window.location.pathname + window.location.search;
|
|
514
554
|
const appUrl = stripBasePath(window.location.pathname, __basePath) + window.location.search;
|
|
515
555
|
const isHashOnly = browserUrl === _lastPathnameAndSearch;
|
|
@@ -524,9 +564,9 @@ if (typeof window !== "undefined") window.addEventListener("popstate", (e) => {
|
|
|
524
564
|
if (isHashOnly) {
|
|
525
565
|
const hashUrl = appUrl + window.location.hash;
|
|
526
566
|
routerEvents.emit("hashChangeStart", hashUrl, { shallow: false });
|
|
527
|
-
|
|
567
|
+
scrollToHashTarget(window.location.hash);
|
|
528
568
|
routerEvents.emit("hashChangeComplete", hashUrl, { shallow: false });
|
|
529
|
-
|
|
569
|
+
dispatchNavigateEvent();
|
|
530
570
|
return;
|
|
531
571
|
}
|
|
532
572
|
const fullAppUrl = appUrl + window.location.hash;
|
|
@@ -536,126 +576,69 @@ if (typeof window !== "undefined") window.addEventListener("popstate", (e) => {
|
|
|
536
576
|
if (await runNavigateClient(browserUrl, fullAppUrl) === "completed") {
|
|
537
577
|
routerEvents.emit("routeChangeComplete", fullAppUrl, { shallow: false });
|
|
538
578
|
restoreScrollPosition(e.state);
|
|
539
|
-
|
|
579
|
+
dispatchNavigateEvent();
|
|
540
580
|
}
|
|
541
581
|
})();
|
|
542
|
-
}
|
|
582
|
+
}
|
|
583
|
+
setPagesRouterPopStateHandler(handlePagesRouterPopState);
|
|
543
584
|
/**
|
|
544
585
|
* Wrap a React element in a RouterContext.Provider so that
|
|
545
586
|
* next/compat/router's useRouter() returns the real Pages Router value.
|
|
546
587
|
*
|
|
547
|
-
*
|
|
548
|
-
*
|
|
549
|
-
*
|
|
550
|
-
* that a hook-based component would create.
|
|
588
|
+
* The provider owns the reactive Pages Router snapshot so next/router and
|
|
589
|
+
* next/compat/router consumers share one context value instead of each hook
|
|
590
|
+
* installing its own global URL-change listener.
|
|
551
591
|
*/
|
|
552
592
|
function wrapWithRouterContext(element) {
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
593
|
+
return createElement(PagesRouterProvider, null, element);
|
|
594
|
+
}
|
|
595
|
+
/**
|
|
596
|
+
* Higher-order component that injects the Pages Router `router` instance as
|
|
597
|
+
* a `router` prop into a wrapped component. Primarily used by class
|
|
598
|
+
* components (which cannot call hooks) to access the router. The wrapped
|
|
599
|
+
* component receives the same props as the original, minus `router`, which
|
|
600
|
+
* is filled in by the HOC.
|
|
601
|
+
*
|
|
602
|
+
* Ported from Next.js: packages/next/src/client/with-router.tsx
|
|
603
|
+
* https://github.com/vercel/next.js/blob/canary/packages/next/src/client/with-router.tsx
|
|
604
|
+
*
|
|
605
|
+
* Differences from Next.js:
|
|
606
|
+
* - We type the composed component as `ComponentType<P>` instead of
|
|
607
|
+
* `NextComponentType<C, any, P>` because vinext does not expose
|
|
608
|
+
* `NextComponentType` from this shim. The runtime shape (and the props
|
|
609
|
+
* the wrapper forwards) is identical.
|
|
610
|
+
* - We forward `getInitialProps` and `origGetInitialProps` from the
|
|
611
|
+
* composed component so `_app` parity holds for class components that
|
|
612
|
+
* define `getInitialProps`.
|
|
613
|
+
*/
|
|
614
|
+
function withRouter(ComposedComponent) {
|
|
615
|
+
function WithRouterWrapper(props) {
|
|
616
|
+
return createElement(ComposedComponent, {
|
|
617
|
+
router: useRouter(),
|
|
618
|
+
...props
|
|
619
|
+
});
|
|
620
|
+
}
|
|
621
|
+
const composed = ComposedComponent;
|
|
622
|
+
WithRouterWrapper.getInitialProps = composed.getInitialProps;
|
|
623
|
+
WithRouterWrapper.origGetInitialProps = composed.origGetInitialProps;
|
|
624
|
+
if (process.env.NODE_ENV !== "production") WithRouterWrapper.displayName = `withRouter(${composed.displayName || composed.name || "Unknown"})`;
|
|
625
|
+
return WithRouterWrapper;
|
|
563
626
|
}
|
|
564
627
|
const Router = {
|
|
565
|
-
push:
|
|
566
|
-
|
|
567
|
-
if (isExternalUrl(resolved)) {
|
|
568
|
-
const localPath = toSameOriginAppPath(resolved, __basePath);
|
|
569
|
-
if (localPath == null) {
|
|
570
|
-
window.location.assign(resolved);
|
|
571
|
-
return true;
|
|
572
|
-
}
|
|
573
|
-
resolved = localPath;
|
|
574
|
-
}
|
|
575
|
-
const full = toBrowserNavigationHref(resolved, window.location.href, __basePath);
|
|
576
|
-
if (isHashOnlyChange(resolved)) {
|
|
577
|
-
const eventUrl = resolveHashUrl(resolved);
|
|
578
|
-
routerEvents.emit("hashChangeStart", eventUrl, { shallow: options?.shallow ?? false });
|
|
579
|
-
const hash = resolved.includes("#") ? resolved.slice(resolved.indexOf("#")) : "";
|
|
580
|
-
window.history.pushState({}, "", resolved.startsWith("#") ? resolved : full);
|
|
581
|
-
_lastPathnameAndSearch = window.location.pathname + window.location.search;
|
|
582
|
-
scrollToHash(hash);
|
|
583
|
-
routerEvents.emit("hashChangeComplete", eventUrl, { shallow: options?.shallow ?? false });
|
|
584
|
-
window.dispatchEvent(new CustomEvent("vinext:navigate"));
|
|
585
|
-
return true;
|
|
586
|
-
}
|
|
587
|
-
saveScrollPosition();
|
|
588
|
-
routerEvents.emit("routeChangeStart", resolved, { shallow: options?.shallow ?? false });
|
|
589
|
-
routerEvents.emit("beforeHistoryChange", resolved, { shallow: options?.shallow ?? false });
|
|
590
|
-
window.history.pushState({}, "", full);
|
|
591
|
-
_lastPathnameAndSearch = window.location.pathname + window.location.search;
|
|
592
|
-
if (!options?.shallow) {
|
|
593
|
-
const result = await runNavigateClient(full, resolved);
|
|
594
|
-
if (result === "cancelled") return true;
|
|
595
|
-
if (result === "failed") return false;
|
|
596
|
-
}
|
|
597
|
-
routerEvents.emit("routeChangeComplete", resolved, { shallow: options?.shallow ?? false });
|
|
598
|
-
const hash = resolved.includes("#") ? resolved.slice(resolved.indexOf("#")) : "";
|
|
599
|
-
if (hash) scrollToHash(hash);
|
|
600
|
-
else if (options?.scroll !== false) window.scrollTo(0, 0);
|
|
601
|
-
window.dispatchEvent(new CustomEvent("vinext:navigate"));
|
|
602
|
-
return true;
|
|
603
|
-
},
|
|
604
|
-
replace: async (url, as, options) => {
|
|
605
|
-
let resolved = resolveNavigationTarget(url, as, options?.locale);
|
|
606
|
-
if (isExternalUrl(resolved)) {
|
|
607
|
-
const localPath = toSameOriginAppPath(resolved, __basePath);
|
|
608
|
-
if (localPath == null) {
|
|
609
|
-
window.location.replace(resolved);
|
|
610
|
-
return true;
|
|
611
|
-
}
|
|
612
|
-
resolved = localPath;
|
|
613
|
-
}
|
|
614
|
-
const full = toBrowserNavigationHref(resolved, window.location.href, __basePath);
|
|
615
|
-
if (isHashOnlyChange(resolved)) {
|
|
616
|
-
const eventUrl = resolveHashUrl(resolved);
|
|
617
|
-
routerEvents.emit("hashChangeStart", eventUrl, { shallow: options?.shallow ?? false });
|
|
618
|
-
const hash = resolved.includes("#") ? resolved.slice(resolved.indexOf("#")) : "";
|
|
619
|
-
window.history.replaceState({}, "", resolved.startsWith("#") ? resolved : full);
|
|
620
|
-
_lastPathnameAndSearch = window.location.pathname + window.location.search;
|
|
621
|
-
scrollToHash(hash);
|
|
622
|
-
routerEvents.emit("hashChangeComplete", eventUrl, { shallow: options?.shallow ?? false });
|
|
623
|
-
window.dispatchEvent(new CustomEvent("vinext:navigate"));
|
|
624
|
-
return true;
|
|
625
|
-
}
|
|
626
|
-
routerEvents.emit("routeChangeStart", resolved, { shallow: options?.shallow ?? false });
|
|
627
|
-
routerEvents.emit("beforeHistoryChange", resolved, { shallow: options?.shallow ?? false });
|
|
628
|
-
window.history.replaceState({}, "", full);
|
|
629
|
-
_lastPathnameAndSearch = window.location.pathname + window.location.search;
|
|
630
|
-
if (!options?.shallow) {
|
|
631
|
-
const result = await runNavigateClient(full, resolved);
|
|
632
|
-
if (result === "cancelled") return true;
|
|
633
|
-
if (result === "failed") return false;
|
|
634
|
-
}
|
|
635
|
-
routerEvents.emit("routeChangeComplete", resolved, { shallow: options?.shallow ?? false });
|
|
636
|
-
const hash = resolved.includes("#") ? resolved.slice(resolved.indexOf("#")) : "";
|
|
637
|
-
if (hash) scrollToHash(hash);
|
|
638
|
-
else if (options?.scroll !== false) window.scrollTo(0, 0);
|
|
639
|
-
window.dispatchEvent(new CustomEvent("vinext:navigate"));
|
|
640
|
-
return true;
|
|
641
|
-
},
|
|
628
|
+
push: (url, as, options) => performNavigation(url, as, options, "push"),
|
|
629
|
+
replace: (url, as, options) => performNavigation(url, as, options, "replace"),
|
|
642
630
|
back: () => window.history.back(),
|
|
643
631
|
reload: () => window.location.reload(),
|
|
644
|
-
prefetch:
|
|
645
|
-
if (typeof document !== "undefined") {
|
|
646
|
-
const link = document.createElement("link");
|
|
647
|
-
link.rel = "prefetch";
|
|
648
|
-
link.href = url;
|
|
649
|
-
link.as = "document";
|
|
650
|
-
document.head.appendChild(link);
|
|
651
|
-
}
|
|
652
|
-
},
|
|
632
|
+
prefetch: prefetchUrl,
|
|
653
633
|
beforePopState: (cb) => {
|
|
654
634
|
_beforePopStateCb = cb;
|
|
655
635
|
},
|
|
656
636
|
events: routerEvents
|
|
657
637
|
};
|
|
638
|
+
if (typeof window !== "undefined") installWindowNext({ router: Router });
|
|
639
|
+
const _PAGES_NAVIGATION_ACCESSOR_KEY = Symbol.for("vinext.navigation.pagesNavigationContextAccessor");
|
|
640
|
+
globalThis[_PAGES_NAVIGATION_ACCESSOR_KEY] = getPagesNavigationContext;
|
|
658
641
|
//#endregion
|
|
659
|
-
export { _registerRouterStateAccessors, applyNavigationLocale, Router as default, isExternalUrl, isHashOnlyChange, setSSRContext, useRouter, wrapWithRouterContext };
|
|
642
|
+
export { _registerRouterStateAccessors, applyNavigationLocale, Router as default, getPagesNavigationContext, isExternalUrl, isHashOnlyChange, setSSRContext, useRouter, withRouter, wrapWithRouterContext };
|
|
660
643
|
|
|
661
644
|
//# sourceMappingURL=router.js.map
|