@qzsy/vinext 0.1.7
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/LICENSE +21 -0
- package/README.md +773 -0
- package/dist/build/assets-ignore.d.ts +32 -0
- package/dist/build/assets-ignore.js +48 -0
- package/dist/build/clean-output.d.ts +13 -0
- package/dist/build/clean-output.js +34 -0
- package/dist/build/client-build-config.d.ts +171 -0
- package/dist/build/client-build-config.js +270 -0
- package/dist/build/css-url-assets.d.ts +29 -0
- package/dist/build/css-url-assets.js +213 -0
- package/dist/build/google-fonts/build-url.d.ts +9 -0
- package/dist/build/google-fonts/build-url.js +28 -0
- package/dist/build/google-fonts/fallback-metrics-data.js +14029 -0
- package/dist/build/google-fonts/fallback-metrics.d.ts +12 -0
- package/dist/build/google-fonts/fallback-metrics.js +44 -0
- package/dist/build/google-fonts/find-font-files-in-css.d.ts +16 -0
- package/dist/build/google-fonts/find-font-files-in-css.js +28 -0
- package/dist/build/google-fonts/font-data.js +24983 -0
- package/dist/build/google-fonts/font-metadata.d.ts +16 -0
- package/dist/build/google-fonts/font-metadata.js +5 -0
- package/dist/build/google-fonts/get-axes.d.ts +6 -0
- package/dist/build/google-fonts/get-axes.js +37 -0
- package/dist/build/google-fonts/sort-variants.d.ts +4 -0
- package/dist/build/google-fonts/sort-variants.js +12 -0
- package/dist/build/google-fonts/validate.d.ts +27 -0
- package/dist/build/google-fonts/validate.js +54 -0
- package/dist/build/inline-css.d.ts +6 -0
- package/dist/build/inline-css.js +48 -0
- package/dist/build/layout-classification-types.d.ts +61 -0
- package/dist/build/layout-classification-types.js +1 -0
- package/dist/build/layout-classification.d.ts +59 -0
- package/dist/build/layout-classification.js +98 -0
- package/dist/build/next-client-runtime-manifests.d.ts +14 -0
- package/dist/build/next-client-runtime-manifests.js +39 -0
- package/dist/build/nitro-route-rules.d.ts +49 -0
- package/dist/build/nitro-route-rules.js +79 -0
- package/dist/build/precompress.d.ts +27 -0
- package/dist/build/precompress.js +110 -0
- package/dist/build/prerender.d.ts +209 -0
- package/dist/build/prerender.js +932 -0
- package/dist/build/report.d.ts +132 -0
- package/dist/build/report.js +504 -0
- package/dist/build/route-classification-injector.d.ts +34 -0
- package/dist/build/route-classification-injector.js +59 -0
- package/dist/build/route-classification-manifest.d.ts +52 -0
- package/dist/build/route-classification-manifest.js +143 -0
- package/dist/build/run-prerender.d.ts +61 -0
- package/dist/build/run-prerender.js +224 -0
- package/dist/build/server-manifest.d.ts +18 -0
- package/dist/build/server-manifest.js +22 -0
- package/dist/build/ssr-manifest.d.ts +18 -0
- package/dist/build/ssr-manifest.js +69 -0
- package/dist/build/standalone.d.ts +31 -0
- package/dist/build/standalone.js +203 -0
- package/dist/build/static-export.d.ts +55 -0
- package/dist/build/static-export.js +60 -0
- package/dist/cache/cache-adapters-virtual.d.ts +50 -0
- package/dist/cache/cache-adapters-virtual.js +45 -0
- package/dist/cache.d.ts +2 -0
- package/dist/cache.js +2 -0
- package/dist/check.d.ts +87 -0
- package/dist/check.js +1037 -0
- package/dist/cli-args.d.ts +33 -0
- package/dist/cli-args.js +124 -0
- package/dist/cli.d.ts +1 -0
- package/dist/cli.js +744 -0
- package/dist/client/app-nav-failure-handler.d.ts +8 -0
- package/dist/client/app-nav-failure-handler.js +44 -0
- package/dist/client/empty-module.d.ts +1 -0
- package/dist/client/empty-module.js +1 -0
- package/dist/client/instrumentation-client-inject.d.ts +33 -0
- package/dist/client/instrumentation-client-inject.js +55 -0
- package/dist/client/instrumentation-client-state.d.ts +9 -0
- package/dist/client/instrumentation-client-state.js +17 -0
- package/dist/client/instrumentation-client.d.ts +7 -0
- package/dist/client/instrumentation-client.js +6 -0
- package/dist/client/navigation-runtime.d.ts +70 -0
- package/dist/client/navigation-runtime.js +169 -0
- package/dist/client/pages-router-link-navigation.d.ts +61 -0
- package/dist/client/pages-router-link-navigation.js +42 -0
- package/dist/client/validate-module-path.d.ts +17 -0
- package/dist/client/validate-module-path.js +24 -0
- package/dist/client/vinext-next-data.d.ts +44 -0
- package/dist/client/vinext-next-data.js +50 -0
- package/dist/client/window-next.d.ts +168 -0
- package/dist/client/window-next.js +57 -0
- package/dist/cloudflare/index.d.ts +3 -0
- package/dist/cloudflare/index.js +3 -0
- package/dist/cloudflare/src/cache/cdn-adapter.runtime.js +102 -0
- package/dist/cloudflare/src/cache/kv-data-adapter.runtime.d.ts +126 -0
- package/dist/cloudflare/src/cache/kv-data-adapter.runtime.js +435 -0
- package/dist/cloudflare/src/utils/cache-control-metadata.js +20 -0
- package/dist/cloudflare/tpr.d.ts +82 -0
- package/dist/cloudflare/tpr.js +558 -0
- package/dist/config/config-matchers.d.ts +257 -0
- package/dist/config/config-matchers.js +1046 -0
- package/dist/config/dotenv.d.ts +56 -0
- package/dist/config/dotenv.js +88 -0
- package/dist/config/next-config.d.ts +540 -0
- package/dist/config/next-config.js +1050 -0
- package/dist/config/tsconfig-paths.d.ts +21 -0
- package/dist/config/tsconfig-paths.js +157 -0
- package/dist/deploy.d.ts +190 -0
- package/dist/deploy.js +1033 -0
- package/dist/entries/app-browser-entry.d.ts +29 -0
- package/dist/entries/app-browser-entry.js +83 -0
- package/dist/entries/app-rsc-entry.d.ts +81 -0
- package/dist/entries/app-rsc-entry.js +943 -0
- package/dist/entries/app-rsc-manifest.d.ts +53 -0
- package/dist/entries/app-rsc-manifest.js +294 -0
- package/dist/entries/app-ssr-entry.d.ts +15 -0
- package/dist/entries/app-ssr-entry.js +24 -0
- package/dist/entries/pages-client-entry.d.ts +11 -0
- package/dist/entries/pages-client-entry.js +204 -0
- package/dist/entries/pages-entry-helpers.d.ts +2 -0
- package/dist/entries/pages-entry-helpers.js +2 -0
- package/dist/entries/pages-server-entry.d.ts +11 -0
- package/dist/entries/pages-server-entry.js +398 -0
- package/dist/entries/runtime-entry-module.d.ts +25 -0
- package/dist/entries/runtime-entry-module.js +46 -0
- package/dist/index.d.ts +115 -0
- package/dist/index.js +2661 -0
- package/dist/init.d.ts +69 -0
- package/dist/init.js +253 -0
- package/dist/plugins/ast-utils.d.ts +20 -0
- package/dist/plugins/ast-utils.js +78 -0
- package/dist/plugins/async-hooks-stub.d.ts +18 -0
- package/dist/plugins/async-hooks-stub.js +40 -0
- package/dist/plugins/client-reference-dedup.d.ts +35 -0
- package/dist/plugins/client-reference-dedup.js +189 -0
- package/dist/plugins/css-data-url.d.ts +6 -0
- package/dist/plugins/css-data-url.js +83 -0
- package/dist/plugins/dynamic-preload-metadata.d.ts +13 -0
- package/dist/plugins/dynamic-preload-metadata.js +413 -0
- package/dist/plugins/extensionless-dynamic-import.d.ts +6 -0
- package/dist/plugins/extensionless-dynamic-import.js +155 -0
- package/dist/plugins/fonts.d.ts +95 -0
- package/dist/plugins/fonts.js +711 -0
- package/dist/plugins/import-meta-url.d.ts +16 -0
- package/dist/plugins/import-meta-url.js +353 -0
- package/dist/plugins/instrumentation-client.d.ts +6 -0
- package/dist/plugins/instrumentation-client.js +27 -0
- package/dist/plugins/middleware-export-validation.d.ts +5 -0
- package/dist/plugins/middleware-export-validation.js +36 -0
- package/dist/plugins/middleware-server-only.d.ts +53 -0
- package/dist/plugins/middleware-server-only.js +90 -0
- package/dist/plugins/og-asset-ownership.d.ts +27 -0
- package/dist/plugins/og-asset-ownership.js +285 -0
- package/dist/plugins/og-assets.d.ts +50 -0
- package/dist/plugins/og-assets.js +229 -0
- package/dist/plugins/optimize-imports.d.ts +42 -0
- package/dist/plugins/optimize-imports.js +587 -0
- package/dist/plugins/postcss.d.ts +26 -0
- package/dist/plugins/postcss.js +96 -0
- package/dist/plugins/remove-console.d.ts +21 -0
- package/dist/plugins/remove-console.js +177 -0
- package/dist/plugins/require-context.d.ts +6 -0
- package/dist/plugins/require-context.js +185 -0
- package/dist/plugins/rsc-client-reference-loaders.d.ts +6 -0
- package/dist/plugins/rsc-client-reference-loaders.js +46 -0
- package/dist/plugins/rsc-client-shim-excludes.d.ts +6 -0
- package/dist/plugins/rsc-client-shim-excludes.js +35 -0
- package/dist/plugins/sass.d.ts +62 -0
- package/dist/plugins/sass.js +268 -0
- package/dist/plugins/server-externals-manifest.d.ts +26 -0
- package/dist/plugins/server-externals-manifest.js +81 -0
- package/dist/plugins/strip-server-exports.d.ts +21 -0
- package/dist/plugins/strip-server-exports.js +519 -0
- package/dist/plugins/typeof-window.d.ts +14 -0
- package/dist/plugins/typeof-window.js +150 -0
- package/dist/plugins/wasm-module-import.d.ts +15 -0
- package/dist/plugins/wasm-module-import.js +50 -0
- package/dist/routing/app-route-graph.d.ts +336 -0
- package/dist/routing/app-route-graph.js +1518 -0
- package/dist/routing/app-router.d.ts +30 -0
- package/dist/routing/app-router.js +59 -0
- package/dist/routing/file-matcher.d.ts +60 -0
- package/dist/routing/file-matcher.js +147 -0
- package/dist/routing/pages-router.d.ts +48 -0
- package/dist/routing/pages-router.js +163 -0
- package/dist/routing/route-matching.d.ts +27 -0
- package/dist/routing/route-matching.js +42 -0
- package/dist/routing/route-pattern.d.ts +64 -0
- package/dist/routing/route-pattern.js +165 -0
- package/dist/routing/route-trie.d.ts +67 -0
- package/dist/routing/route-trie.js +143 -0
- package/dist/routing/route-validation.d.ts +10 -0
- package/dist/routing/route-validation.js +101 -0
- package/dist/routing/utils.d.ts +117 -0
- package/dist/routing/utils.js +242 -0
- package/dist/server/accept-encoding.d.ts +29 -0
- package/dist/server/accept-encoding.js +95 -0
- package/dist/server/api-handler.d.ts +17 -0
- package/dist/server/api-handler.js +276 -0
- package/dist/server/app-action-request.d.ts +4 -0
- package/dist/server/app-action-request.js +9 -0
- package/dist/server/app-bfcache-id.d.ts +5 -0
- package/dist/server/app-bfcache-id.js +5 -0
- package/dist/server/app-bfcache-identity.d.ts +36 -0
- package/dist/server/app-bfcache-identity.js +156 -0
- package/dist/server/app-browser-action-result.d.ts +64 -0
- package/dist/server/app-browser-action-result.js +111 -0
- package/dist/server/app-browser-client-reuse-manifest.d.ts +12 -0
- package/dist/server/app-browser-client-reuse-manifest.js +101 -0
- package/dist/server/app-browser-entry.d.ts +1 -0
- package/dist/server/app-browser-entry.js +1087 -0
- package/dist/server/app-browser-error.d.ts +13 -0
- package/dist/server/app-browser-error.js +52 -0
- package/dist/server/app-browser-history-controller.d.ts +104 -0
- package/dist/server/app-browser-history-controller.js +210 -0
- package/dist/server/app-browser-hydration.d.ts +32 -0
- package/dist/server/app-browser-hydration.js +29 -0
- package/dist/server/app-browser-interception-context.d.ts +24 -0
- package/dist/server/app-browser-interception-context.js +43 -0
- package/dist/server/app-browser-mpa-navigation.d.ts +16 -0
- package/dist/server/app-browser-mpa-navigation.js +42 -0
- package/dist/server/app-browser-navigation-controller.d.ts +109 -0
- package/dist/server/app-browser-navigation-controller.js +465 -0
- package/dist/server/app-browser-popstate.d.ts +26 -0
- package/dist/server/app-browser-popstate.js +44 -0
- package/dist/server/app-browser-rsc-redirect.d.ts +38 -0
- package/dist/server/app-browser-rsc-redirect.js +64 -0
- package/dist/server/app-browser-server-action-client.d.ts +32 -0
- package/dist/server/app-browser-server-action-client.js +128 -0
- package/dist/server/app-browser-server-action-navigation.d.ts +6 -0
- package/dist/server/app-browser-server-action-navigation.js +9 -0
- package/dist/server/app-browser-state.d.ts +140 -0
- package/dist/server/app-browser-state.js +315 -0
- package/dist/server/app-browser-stream.d.ts +28 -0
- package/dist/server/app-browser-stream.js +122 -0
- package/dist/server/app-browser-visible-commit.d.ts +78 -0
- package/dist/server/app-browser-visible-commit.js +241 -0
- package/dist/server/app-client-reference-preloader.d.ts +14 -0
- package/dist/server/app-client-reference-preloader.js +44 -0
- package/dist/server/app-elements-wire.d.ts +192 -0
- package/dist/server/app-elements-wire.js +443 -0
- package/dist/server/app-elements.d.ts +9 -0
- package/dist/server/app-elements.js +18 -0
- package/dist/server/app-fallback-renderer.d.ts +89 -0
- package/dist/server/app-fallback-renderer.js +136 -0
- package/dist/server/app-history-state.d.ts +85 -0
- package/dist/server/app-history-state.js +223 -0
- package/dist/server/app-hook-warning-suppression.d.ts +6 -0
- package/dist/server/app-hook-warning-suppression.js +10 -0
- package/dist/server/app-inline-css-client.d.ts +6 -0
- package/dist/server/app-inline-css-client.js +35 -0
- package/dist/server/app-interception-context-header.d.ts +32 -0
- package/dist/server/app-interception-context-header.js +42 -0
- package/dist/server/app-layout-param-observation.d.ts +43 -0
- package/dist/server/app-layout-param-observation.js +168 -0
- package/dist/server/app-middleware.d.ts +46 -0
- package/dist/server/app-middleware.js +168 -0
- package/dist/server/app-mounted-slots-header.d.ts +35 -0
- package/dist/server/app-mounted-slots-header.js +58 -0
- package/dist/server/app-optimistic-routing.d.ts +53 -0
- package/dist/server/app-optimistic-routing.js +227 -0
- package/dist/server/app-page-boundary-render.d.ts +85 -0
- package/dist/server/app-page-boundary-render.js +305 -0
- package/dist/server/app-page-boundary.d.ts +102 -0
- package/dist/server/app-page-boundary.js +120 -0
- package/dist/server/app-page-cache-finalizer.d.ts +62 -0
- package/dist/server/app-page-cache-finalizer.js +122 -0
- package/dist/server/app-page-cache-render.d.ts +53 -0
- package/dist/server/app-page-cache-render.js +91 -0
- package/dist/server/app-page-cache.d.ts +83 -0
- package/dist/server/app-page-cache.js +272 -0
- package/dist/server/app-page-dispatch.d.ts +223 -0
- package/dist/server/app-page-dispatch.js +610 -0
- package/dist/server/app-page-element-builder.d.ts +96 -0
- package/dist/server/app-page-element-builder.js +205 -0
- package/dist/server/app-page-execution.d.ts +138 -0
- package/dist/server/app-page-execution.js +328 -0
- package/dist/server/app-page-head.d.ts +65 -0
- package/dist/server/app-page-head.js +228 -0
- package/dist/server/app-page-method.d.ts +15 -0
- package/dist/server/app-page-method.js +25 -0
- package/dist/server/app-page-params.d.ts +8 -0
- package/dist/server/app-page-params.js +39 -0
- package/dist/server/app-page-ppr-runtime.d.ts +7 -0
- package/dist/server/app-page-ppr-runtime.js +70 -0
- package/dist/server/app-page-probe.d.ts +134 -0
- package/dist/server/app-page-probe.js +276 -0
- package/dist/server/app-page-render-identity.d.ts +21 -0
- package/dist/server/app-page-render-identity.js +40 -0
- package/dist/server/app-page-render-observation.d.ts +36 -0
- package/dist/server/app-page-render-observation.js +82 -0
- package/dist/server/app-page-render.d.ts +111 -0
- package/dist/server/app-page-render.js +602 -0
- package/dist/server/app-page-request.d.ts +137 -0
- package/dist/server/app-page-request.js +216 -0
- package/dist/server/app-page-response.d.ts +68 -0
- package/dist/server/app-page-response.js +120 -0
- package/dist/server/app-page-route-wiring.d.ts +151 -0
- package/dist/server/app-page-route-wiring.js +452 -0
- package/dist/server/app-page-search-params-observation.d.ts +10 -0
- package/dist/server/app-page-search-params-observation.js +20 -0
- package/dist/server/app-page-segment-state.d.ts +9 -0
- package/dist/server/app-page-segment-state.js +80 -0
- package/dist/server/app-page-stream.d.ts +151 -0
- package/dist/server/app-page-stream.js +143 -0
- package/dist/server/app-pages-bridge.d.ts +63 -0
- package/dist/server/app-pages-bridge.js +63 -0
- package/dist/server/app-post-middleware-context.d.ts +15 -0
- package/dist/server/app-post-middleware-context.js +26 -0
- package/dist/server/app-ppr-fallback-shell-render.d.ts +18 -0
- package/dist/server/app-ppr-fallback-shell-render.js +26 -0
- package/dist/server/app-ppr-fallback-shell.d.ts +33 -0
- package/dist/server/app-ppr-fallback-shell.js +89 -0
- package/dist/server/app-prerender-endpoints.d.ts +18 -0
- package/dist/server/app-prerender-endpoints.js +94 -0
- package/dist/server/app-prerender-static-params.d.ts +30 -0
- package/dist/server/app-prerender-static-params.js +81 -0
- package/dist/server/app-render-dependency.d.ts +14 -0
- package/dist/server/app-render-dependency.js +41 -0
- package/dist/server/app-request-context.d.ts +20 -0
- package/dist/server/app-request-context.js +29 -0
- package/dist/server/app-route-handler-cache.d.ts +46 -0
- package/dist/server/app-route-handler-cache.js +78 -0
- package/dist/server/app-route-handler-dispatch.d.ts +49 -0
- package/dist/server/app-route-handler-dispatch.js +163 -0
- package/dist/server/app-route-handler-execution.d.ts +86 -0
- package/dist/server/app-route-handler-execution.js +128 -0
- package/dist/server/app-route-handler-policy.d.ts +55 -0
- package/dist/server/app-route-handler-policy.js +58 -0
- package/dist/server/app-route-handler-response.d.ts +28 -0
- package/dist/server/app-route-handler-response.js +145 -0
- package/dist/server/app-route-handler-runtime.d.ts +39 -0
- package/dist/server/app-route-handler-runtime.js +250 -0
- package/dist/server/app-route-module-loader.d.ts +91 -0
- package/dist/server/app-route-module-loader.js +83 -0
- package/dist/server/app-router-entry.d.ts +13 -0
- package/dist/server/app-router-entry.js +49 -0
- package/dist/server/app-rsc-cache-busting.d.ts +64 -0
- package/dist/server/app-rsc-cache-busting.js +206 -0
- package/dist/server/app-rsc-embedded-chunks.d.ts +8 -0
- package/dist/server/app-rsc-embedded-chunks.js +32 -0
- package/dist/server/app-rsc-error-handler.d.ts +20 -0
- package/dist/server/app-rsc-error-handler.js +28 -0
- package/dist/server/app-rsc-errors.d.ts +40 -0
- package/dist/server/app-rsc-errors.js +60 -0
- package/dist/server/app-rsc-handler.d.ts +201 -0
- package/dist/server/app-rsc-handler.js +538 -0
- package/dist/server/app-rsc-render-mode.d.ts +11 -0
- package/dist/server/app-rsc-render-mode.js +25 -0
- package/dist/server/app-rsc-request-normalization.d.ts +48 -0
- package/dist/server/app-rsc-request-normalization.js +75 -0
- package/dist/server/app-rsc-response-finalizer.d.ts +37 -0
- package/dist/server/app-rsc-response-finalizer.js +54 -0
- package/dist/server/app-rsc-route-matching.d.ts +93 -0
- package/dist/server/app-rsc-route-matching.js +134 -0
- package/dist/server/app-segment-config.d.ts +46 -0
- package/dist/server/app-segment-config.js +113 -0
- package/dist/server/app-server-action-execution.d.ts +219 -0
- package/dist/server/app-server-action-execution.js +767 -0
- package/dist/server/app-ssr-entry.d.ts +52 -0
- package/dist/server/app-ssr-entry.js +295 -0
- package/dist/server/app-ssr-error-meta.d.ts +13 -0
- package/dist/server/app-ssr-error-meta.js +48 -0
- package/dist/server/app-ssr-router-instance.d.ts +6 -0
- package/dist/server/app-ssr-router-instance.js +24 -0
- package/dist/server/app-ssr-stream.d.ts +60 -0
- package/dist/server/app-ssr-stream.js +408 -0
- package/dist/server/app-static-generation.d.ts +15 -0
- package/dist/server/app-static-generation.js +19 -0
- package/dist/server/app-visited-response-cache.d.ts +23 -0
- package/dist/server/app-visited-response-cache.js +19 -0
- package/dist/server/artifact-compatibility.d.ts +54 -0
- package/dist/server/artifact-compatibility.js +91 -0
- package/dist/server/before-interactive-head.d.ts +17 -0
- package/dist/server/before-interactive-head.js +35 -0
- package/dist/server/cache-control.d.ts +37 -0
- package/dist/server/cache-control.js +56 -0
- package/dist/server/cache-headers.d.ts +6 -0
- package/dist/server/cache-headers.js +17 -0
- package/dist/server/cache-proof.d.ts +364 -0
- package/dist/server/cache-proof.js +794 -0
- package/dist/server/client-reuse-manifest.d.ts +104 -0
- package/dist/server/client-reuse-manifest.js +209 -0
- package/dist/server/client-trace-metadata.d.ts +30 -0
- package/dist/server/client-trace-metadata.js +81 -0
- package/dist/server/cookie-utils.d.ts +12 -0
- package/dist/server/cookie-utils.js +18 -0
- package/dist/server/csp.d.ts +10 -0
- package/dist/server/csp.js +41 -0
- package/dist/server/default-global-error-module.d.ts +19 -0
- package/dist/server/default-global-error-module.js +18 -0
- package/dist/server/default-not-found-module.d.ts +19 -0
- package/dist/server/default-not-found-module.js +18 -0
- package/dist/server/defer-until-stream-consumed.d.ts +7 -0
- package/dist/server/defer-until-stream-consumed.js +34 -0
- package/dist/server/dev-error-overlay-store.d.ts +39 -0
- package/dist/server/dev-error-overlay-store.js +86 -0
- package/dist/server/dev-error-overlay.d.ts +51 -0
- package/dist/server/dev-error-overlay.js +1341 -0
- package/dist/server/dev-initial-server-error.d.ts +9 -0
- package/dist/server/dev-initial-server-error.js +26 -0
- package/dist/server/dev-lockfile.d.ts +109 -0
- package/dist/server/dev-lockfile.js +179 -0
- package/dist/server/dev-module-runner.d.ts +30 -0
- package/dist/server/dev-module-runner.js +91 -0
- package/dist/server/dev-origin-check.d.ts +62 -0
- package/dist/server/dev-origin-check.js +156 -0
- package/dist/server/dev-route-files.d.ts +6 -0
- package/dist/server/dev-route-files.js +71 -0
- package/dist/server/dev-server.d.ts +58 -0
- package/dist/server/dev-server.js +1114 -0
- package/dist/server/dev-stack-sourcemap-endpoint.d.ts +4 -0
- package/dist/server/dev-stack-sourcemap-endpoint.js +4 -0
- package/dist/server/dev-stack-sourcemap.d.ts +43 -0
- package/dist/server/dev-stack-sourcemap.js +443 -0
- package/dist/server/document-initial-head.d.ts +6 -0
- package/dist/server/document-initial-head.js +33 -0
- package/dist/server/edge-api-runtime.d.ts +4 -0
- package/dist/server/edge-api-runtime.js +6 -0
- package/dist/server/file-based-metadata.d.ts +29 -0
- package/dist/server/file-based-metadata.js +401 -0
- package/dist/server/headers.d.ts +114 -0
- package/dist/server/headers.js +136 -0
- package/dist/server/html.d.ts +28 -0
- package/dist/server/html.js +41 -0
- package/dist/server/http-error-responses.d.ts +91 -0
- package/dist/server/http-error-responses.js +105 -0
- package/dist/server/hybrid-route-priority.d.ts +22 -0
- package/dist/server/hybrid-route-priority.js +33 -0
- package/dist/server/image-optimization.d.ts +130 -0
- package/dist/server/image-optimization.js +247 -0
- package/dist/server/implicit-tags.d.ts +6 -0
- package/dist/server/implicit-tags.js +44 -0
- package/dist/server/instrumentation-runtime.d.ts +49 -0
- package/dist/server/instrumentation-runtime.js +35 -0
- package/dist/server/instrumentation.d.ts +85 -0
- package/dist/server/instrumentation.js +130 -0
- package/dist/server/isr-cache.d.ts +127 -0
- package/dist/server/isr-cache.js +282 -0
- package/dist/server/isr-decision.d.ts +79 -0
- package/dist/server/isr-decision.js +70 -0
- package/dist/server/metadata-route-build-data.d.ts +24 -0
- package/dist/server/metadata-route-build-data.js +148 -0
- package/dist/server/metadata-route-response.d.ts +16 -0
- package/dist/server/metadata-route-response.js +205 -0
- package/dist/server/metadata-routes.d.ts +139 -0
- package/dist/server/metadata-routes.js +433 -0
- package/dist/server/middleware-matcher.d.ts +14 -0
- package/dist/server/middleware-matcher.js +111 -0
- package/dist/server/middleware-request-headers.d.ts +11 -0
- package/dist/server/middleware-request-headers.js +65 -0
- package/dist/server/middleware-response-headers.d.ts +12 -0
- package/dist/server/middleware-response-headers.js +42 -0
- package/dist/server/middleware-runtime.d.ts +67 -0
- package/dist/server/middleware-runtime.js +240 -0
- package/dist/server/middleware.d.ts +62 -0
- package/dist/server/middleware.js +114 -0
- package/dist/server/navigation-planner.d.ts +308 -0
- package/dist/server/navigation-planner.js +831 -0
- package/dist/server/navigation-trace.d.ts +68 -0
- package/dist/server/navigation-trace.js +71 -0
- package/dist/server/next-error-digest.d.ts +44 -0
- package/dist/server/next-error-digest.js +40 -0
- package/dist/server/normalize-path.d.ts +38 -0
- package/dist/server/normalize-path.js +70 -0
- package/dist/server/open-redirect.d.ts +12 -0
- package/dist/server/open-redirect.js +21 -0
- package/dist/server/operation-token.d.ts +40 -0
- package/dist/server/operation-token.js +85 -0
- package/dist/server/otel-tracer-extension.d.ts +45 -0
- package/dist/server/otel-tracer-extension.js +89 -0
- package/dist/server/pages-api-route.d.ts +83 -0
- package/dist/server/pages-api-route.js +75 -0
- package/dist/server/pages-asset-tags.d.ts +78 -0
- package/dist/server/pages-asset-tags.js +126 -0
- package/dist/server/pages-body-parser-config.d.ts +59 -0
- package/dist/server/pages-body-parser-config.js +77 -0
- package/dist/server/pages-data-route.d.ts +121 -0
- package/dist/server/pages-data-route.js +157 -0
- package/dist/server/pages-default-404.d.ts +30 -0
- package/dist/server/pages-default-404.js +38 -0
- package/dist/server/pages-dev-module-url.d.ts +4 -0
- package/dist/server/pages-dev-module-url.js +15 -0
- package/dist/server/pages-document-initial-props.d.ts +77 -0
- package/dist/server/pages-document-initial-props.js +109 -0
- package/dist/server/pages-get-initial-props.d.ts +67 -0
- package/dist/server/pages-get-initial-props.js +92 -0
- package/dist/server/pages-i18n.d.ts +106 -0
- package/dist/server/pages-i18n.js +183 -0
- package/dist/server/pages-media-type.d.ts +15 -0
- package/dist/server/pages-media-type.js +24 -0
- package/dist/server/pages-node-compat.d.ts +55 -0
- package/dist/server/pages-node-compat.js +235 -0
- package/dist/server/pages-page-data.d.ts +223 -0
- package/dist/server/pages-page-data.js +484 -0
- package/dist/server/pages-page-handler.d.ts +100 -0
- package/dist/server/pages-page-handler.js +403 -0
- package/dist/server/pages-page-method.d.ts +47 -0
- package/dist/server/pages-page-method.js +17 -0
- package/dist/server/pages-page-response.d.ts +138 -0
- package/dist/server/pages-page-response.js +285 -0
- package/dist/server/pages-readiness.d.ts +36 -0
- package/dist/server/pages-readiness.js +21 -0
- package/dist/server/pages-request-pipeline.d.ts +116 -0
- package/dist/server/pages-request-pipeline.js +311 -0
- package/dist/server/pages-revalidate.d.ts +15 -0
- package/dist/server/pages-revalidate.js +19 -0
- package/dist/server/pages-serializable-props.d.ts +24 -0
- package/dist/server/pages-serializable-props.js +67 -0
- package/dist/server/pregenerated-concrete-paths.d.ts +16 -0
- package/dist/server/pregenerated-concrete-paths.js +61 -0
- package/dist/server/prerender-manifest.d.ts +33 -0
- package/dist/server/prerender-manifest.js +54 -0
- package/dist/server/prerender-route-params.d.ts +23 -0
- package/dist/server/prerender-route-params.js +113 -0
- package/dist/server/prerender-work-unit-setup.d.ts +6 -0
- package/dist/server/prerender-work-unit-setup.js +28 -0
- package/dist/server/prod-server.d.ts +148 -0
- package/dist/server/prod-server.js +1136 -0
- package/dist/server/proxy-trust.d.ts +40 -0
- package/dist/server/proxy-trust.js +68 -0
- package/dist/server/request-log.d.ts +39 -0
- package/dist/server/request-log.js +56 -0
- package/dist/server/request-pipeline.d.ts +187 -0
- package/dist/server/request-pipeline.js +447 -0
- package/dist/server/rsc-stream-hints.d.ts +10 -0
- package/dist/server/rsc-stream-hints.js +41 -0
- package/dist/server/seed-cache.d.ts +29 -0
- package/dist/server/seed-cache.js +125 -0
- package/dist/server/server-action-not-found.d.ts +21 -0
- package/dist/server/server-action-not-found.js +62 -0
- package/dist/server/server-globals.d.ts +4 -0
- package/dist/server/server-globals.js +35 -0
- package/dist/server/skip-cache-proof.d.ts +61 -0
- package/dist/server/skip-cache-proof.js +168 -0
- package/dist/server/socket-error-backstop.d.ts +34 -0
- package/dist/server/socket-error-backstop.js +200 -0
- package/dist/server/static-file-cache.d.ts +56 -0
- package/dist/server/static-file-cache.js +231 -0
- package/dist/server/static-layout-client-reuse-proof.d.ts +15 -0
- package/dist/server/static-layout-client-reuse-proof.js +33 -0
- package/dist/server/streaming-metadata.d.ts +4 -0
- package/dist/server/streaming-metadata.js +8 -0
- package/dist/server/worker-utils.d.ts +7 -0
- package/dist/server/worker-utils.js +99 -0
- package/dist/shims/amp.d.ts +19 -0
- package/dist/shims/amp.js +23 -0
- package/dist/shims/app-router-scroll-state.d.ts +15 -0
- package/dist/shims/app-router-scroll-state.js +61 -0
- package/dist/shims/app-router-scroll.d.ts +29 -0
- package/dist/shims/app-router-scroll.js +141 -0
- package/dist/shims/app.d.ts +42 -0
- package/dist/shims/app.js +48 -0
- package/dist/shims/before-interactive-context.d.ts +40 -0
- package/dist/shims/before-interactive-context.js +8 -0
- package/dist/shims/cache-for-request.d.ts +57 -0
- package/dist/shims/cache-for-request.js +72 -0
- package/dist/shims/cache-handler.d.ts +106 -0
- package/dist/shims/cache-handler.js +176 -0
- package/dist/shims/cache-request-state.d.ts +47 -0
- package/dist/shims/cache-request-state.js +126 -0
- package/dist/shims/cache-runtime.d.ts +83 -0
- package/dist/shims/cache-runtime.js +452 -0
- package/dist/shims/cache.d.ts +145 -0
- package/dist/shims/cache.js +401 -0
- package/dist/shims/cdn-cache.d.ts +125 -0
- package/dist/shims/cdn-cache.js +100 -0
- package/dist/shims/client-hook-error.d.ts +13 -0
- package/dist/shims/client-hook-error.js +17 -0
- package/dist/shims/client-locale.d.ts +14 -0
- package/dist/shims/client-locale.js +11 -0
- package/dist/shims/client-only.d.ts +1 -0
- package/dist/shims/client-only.js +1 -0
- package/dist/shims/compat-router.d.ts +16 -0
- package/dist/shims/compat-router.js +25 -0
- package/dist/shims/config.d.ts +28 -0
- package/dist/shims/config.js +21 -0
- package/dist/shims/constants.d.ts +130 -0
- package/dist/shims/constants.js +167 -0
- package/dist/shims/default-global-error.d.ts +31 -0
- package/dist/shims/default-global-error.js +179 -0
- package/dist/shims/default-not-found.d.ts +11 -0
- package/dist/shims/default-not-found.js +59 -0
- package/dist/shims/document.d.ts +92 -0
- package/dist/shims/document.js +76 -0
- package/dist/shims/dynamic-preload-chunks.d.ts +8 -0
- package/dist/shims/dynamic-preload-chunks.js +79 -0
- package/dist/shims/dynamic.d.ts +35 -0
- package/dist/shims/dynamic.js +204 -0
- package/dist/shims/error-boundary-navigation.d.ts +7 -0
- package/dist/shims/error-boundary-navigation.js +44 -0
- package/dist/shims/error-boundary.d.ts +155 -0
- package/dist/shims/error-boundary.js +342 -0
- package/dist/shims/error.d.ts +31 -0
- package/dist/shims/error.js +123 -0
- package/dist/shims/error.react-server.d.ts +9 -0
- package/dist/shims/error.react-server.js +6 -0
- package/dist/shims/fetch-cache.d.ts +136 -0
- package/dist/shims/fetch-cache.js +766 -0
- package/dist/shims/font-google-base.d.ts +83 -0
- package/dist/shims/font-google-base.js +290 -0
- package/dist/shims/font-google.d.ts +2 -0
- package/dist/shims/font-google.js +2 -0
- package/dist/shims/font-local.d.ts +50 -0
- package/dist/shims/font-local.js +195 -0
- package/dist/shims/font-utils.d.ts +56 -0
- package/dist/shims/font-utils.js +107 -0
- package/dist/shims/form.d.ts +19 -0
- package/dist/shims/form.js +236 -0
- package/dist/shims/hash-scroll.d.ts +10 -0
- package/dist/shims/hash-scroll.js +47 -0
- package/dist/shims/head-state.d.ts +16 -0
- package/dist/shims/head-state.js +43 -0
- package/dist/shims/head.d.ts +73 -0
- package/dist/shims/head.js +340 -0
- package/dist/shims/headers.d.ts +253 -0
- package/dist/shims/headers.js +754 -0
- package/dist/shims/i18n-context.d.ts +22 -0
- package/dist/shims/i18n-context.js +42 -0
- package/dist/shims/i18n-state.d.ts +14 -0
- package/dist/shims/i18n-state.js +38 -0
- package/dist/shims/image-config.d.ts +45 -0
- package/dist/shims/image-config.js +85 -0
- package/dist/shims/image.d.ts +55 -0
- package/dist/shims/image.js +582 -0
- package/dist/shims/internal/als-registry.d.ts +14 -0
- package/dist/shims/internal/als-registry.js +80 -0
- package/dist/shims/internal/api-utils.d.ts +14 -0
- package/dist/shims/internal/api-utils.js +1 -0
- package/dist/shims/internal/app-page-props-cache-key.d.ts +5 -0
- package/dist/shims/internal/app-page-props-cache-key.js +16 -0
- package/dist/shims/internal/app-route-detection.d.ts +39 -0
- package/dist/shims/internal/app-route-detection.js +62 -0
- package/dist/shims/internal/app-router-context.d.ts +31 -0
- package/dist/shims/internal/app-router-context.js +28 -0
- package/dist/shims/internal/cookie-serialize.d.ts +45 -0
- package/dist/shims/internal/cookie-serialize.js +49 -0
- package/dist/shims/internal/cookies.d.ts +2 -0
- package/dist/shims/internal/cookies.js +2 -0
- package/dist/shims/internal/hybrid-client-route-owner.d.ts +31 -0
- package/dist/shims/internal/hybrid-client-route-owner.js +143 -0
- package/dist/shims/internal/interpolate-as.d.ts +25 -0
- package/dist/shims/internal/interpolate-as.js +196 -0
- package/dist/shims/internal/link-status-registry.d.ts +43 -0
- package/dist/shims/internal/link-status-registry.js +42 -0
- package/dist/shims/internal/make-hanging-promise.d.ts +15 -0
- package/dist/shims/internal/make-hanging-promise.js +44 -0
- package/dist/shims/internal/navigation-untracked.d.ts +35 -0
- package/dist/shims/internal/navigation-untracked.js +56 -0
- package/dist/shims/internal/pages-data-fetch-dedup.d.ts +54 -0
- package/dist/shims/internal/pages-data-fetch-dedup.js +121 -0
- package/dist/shims/internal/pages-data-target.d.ts +62 -0
- package/dist/shims/internal/pages-data-target.js +98 -0
- package/dist/shims/internal/pages-data-url.d.ts +41 -0
- package/dist/shims/internal/pages-data-url.js +71 -0
- package/dist/shims/internal/pages-router-accessor.d.ts +19 -0
- package/dist/shims/internal/pages-router-accessor.js +13 -0
- package/dist/shims/internal/route-pattern-for-warning.d.ts +27 -0
- package/dist/shims/internal/route-pattern-for-warning.js +40 -0
- package/dist/shims/internal/router-context.d.ts +7 -0
- package/dist/shims/internal/router-context.js +13 -0
- package/dist/shims/internal/utils.d.ts +52 -0
- package/dist/shims/internal/utils.js +27 -0
- package/dist/shims/internal/work-unit-async-storage.d.ts +30 -0
- package/dist/shims/internal/work-unit-async-storage.js +17 -0
- package/dist/shims/layout-segment-context.d.ts +24 -0
- package/dist/shims/layout-segment-context.js +39 -0
- package/dist/shims/legacy-image.d.ts +41 -0
- package/dist/shims/legacy-image.js +49 -0
- package/dist/shims/link-prefetch.d.ts +41 -0
- package/dist/shims/link-prefetch.js +43 -0
- package/dist/shims/link.d.ts +102 -0
- package/dist/shims/link.js +687 -0
- package/dist/shims/metadata.d.ts +285 -0
- package/dist/shims/metadata.js +820 -0
- package/dist/shims/navigation-context-state.d.ts +40 -0
- package/dist/shims/navigation-context-state.js +116 -0
- package/dist/shims/navigation-errors.d.ts +55 -0
- package/dist/shims/navigation-errors.js +110 -0
- package/dist/shims/navigation-server.d.ts +3 -0
- package/dist/shims/navigation-server.js +3 -0
- package/dist/shims/navigation-state.d.ts +25 -0
- package/dist/shims/navigation-state.js +66 -0
- package/dist/shims/navigation.d.ts +286 -0
- package/dist/shims/navigation.js +1206 -0
- package/dist/shims/navigation.react-server.d.ts +14 -0
- package/dist/shims/navigation.react-server.js +32 -0
- package/dist/shims/offline.d.ts +4 -0
- package/dist/shims/offline.js +15 -0
- package/dist/shims/og.d.ts +17 -0
- package/dist/shims/og.js +48 -0
- package/dist/shims/pages-router-runtime.d.ts +12 -0
- package/dist/shims/pages-router-runtime.js +24 -0
- package/dist/shims/ppr-fallback-shell.d.ts +33 -0
- package/dist/shims/ppr-fallback-shell.js +170 -0
- package/dist/shims/readonly-url-search-params.d.ts +13 -0
- package/dist/shims/readonly-url-search-params.js +26 -0
- package/dist/shims/request-context.d.ts +58 -0
- package/dist/shims/request-context.js +45 -0
- package/dist/shims/request-state-types.d.ts +12 -0
- package/dist/shims/request-state-types.js +1 -0
- package/dist/shims/root-params.d.ts +12 -0
- package/dist/shims/root-params.js +30 -0
- package/dist/shims/router-state.d.ts +32 -0
- package/dist/shims/router-state.js +39 -0
- package/dist/shims/router.d.ts +192 -0
- package/dist/shims/router.js +1786 -0
- package/dist/shims/script-nonce-context.d.ts +11 -0
- package/dist/shims/script-nonce-context.js +23 -0
- package/dist/shims/script.d.ts +43 -0
- package/dist/shims/script.js +370 -0
- package/dist/shims/server-only.d.ts +1 -0
- package/dist/shims/server-only.js +1 -0
- package/dist/shims/server.d.ts +323 -0
- package/dist/shims/server.js +729 -0
- package/dist/shims/slot.d.ts +45 -0
- package/dist/shims/slot.js +230 -0
- package/dist/shims/thenable-params.d.ts +11 -0
- package/dist/shims/thenable-params.js +176 -0
- package/dist/shims/unified-request-context.d.ts +68 -0
- package/dist/shims/unified-request-context.js +86 -0
- package/dist/shims/unrecognized-action-error.d.ts +34 -0
- package/dist/shims/unrecognized-action-error.js +39 -0
- package/dist/shims/url-safety.d.ts +34 -0
- package/dist/shims/url-safety.js +70 -0
- package/dist/shims/url-utils.d.ts +51 -0
- package/dist/shims/url-utils.js +156 -0
- package/dist/shims/use-merged-ref.d.ts +6 -0
- package/dist/shims/use-merged-ref.js +38 -0
- package/dist/shims/web-vitals.d.ts +8 -0
- package/dist/shims/web-vitals.js +22 -0
- package/dist/typegen.d.ts +9 -0
- package/dist/typegen.js +228 -0
- package/dist/utils/asset-prefix.d.ts +96 -0
- package/dist/utils/asset-prefix.js +122 -0
- package/dist/utils/base-path.d.ts +31 -0
- package/dist/utils/base-path.js +45 -0
- package/dist/utils/built-asset-url.d.ts +4 -0
- package/dist/utils/built-asset-url.js +11 -0
- package/dist/utils/cache-control-metadata.d.ts +4 -0
- package/dist/utils/cache-control-metadata.js +12 -0
- package/dist/utils/client-build-manifest.d.ts +21 -0
- package/dist/utils/client-build-manifest.js +87 -0
- package/dist/utils/client-entry-manifest.d.ts +11 -0
- package/dist/utils/client-entry-manifest.js +29 -0
- package/dist/utils/client-runtime-metadata.d.ts +45 -0
- package/dist/utils/client-runtime-metadata.js +63 -0
- package/dist/utils/commonjs-loader.d.ts +16 -0
- package/dist/utils/commonjs-loader.js +100 -0
- package/dist/utils/compare.d.ts +4 -0
- package/dist/utils/compare.js +8 -0
- package/dist/utils/deployment-id.d.ts +8 -0
- package/dist/utils/deployment-id.js +22 -0
- package/dist/utils/dev-error-recovery-event.d.ts +4 -0
- package/dist/utils/dev-error-recovery-event.js +4 -0
- package/dist/utils/domain-locale.d.ts +26 -0
- package/dist/utils/domain-locale.js +50 -0
- package/dist/utils/encode-cache-tag.d.ts +30 -0
- package/dist/utils/encode-cache-tag.js +36 -0
- package/dist/utils/error-cause.d.ts +4 -0
- package/dist/utils/error-cause.js +95 -0
- package/dist/utils/has-trailing-comma.d.ts +24 -0
- package/dist/utils/has-trailing-comma.js +62 -0
- package/dist/utils/hash.d.ts +24 -0
- package/dist/utils/hash.js +55 -0
- package/dist/utils/html-limited-bots.d.ts +21 -0
- package/dist/utils/html-limited-bots.js +35 -0
- package/dist/utils/lazy-chunks.d.ts +59 -0
- package/dist/utils/lazy-chunks.js +112 -0
- package/dist/utils/manifest-paths.d.ts +30 -0
- package/dist/utils/manifest-paths.js +66 -0
- package/dist/utils/mdx-scan.d.ts +9 -0
- package/dist/utils/mdx-scan.js +34 -0
- package/dist/utils/navigation-signal.d.ts +4 -0
- package/dist/utils/navigation-signal.js +12 -0
- package/dist/utils/number.d.ts +4 -0
- package/dist/utils/number.js +6 -0
- package/dist/utils/parse-cookie.d.ts +13 -0
- package/dist/utils/parse-cookie.js +52 -0
- package/dist/utils/path.d.ts +22 -0
- package/dist/utils/path.js +30 -0
- package/dist/utils/prerender-output-paths.d.ts +14 -0
- package/dist/utils/prerender-output-paths.js +22 -0
- package/dist/utils/project.d.ts +76 -0
- package/dist/utils/project.js +213 -0
- package/dist/utils/promise.d.ts +4 -0
- package/dist/utils/promise.js +6 -0
- package/dist/utils/public-routes.d.ts +4 -0
- package/dist/utils/public-routes.js +48 -0
- package/dist/utils/query.d.ts +49 -0
- package/dist/utils/query.js +122 -0
- package/dist/utils/record.d.ts +4 -0
- package/dist/utils/record.js +6 -0
- package/dist/utils/regex.d.ts +4 -0
- package/dist/utils/regex.js +6 -0
- package/dist/utils/safe-json-file.d.ts +17 -0
- package/dist/utils/safe-json-file.js +23 -0
- package/dist/utils/sorted-array.d.ts +8 -0
- package/dist/utils/sorted-array.js +20 -0
- package/dist/utils/text-stream.d.ts +28 -0
- package/dist/utils/text-stream.js +64 -0
- package/dist/utils/vinext-root.d.ts +23 -0
- package/dist/utils/vinext-root.js +29 -0
- package/dist/utils/virtual-module.d.ts +5 -0
- package/dist/utils/virtual-module.js +0 -0
- package/dist/utils/vite-version.d.ts +21 -0
- package/dist/utils/vite-version.js +42 -0
- package/package.json +145 -0
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
import { removeTrailingSlash } from "../../utils/base-path.js";
|
|
2
|
+
//#region src/shims/internal/interpolate-as.ts
|
|
3
|
+
/**
|
|
4
|
+
* Port of Next.js' Pages Router `interpolateAs` helper, plus the minimal
|
|
5
|
+
* subset of its transitive dependencies (`getRouteRegex` + `getRouteMatcher`
|
|
6
|
+
* and the parameter-pattern parsers they rely on).
|
|
7
|
+
*
|
|
8
|
+
* Upstream sources:
|
|
9
|
+
* - packages/next/src/shared/lib/router/utils/interpolate-as.ts
|
|
10
|
+
* - packages/next/src/shared/lib/router/utils/route-regex.ts
|
|
11
|
+
* - packages/next/src/shared/lib/router/utils/route-matcher.ts
|
|
12
|
+
* - packages/next/src/shared/lib/router/utils/get-dynamic-param.ts
|
|
13
|
+
* - packages/next/src/shared/lib/router/utils/remove-trailing-slash.ts
|
|
14
|
+
* - packages/next/src/shared/lib/escape-regexp.ts
|
|
15
|
+
*
|
|
16
|
+
* Used by the Pages Router shim to project a route pattern + `as` pathname +
|
|
17
|
+
* query back into a fully-interpolated browser URL (the `<Link href as>`
|
|
18
|
+
* masking path). Interception-route markers (`(.)`, `(..)`, `(...)`,
|
|
19
|
+
* `(..)(..)`) are intentionally omitted — they only apply to App Router and
|
|
20
|
+
* never appear in Pages Router patterns.
|
|
21
|
+
*/
|
|
22
|
+
function normalizeQuery(query) {
|
|
23
|
+
const normalized = {};
|
|
24
|
+
if (!query) return normalized;
|
|
25
|
+
for (const [key, value] of Object.entries(query)) {
|
|
26
|
+
if (value === void 0) continue;
|
|
27
|
+
normalized[key] = Array.isArray(value) ? value.map(String) : String(value);
|
|
28
|
+
}
|
|
29
|
+
return normalized;
|
|
30
|
+
}
|
|
31
|
+
function parseRouteHrefQuery(routeHref, queryIndex, hashIndex) {
|
|
32
|
+
const query = {};
|
|
33
|
+
if (queryIndex === -1 || hashIndex !== -1 && queryIndex > hashIndex) return query;
|
|
34
|
+
const searchEnd = hashIndex === -1 ? routeHref.length : hashIndex;
|
|
35
|
+
for (const [key, value] of new URLSearchParams(routeHref.slice(queryIndex + 1, searchEnd))) {
|
|
36
|
+
const existing = query[key];
|
|
37
|
+
if (existing === void 0) query[key] = value;
|
|
38
|
+
else if (Array.isArray(existing)) existing.push(value);
|
|
39
|
+
else query[key] = [existing, value];
|
|
40
|
+
}
|
|
41
|
+
return query;
|
|
42
|
+
}
|
|
43
|
+
const reHasRegExp = /[|\\{}()[\]^$+*?.-]/;
|
|
44
|
+
const reReplaceRegExp = /[|\\{}()[\]^$+*?.-]/g;
|
|
45
|
+
function escapeStringRegexp(str) {
|
|
46
|
+
if (reHasRegExp.test(str)) return str.replace(reReplaceRegExp, "\\$&");
|
|
47
|
+
return str;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Regular expression pattern used to match route parameters.
|
|
51
|
+
* Matches both single parameters and parameter groups.
|
|
52
|
+
* Examples:
|
|
53
|
+
* - `[[...slug]]` matches parameter group with key 'slug', repeat: true, optional: true
|
|
54
|
+
* - `[...slug]` matches parameter group with key 'slug', repeat: true, optional: false
|
|
55
|
+
* - `[[foo]]` matches parameter with key 'foo', repeat: false, optional: true
|
|
56
|
+
* - `[bar]` matches parameter with key 'bar', repeat: false, optional: false
|
|
57
|
+
*/
|
|
58
|
+
const PARAMETER_PATTERN = /^([^[]*)\[((?:\[[^\]]*\])|[^\]]+)\](.*)$/;
|
|
59
|
+
/**
|
|
60
|
+
* Parses a matched parameter from the PARAMETER_PATTERN regex.
|
|
61
|
+
* Examples:
|
|
62
|
+
* - `[...slug]` -> `{ key: 'slug', repeat: true, optional: true }`
|
|
63
|
+
* - `...slug` -> `{ key: 'slug', repeat: true, optional: false }`
|
|
64
|
+
* - `[foo]` -> `{ key: 'foo', repeat: false, optional: true }`
|
|
65
|
+
* - `bar` -> `{ key: 'bar', repeat: false, optional: false }`
|
|
66
|
+
*/
|
|
67
|
+
function parseMatchedParameter(param) {
|
|
68
|
+
const optional = param.startsWith("[") && param.endsWith("]");
|
|
69
|
+
if (optional) param = param.slice(1, -1);
|
|
70
|
+
const repeat = param.startsWith("...");
|
|
71
|
+
if (repeat) param = param.slice(3);
|
|
72
|
+
return {
|
|
73
|
+
key: param,
|
|
74
|
+
repeat,
|
|
75
|
+
optional
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
function getParametrizedRoute(route) {
|
|
79
|
+
const groups = {};
|
|
80
|
+
let groupIndex = 1;
|
|
81
|
+
const segments = [];
|
|
82
|
+
for (const segment of removeTrailingSlash(route).slice(1).split("/")) {
|
|
83
|
+
const paramMatches = segment.match(PARAMETER_PATTERN);
|
|
84
|
+
if (paramMatches && paramMatches[2]) {
|
|
85
|
+
const { key, repeat, optional } = parseMatchedParameter(paramMatches[2]);
|
|
86
|
+
groups[key] = {
|
|
87
|
+
pos: groupIndex++,
|
|
88
|
+
repeat,
|
|
89
|
+
optional
|
|
90
|
+
};
|
|
91
|
+
const s = repeat ? optional ? "(?:/(.+?))?" : "/(.+?)" : "/([^/]+?)";
|
|
92
|
+
segments.push(s);
|
|
93
|
+
} else segments.push(`/${escapeStringRegexp(segment)}`);
|
|
94
|
+
}
|
|
95
|
+
return {
|
|
96
|
+
parameterizedRoute: segments.join(""),
|
|
97
|
+
groups
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* From a normalized route this function generates a regular expression and a
|
|
102
|
+
* corresponding groups object intended to be used to store matching groups
|
|
103
|
+
* from the regular expression.
|
|
104
|
+
*/
|
|
105
|
+
function getRouteRegex(normalizedRoute) {
|
|
106
|
+
const { parameterizedRoute, groups } = getParametrizedRoute(normalizedRoute);
|
|
107
|
+
return {
|
|
108
|
+
re: new RegExp(`^${parameterizedRoute}(?:/)?$`),
|
|
109
|
+
groups
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Compile a route regex into a function that extracts decoded params from a
|
|
114
|
+
* pathname. Returns `false` if the pathname does not match the route.
|
|
115
|
+
*
|
|
116
|
+
* The `safeRouteMatcher`/`stripParameterSeparators` wrapper that Next.js
|
|
117
|
+
* applies (for adjacent-parameter normalization) is omitted — Pages Router
|
|
118
|
+
* patterns never contain adjacent parameters, so the wrapper is a no-op for
|
|
119
|
+
* this caller.
|
|
120
|
+
*/
|
|
121
|
+
function getRouteMatcher({ re, groups }) {
|
|
122
|
+
return (pathname) => {
|
|
123
|
+
const routeMatch = re.exec(pathname);
|
|
124
|
+
if (!routeMatch) return false;
|
|
125
|
+
const decode = (param) => {
|
|
126
|
+
try {
|
|
127
|
+
return decodeURIComponent(param);
|
|
128
|
+
} catch {
|
|
129
|
+
throw new Error("failed to decode param");
|
|
130
|
+
}
|
|
131
|
+
};
|
|
132
|
+
const params = {};
|
|
133
|
+
for (const [key, group] of Object.entries(groups)) {
|
|
134
|
+
const match = routeMatch[group.pos];
|
|
135
|
+
if (match !== void 0) if (group.repeat) params[key] = match.split("/").map((entry) => decode(entry));
|
|
136
|
+
else params[key] = decode(match);
|
|
137
|
+
}
|
|
138
|
+
return params;
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Project a `(route, asPathname, query)` triple back into a fully-interpolated
|
|
143
|
+
* browser URL. Used by the `<Link href as>` masking path in the Pages Router
|
|
144
|
+
* shim: extract param values from the rendered `as` path when it differs from
|
|
145
|
+
* the route pattern, otherwise fall back to reading them from the href query.
|
|
146
|
+
*
|
|
147
|
+
* Returns `{ params, result }`. `result` is the interpolated URL, or the empty
|
|
148
|
+
* string when one or more required params could not be resolved. Callers warn
|
|
149
|
+
* (in dev) on the empty-string case; this helper deliberately stays silent —
|
|
150
|
+
* matching Next.js' behavior, where `<Link>` itself owns the dev warning.
|
|
151
|
+
*/
|
|
152
|
+
function interpolateAs(route, asPathname, query) {
|
|
153
|
+
let interpolatedRoute = "";
|
|
154
|
+
const dynamicRegex = getRouteRegex(route);
|
|
155
|
+
const dynamicGroups = dynamicRegex.groups;
|
|
156
|
+
const dynamicMatches = (asPathname !== route ? getRouteMatcher(dynamicRegex)(asPathname) : "") || query;
|
|
157
|
+
interpolatedRoute = route;
|
|
158
|
+
const params = Object.keys(dynamicGroups);
|
|
159
|
+
if (!params.every((param) => {
|
|
160
|
+
let value = dynamicMatches[param] || "";
|
|
161
|
+
const { repeat, optional } = dynamicGroups[param];
|
|
162
|
+
let replaced = `[${repeat ? "..." : ""}${param}]`;
|
|
163
|
+
if (optional) replaced = `${!value ? "/" : ""}[${replaced}]`;
|
|
164
|
+
if (repeat && !Array.isArray(value)) value = [value];
|
|
165
|
+
return (optional || param in dynamicMatches) && (interpolatedRoute = interpolatedRoute.replace(replaced, repeat ? value.map((segment) => encodeURIComponent(segment)).join("/") : encodeURIComponent(value)) || "/");
|
|
166
|
+
})) interpolatedRoute = "";
|
|
167
|
+
return {
|
|
168
|
+
params,
|
|
169
|
+
result: interpolatedRoute
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Resolve a bracket-pattern route href against its displayed href. Query
|
|
174
|
+
* values can be supplied directly (object-form hrefs) or parsed from the route
|
|
175
|
+
* href (string-form hrefs). A `?` after `#` is part of the fragment, not a
|
|
176
|
+
* query delimiter.
|
|
177
|
+
*/
|
|
178
|
+
function interpolateDynamicRouteHref(routeHref, asHref, queryInput) {
|
|
179
|
+
if (!routeHref.includes("[")) return null;
|
|
180
|
+
const hashIndex = routeHref.indexOf("#");
|
|
181
|
+
const queryIndex = routeHref.indexOf("?");
|
|
182
|
+
const pathEnd = [hashIndex, queryIndex].filter((index) => index !== -1).reduce((earliest, index) => Math.min(earliest, index), routeHref.length);
|
|
183
|
+
const routePathname = routeHref.slice(0, pathEnd);
|
|
184
|
+
const trailing = routeHref.slice(pathEnd);
|
|
185
|
+
const asPathname = asHref.split(/[?#]/, 1)[0];
|
|
186
|
+
const query = queryInput ? normalizeQuery(queryInput) : parseRouteHrefQuery(routeHref, queryIndex, hashIndex);
|
|
187
|
+
const { result, params } = interpolateAs(routePathname, asPathname, query);
|
|
188
|
+
return {
|
|
189
|
+
href: result ? `${result}${trailing}` : "",
|
|
190
|
+
params,
|
|
191
|
+
query,
|
|
192
|
+
routePathname
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
//#endregion
|
|
196
|
+
export { interpolateDynamicRouteHref };
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
//#region src/shims/internal/link-status-registry.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* Link-status pending registry.
|
|
4
|
+
*
|
|
5
|
+
* Tracks the single <Link> that started the most recent App Router navigation
|
|
6
|
+
* so its `useLinkStatus()` pending state can be reset when a *different*
|
|
7
|
+
* navigation begins — a different <Link> click, `router.push`/`router.replace`,
|
|
8
|
+
* a form submission, shallow routing via raw `history.pushState`, or browser
|
|
9
|
+
* back/forward. Without this, a Link's pending indicator stays "sticky" after
|
|
10
|
+
* an interrupting navigation, because the Link's own completion handler is the
|
|
11
|
+
* only thing that would otherwise clear it.
|
|
12
|
+
*
|
|
13
|
+
* Mirrors Next.js's `linkForMostRecentNavigation` /
|
|
14
|
+
* `setLinkForCurrentNavigation` in
|
|
15
|
+
* packages/next/src/client/components/links.ts, adapted to vinext's per-<Link>
|
|
16
|
+
* React state model: instead of an optimistic-status dispatcher, we hold the
|
|
17
|
+
* link's `setPending` setter.
|
|
18
|
+
*/
|
|
19
|
+
type PendingLinkSetter = (pending: boolean) => void;
|
|
20
|
+
/**
|
|
21
|
+
* Mark `setter` as the link that started the most recent navigation, resetting
|
|
22
|
+
* the previously-tracked link's pending state to idle so only the last-clicked
|
|
23
|
+
* link shows a pending state.
|
|
24
|
+
*/
|
|
25
|
+
declare function setLinkForCurrentNavigation(setter: PendingLinkSetter): void;
|
|
26
|
+
/**
|
|
27
|
+
* Stop tracking `setter` if it is the current navigation link. Called when a
|
|
28
|
+
* <Link> finishes its own navigation or unmounts so we never hold a stale
|
|
29
|
+
* reference to an unmounted component's setter.
|
|
30
|
+
*/
|
|
31
|
+
declare function clearLinkForCurrentNavigation(setter: PendingLinkSetter): void;
|
|
32
|
+
/**
|
|
33
|
+
* Reset any link that is currently showing a pending state. Invoked at the
|
|
34
|
+
* start of every App Router navigation so that navigations not initiated by the
|
|
35
|
+
* tracked link — `router.push`/`router.replace`, form submissions, shallow
|
|
36
|
+
* routing, and browser back/forward — clear a stale pending indicator. A
|
|
37
|
+
* link-initiated navigation registers itself first via
|
|
38
|
+
* `setLinkForCurrentNavigation`; the matching call here consumes that marker and
|
|
39
|
+
* keeps the link pending.
|
|
40
|
+
*/
|
|
41
|
+
declare function notifyLinkNavigationStart(): void;
|
|
42
|
+
//#endregion
|
|
43
|
+
export { PendingLinkSetter, clearLinkForCurrentNavigation, notifyLinkNavigationStart, setLinkForCurrentNavigation };
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
//#region src/shims/internal/link-status-registry.ts
|
|
2
|
+
let linkSetterForMostRecentNavigation = null;
|
|
3
|
+
let currentNavigationIsLinkInitiated = false;
|
|
4
|
+
/**
|
|
5
|
+
* Mark `setter` as the link that started the most recent navigation, resetting
|
|
6
|
+
* the previously-tracked link's pending state to idle so only the last-clicked
|
|
7
|
+
* link shows a pending state.
|
|
8
|
+
*/
|
|
9
|
+
function setLinkForCurrentNavigation(setter) {
|
|
10
|
+
if (linkSetterForMostRecentNavigation && linkSetterForMostRecentNavigation !== setter) linkSetterForMostRecentNavigation(false);
|
|
11
|
+
linkSetterForMostRecentNavigation = setter;
|
|
12
|
+
currentNavigationIsLinkInitiated = true;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Stop tracking `setter` if it is the current navigation link. Called when a
|
|
16
|
+
* <Link> finishes its own navigation or unmounts so we never hold a stale
|
|
17
|
+
* reference to an unmounted component's setter.
|
|
18
|
+
*/
|
|
19
|
+
function clearLinkForCurrentNavigation(setter) {
|
|
20
|
+
if (linkSetterForMostRecentNavigation === setter) linkSetterForMostRecentNavigation = null;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Reset any link that is currently showing a pending state. Invoked at the
|
|
24
|
+
* start of every App Router navigation so that navigations not initiated by the
|
|
25
|
+
* tracked link — `router.push`/`router.replace`, form submissions, shallow
|
|
26
|
+
* routing, and browser back/forward — clear a stale pending indicator. A
|
|
27
|
+
* link-initiated navigation registers itself first via
|
|
28
|
+
* `setLinkForCurrentNavigation`; the matching call here consumes that marker and
|
|
29
|
+
* keeps the link pending.
|
|
30
|
+
*/
|
|
31
|
+
function notifyLinkNavigationStart() {
|
|
32
|
+
if (currentNavigationIsLinkInitiated) {
|
|
33
|
+
currentNavigationIsLinkInitiated = false;
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
if (linkSetterForMostRecentNavigation) {
|
|
37
|
+
linkSetterForMostRecentNavigation(false);
|
|
38
|
+
linkSetterForMostRecentNavigation = null;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
//#endregion
|
|
42
|
+
export { clearLinkForCurrentNavigation, notifyLinkNavigationStart, setLinkForCurrentNavigation };
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
//#region src/shims/internal/make-hanging-promise.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* makeHangingPromise — returns a promise that never resolves during prerendering.
|
|
4
|
+
*
|
|
5
|
+
* When prerendering, `io()` must return a hanging promise to prevent
|
|
6
|
+
* React from executing past the IO boundary. The promise never resolves—it only
|
|
7
|
+
* rejects if the render signal is aborted (e.g., due to a dynamic error or
|
|
8
|
+
* cache-fill completion).
|
|
9
|
+
*
|
|
10
|
+
* Ported from Next.js: packages/next/src/server/dynamic-rendering-utils.ts
|
|
11
|
+
* https://github.com/vercel/next.js/blob/canary/packages/next/src/server/dynamic-rendering-utils.ts
|
|
12
|
+
*/
|
|
13
|
+
declare function makeHangingPromise<T>(signal: AbortSignal, route: string, expression: string): Promise<T>;
|
|
14
|
+
//#endregion
|
|
15
|
+
export { makeHangingPromise };
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
//#region src/shims/internal/make-hanging-promise.ts
|
|
2
|
+
/**
|
|
3
|
+
* makeHangingPromise — returns a promise that never resolves during prerendering.
|
|
4
|
+
*
|
|
5
|
+
* When prerendering, `io()` must return a hanging promise to prevent
|
|
6
|
+
* React from executing past the IO boundary. The promise never resolves—it only
|
|
7
|
+
* rejects if the render signal is aborted (e.g., due to a dynamic error or
|
|
8
|
+
* cache-fill completion).
|
|
9
|
+
*
|
|
10
|
+
* Ported from Next.js: packages/next/src/server/dynamic-rendering-utils.ts
|
|
11
|
+
* https://github.com/vercel/next.js/blob/canary/packages/next/src/server/dynamic-rendering-utils.ts
|
|
12
|
+
*/
|
|
13
|
+
var HangingPromiseRejectionError = class extends Error {
|
|
14
|
+
constructor(route, expression) {
|
|
15
|
+
super(`Route ${route} used ${expression} during prerendering but the render was aborted. This is expected when prerendering is cut short (e.g. due to a dynamic access).`);
|
|
16
|
+
this.name = "HangingPromiseRejectionError";
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
const abortListenersBySignal = /* @__PURE__ */ new WeakMap();
|
|
20
|
+
function suppressUnhandledRejection() {}
|
|
21
|
+
function makeHangingPromise(signal, route, expression) {
|
|
22
|
+
if (signal.aborted) {
|
|
23
|
+
const rejected = Promise.reject(new HangingPromiseRejectionError(route, expression));
|
|
24
|
+
rejected.catch(suppressUnhandledRejection);
|
|
25
|
+
return rejected;
|
|
26
|
+
}
|
|
27
|
+
const hangingPromise = new Promise((_, reject) => {
|
|
28
|
+
const boundRejection = reject.bind(null, new HangingPromiseRejectionError(route, expression));
|
|
29
|
+
const currentListeners = abortListenersBySignal.get(signal);
|
|
30
|
+
if (currentListeners) currentListeners.push(boundRejection);
|
|
31
|
+
else {
|
|
32
|
+
const listeners = [boundRejection];
|
|
33
|
+
abortListenersBySignal.set(signal, listeners);
|
|
34
|
+
signal.addEventListener("abort", () => {
|
|
35
|
+
for (let i = 0; i < listeners.length; i++) listeners[i]();
|
|
36
|
+
listeners.length = 0;
|
|
37
|
+
}, { once: true });
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
hangingPromise.catch(suppressUnhandledRejection);
|
|
41
|
+
return hangingPromise;
|
|
42
|
+
}
|
|
43
|
+
//#endregion
|
|
44
|
+
export { makeHangingPromise };
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
//#region src/shims/internal/navigation-untracked.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* Internal navigation-untracked pathname hook.
|
|
4
|
+
*
|
|
5
|
+
* Used by `unstable_catchError` error boundaries to avoid subscribing to
|
|
6
|
+
* pathname changes. This is NOT part of the public `next/navigation` API.
|
|
7
|
+
*
|
|
8
|
+
* Ported from Next.js:
|
|
9
|
+
* https://github.com/vercel/next.js/blob/v16.2.6/packages/next/src/client/components/navigation-untracked.ts
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* Returns the current pathname without registering it as a tracked render
|
|
13
|
+
* dependency. Unlike `usePathname()`, this does not use `useSyncExternalStore`
|
|
14
|
+
* and therefore does not cause the component to re-render on navigation.
|
|
15
|
+
*
|
|
16
|
+
* Server: returns the pathname from context, or `"/"` when no navigation context
|
|
17
|
+
* is available (the client will hydrate with the real value). The `"/"` fallback
|
|
18
|
+
* deliberately matches vinext's `usePathname()` behavior rather than Next.js's
|
|
19
|
+
* null context default. Returns `null` only when the render is a missing-params
|
|
20
|
+
* shell — vinext does not yet implement fallback-route-param detection, so this
|
|
21
|
+
* path is not currently reachable.
|
|
22
|
+
*
|
|
23
|
+
* Client: prefers the render snapshot **only during an active navigation**
|
|
24
|
+
* transition (`navigationSnapshotActiveCount > 0`) so the hook returns the
|
|
25
|
+
* pending URL, not the stale committed one. After commit, falls back to the
|
|
26
|
+
* cached pathname so user `pushState`/`replaceState` calls are immediately
|
|
27
|
+
* reflected.
|
|
28
|
+
*
|
|
29
|
+
* Used by `unstable_catchError` error boundaries to avoid unnecessary re-renders.
|
|
30
|
+
*
|
|
31
|
+
* @internal
|
|
32
|
+
*/
|
|
33
|
+
declare function useUntrackedPathname(): string | null;
|
|
34
|
+
//#endregion
|
|
35
|
+
export { useUntrackedPathname };
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { getNavigationContext } from "../navigation-context-state.js";
|
|
2
|
+
import { getPagesNavigationContext } from "./pages-router-accessor.js";
|
|
3
|
+
import { getClientNavigationState, useClientNavigationRenderSnapshot } from "../navigation.js";
|
|
4
|
+
//#region src/shims/internal/navigation-untracked.ts
|
|
5
|
+
/**
|
|
6
|
+
* Internal navigation-untracked pathname hook.
|
|
7
|
+
*
|
|
8
|
+
* Used by `unstable_catchError` error boundaries to avoid subscribing to
|
|
9
|
+
* pathname changes. This is NOT part of the public `next/navigation` API.
|
|
10
|
+
*
|
|
11
|
+
* Ported from Next.js:
|
|
12
|
+
* https://github.com/vercel/next.js/blob/v16.2.6/packages/next/src/client/components/navigation-untracked.ts
|
|
13
|
+
*/
|
|
14
|
+
const isServer = typeof window === "undefined";
|
|
15
|
+
function getPathnameSnapshot() {
|
|
16
|
+
const pagesCtx = getPagesNavigationContext();
|
|
17
|
+
if (pagesCtx) return pagesCtx.pathname;
|
|
18
|
+
return getClientNavigationState()?.cachedPathname ?? "/";
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Returns the current pathname without registering it as a tracked render
|
|
22
|
+
* dependency. Unlike `usePathname()`, this does not use `useSyncExternalStore`
|
|
23
|
+
* and therefore does not cause the component to re-render on navigation.
|
|
24
|
+
*
|
|
25
|
+
* Server: returns the pathname from context, or `"/"` when no navigation context
|
|
26
|
+
* is available (the client will hydrate with the real value). The `"/"` fallback
|
|
27
|
+
* deliberately matches vinext's `usePathname()` behavior rather than Next.js's
|
|
28
|
+
* null context default. Returns `null` only when the render is a missing-params
|
|
29
|
+
* shell — vinext does not yet implement fallback-route-param detection, so this
|
|
30
|
+
* path is not currently reachable.
|
|
31
|
+
*
|
|
32
|
+
* Client: prefers the render snapshot **only during an active navigation**
|
|
33
|
+
* transition (`navigationSnapshotActiveCount > 0`) so the hook returns the
|
|
34
|
+
* pending URL, not the stale committed one. After commit, falls back to the
|
|
35
|
+
* cached pathname so user `pushState`/`replaceState` calls are immediately
|
|
36
|
+
* reflected.
|
|
37
|
+
*
|
|
38
|
+
* Used by `unstable_catchError` error boundaries to avoid unnecessary re-renders.
|
|
39
|
+
*
|
|
40
|
+
* @internal
|
|
41
|
+
*/
|
|
42
|
+
function useUntrackedPathname() {
|
|
43
|
+
if (isServer) {
|
|
44
|
+
const ctx = getNavigationContext();
|
|
45
|
+
if (ctx) return ctx.pathname;
|
|
46
|
+
const pagesCtx = getPagesNavigationContext();
|
|
47
|
+
return pagesCtx ? pagesCtx.pathname : "/";
|
|
48
|
+
}
|
|
49
|
+
const renderSnapshot = useClientNavigationRenderSnapshot();
|
|
50
|
+
if (renderSnapshot && (getClientNavigationState()?.navigationSnapshotActiveCount ?? 0) > 0) return renderSnapshot.pathname;
|
|
51
|
+
const pagesCtx = getPagesNavigationContext();
|
|
52
|
+
if (pagesCtx) return pagesCtx.pathname;
|
|
53
|
+
return getPathnameSnapshot();
|
|
54
|
+
}
|
|
55
|
+
//#endregion
|
|
56
|
+
export { useUntrackedPathname };
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
//#region src/shims/internal/pages-data-fetch-dedup.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* In-flight request dedup for the Pages Router `/_next/data/<id>/<page>.json`
|
|
4
|
+
* endpoint.
|
|
5
|
+
*
|
|
6
|
+
* Why this exists: when a user (or app code) triggers several near-simultaneous
|
|
7
|
+
* navigations to the same gSSP route — e.g. clicking the same `<Link>` multiple
|
|
8
|
+
* times before the first navigation lands — each call to `Router.push` would
|
|
9
|
+
* otherwise enter its own `navigateClientData()` flow and dispatch its own
|
|
10
|
+
* `fetch()` against the data endpoint. That balloons server load and breaks
|
|
11
|
+
* Next.js' documented "one fetch per unique data URL" guarantee.
|
|
12
|
+
*
|
|
13
|
+
* Ported from Next.js: `fetchNextData()` in
|
|
14
|
+
* `packages/next/src/shared/lib/router/router.ts`. Next.js maintains an
|
|
15
|
+
* `inflightCache` (keyed by the resolved data URL) and reuses the existing
|
|
16
|
+
* Promise when a concurrent caller asks for the same URL. The entry is
|
|
17
|
+
* dropped once the fetch settles (success or rejection) so the next
|
|
18
|
+
* navigation re-fetches fresh.
|
|
19
|
+
*
|
|
20
|
+
* Design notes:
|
|
21
|
+
*
|
|
22
|
+
* - Callers receive a cloned Response, so each can independently consume the
|
|
23
|
+
* body (`.json()`, `.text()`, etc.). The originating Response is never read
|
|
24
|
+
* directly by anyone, which keeps subsequent clones legal even after one
|
|
25
|
+
* caller has consumed its copy.
|
|
26
|
+
*
|
|
27
|
+
* - Each caller owns one waiter. Cancelling a waiter leaves the shared request
|
|
28
|
+
* alive while another waiter remains; cancelling the final waiter aborts the
|
|
29
|
+
* underlying fetch and evicts the entry immediately so a replacement caller
|
|
30
|
+
* can retry without joining a doomed request.
|
|
31
|
+
*
|
|
32
|
+
* - The map is module-scoped (one per realm). The Pages Router runs in the
|
|
33
|
+
* browser only, so a single `Map` is sufficient.
|
|
34
|
+
*/
|
|
35
|
+
/**
|
|
36
|
+
* Dedupe a `fetch()` against the `_next/data` endpoint. Multiple concurrent
|
|
37
|
+
* callers for the same resolved URL and deployment ID share one underlying
|
|
38
|
+
* network request.
|
|
39
|
+
*
|
|
40
|
+
* Each call returns a freshly-cloned `Response` so consumers can read the
|
|
41
|
+
* body independently. Once the in-flight Promise settles (resolve or reject)
|
|
42
|
+
* the entry is removed, and the next call will hit the network again.
|
|
43
|
+
*
|
|
44
|
+
* Errors propagate to every concurrent caller — the in-flight entry is
|
|
45
|
+
* dropped on failure so the next navigation can retry.
|
|
46
|
+
*/
|
|
47
|
+
declare function dedupedPagesDataFetch(dataHref: string, init?: RequestInit): Promise<Response>;
|
|
48
|
+
/**
|
|
49
|
+
* Drop every cached in-flight entry. Intended for tests; production code
|
|
50
|
+
* does not need to call this because entries self-evict on settle.
|
|
51
|
+
*/
|
|
52
|
+
declare function clearPagesDataInflight(): void;
|
|
53
|
+
//#endregion
|
|
54
|
+
export { clearPagesDataInflight, dedupedPagesDataFetch };
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import "../../utils/deployment-id.js";
|
|
2
|
+
//#region src/shims/internal/pages-data-fetch-dedup.ts
|
|
3
|
+
/**
|
|
4
|
+
* In-flight request dedup for the Pages Router `/_next/data/<id>/<page>.json`
|
|
5
|
+
* endpoint.
|
|
6
|
+
*
|
|
7
|
+
* Why this exists: when a user (or app code) triggers several near-simultaneous
|
|
8
|
+
* navigations to the same gSSP route — e.g. clicking the same `<Link>` multiple
|
|
9
|
+
* times before the first navigation lands — each call to `Router.push` would
|
|
10
|
+
* otherwise enter its own `navigateClientData()` flow and dispatch its own
|
|
11
|
+
* `fetch()` against the data endpoint. That balloons server load and breaks
|
|
12
|
+
* Next.js' documented "one fetch per unique data URL" guarantee.
|
|
13
|
+
*
|
|
14
|
+
* Ported from Next.js: `fetchNextData()` in
|
|
15
|
+
* `packages/next/src/shared/lib/router/router.ts`. Next.js maintains an
|
|
16
|
+
* `inflightCache` (keyed by the resolved data URL) and reuses the existing
|
|
17
|
+
* Promise when a concurrent caller asks for the same URL. The entry is
|
|
18
|
+
* dropped once the fetch settles (success or rejection) so the next
|
|
19
|
+
* navigation re-fetches fresh.
|
|
20
|
+
*
|
|
21
|
+
* Design notes:
|
|
22
|
+
*
|
|
23
|
+
* - Callers receive a cloned Response, so each can independently consume the
|
|
24
|
+
* body (`.json()`, `.text()`, etc.). The originating Response is never read
|
|
25
|
+
* directly by anyone, which keeps subsequent clones legal even after one
|
|
26
|
+
* caller has consumed its copy.
|
|
27
|
+
*
|
|
28
|
+
* - Each caller owns one waiter. Cancelling a waiter leaves the shared request
|
|
29
|
+
* alive while another waiter remains; cancelling the final waiter aborts the
|
|
30
|
+
* underlying fetch and evicts the entry immediately so a replacement caller
|
|
31
|
+
* can retry without joining a doomed request.
|
|
32
|
+
*
|
|
33
|
+
* - The map is module-scoped (one per realm). The Pages Router runs in the
|
|
34
|
+
* browser only, so a single `Map` is sufficient.
|
|
35
|
+
*/
|
|
36
|
+
/** Inflight fetch entries keyed by the resolved data request identity. */
|
|
37
|
+
const inflight = /* @__PURE__ */ new Map();
|
|
38
|
+
function getInflightKey(dataHref, init) {
|
|
39
|
+
let resolvedHref = dataHref;
|
|
40
|
+
if (typeof window !== "undefined") try {
|
|
41
|
+
resolvedHref = new URL(dataHref, window.location.href).href;
|
|
42
|
+
} catch {}
|
|
43
|
+
const deploymentId = new Headers(init?.headers).get("x-deployment-id") ?? "";
|
|
44
|
+
return `${resolvedHref}\n${deploymentId}`;
|
|
45
|
+
}
|
|
46
|
+
function cloneSharedResponse(key, entry, signal) {
|
|
47
|
+
entry.waiters += 1;
|
|
48
|
+
return new Promise((resolve, reject) => {
|
|
49
|
+
let released = false;
|
|
50
|
+
const release = (cancelled) => {
|
|
51
|
+
if (released) return;
|
|
52
|
+
released = true;
|
|
53
|
+
entry.waiters -= 1;
|
|
54
|
+
if (cancelled && entry.waiters === 0 && !entry.settled) {
|
|
55
|
+
if (inflight.get(key) === entry) inflight.delete(key);
|
|
56
|
+
entry.controller.abort();
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
const abort = () => {
|
|
60
|
+
release(true);
|
|
61
|
+
reject(new DOMException("Aborted", "AbortError"));
|
|
62
|
+
};
|
|
63
|
+
signal?.addEventListener("abort", abort, { once: true });
|
|
64
|
+
entry.promise.then((response) => {
|
|
65
|
+
signal?.removeEventListener("abort", abort);
|
|
66
|
+
release(false);
|
|
67
|
+
resolve(response.clone());
|
|
68
|
+
}, (error) => {
|
|
69
|
+
signal?.removeEventListener("abort", abort);
|
|
70
|
+
release(false);
|
|
71
|
+
reject(error);
|
|
72
|
+
});
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Dedupe a `fetch()` against the `_next/data` endpoint. Multiple concurrent
|
|
77
|
+
* callers for the same resolved URL and deployment ID share one underlying
|
|
78
|
+
* network request.
|
|
79
|
+
*
|
|
80
|
+
* Each call returns a freshly-cloned `Response` so consumers can read the
|
|
81
|
+
* body independently. Once the in-flight Promise settles (resolve or reject)
|
|
82
|
+
* the entry is removed, and the next call will hit the network again.
|
|
83
|
+
*
|
|
84
|
+
* Errors propagate to every concurrent caller — the in-flight entry is
|
|
85
|
+
* dropped on failure so the next navigation can retry.
|
|
86
|
+
*/
|
|
87
|
+
function dedupedPagesDataFetch(dataHref, init) {
|
|
88
|
+
const key = getInflightKey(dataHref, init);
|
|
89
|
+
const signal = init?.signal ?? void 0;
|
|
90
|
+
if (signal?.aborted) return Promise.reject(new DOMException("Aborted", "AbortError"));
|
|
91
|
+
let entry = inflight.get(key);
|
|
92
|
+
if (!entry) {
|
|
93
|
+
const controller = new AbortController();
|
|
94
|
+
let currentEntry;
|
|
95
|
+
currentEntry = {
|
|
96
|
+
controller,
|
|
97
|
+
promise: fetch(dataHref, {
|
|
98
|
+
...init,
|
|
99
|
+
signal: controller.signal
|
|
100
|
+
}).finally(() => {
|
|
101
|
+
currentEntry.settled = true;
|
|
102
|
+
if (inflight.get(key) === currentEntry) inflight.delete(key);
|
|
103
|
+
}),
|
|
104
|
+
settled: false,
|
|
105
|
+
waiters: 0
|
|
106
|
+
};
|
|
107
|
+
inflight.set(key, currentEntry);
|
|
108
|
+
entry = currentEntry;
|
|
109
|
+
}
|
|
110
|
+
return cloneSharedResponse(key, entry, signal);
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Drop every cached in-flight entry. Intended for tests; production code
|
|
114
|
+
* does not need to call this because entries self-evict on settle.
|
|
115
|
+
*/
|
|
116
|
+
function clearPagesDataInflight() {
|
|
117
|
+
for (const entry of inflight.values()) entry.controller.abort();
|
|
118
|
+
inflight.clear();
|
|
119
|
+
}
|
|
120
|
+
//#endregion
|
|
121
|
+
export { clearPagesDataInflight, dedupedPagesDataFetch };
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
//#region src/shims/internal/pages-data-target.d.ts
|
|
2
|
+
type PagesDataTarget = {
|
|
3
|
+
/** Final fetch URL for the data endpoint, including basePath and search. */dataHref: string; /** Matched route pattern (e.g. `/blog/[slug]`). */
|
|
4
|
+
pattern: string; /** Dynamic params extracted from the URL by the pattern matcher. */
|
|
5
|
+
params: Record<string, string | string[]>; /** Code-split loader thunk for the matched route's page module. */
|
|
6
|
+
loader: () => Promise<{
|
|
7
|
+
default?: unknown;
|
|
8
|
+
[key: string]: unknown;
|
|
9
|
+
}>; /** Current buildId snapshot, used by the data URL and consistency checks. */
|
|
10
|
+
buildId: string; /** Locale-prefixed (server-routable) page path. */
|
|
11
|
+
pagePath: string; /** URL search string including the leading `?`. */
|
|
12
|
+
search: string;
|
|
13
|
+
/**
|
|
14
|
+
* Locale prefix detected on the URL, or `undefined` when the URL is
|
|
15
|
+
* unprefixed (default locale, or no i18n configured). Lets the caller refresh
|
|
16
|
+
* locale state on locale transitions, which the data JSON envelope itself
|
|
17
|
+
* does not carry.
|
|
18
|
+
*/
|
|
19
|
+
locale: string | undefined;
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* Decide whether the JSON data-endpoint navigation path is usable for this
|
|
23
|
+
* browser URL. We require:
|
|
24
|
+
* - A registered code-split loader for the matched route pattern. Without
|
|
25
|
+
* this, the client has no chunk URL to import for the new page.
|
|
26
|
+
* - A buildId on the current `__NEXT_DATA__`, since the data URL embeds it.
|
|
27
|
+
* - Same-origin (cross-origin URLs do not hit our data endpoint).
|
|
28
|
+
*
|
|
29
|
+
* Locale handling: route patterns in `__VINEXT_PAGE_PATTERNS__` are
|
|
30
|
+
* locale-unaware (`/about`, not `/fr/about`), but the browser URL for a
|
|
31
|
+
* locale-prefixed page is `/fr/about`. We strip the locale prefix before
|
|
32
|
+
* pattern matching so locale transitions hit the JSON fast path. The data URL
|
|
33
|
+
* itself keeps the locale prefix because the server uses it to pick
|
|
34
|
+
* locale-specific gSSP data.
|
|
35
|
+
*
|
|
36
|
+
* Returns the resolved target, or `null` to signal the caller should fall
|
|
37
|
+
* back to the HTML extraction path (dev server, or a route that exists on the
|
|
38
|
+
* server but is not in the client loader map).
|
|
39
|
+
*
|
|
40
|
+
* Ported from Next.js: `packages/next/src/client/page-loader.ts`
|
|
41
|
+
* (`getDataHref`). vinext's equivalent uses an in-memory loader map instead
|
|
42
|
+
* of Next.js' `_buildManifest.js`.
|
|
43
|
+
*/
|
|
44
|
+
declare function resolvePagesDataNavigationTarget(browserUrl: string, basePath: string): PagesDataTarget | null;
|
|
45
|
+
/**
|
|
46
|
+
* Prefetch the data JSON and kick off the code-split loader so the chunk is
|
|
47
|
+
* warm by the time the user clicks.
|
|
48
|
+
*
|
|
49
|
+
* Used by both `Router.prefetch()` and `<Link>` hover/viewport prefetch. The
|
|
50
|
+
* JSON request uses `fetch()` rather than `<link rel="prefetch">` so it can
|
|
51
|
+
* carry Next.js's `x-deployment-id` skew-protection header. The in-flight
|
|
52
|
+
* request is shared with a racing navigation; after it settles, the browser's
|
|
53
|
+
* normal HTTP cache remains responsible for reuse.
|
|
54
|
+
*
|
|
55
|
+
* loader's returned Promise is intentionally discarded — `import()` caches the
|
|
56
|
+
* result, so a subsequent navigation re-invocation hits the cache without
|
|
57
|
+
* paying for a second round trip. Errors are swallowed: prefetch is
|
|
58
|
+
* best-effort and must never break the page.
|
|
59
|
+
*/
|
|
60
|
+
declare function prefetchPagesData(target: PagesDataTarget): void;
|
|
61
|
+
//#endregion
|
|
62
|
+
export { PagesDataTarget, prefetchPagesData, resolvePagesDataNavigationTarget };
|