@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,165 @@
|
|
|
1
|
+
import { decodeMatchedParams } from "./utils.js";
|
|
2
|
+
//#region src/routing/route-pattern.ts
|
|
3
|
+
function routePatternPart(segment) {
|
|
4
|
+
if (segment.startsWith("[[...") && segment.endsWith("]]")) return `:${segment.slice(5, -2)}*`;
|
|
5
|
+
if (segment.startsWith("[...") && segment.endsWith("]")) return `:${segment.slice(4, -1)}+`;
|
|
6
|
+
if (segment.startsWith("[") && segment.endsWith("]")) return `:${segment.slice(1, -1)}`;
|
|
7
|
+
return segment;
|
|
8
|
+
}
|
|
9
|
+
function routePatternParts(pathname) {
|
|
10
|
+
return pathname.split("/").filter(Boolean).map(routePatternPart);
|
|
11
|
+
}
|
|
12
|
+
function routePattern(pathname) {
|
|
13
|
+
const parts = routePatternParts(pathname);
|
|
14
|
+
return parts.length > 0 ? `/${parts.join("/")}` : "";
|
|
15
|
+
}
|
|
16
|
+
function appendParamValue(target, value) {
|
|
17
|
+
if (Array.isArray(value)) {
|
|
18
|
+
for (const entry of value) target.push(entry);
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
target.push(value);
|
|
22
|
+
}
|
|
23
|
+
function fillRoutePatternSegments(pathname, params) {
|
|
24
|
+
const segments = pathname.split("/").filter(Boolean);
|
|
25
|
+
const resolvedSegments = [];
|
|
26
|
+
for (const segment of segments) {
|
|
27
|
+
if (segment.startsWith("[[...") && segment.endsWith("]]")) {
|
|
28
|
+
const value = params[segment.slice(5, -2)];
|
|
29
|
+
if (value !== void 0 && value !== "") {
|
|
30
|
+
if (Array.isArray(value) && value.length === 0) continue;
|
|
31
|
+
appendParamValue(resolvedSegments, value);
|
|
32
|
+
}
|
|
33
|
+
continue;
|
|
34
|
+
}
|
|
35
|
+
if (segment.startsWith("[...") && segment.endsWith("]")) {
|
|
36
|
+
const value = params[segment.slice(4, -1)];
|
|
37
|
+
if (value === void 0 || (Array.isArray(value) ? value.length === 0 : value === "")) return null;
|
|
38
|
+
appendParamValue(resolvedSegments, value);
|
|
39
|
+
continue;
|
|
40
|
+
}
|
|
41
|
+
if (segment.startsWith("[") && segment.endsWith("]")) {
|
|
42
|
+
const value = params[segment.slice(1, -1)];
|
|
43
|
+
if (typeof value === "string") {
|
|
44
|
+
resolvedSegments.push(value);
|
|
45
|
+
continue;
|
|
46
|
+
}
|
|
47
|
+
if (Array.isArray(value) && value.length > 0) {
|
|
48
|
+
if (value.length > 1) return null;
|
|
49
|
+
resolvedSegments.push(value[0]);
|
|
50
|
+
continue;
|
|
51
|
+
}
|
|
52
|
+
return null;
|
|
53
|
+
}
|
|
54
|
+
resolvedSegments.push(segment);
|
|
55
|
+
}
|
|
56
|
+
return resolvedSegments.length > 0 ? `/${resolvedSegments.join("/")}` : "/";
|
|
57
|
+
}
|
|
58
|
+
function matchRoutePattern(urlParts, patternParts) {
|
|
59
|
+
const params = Object.create(null);
|
|
60
|
+
function matchFrom(urlIndex, patternIndex) {
|
|
61
|
+
if (patternIndex === patternParts.length) return urlIndex === urlParts.length;
|
|
62
|
+
const patternPart = patternParts[patternIndex];
|
|
63
|
+
if (patternPart.startsWith(":") && (patternPart.endsWith("+") || patternPart.endsWith("*"))) {
|
|
64
|
+
const paramName = patternPart.slice(1, -1);
|
|
65
|
+
const minLength = patternPart.endsWith("+") ? 1 : 0;
|
|
66
|
+
for (let endIndex = urlIndex + minLength; endIndex <= urlParts.length; endIndex++) {
|
|
67
|
+
const value = urlParts.slice(urlIndex, endIndex);
|
|
68
|
+
if (value.length > 0) params[paramName] = value;
|
|
69
|
+
else delete params[paramName];
|
|
70
|
+
if (matchFrom(endIndex, patternIndex + 1)) return true;
|
|
71
|
+
}
|
|
72
|
+
delete params[paramName];
|
|
73
|
+
return false;
|
|
74
|
+
}
|
|
75
|
+
if (patternPart.startsWith(":")) {
|
|
76
|
+
if (urlIndex >= urlParts.length) return false;
|
|
77
|
+
const paramName = patternPart.slice(1);
|
|
78
|
+
params[paramName] = urlParts[urlIndex];
|
|
79
|
+
if (matchFrom(urlIndex + 1, patternIndex + 1)) return true;
|
|
80
|
+
delete params[paramName];
|
|
81
|
+
return false;
|
|
82
|
+
}
|
|
83
|
+
if (urlIndex >= urlParts.length || urlParts[urlIndex] !== patternPart) return false;
|
|
84
|
+
return matchFrom(urlIndex + 1, patternIndex + 1);
|
|
85
|
+
}
|
|
86
|
+
if (!matchFrom(0, 0)) return null;
|
|
87
|
+
decodeMatchedParams(params);
|
|
88
|
+
return params;
|
|
89
|
+
}
|
|
90
|
+
function matchRoutePatternPrefix(pathParts, patternParts) {
|
|
91
|
+
let pathIndex = 0;
|
|
92
|
+
for (let patternIndex = 0; patternIndex < patternParts.length; patternIndex++) {
|
|
93
|
+
const patternPart = patternParts[patternIndex];
|
|
94
|
+
const isTerminal = patternIndex === patternParts.length - 1;
|
|
95
|
+
if (patternPart.startsWith(":") && patternPart.endsWith("+")) return isTerminal && pathParts.length - pathIndex >= 1;
|
|
96
|
+
if (patternPart.startsWith(":") && patternPart.endsWith("*")) return isTerminal;
|
|
97
|
+
if (pathIndex >= pathParts.length) return false;
|
|
98
|
+
if (patternPart.startsWith(":")) {
|
|
99
|
+
pathIndex++;
|
|
100
|
+
continue;
|
|
101
|
+
}
|
|
102
|
+
if (pathParts[pathIndex] !== patternPart) return false;
|
|
103
|
+
pathIndex++;
|
|
104
|
+
}
|
|
105
|
+
return true;
|
|
106
|
+
}
|
|
107
|
+
function matchRoutePatternWithOptionalDynamicSegments(pathParts, patternParts) {
|
|
108
|
+
function matchFrom(pathIndex, patternIndex) {
|
|
109
|
+
if (patternIndex === patternParts.length) return pathIndex === pathParts.length;
|
|
110
|
+
const patternPart = patternParts[patternIndex];
|
|
111
|
+
if (patternPart.startsWith(":") && (patternPart.endsWith("+") || patternPart.endsWith("*"))) {
|
|
112
|
+
const minLength = patternPart.endsWith("+") ? 1 : 0;
|
|
113
|
+
for (let endIndex = pathIndex + minLength; endIndex <= pathParts.length; endIndex++) if (matchFrom(endIndex, patternIndex + 1)) return true;
|
|
114
|
+
return false;
|
|
115
|
+
}
|
|
116
|
+
if (patternPart.startsWith(":")) return matchFrom(pathIndex, patternIndex + 1) || pathIndex < pathParts.length && matchFrom(pathIndex + 1, patternIndex + 1);
|
|
117
|
+
if (pathIndex >= pathParts.length || pathParts[pathIndex] !== patternPart) return false;
|
|
118
|
+
return matchFrom(pathIndex + 1, patternIndex + 1);
|
|
119
|
+
}
|
|
120
|
+
return matchFrom(0, 0);
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Strip query string and a single trailing slash from a pathname.
|
|
124
|
+
*
|
|
125
|
+
* Mirrors the Next.js `removeTrailingSlash` helper used in
|
|
126
|
+
* `.nextjs-ref/packages/next/src/build/static-paths/pages.ts`. Kept here so
|
|
127
|
+
* both the build-time prerender and the request-time matchers normalize the
|
|
128
|
+
* same way.
|
|
129
|
+
*/
|
|
130
|
+
function normalizeStaticPathname(pathname) {
|
|
131
|
+
const noQuery = pathname.split("?")[0];
|
|
132
|
+
return noQuery === "/" ? "/" : noQuery.replace(/\/$/, "");
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Normalize a single `getStaticPaths` entry into a `{ params }` object.
|
|
136
|
+
*
|
|
137
|
+
* Handles both Next.js-supported shapes:
|
|
138
|
+
* - For a string entry, match it against `routePattern` to extract params,
|
|
139
|
+
* mirroring `_routeMatcher(cleanedEntry)` in
|
|
140
|
+
* `.nextjs-ref/packages/next/src/build/static-paths/pages.ts`. If the
|
|
141
|
+
* string does not match the pattern, Next.js throws; we return an
|
|
142
|
+
* `{ error }` result so the caller can record a per-route error instead
|
|
143
|
+
* of crashing the build.
|
|
144
|
+
* - For an object entry, require a `params` key (Next.js raises
|
|
145
|
+
* "A required parameter (X) was not provided..." otherwise).
|
|
146
|
+
*
|
|
147
|
+
* Note: this intentionally does NOT strip a locale prefix. The build pipeline
|
|
148
|
+
* currently passes empty `locales` to `getStaticPaths`, so locale-prefixed
|
|
149
|
+
* string entries are not produced. If/when i18n is wired through prerender,
|
|
150
|
+
* locale handling should be added here, not duplicated at call sites.
|
|
151
|
+
*/
|
|
152
|
+
function normalizeStaticPathsEntry(entry, routePattern) {
|
|
153
|
+
if (entry === null || entry === void 0) return { error: `getStaticPaths returned a ${entry === null ? "null" : "undefined"} entry` };
|
|
154
|
+
if (typeof entry === "string") {
|
|
155
|
+
const matched = matchRoutePattern(normalizeStaticPathname(entry).split("/").filter(Boolean), routePattern.split("/").filter(Boolean));
|
|
156
|
+
if (!matched) return { error: `The provided path \`${entry}\` from getStaticPaths does not match the route pattern \`${routePattern}\`.` };
|
|
157
|
+
return { params: matched };
|
|
158
|
+
}
|
|
159
|
+
if (typeof entry !== "object") return { error: `getStaticPaths entry must be a string or an object, got ${typeof entry}` };
|
|
160
|
+
const { params } = entry;
|
|
161
|
+
if (params === void 0 || params === null) return { error: `getStaticPaths entry is missing the \`params\` key for pattern \`${routePattern}\`. Return either a string path or { params: { ... } }.` };
|
|
162
|
+
return { params };
|
|
163
|
+
}
|
|
164
|
+
//#endregion
|
|
165
|
+
export { fillRoutePatternSegments, matchRoutePattern, matchRoutePatternPrefix, matchRoutePatternWithOptionalDynamicSegments, normalizeStaticPathname, normalizeStaticPathsEntry, routePattern, routePatternParts };
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
//#region src/routing/route-trie.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* Trie (prefix tree) for O(depth) route matching.
|
|
4
|
+
*
|
|
5
|
+
* Replaces the O(n) linear scan over pre-sorted routes with a trie-based
|
|
6
|
+
* lookup. Priority is enforced by traversal order at each node:
|
|
7
|
+
* 1. Static child (exact segment match) — highest priority
|
|
8
|
+
* 2. Dynamic child (single-segment param) — medium
|
|
9
|
+
* 3. Catch-all (1+ remaining segments) — low
|
|
10
|
+
* 4. Optional catch-all (0+ remaining segments) — lowest
|
|
11
|
+
*
|
|
12
|
+
* Backtracking via recursive DFS ensures that dead-end static/dynamic
|
|
13
|
+
* branches fall through to catch-all alternatives.
|
|
14
|
+
*/
|
|
15
|
+
type TrieNode<R> = {
|
|
16
|
+
staticChildren: Map<string, TrieNode<R>>;
|
|
17
|
+
dynamicChild: {
|
|
18
|
+
paramName: string;
|
|
19
|
+
node: TrieNode<R>;
|
|
20
|
+
} | null;
|
|
21
|
+
catchAllChild: {
|
|
22
|
+
paramName: string;
|
|
23
|
+
route: R;
|
|
24
|
+
} | null;
|
|
25
|
+
optionalCatchAllChild: {
|
|
26
|
+
paramName: string;
|
|
27
|
+
route: R;
|
|
28
|
+
} | null;
|
|
29
|
+
route: R | null;
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* Build a trie from pre-sorted routes.
|
|
33
|
+
*
|
|
34
|
+
* Routes must have a `patternParts` property (string[] of URL segments).
|
|
35
|
+
* Pattern segment conventions:
|
|
36
|
+
* - `:name` — dynamic segment
|
|
37
|
+
* - `:name+` — catch-all (1+ segments)
|
|
38
|
+
* - `:name*` — optional catch-all (0+ segments)
|
|
39
|
+
* - anything else — static segment
|
|
40
|
+
*
|
|
41
|
+
* First route to claim a terminal position wins (routes are pre-sorted
|
|
42
|
+
* by precedence, so insertion order preserves correct priority).
|
|
43
|
+
*/
|
|
44
|
+
declare function buildRouteTrie<R extends {
|
|
45
|
+
patternParts: string[];
|
|
46
|
+
}>(routes: R[]): TrieNode<R>;
|
|
47
|
+
/**
|
|
48
|
+
* Match a URL against the trie.
|
|
49
|
+
*
|
|
50
|
+
* Returns decoded param values — `decodeURIComponent` is applied to
|
|
51
|
+
* individual param entries so that `%2F` → `/`, `%23` → `#`, etc.
|
|
52
|
+
* Segment boundaries (the original `/` splits) are preserved by the
|
|
53
|
+
* upstream normalization layer; this step only decodes the captured
|
|
54
|
+
* param strings the caller sees.
|
|
55
|
+
*
|
|
56
|
+
* Mirrors Next.js route-matcher.ts:25-27.
|
|
57
|
+
*
|
|
58
|
+
* @param root - Trie root built by `buildRouteTrie`
|
|
59
|
+
* @param urlParts - Pre-split URL segments (no empty strings)
|
|
60
|
+
* @returns Match result with route and extracted params, or null
|
|
61
|
+
*/
|
|
62
|
+
declare function trieMatch<R>(root: TrieNode<R>, urlParts: string[]): {
|
|
63
|
+
route: R;
|
|
64
|
+
params: Record<string, string | string[]>;
|
|
65
|
+
} | null;
|
|
66
|
+
//#endregion
|
|
67
|
+
export { TrieNode, buildRouteTrie, trieMatch };
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import { buildParams, decodeMatchedParams } from "./utils.js";
|
|
2
|
+
//#region src/routing/route-trie.ts
|
|
3
|
+
function createNode() {
|
|
4
|
+
return {
|
|
5
|
+
staticChildren: /* @__PURE__ */ new Map(),
|
|
6
|
+
dynamicChild: null,
|
|
7
|
+
catchAllChild: null,
|
|
8
|
+
optionalCatchAllChild: null,
|
|
9
|
+
route: null
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Build a trie from pre-sorted routes.
|
|
14
|
+
*
|
|
15
|
+
* Routes must have a `patternParts` property (string[] of URL segments).
|
|
16
|
+
* Pattern segment conventions:
|
|
17
|
+
* - `:name` — dynamic segment
|
|
18
|
+
* - `:name+` — catch-all (1+ segments)
|
|
19
|
+
* - `:name*` — optional catch-all (0+ segments)
|
|
20
|
+
* - anything else — static segment
|
|
21
|
+
*
|
|
22
|
+
* First route to claim a terminal position wins (routes are pre-sorted
|
|
23
|
+
* by precedence, so insertion order preserves correct priority).
|
|
24
|
+
*/
|
|
25
|
+
function buildRouteTrie(routes) {
|
|
26
|
+
const root = createNode();
|
|
27
|
+
for (const route of routes) {
|
|
28
|
+
const parts = route.patternParts;
|
|
29
|
+
if (parts.length === 0) {
|
|
30
|
+
if (root.route === null) root.route = route;
|
|
31
|
+
continue;
|
|
32
|
+
}
|
|
33
|
+
let node = root;
|
|
34
|
+
for (let i = 0; i < parts.length; i++) {
|
|
35
|
+
const part = parts[i];
|
|
36
|
+
if (part.endsWith("+") && part.startsWith(":")) {
|
|
37
|
+
if (i !== parts.length - 1) break;
|
|
38
|
+
const paramName = part.slice(1, -1);
|
|
39
|
+
if (node.catchAllChild === null) node.catchAllChild = {
|
|
40
|
+
paramName,
|
|
41
|
+
route
|
|
42
|
+
};
|
|
43
|
+
break;
|
|
44
|
+
}
|
|
45
|
+
if (part.endsWith("*") && part.startsWith(":")) {
|
|
46
|
+
if (i !== parts.length - 1) break;
|
|
47
|
+
const paramName = part.slice(1, -1);
|
|
48
|
+
if (node.optionalCatchAllChild === null) node.optionalCatchAllChild = {
|
|
49
|
+
paramName,
|
|
50
|
+
route
|
|
51
|
+
};
|
|
52
|
+
break;
|
|
53
|
+
}
|
|
54
|
+
if (part.startsWith(":")) {
|
|
55
|
+
const paramName = part.slice(1);
|
|
56
|
+
if (node.dynamicChild === null) node.dynamicChild = {
|
|
57
|
+
paramName,
|
|
58
|
+
node: createNode()
|
|
59
|
+
};
|
|
60
|
+
node = node.dynamicChild.node;
|
|
61
|
+
if (i === parts.length - 1) {
|
|
62
|
+
if (node.route === null) node.route = route;
|
|
63
|
+
}
|
|
64
|
+
continue;
|
|
65
|
+
}
|
|
66
|
+
let child = node.staticChildren.get(part);
|
|
67
|
+
if (!child) {
|
|
68
|
+
child = createNode();
|
|
69
|
+
node.staticChildren.set(part, child);
|
|
70
|
+
}
|
|
71
|
+
node = child;
|
|
72
|
+
if (i === parts.length - 1) {
|
|
73
|
+
if (node.route === null) node.route = route;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
return root;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Match a URL against the trie.
|
|
81
|
+
*
|
|
82
|
+
* Returns decoded param values — `decodeURIComponent` is applied to
|
|
83
|
+
* individual param entries so that `%2F` → `/`, `%23` → `#`, etc.
|
|
84
|
+
* Segment boundaries (the original `/` splits) are preserved by the
|
|
85
|
+
* upstream normalization layer; this step only decodes the captured
|
|
86
|
+
* param strings the caller sees.
|
|
87
|
+
*
|
|
88
|
+
* Mirrors Next.js route-matcher.ts:25-27.
|
|
89
|
+
*
|
|
90
|
+
* @param root - Trie root built by `buildRouteTrie`
|
|
91
|
+
* @param urlParts - Pre-split URL segments (no empty strings)
|
|
92
|
+
* @returns Match result with route and extracted params, or null
|
|
93
|
+
*/
|
|
94
|
+
function trieMatch(root, urlParts) {
|
|
95
|
+
const result = match(root, urlParts, 0, []);
|
|
96
|
+
if (result) decodeMatchedParams(result.params);
|
|
97
|
+
return result;
|
|
98
|
+
}
|
|
99
|
+
function match(node, urlParts, index, entries) {
|
|
100
|
+
if (index === urlParts.length) {
|
|
101
|
+
if (node.route !== null) return {
|
|
102
|
+
route: node.route,
|
|
103
|
+
params: buildParams(entries)
|
|
104
|
+
};
|
|
105
|
+
if (node.optionalCatchAllChild !== null) return {
|
|
106
|
+
route: node.optionalCatchAllChild.route,
|
|
107
|
+
params: buildParams(entries)
|
|
108
|
+
};
|
|
109
|
+
return null;
|
|
110
|
+
}
|
|
111
|
+
const segment = urlParts[index];
|
|
112
|
+
const staticChild = node.staticChildren.get(segment);
|
|
113
|
+
if (staticChild) {
|
|
114
|
+
const result = match(staticChild, urlParts, index + 1, entries);
|
|
115
|
+
if (result !== null) return result;
|
|
116
|
+
}
|
|
117
|
+
if (node.dynamicChild !== null) {
|
|
118
|
+
entries.push([node.dynamicChild.paramName, segment]);
|
|
119
|
+
const result = match(node.dynamicChild.node, urlParts, index + 1, entries);
|
|
120
|
+
if (result !== null) return result;
|
|
121
|
+
entries.pop();
|
|
122
|
+
}
|
|
123
|
+
if (node.catchAllChild !== null) {
|
|
124
|
+
const remaining = urlParts.slice(index);
|
|
125
|
+
const params = buildParams(entries);
|
|
126
|
+
params[node.catchAllChild.paramName] = remaining;
|
|
127
|
+
return {
|
|
128
|
+
route: node.catchAllChild.route,
|
|
129
|
+
params
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
if (node.optionalCatchAllChild !== null) {
|
|
133
|
+
const params = buildParams(entries);
|
|
134
|
+
params[node.optionalCatchAllChild.paramName] = urlParts.slice(index);
|
|
135
|
+
return {
|
|
136
|
+
route: node.optionalCatchAllChild.route,
|
|
137
|
+
params
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
return null;
|
|
141
|
+
}
|
|
142
|
+
//#endregion
|
|
143
|
+
export { buildRouteTrie, trieMatch };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
//#region src/routing/route-validation.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* Dynamic route validation adapted from Next.js' sorted-routes implementation.
|
|
4
|
+
* Source:
|
|
5
|
+
* https://github.com/vercel/next.js/blob/canary/packages/next/src/shared/lib/router/utils/sorted-routes.ts
|
|
6
|
+
*/
|
|
7
|
+
declare function patternToNextFormat(pattern: string): string;
|
|
8
|
+
declare function validateRoutePatterns(patterns: readonly string[]): void;
|
|
9
|
+
//#endregion
|
|
10
|
+
export { patternToNextFormat, validateRoutePatterns };
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { removeTrailingSlash } from "../utils/base-path.js";
|
|
2
|
+
//#region src/routing/route-validation.ts
|
|
3
|
+
/**
|
|
4
|
+
* Dynamic route validation adapted from Next.js' sorted-routes implementation.
|
|
5
|
+
* Source:
|
|
6
|
+
* https://github.com/vercel/next.js/blob/canary/packages/next/src/shared/lib/router/utils/sorted-routes.ts
|
|
7
|
+
*/
|
|
8
|
+
var UrlNode = class UrlNode {
|
|
9
|
+
placeholder = true;
|
|
10
|
+
children = /* @__PURE__ */ new Map();
|
|
11
|
+
slugName = null;
|
|
12
|
+
restSlugName = null;
|
|
13
|
+
optionalRestSlugName = null;
|
|
14
|
+
insert(urlPath) {
|
|
15
|
+
this.insertSegments(urlPath.split("/").filter(Boolean), [], false);
|
|
16
|
+
}
|
|
17
|
+
insertSegments(urlPaths, slugNames, isCatchAll) {
|
|
18
|
+
if (urlPaths.length === 0) {
|
|
19
|
+
this.placeholder = false;
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
if (isCatchAll) throw new Error("Catch-all must be the last part of the URL.");
|
|
23
|
+
let nextSegment = urlPaths[0];
|
|
24
|
+
if (nextSegment.startsWith("[") && nextSegment.endsWith("]")) {
|
|
25
|
+
let segmentName = nextSegment.slice(1, -1);
|
|
26
|
+
let isOptional = false;
|
|
27
|
+
if (segmentName.startsWith("[") && segmentName.endsWith("]")) {
|
|
28
|
+
segmentName = segmentName.slice(1, -1);
|
|
29
|
+
isOptional = true;
|
|
30
|
+
}
|
|
31
|
+
if (segmentName.startsWith("…")) throw new Error(`Detected a three-dot character ('…') at ('${segmentName}'). Did you mean ('...')?`);
|
|
32
|
+
if (segmentName.startsWith("...")) {
|
|
33
|
+
segmentName = segmentName.substring(3);
|
|
34
|
+
isCatchAll = true;
|
|
35
|
+
}
|
|
36
|
+
if (segmentName.startsWith("[") || segmentName.endsWith("]")) throw new Error(`Segment names may not start or end with extra brackets ('${segmentName}').`);
|
|
37
|
+
if (segmentName.startsWith(".")) throw new Error(`Segment names may not start with erroneous periods ('${segmentName}').`);
|
|
38
|
+
const handleSlug = (previousSlug, nextSlug) => {
|
|
39
|
+
if (previousSlug !== null && previousSlug !== nextSlug) throw new Error(`You cannot use different slug names for the same dynamic path ('${previousSlug}' !== '${nextSlug}').`);
|
|
40
|
+
for (const slug of slugNames) {
|
|
41
|
+
if (slug === nextSlug) throw new Error(`You cannot have the same slug name "${nextSlug}" repeat within a single dynamic path`);
|
|
42
|
+
if (slug.replace(/\W/g, "") === nextSegment.replace(/\W/g, "")) throw new Error(`You cannot have the slug names "${slug}" and "${nextSlug}" differ only by non-word symbols within a single dynamic path`);
|
|
43
|
+
}
|
|
44
|
+
slugNames.push(nextSlug);
|
|
45
|
+
};
|
|
46
|
+
if (isCatchAll) if (isOptional) {
|
|
47
|
+
if (this.restSlugName !== null) throw new Error(`You cannot use both an required and optional catch-all route at the same level ("[...${this.restSlugName}]" and "${urlPaths[0]}" ).`);
|
|
48
|
+
handleSlug(this.optionalRestSlugName, segmentName);
|
|
49
|
+
this.optionalRestSlugName = segmentName;
|
|
50
|
+
nextSegment = "[[...]]";
|
|
51
|
+
} else {
|
|
52
|
+
if (this.optionalRestSlugName !== null) throw new Error(`You cannot use both an optional and required catch-all route at the same level ("[[...${this.optionalRestSlugName}]]" and "${urlPaths[0]}").`);
|
|
53
|
+
handleSlug(this.restSlugName, segmentName);
|
|
54
|
+
this.restSlugName = segmentName;
|
|
55
|
+
nextSegment = "[...]";
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
if (isOptional) throw new Error(`Optional route parameters are not yet supported ("${urlPaths[0]}").`);
|
|
59
|
+
handleSlug(this.slugName, segmentName);
|
|
60
|
+
this.slugName = segmentName;
|
|
61
|
+
nextSegment = "[]";
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
let child = this.children.get(nextSegment);
|
|
65
|
+
if (!child) {
|
|
66
|
+
child = new UrlNode();
|
|
67
|
+
this.children.set(nextSegment, child);
|
|
68
|
+
}
|
|
69
|
+
child.insertSegments(urlPaths.slice(1), slugNames, isCatchAll);
|
|
70
|
+
}
|
|
71
|
+
assertOptionalCatchAllSpecificity(prefix = "/") {
|
|
72
|
+
if (!this.placeholder && this.optionalRestSlugName !== null) {
|
|
73
|
+
const route = prefix === "/" ? "/" : prefix.slice(0, -1);
|
|
74
|
+
throw new Error(`You cannot define a route with the same specificity as a optional catch-all route ("${route}" and "${route}[[...${this.optionalRestSlugName}]]").`);
|
|
75
|
+
}
|
|
76
|
+
for (const [segment, child] of this.children) {
|
|
77
|
+
const nextPrefixSegment = segment === "[]" ? `[${this.slugName}]` : segment === "[...]" ? `[...${this.restSlugName}]` : segment === "[[...]]" ? `[[...${this.optionalRestSlugName}]]` : segment;
|
|
78
|
+
child.assertOptionalCatchAllSpecificity(`${prefix}${nextPrefixSegment}/`);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
function patternToNextFormat(pattern) {
|
|
83
|
+
if (pattern === "/") return "/";
|
|
84
|
+
return pattern.replace(/:([^/]+?)\+(?=\/|$)/g, "[...$1]").replace(/:([^/]+?)\*(?=\/|$)/g, "[[...$1]]").replace(/:([^/]+?)(?=\/|$)/g, "[$1]");
|
|
85
|
+
}
|
|
86
|
+
function normalizeRoutePattern(pattern) {
|
|
87
|
+
return removeTrailingSlash(pattern);
|
|
88
|
+
}
|
|
89
|
+
function validateRoutePatterns(patterns) {
|
|
90
|
+
const root = new UrlNode();
|
|
91
|
+
const seenPatterns = /* @__PURE__ */ new Set();
|
|
92
|
+
for (const pattern of patterns) {
|
|
93
|
+
const normalizedPattern = normalizeRoutePattern(pattern);
|
|
94
|
+
if (seenPatterns.has(normalizedPattern)) throw new Error(`You cannot have two routes that resolve to the same path ("${normalizedPattern}").`);
|
|
95
|
+
seenPatterns.add(normalizedPattern);
|
|
96
|
+
root.insert(patternToNextFormat(normalizedPattern));
|
|
97
|
+
}
|
|
98
|
+
root.assertOptionalCatchAllSpecificity();
|
|
99
|
+
}
|
|
100
|
+
//#endregion
|
|
101
|
+
export { patternToNextFormat, validateRoutePatterns };
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
//#region src/routing/utils.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* Sort routes by precedence — lower score sorts first (higher priority), with a
|
|
4
|
+
* lexicographic tiebreaker on the pattern for determinism. Sorts in place and
|
|
5
|
+
* returns the same array (mirrors `Array.prototype.sort`).
|
|
6
|
+
*
|
|
7
|
+
* `routePrecedence` is a pure function of the pattern, so each pattern's score
|
|
8
|
+
* is computed exactly once up front (decorate-sort) instead of ~2·log n times
|
|
9
|
+
* by a comparator that re-parses on every comparison. The `localeCompare`
|
|
10
|
+
* tiebreaker already guarantees a total order, so the result is byte-identical
|
|
11
|
+
* to comparing precedence inline.
|
|
12
|
+
*
|
|
13
|
+
* Usage: sortRoutes(routes)
|
|
14
|
+
*/
|
|
15
|
+
declare function sortRoutes<T extends {
|
|
16
|
+
pattern: string;
|
|
17
|
+
}>(routes: T[]): T[];
|
|
18
|
+
/**
|
|
19
|
+
* Single source of truth for hybrid App/Pages route ownership.
|
|
20
|
+
*
|
|
21
|
+
* Mirrors Next.js's DefaultRouteMatcherManager ordering: Pages providers
|
|
22
|
+
* are registered before App providers, then merged dynamic matchers sort
|
|
23
|
+
* together. Returns the router that should own a request/navigation to
|
|
24
|
+
* a URL that matched BOTH routers.
|
|
25
|
+
*
|
|
26
|
+
* Centralised so the server's request handling and the client's link /
|
|
27
|
+
* prefetch / programmatic-navigation paths all reach the same owner for
|
|
28
|
+
* the same (pages pattern, app pattern) pair. This intentionally implements
|
|
29
|
+
* Next.js's segment-tree ordering directly instead of vinext's broader
|
|
30
|
+
* `sortRoutes()` score heuristic. It only arbitrates two routes that already
|
|
31
|
+
* matched the same URL; each router's own trie ordering remains unchanged.
|
|
32
|
+
*
|
|
33
|
+
* Usage:
|
|
34
|
+
* compareHybridRoutePatterns("/:slug", true, "/:slug", true) // → "pages"
|
|
35
|
+
* compareHybridRoutePatterns("/_sites/:slug*", true, "/:slug*", true) // → "pages"
|
|
36
|
+
* compareHybridRoutePatterns("/:path+", true, "/dashboard", false) // → "app"
|
|
37
|
+
* compareHybridRoutePatterns("/", false, "/", false) // → "app"
|
|
38
|
+
*/
|
|
39
|
+
declare function compareHybridRoutePatterns(pagesPattern: string, pagesIsDynamic: boolean, appPattern: string, appIsDynamic: boolean): "app" | "pages";
|
|
40
|
+
/**
|
|
41
|
+
* Decode a filesystem or URL path segment while preserving encoded path delimiters.
|
|
42
|
+
* Mirrors Next.js segment-wise decoding so "%5F" becomes "_" but "%2F" stays "%2F".
|
|
43
|
+
*/
|
|
44
|
+
declare function decodeRouteSegment(segment: string): string;
|
|
45
|
+
/**
|
|
46
|
+
* Normalize a pathname for route matching by decoding each segment independently.
|
|
47
|
+
* This prevents encoded slashes from turning into real path separators.
|
|
48
|
+
*/
|
|
49
|
+
declare function normalizePathnameForRouteMatch(pathname: string): string;
|
|
50
|
+
declare function splitPathnameForRouteMatch(pathname: string): string[];
|
|
51
|
+
/**
|
|
52
|
+
* Strict pathname normalization for live request handling.
|
|
53
|
+
* Throws on malformed percent-encoding so callers can return 400.
|
|
54
|
+
*/
|
|
55
|
+
declare function normalizePathnameForRouteMatchStrict(pathname: string): string;
|
|
56
|
+
/**
|
|
57
|
+
* Build a params object from ordered entries, preserving insertion order.
|
|
58
|
+
*
|
|
59
|
+
* Used by trie matchers to reconstruct the params Record after collecting
|
|
60
|
+
* entries in declaration order via DFS backtracking. Object.create(null)
|
|
61
|
+
* avoids prototype pollution.
|
|
62
|
+
*
|
|
63
|
+
* @param entries - Ordered [paramName, value] tuples from forward traversal
|
|
64
|
+
*/
|
|
65
|
+
declare function buildParams(entries: Array<[string, string | string[]]>): Record<string, string | string[]>;
|
|
66
|
+
/**
|
|
67
|
+
* Decode captured route params with `decodeURIComponent`, mirroring Next.js
|
|
68
|
+
* route-matcher.ts:25-27. Mutates the params object in place. Catch-all
|
|
69
|
+
* arrays are decoded element-wise. Malformed escapes are preserved (the
|
|
70
|
+
* strict normalization layer rejects them at the request boundary).
|
|
71
|
+
*/
|
|
72
|
+
declare function decodeMatchedParams(params: Record<string, string | string[]>): void;
|
|
73
|
+
/**
|
|
74
|
+
* Check whether a path segment is invisible in the URL (route groups, parallel
|
|
75
|
+
* slots, "."). Single source of truth shared by the route graph (Node) and
|
|
76
|
+
* browser-side bfcache identity logic. Lives in this browser-safe utils module
|
|
77
|
+
* so importing it does not drag node:path/node:fs into the client bundle.
|
|
78
|
+
*/
|
|
79
|
+
declare function isInvisibleSegment(segment: string): boolean;
|
|
80
|
+
/** Split a pathname into its non-empty segments without decoding. */
|
|
81
|
+
declare function splitPathSegments(pathname: string): string[];
|
|
82
|
+
/**
|
|
83
|
+
* Catch-all filesystem segment, e.g. `[...slug]`. Browser-safe predicate shared
|
|
84
|
+
* with the route graph's segment parsing (dynamicParamNameFromSegment) so the
|
|
85
|
+
* bracket conventions live in one place. The length guard rejects empty names
|
|
86
|
+
* (`[...]`).
|
|
87
|
+
*/
|
|
88
|
+
declare function isCatchAllSegment(segment: string): boolean;
|
|
89
|
+
/**
|
|
90
|
+
* Optional-catch-all filesystem segment, e.g. `[[...slug]]`. Unlike a catch-all,
|
|
91
|
+
* this matches zero or more URL segments.
|
|
92
|
+
*/
|
|
93
|
+
declare function isOptionalCatchAllSegment(segment: string): boolean;
|
|
94
|
+
/**
|
|
95
|
+
* Count how many pathname segments a tree path's *visible* segments consume,
|
|
96
|
+
* given the total number of pathname segments available.
|
|
97
|
+
*
|
|
98
|
+
* This is the minimal pure slice of the canonical filesystem-segment →
|
|
99
|
+
* URL-segment mapping in `app-route-graph.ts` (`convertSegmentsToRouteParts`),
|
|
100
|
+
* extracted here so browser-side bfcache identity logic can share it without
|
|
101
|
+
* importing the Node-bound route graph module. `convertSegmentsToRouteParts`
|
|
102
|
+
* remains the source of truth for how each segment kind maps to a URL part.
|
|
103
|
+
*
|
|
104
|
+
* Each ordinary visible segment (static or `[x]`) consumes exactly one pathname
|
|
105
|
+
* segment. A catch-all (`[...x]`) is terminal and consumes every remaining
|
|
106
|
+
* pathname segment. An optional-catch-all (`[[...x]]`) is also terminal but may
|
|
107
|
+
* match zero segments, so it consumes only the remaining pathname segments
|
|
108
|
+
* (which is zero once preceding segments have already consumed the pathname) —
|
|
109
|
+
* never more than are actually present.
|
|
110
|
+
*
|
|
111
|
+
* @param visibleTreePathSegments URL-visible tree-path segments (callers must
|
|
112
|
+
* pre-filter invisible segments via `isInvisibleSegment`).
|
|
113
|
+
* @param pathnameSegmentCount Total number of pathname segments available.
|
|
114
|
+
*/
|
|
115
|
+
declare function countConsumedPathnameSegments(visibleTreePathSegments: readonly string[], pathnameSegmentCount: number): number;
|
|
116
|
+
//#endregion
|
|
117
|
+
export { buildParams, compareHybridRoutePatterns, countConsumedPathnameSegments, decodeMatchedParams, decodeRouteSegment, isCatchAllSegment, isInvisibleSegment, isOptionalCatchAllSegment, normalizePathnameForRouteMatch, normalizePathnameForRouteMatchStrict, sortRoutes, splitPathSegments, splitPathnameForRouteMatch };
|