@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,30 @@
|
|
|
1
|
+
import { ValidFileMatcher } from "./file-matcher.js";
|
|
2
|
+
import { AppRoute, AppRouteGraphRoute, RouteManifest, computeAppRouteStaticSiblings, computeRootParamNames, convertSegmentsToRouteParts } from "./app-route-graph.js";
|
|
3
|
+
|
|
4
|
+
//#region src/routing/app-router.d.ts
|
|
5
|
+
type AppRouteGraph = {
|
|
6
|
+
routes: AppRouteGraphRoute[];
|
|
7
|
+
routeManifest: RouteManifest;
|
|
8
|
+
};
|
|
9
|
+
declare function invalidateAppRouteCache(): void;
|
|
10
|
+
/**
|
|
11
|
+
* Scan the app/ directory and return the route graph.
|
|
12
|
+
* TODO(#726): Layer 4 should consume this read model directly once the
|
|
13
|
+
* navigation planner owns route graph facts.
|
|
14
|
+
*
|
|
15
|
+
* @internal
|
|
16
|
+
*/
|
|
17
|
+
declare function appRouteGraph(appDir: string, pageExtensions?: readonly string[], matcher?: ValidFileMatcher): Promise<AppRouteGraph>;
|
|
18
|
+
/**
|
|
19
|
+
* Scan the app/ directory and return a list of routes.
|
|
20
|
+
*/
|
|
21
|
+
declare function appRouter(appDir: string, pageExtensions?: readonly string[], matcher?: ValidFileMatcher): Promise<AppRouteGraphRoute[]>;
|
|
22
|
+
/**
|
|
23
|
+
* Match a URL against App Router routes.
|
|
24
|
+
*/
|
|
25
|
+
declare function matchAppRoute(url: string, routes: AppRoute[]): {
|
|
26
|
+
route: AppRoute;
|
|
27
|
+
params: Record<string, string | string[]>;
|
|
28
|
+
} | null;
|
|
29
|
+
//#endregion
|
|
30
|
+
export { type AppRoute, appRouteGraph, appRouter, computeAppRouteStaticSiblings, computeRootParamNames, convertSegmentsToRouteParts, invalidateAppRouteCache, matchAppRoute };
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { createValidFileMatcher } from "./file-matcher.js";
|
|
2
|
+
import { createRouteTrieCache, matchRouteWithTrie } from "./route-matching.js";
|
|
3
|
+
import { buildAppRouteGraph, computeAppRouteStaticSiblings, computeRootParamNames, convertSegmentsToRouteParts } from "./app-route-graph.js";
|
|
4
|
+
//#region src/routing/app-router.ts
|
|
5
|
+
/**
|
|
6
|
+
* App Router file-system routing.
|
|
7
|
+
*
|
|
8
|
+
* Scans the app/ directory following Next.js App Router conventions:
|
|
9
|
+
* - app/page.tsx -> /
|
|
10
|
+
* - app/about/page.tsx -> /about
|
|
11
|
+
* - app/blog/[slug]/page.tsx -> /blog/:slug
|
|
12
|
+
* - app/[...catchAll]/page.tsx -> /:catchAll+
|
|
13
|
+
* - app/route.ts -> / (API route)
|
|
14
|
+
* - app/(group)/page.tsx -> / (route groups are transparent)
|
|
15
|
+
* - Layouts: app/layout.tsx wraps all children
|
|
16
|
+
* - Loading: app/loading.tsx -> Suspense fallback
|
|
17
|
+
* - Error: app/error.tsx -> ErrorBoundary
|
|
18
|
+
* - Not Found: app/not-found.tsx
|
|
19
|
+
*/
|
|
20
|
+
let cachedGraph = null;
|
|
21
|
+
let cachedAppDir = null;
|
|
22
|
+
let cachedPageExtensionsKey = null;
|
|
23
|
+
function invalidateAppRouteCache() {
|
|
24
|
+
cachedGraph = null;
|
|
25
|
+
cachedAppDir = null;
|
|
26
|
+
cachedPageExtensionsKey = null;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Scan the app/ directory and return the route graph.
|
|
30
|
+
* TODO(#726): Layer 4 should consume this read model directly once the
|
|
31
|
+
* navigation planner owns route graph facts.
|
|
32
|
+
*
|
|
33
|
+
* @internal
|
|
34
|
+
*/
|
|
35
|
+
async function appRouteGraph(appDir, pageExtensions, matcher) {
|
|
36
|
+
matcher ??= createValidFileMatcher(pageExtensions);
|
|
37
|
+
const pageExtensionsKey = JSON.stringify(matcher.extensions);
|
|
38
|
+
if (cachedGraph && cachedAppDir === appDir && cachedPageExtensionsKey === pageExtensionsKey) return cachedGraph;
|
|
39
|
+
const graph = await buildAppRouteGraph(appDir, matcher);
|
|
40
|
+
cachedGraph = graph;
|
|
41
|
+
cachedAppDir = appDir;
|
|
42
|
+
cachedPageExtensionsKey = pageExtensionsKey;
|
|
43
|
+
return graph;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Scan the app/ directory and return a list of routes.
|
|
47
|
+
*/
|
|
48
|
+
async function appRouter(appDir, pageExtensions, matcher) {
|
|
49
|
+
return (await appRouteGraph(appDir, pageExtensions, matcher)).routes;
|
|
50
|
+
}
|
|
51
|
+
const appTrieCache = createRouteTrieCache();
|
|
52
|
+
/**
|
|
53
|
+
* Match a URL against App Router routes.
|
|
54
|
+
*/
|
|
55
|
+
function matchAppRoute(url, routes) {
|
|
56
|
+
return matchRouteWithTrie(url, routes, appTrieCache);
|
|
57
|
+
}
|
|
58
|
+
//#endregion
|
|
59
|
+
export { appRouteGraph, appRouter, computeAppRouteStaticSiblings, computeRootParamNames, convertSegmentsToRouteParts, invalidateAppRouteCache, matchAppRoute };
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
//#region src/routing/file-matcher.d.ts
|
|
2
|
+
declare function normalizePageExtensions(pageExtensions?: readonly string[] | null): string[];
|
|
3
|
+
type ValidFileMatcher = {
|
|
4
|
+
extensions: string[];
|
|
5
|
+
dottedExtensions: string[];
|
|
6
|
+
extensionRegex: RegExp;
|
|
7
|
+
isPageFile(filePath: string): boolean;
|
|
8
|
+
isAppRouterPage(filePath: string): boolean;
|
|
9
|
+
isAppRouterRoute(filePath: string): boolean;
|
|
10
|
+
isAppLayoutFile(filePath: string): boolean;
|
|
11
|
+
isAppDefaultFile(filePath: string): boolean;
|
|
12
|
+
stripExtension(filePath: string): string;
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Ported in spirit from Next.js createValidFileMatcher:
|
|
16
|
+
* packages/next/src/server/lib/find-page-file.ts
|
|
17
|
+
*/
|
|
18
|
+
declare function createValidFileMatcher(pageExtensions?: readonly string[] | null): ValidFileMatcher;
|
|
19
|
+
/** Check if a file exists with any configured page extension. */
|
|
20
|
+
declare function findFileWithExtensions(basePath: string, matcher: ValidFileMatcher): boolean;
|
|
21
|
+
/**
|
|
22
|
+
* Find a file by basename and configured page extension in a directory.
|
|
23
|
+
* Returns the first matching absolute path, or null if not found.
|
|
24
|
+
*/
|
|
25
|
+
declare function findFileWithExts(dir: string, name: string, matcher: ValidFileMatcher): string | null;
|
|
26
|
+
/**
|
|
27
|
+
* Vite's default `resolve.extensions` covers `.tsx/.ts/.jsx/.js/.json` (and
|
|
28
|
+
* `.mjs/.mts`). When the user configures `pageExtensions` with values Vite
|
|
29
|
+
* does not know about — e.g. `["platform.tsx", "tsx", "mdx"]` from the
|
|
30
|
+
* Next.js `resolve-extensions` fixture — extensionless imports of those
|
|
31
|
+
* files fail to resolve, and the build crashes with "Custom deploy script
|
|
32
|
+
* failed: undefined (1)".
|
|
33
|
+
*
|
|
34
|
+
* Build the merged extension list that Vite should use:
|
|
35
|
+
*
|
|
36
|
+
* 1. User-configured pageExtensions go first (each prefixed with `.`) so
|
|
37
|
+
* the user's priority wins. e.g. `.platform.tsx` resolves before `.tsx`.
|
|
38
|
+
* 2. Vite's defaults follow, with duplicates removed.
|
|
39
|
+
*
|
|
40
|
+
* The user's pageExtensions retain their relative order, which is what
|
|
41
|
+
* Next.js / Turbopack do via the `resolveExtensions` config option.
|
|
42
|
+
*
|
|
43
|
+
* See: cloudflare/vinext#1502
|
|
44
|
+
*/
|
|
45
|
+
declare function buildViteResolveExtensions(pageExtensions?: readonly string[] | null, viteDefaults?: readonly string[]): string[];
|
|
46
|
+
/**
|
|
47
|
+
* Normalize an explicit Next.js resolver extension list for Vite.
|
|
48
|
+
*
|
|
49
|
+
* Unlike `pageExtensions`, both Turbopack's `resolveExtensions` and webpack's
|
|
50
|
+
* `resolve.extensions` replace their resolver defaults. The empty string is a
|
|
51
|
+
* webpack/Turbopack convention for trying the import exactly as written; Vite
|
|
52
|
+
* already does that before appending extensions, so it must be omitted here.
|
|
53
|
+
*/
|
|
54
|
+
declare function normalizeViteResolveExtensions(extensions: readonly string[]): string[];
|
|
55
|
+
/**
|
|
56
|
+
* Use function-form exclude for Node < 22.14 compatibility.
|
|
57
|
+
*/
|
|
58
|
+
declare function scanWithExtensions(stem: string, cwd: string, extensions: readonly string[], exclude?: (name: string) => boolean): AsyncGenerator<string>;
|
|
59
|
+
//#endregion
|
|
60
|
+
export { ValidFileMatcher, buildViteResolveExtensions, createValidFileMatcher, findFileWithExtensions, findFileWithExts, normalizePageExtensions, normalizeViteResolveExtensions, scanWithExtensions };
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
import { escapeRegExp } from "../utils/regex.js";
|
|
2
|
+
import { existsSync } from "node:fs";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
import { glob } from "node:fs/promises";
|
|
5
|
+
//#region src/routing/file-matcher.ts
|
|
6
|
+
const DEFAULT_PAGE_EXTENSIONS = [
|
|
7
|
+
"tsx",
|
|
8
|
+
"ts",
|
|
9
|
+
"jsx",
|
|
10
|
+
"js"
|
|
11
|
+
];
|
|
12
|
+
function normalizePageExtensions(pageExtensions) {
|
|
13
|
+
if (!Array.isArray(pageExtensions) || pageExtensions.length === 0) return [...DEFAULT_PAGE_EXTENSIONS];
|
|
14
|
+
const filtered = pageExtensions.filter((ext) => typeof ext === "string").map((ext) => ext.trim().replace(/^\.+/, "")).filter((ext) => ext.length > 0);
|
|
15
|
+
return filtered.length > 0 ? [...filtered] : [...DEFAULT_PAGE_EXTENSIONS];
|
|
16
|
+
}
|
|
17
|
+
function buildExtensionGlob(stem, extensions) {
|
|
18
|
+
if (extensions.length === 1) return `${stem}.${extensions[0]}`;
|
|
19
|
+
return `${stem}.{${extensions.join(",")}}`;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Ported in spirit from Next.js createValidFileMatcher:
|
|
23
|
+
* packages/next/src/server/lib/find-page-file.ts
|
|
24
|
+
*/
|
|
25
|
+
function createValidFileMatcher(pageExtensions) {
|
|
26
|
+
const extensions = normalizePageExtensions(pageExtensions);
|
|
27
|
+
const dottedExtensions = extensions.map((ext) => `.${ext}`);
|
|
28
|
+
const extPattern = `(?:${extensions.map((ext) => escapeRegExp(ext)).join("|")})`;
|
|
29
|
+
const extensionRegex = new RegExp(`\\.${extPattern}$`);
|
|
30
|
+
const createLeafPattern = (fileNames) => {
|
|
31
|
+
const names = fileNames.length === 1 ? fileNames[0] : `(${fileNames.join("|")})`;
|
|
32
|
+
return new RegExp(`(^${names}|[\\\\/]${names})\\.${extPattern}$`);
|
|
33
|
+
};
|
|
34
|
+
const appRouterPageRegex = createLeafPattern(["page", "route"]);
|
|
35
|
+
const appRouterRouteRegex = createLeafPattern(["route"]);
|
|
36
|
+
const appLayoutRegex = createLeafPattern(["layout"]);
|
|
37
|
+
const appDefaultRegex = createLeafPattern(["default"]);
|
|
38
|
+
return {
|
|
39
|
+
extensions,
|
|
40
|
+
dottedExtensions,
|
|
41
|
+
extensionRegex,
|
|
42
|
+
isPageFile(filePath) {
|
|
43
|
+
return extensionRegex.test(filePath);
|
|
44
|
+
},
|
|
45
|
+
isAppRouterPage(filePath) {
|
|
46
|
+
return appRouterPageRegex.test(filePath);
|
|
47
|
+
},
|
|
48
|
+
isAppRouterRoute(filePath) {
|
|
49
|
+
return appRouterRouteRegex.test(filePath);
|
|
50
|
+
},
|
|
51
|
+
isAppLayoutFile(filePath) {
|
|
52
|
+
return appLayoutRegex.test(filePath);
|
|
53
|
+
},
|
|
54
|
+
isAppDefaultFile(filePath) {
|
|
55
|
+
return appDefaultRegex.test(filePath);
|
|
56
|
+
},
|
|
57
|
+
stripExtension(filePath) {
|
|
58
|
+
return filePath.replace(extensionRegex, "");
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
/** Check if a file exists with any configured page extension. */
|
|
63
|
+
function findFileWithExtensions(basePath, matcher) {
|
|
64
|
+
return matcher.dottedExtensions.some((ext) => existsSync(basePath + ext));
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Find a file by basename and configured page extension in a directory.
|
|
68
|
+
* Returns the first matching absolute path, or null if not found.
|
|
69
|
+
*/
|
|
70
|
+
function findFileWithExts(dir, name, matcher) {
|
|
71
|
+
for (const ext of matcher.dottedExtensions) {
|
|
72
|
+
const filePath = path.posix.join(dir, name + ext);
|
|
73
|
+
if (existsSync(filePath)) return filePath;
|
|
74
|
+
}
|
|
75
|
+
return null;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Vite's default `resolve.extensions` covers `.tsx/.ts/.jsx/.js/.json` (and
|
|
79
|
+
* `.mjs/.mts`). When the user configures `pageExtensions` with values Vite
|
|
80
|
+
* does not know about — e.g. `["platform.tsx", "tsx", "mdx"]` from the
|
|
81
|
+
* Next.js `resolve-extensions` fixture — extensionless imports of those
|
|
82
|
+
* files fail to resolve, and the build crashes with "Custom deploy script
|
|
83
|
+
* failed: undefined (1)".
|
|
84
|
+
*
|
|
85
|
+
* Build the merged extension list that Vite should use:
|
|
86
|
+
*
|
|
87
|
+
* 1. User-configured pageExtensions go first (each prefixed with `.`) so
|
|
88
|
+
* the user's priority wins. e.g. `.platform.tsx` resolves before `.tsx`.
|
|
89
|
+
* 2. Vite's defaults follow, with duplicates removed.
|
|
90
|
+
*
|
|
91
|
+
* The user's pageExtensions retain their relative order, which is what
|
|
92
|
+
* Next.js / Turbopack do via the `resolveExtensions` config option.
|
|
93
|
+
*
|
|
94
|
+
* See: cloudflare/vinext#1502
|
|
95
|
+
*/
|
|
96
|
+
function buildViteResolveExtensions(pageExtensions, viteDefaults = [
|
|
97
|
+
".mjs",
|
|
98
|
+
".js",
|
|
99
|
+
".mts",
|
|
100
|
+
".ts",
|
|
101
|
+
".jsx",
|
|
102
|
+
".tsx",
|
|
103
|
+
".json"
|
|
104
|
+
]) {
|
|
105
|
+
const dotted = normalizePageExtensions(pageExtensions).map((ext) => `.${ext}`);
|
|
106
|
+
const seen = /* @__PURE__ */ new Set();
|
|
107
|
+
const result = [];
|
|
108
|
+
for (const ext of [...dotted, ...viteDefaults]) {
|
|
109
|
+
if (seen.has(ext)) continue;
|
|
110
|
+
seen.add(ext);
|
|
111
|
+
result.push(ext);
|
|
112
|
+
}
|
|
113
|
+
return result;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Normalize an explicit Next.js resolver extension list for Vite.
|
|
117
|
+
*
|
|
118
|
+
* Unlike `pageExtensions`, both Turbopack's `resolveExtensions` and webpack's
|
|
119
|
+
* `resolve.extensions` replace their resolver defaults. The empty string is a
|
|
120
|
+
* webpack/Turbopack convention for trying the import exactly as written; Vite
|
|
121
|
+
* already does that before appending extensions, so it must be omitted here.
|
|
122
|
+
*/
|
|
123
|
+
function normalizeViteResolveExtensions(extensions) {
|
|
124
|
+
const seen = /* @__PURE__ */ new Set();
|
|
125
|
+
const result = [];
|
|
126
|
+
for (const extension of extensions) {
|
|
127
|
+
const trimmed = extension.trim();
|
|
128
|
+
if (!trimmed) continue;
|
|
129
|
+
const dotted = trimmed.startsWith(".") ? trimmed : `.${trimmed}`;
|
|
130
|
+
if (seen.has(dotted)) continue;
|
|
131
|
+
seen.add(dotted);
|
|
132
|
+
result.push(dotted);
|
|
133
|
+
}
|
|
134
|
+
return result;
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Use function-form exclude for Node < 22.14 compatibility.
|
|
138
|
+
*/
|
|
139
|
+
async function* scanWithExtensions(stem, cwd, extensions, exclude) {
|
|
140
|
+
const pattern = buildExtensionGlob(stem, extensions);
|
|
141
|
+
for await (const file of glob(pattern, {
|
|
142
|
+
cwd,
|
|
143
|
+
...exclude ? { exclude } : {}
|
|
144
|
+
})) yield file;
|
|
145
|
+
}
|
|
146
|
+
//#endregion
|
|
147
|
+
export { buildViteResolveExtensions, createValidFileMatcher, findFileWithExtensions, findFileWithExts, normalizePageExtensions, normalizeViteResolveExtensions, scanWithExtensions };
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { ValidFileMatcher } from "./file-matcher.js";
|
|
2
|
+
import { patternToNextFormat } from "./route-validation.js";
|
|
3
|
+
|
|
4
|
+
//#region src/routing/pages-router.d.ts
|
|
5
|
+
type Route = {
|
|
6
|
+
/** URL pattern, e.g. "/" or "/about" or "/posts/:id" */pattern: string; /** Pre-split pattern segments (computed once at scan time, reused per request) */
|
|
7
|
+
patternParts: string[]; /** Absolute file path to the page component */
|
|
8
|
+
filePath: string; /** Whether this is a dynamic route */
|
|
9
|
+
isDynamic: boolean; /** Parameter names for dynamic segments */
|
|
10
|
+
params: string[];
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* Invalidate cached routes for a given pages directory.
|
|
14
|
+
* Called by the file watcher when pages are added/removed.
|
|
15
|
+
*/
|
|
16
|
+
declare function invalidateRouteCache(pagesDir: string): void;
|
|
17
|
+
/**
|
|
18
|
+
* Scan the pages/ directory and return a list of routes.
|
|
19
|
+
* Results are cached — call invalidateRouteCache() when files change.
|
|
20
|
+
*
|
|
21
|
+
* Follows Next.js Pages Router conventions:
|
|
22
|
+
* - pages/index.tsx -> /
|
|
23
|
+
* - pages/about.tsx -> /about
|
|
24
|
+
* - pages/posts/[id].tsx -> /posts/:id
|
|
25
|
+
* - pages/[...slug].tsx -> /:slug+
|
|
26
|
+
* - Ignores _app.tsx, _document.tsx, _error.tsx (Next.js special files)
|
|
27
|
+
* - Ignores pages/api/ (handled separately later)
|
|
28
|
+
*/
|
|
29
|
+
declare function pagesRouter(pagesDir: string, pageExtensions?: readonly string[], matcher?: ValidFileMatcher): Promise<Route[]>;
|
|
30
|
+
/**
|
|
31
|
+
* Match a URL path against a route pattern.
|
|
32
|
+
* Returns the matched params or null if no match.
|
|
33
|
+
*/
|
|
34
|
+
declare function matchRoute(url: string, routes: Route[]): {
|
|
35
|
+
route: Route;
|
|
36
|
+
params: Record<string, string | string[]>;
|
|
37
|
+
} | null;
|
|
38
|
+
/**
|
|
39
|
+
* Scan the pages/api/ directory and return API routes.
|
|
40
|
+
* Results are cached — call invalidateRouteCache() when files change.
|
|
41
|
+
*
|
|
42
|
+
* Follows Next.js conventions:
|
|
43
|
+
* - pages/api/hello.ts -> /api/hello
|
|
44
|
+
* - pages/api/users/[id].ts -> /api/users/:id
|
|
45
|
+
*/
|
|
46
|
+
declare function apiRouter(pagesDir: string, pageExtensions?: readonly string[], matcher?: ValidFileMatcher): Promise<Route[]>;
|
|
47
|
+
//#endregion
|
|
48
|
+
export { Route, apiRouter, invalidateRouteCache, matchRoute, pagesRouter, patternToNextFormat };
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
import { decodeRouteSegment, sortRoutes } from "./utils.js";
|
|
2
|
+
import { createValidFileMatcher, scanWithExtensions } from "./file-matcher.js";
|
|
3
|
+
import { patternToNextFormat, validateRoutePatterns } from "./route-validation.js";
|
|
4
|
+
import { createRouteTrieCache, matchRouteWithTrie } from "./route-matching.js";
|
|
5
|
+
import path from "node:path";
|
|
6
|
+
//#region src/routing/pages-router.ts
|
|
7
|
+
/** Next.js special pages that should not produce routes. */
|
|
8
|
+
const RESERVED_PAGE_NAMES = new Set([
|
|
9
|
+
"_app",
|
|
10
|
+
"_document",
|
|
11
|
+
"_error"
|
|
12
|
+
]);
|
|
13
|
+
const routeCache = /* @__PURE__ */ new Map();
|
|
14
|
+
/**
|
|
15
|
+
* Invalidate cached routes for a given pages directory.
|
|
16
|
+
* Called by the file watcher when pages are added/removed.
|
|
17
|
+
*/
|
|
18
|
+
function invalidateRouteCache(pagesDir) {
|
|
19
|
+
for (const key of routeCache.keys()) if (key.startsWith(`pages:${pagesDir}:`) || key.startsWith(`api:${pagesDir}:`)) routeCache.delete(key);
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Scan the pages/ directory and return a list of routes.
|
|
23
|
+
* Results are cached — call invalidateRouteCache() when files change.
|
|
24
|
+
*
|
|
25
|
+
* Follows Next.js Pages Router conventions:
|
|
26
|
+
* - pages/index.tsx -> /
|
|
27
|
+
* - pages/about.tsx -> /about
|
|
28
|
+
* - pages/posts/[id].tsx -> /posts/:id
|
|
29
|
+
* - pages/[...slug].tsx -> /:slug+
|
|
30
|
+
* - Ignores _app.tsx, _document.tsx, _error.tsx (Next.js special files)
|
|
31
|
+
* - Ignores pages/api/ (handled separately later)
|
|
32
|
+
*/
|
|
33
|
+
async function pagesRouter(pagesDir, pageExtensions, matcher) {
|
|
34
|
+
matcher ??= createValidFileMatcher(pageExtensions);
|
|
35
|
+
const cacheKey = `pages:${pagesDir}:${JSON.stringify(matcher.extensions)}`;
|
|
36
|
+
const cached = routeCache.get(cacheKey);
|
|
37
|
+
if (cached) return cached.promise;
|
|
38
|
+
const promise = scanPageRoutes(pagesDir, matcher);
|
|
39
|
+
routeCache.set(cacheKey, {
|
|
40
|
+
routes: [],
|
|
41
|
+
promise
|
|
42
|
+
});
|
|
43
|
+
const routes = await promise;
|
|
44
|
+
routeCache.set(cacheKey, {
|
|
45
|
+
routes,
|
|
46
|
+
promise
|
|
47
|
+
});
|
|
48
|
+
return routes;
|
|
49
|
+
}
|
|
50
|
+
async function scanPageRoutes(pagesDir, matcher) {
|
|
51
|
+
const routes = [];
|
|
52
|
+
for await (const file of scanWithExtensions("**/*", pagesDir, matcher.extensions, (name) => name === "api" || RESERVED_PAGE_NAMES.has(name))) {
|
|
53
|
+
const route = fileToRoute(file, pagesDir, matcher);
|
|
54
|
+
if (route) routes.push(route);
|
|
55
|
+
}
|
|
56
|
+
validateRoutePatterns(routes.map((route) => route.pattern));
|
|
57
|
+
sortRoutes(routes);
|
|
58
|
+
return routes;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Convert a file path relative to pages/ into a Route.
|
|
62
|
+
*/
|
|
63
|
+
function fileToRoute(file, pagesDir, matcher) {
|
|
64
|
+
const withoutExt = matcher.stripExtension(file);
|
|
65
|
+
if (withoutExt === file) return null;
|
|
66
|
+
const segments = withoutExt.split(path.sep);
|
|
67
|
+
if (segments[segments.length - 1] === "index") segments.pop();
|
|
68
|
+
const params = [];
|
|
69
|
+
let isDynamic = false;
|
|
70
|
+
const urlSegments = [];
|
|
71
|
+
for (let i = 0; i < segments.length; i++) {
|
|
72
|
+
const segment = segments[i];
|
|
73
|
+
const catchAllMatch = segment.match(/^\[\.\.\.([^\]]+)\]$/);
|
|
74
|
+
if (catchAllMatch) {
|
|
75
|
+
if (i !== segments.length - 1) return null;
|
|
76
|
+
if (catchAllMatch[1].endsWith("+") || catchAllMatch[1].endsWith("*")) return null;
|
|
77
|
+
isDynamic = true;
|
|
78
|
+
params.push(catchAllMatch[1]);
|
|
79
|
+
urlSegments.push(`:${catchAllMatch[1]}+`);
|
|
80
|
+
continue;
|
|
81
|
+
}
|
|
82
|
+
const optionalCatchAllMatch = segment.match(/^\[\[\.\.\.([^\]]+)\]\]$/);
|
|
83
|
+
if (optionalCatchAllMatch) {
|
|
84
|
+
if (i !== segments.length - 1) return null;
|
|
85
|
+
if (optionalCatchAllMatch[1].endsWith("+") || optionalCatchAllMatch[1].endsWith("*")) return null;
|
|
86
|
+
isDynamic = true;
|
|
87
|
+
params.push(optionalCatchAllMatch[1]);
|
|
88
|
+
urlSegments.push(`:${optionalCatchAllMatch[1]}*`);
|
|
89
|
+
continue;
|
|
90
|
+
}
|
|
91
|
+
const dynamicMatch = segment.match(/^\[([^\]]+)\]$/);
|
|
92
|
+
if (dynamicMatch) {
|
|
93
|
+
if (dynamicMatch[1].endsWith("+") || dynamicMatch[1].endsWith("*")) return null;
|
|
94
|
+
isDynamic = true;
|
|
95
|
+
params.push(dynamicMatch[1]);
|
|
96
|
+
urlSegments.push(`:${dynamicMatch[1]}`);
|
|
97
|
+
continue;
|
|
98
|
+
}
|
|
99
|
+
urlSegments.push(decodeRouteSegment(segment));
|
|
100
|
+
}
|
|
101
|
+
const pattern = "/" + urlSegments.join("/");
|
|
102
|
+
if (segments.length === 1 && RESERVED_PAGE_NAMES.has(segments[0])) return null;
|
|
103
|
+
return {
|
|
104
|
+
pattern: pattern === "/" ? "/" : pattern,
|
|
105
|
+
patternParts: urlSegments.filter(Boolean),
|
|
106
|
+
filePath: path.join(pagesDir, file),
|
|
107
|
+
isDynamic,
|
|
108
|
+
params
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
const trieCache = createRouteTrieCache();
|
|
112
|
+
/**
|
|
113
|
+
* Match a URL path against a route pattern.
|
|
114
|
+
* Returns the matched params or null if no match.
|
|
115
|
+
*/
|
|
116
|
+
function matchRoute(url, routes) {
|
|
117
|
+
return matchRouteWithTrie(url, routes, trieCache);
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Scan the pages/api/ directory and return API routes.
|
|
121
|
+
* Results are cached — call invalidateRouteCache() when files change.
|
|
122
|
+
*
|
|
123
|
+
* Follows Next.js conventions:
|
|
124
|
+
* - pages/api/hello.ts -> /api/hello
|
|
125
|
+
* - pages/api/users/[id].ts -> /api/users/:id
|
|
126
|
+
*/
|
|
127
|
+
async function apiRouter(pagesDir, pageExtensions, matcher) {
|
|
128
|
+
matcher ??= createValidFileMatcher(pageExtensions);
|
|
129
|
+
const cacheKey = `api:${pagesDir}:${JSON.stringify(matcher.extensions)}`;
|
|
130
|
+
const cached = routeCache.get(cacheKey);
|
|
131
|
+
if (cached) return cached.promise;
|
|
132
|
+
const promise = scanApiRoutes(pagesDir, matcher);
|
|
133
|
+
routeCache.set(cacheKey, {
|
|
134
|
+
routes: [],
|
|
135
|
+
promise
|
|
136
|
+
});
|
|
137
|
+
const routes = await promise;
|
|
138
|
+
routeCache.set(cacheKey, {
|
|
139
|
+
routes,
|
|
140
|
+
promise
|
|
141
|
+
});
|
|
142
|
+
return routes;
|
|
143
|
+
}
|
|
144
|
+
async function scanApiRoutes(pagesDir, matcher) {
|
|
145
|
+
const apiDir = path.join(pagesDir, "api");
|
|
146
|
+
let files;
|
|
147
|
+
try {
|
|
148
|
+
files = [];
|
|
149
|
+
for await (const file of scanWithExtensions("**/*", apiDir, matcher.extensions)) files.push(file);
|
|
150
|
+
} catch {
|
|
151
|
+
files = [];
|
|
152
|
+
}
|
|
153
|
+
const routes = [];
|
|
154
|
+
for (const file of files) {
|
|
155
|
+
const route = fileToRoute(path.join("api", file), pagesDir, matcher);
|
|
156
|
+
if (route) routes.push(route);
|
|
157
|
+
}
|
|
158
|
+
validateRoutePatterns(routes.map((route) => route.pattern));
|
|
159
|
+
sortRoutes(routes);
|
|
160
|
+
return routes;
|
|
161
|
+
}
|
|
162
|
+
//#endregion
|
|
163
|
+
export { apiRouter, invalidateRouteCache, matchRoute, pagesRouter, patternToNextFormat };
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { TrieNode } from "./route-trie.js";
|
|
2
|
+
|
|
3
|
+
//#region src/routing/route-matching.d.ts
|
|
4
|
+
type RouteTrieCache<R extends {
|
|
5
|
+
patternParts: string[];
|
|
6
|
+
}> = WeakMap<R[], TrieNode<R>>;
|
|
7
|
+
declare function createRouteTrieCache<R extends {
|
|
8
|
+
patternParts: string[];
|
|
9
|
+
}>(): RouteTrieCache<R>;
|
|
10
|
+
/**
|
|
11
|
+
* Match a URL path against a list of routes via the shared preamble:
|
|
12
|
+
* 1. strip query string
|
|
13
|
+
* 2. trailing-slash normalize (preserving root "/")
|
|
14
|
+
* 3. run `normalizePathnameForRouteMatch`
|
|
15
|
+
* 4. split into url parts and look up via the (cached) trie
|
|
16
|
+
*
|
|
17
|
+
* Generic over the route shape; both Pages `Route` and App `AppRoute`
|
|
18
|
+
* satisfy `{ patternParts: string[] }`.
|
|
19
|
+
*/
|
|
20
|
+
declare function matchRouteWithTrie<R extends {
|
|
21
|
+
patternParts: string[];
|
|
22
|
+
}>(url: string, routes: R[], cache: RouteTrieCache<R>): {
|
|
23
|
+
route: R;
|
|
24
|
+
params: Record<string, string | string[]>;
|
|
25
|
+
} | null;
|
|
26
|
+
//#endregion
|
|
27
|
+
export { createRouteTrieCache, matchRouteWithTrie };
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { normalizePathnameForRouteMatch } from "./utils.js";
|
|
2
|
+
import { buildRouteTrie, trieMatch } from "./route-trie.js";
|
|
3
|
+
//#region src/routing/route-matching.ts
|
|
4
|
+
/**
|
|
5
|
+
* Shared route-match preamble used by both Pages Router and App Router.
|
|
6
|
+
*
|
|
7
|
+
* Both routers normalize URLs and call `trieMatch` with nearly-identical
|
|
8
|
+
* preamble: strip query, trailing-slash normalize, run
|
|
9
|
+
* `normalizePathnameForRouteMatch`, split into url parts, then look up via a
|
|
10
|
+
* per-routes-array trie cache. This module factors that out so each router
|
|
11
|
+
* just calls `matchRouteWithTrie(url, routes)`.
|
|
12
|
+
*/
|
|
13
|
+
function createRouteTrieCache() {
|
|
14
|
+
return /* @__PURE__ */ new WeakMap();
|
|
15
|
+
}
|
|
16
|
+
function getOrBuildTrie(cache, routes) {
|
|
17
|
+
let trie = cache.get(routes);
|
|
18
|
+
if (!trie) {
|
|
19
|
+
trie = buildRouteTrie(routes);
|
|
20
|
+
cache.set(routes, trie);
|
|
21
|
+
}
|
|
22
|
+
return trie;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Match a URL path against a list of routes via the shared preamble:
|
|
26
|
+
* 1. strip query string
|
|
27
|
+
* 2. trailing-slash normalize (preserving root "/")
|
|
28
|
+
* 3. run `normalizePathnameForRouteMatch`
|
|
29
|
+
* 4. split into url parts and look up via the (cached) trie
|
|
30
|
+
*
|
|
31
|
+
* Generic over the route shape; both Pages `Route` and App `AppRoute`
|
|
32
|
+
* satisfy `{ patternParts: string[] }`.
|
|
33
|
+
*/
|
|
34
|
+
function matchRouteWithTrie(url, routes, cache) {
|
|
35
|
+
const pathname = url.split("?")[0];
|
|
36
|
+
let normalizedUrl = pathname === "/" ? "/" : pathname.replace(/\/$/, "");
|
|
37
|
+
normalizedUrl = normalizePathnameForRouteMatch(normalizedUrl);
|
|
38
|
+
const urlParts = normalizedUrl.split("/").filter(Boolean);
|
|
39
|
+
return trieMatch(getOrBuildTrie(cache, routes), urlParts);
|
|
40
|
+
}
|
|
41
|
+
//#endregion
|
|
42
|
+
export { createRouteTrieCache, matchRouteWithTrie };
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
//#region src/routing/route-pattern.d.ts
|
|
2
|
+
type RoutePatternParams = Record<string, string | string[]>;
|
|
3
|
+
declare function routePatternParts(pathname: string): string[];
|
|
4
|
+
declare function routePattern(pathname: string): string;
|
|
5
|
+
declare function fillRoutePatternSegments(pathname: string, params: RoutePatternParams): string | null;
|
|
6
|
+
declare function matchRoutePattern(urlParts: readonly string[], patternParts: readonly string[]): RoutePatternParams | null;
|
|
7
|
+
declare function matchRoutePatternPrefix(pathParts: readonly string[], patternParts: readonly string[]): boolean;
|
|
8
|
+
declare function matchRoutePatternWithOptionalDynamicSegments(pathParts: readonly string[], patternParts: readonly string[]): boolean;
|
|
9
|
+
/**
|
|
10
|
+
* A single entry from `getStaticPaths().paths`.
|
|
11
|
+
*
|
|
12
|
+
* Next.js allows both shapes:
|
|
13
|
+
* - a raw string path, e.g. `"/blog/hello"`
|
|
14
|
+
* - an object `{ params, locale? }`
|
|
15
|
+
*
|
|
16
|
+
* See:
|
|
17
|
+
* https://nextjs.org/docs/pages/api-reference/functions/get-static-paths
|
|
18
|
+
* .nextjs-ref/packages/next/src/build/static-paths/pages.ts (the
|
|
19
|
+
* `typeof entry === 'string'` branch around line 89, and the object
|
|
20
|
+
* branch around line 132)
|
|
21
|
+
*/
|
|
22
|
+
type StaticPathsEntry = string | {
|
|
23
|
+
params?: RoutePatternParams;
|
|
24
|
+
locale?: string;
|
|
25
|
+
} | null | undefined;
|
|
26
|
+
/**
|
|
27
|
+
* Result of {@link normalizeStaticPathsEntry}: either a params object, or a
|
|
28
|
+
* descriptive error string the caller can surface as a per-route error result.
|
|
29
|
+
*/
|
|
30
|
+
type NormalizedStaticPathsEntry = {
|
|
31
|
+
params: RoutePatternParams;
|
|
32
|
+
} | {
|
|
33
|
+
error: string;
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* Strip query string and a single trailing slash from a pathname.
|
|
37
|
+
*
|
|
38
|
+
* Mirrors the Next.js `removeTrailingSlash` helper used in
|
|
39
|
+
* `.nextjs-ref/packages/next/src/build/static-paths/pages.ts`. Kept here so
|
|
40
|
+
* both the build-time prerender and the request-time matchers normalize the
|
|
41
|
+
* same way.
|
|
42
|
+
*/
|
|
43
|
+
declare function normalizeStaticPathname(pathname: string): string;
|
|
44
|
+
/**
|
|
45
|
+
* Normalize a single `getStaticPaths` entry into a `{ params }` object.
|
|
46
|
+
*
|
|
47
|
+
* Handles both Next.js-supported shapes:
|
|
48
|
+
* - For a string entry, match it against `routePattern` to extract params,
|
|
49
|
+
* mirroring `_routeMatcher(cleanedEntry)` in
|
|
50
|
+
* `.nextjs-ref/packages/next/src/build/static-paths/pages.ts`. If the
|
|
51
|
+
* string does not match the pattern, Next.js throws; we return an
|
|
52
|
+
* `{ error }` result so the caller can record a per-route error instead
|
|
53
|
+
* of crashing the build.
|
|
54
|
+
* - For an object entry, require a `params` key (Next.js raises
|
|
55
|
+
* "A required parameter (X) was not provided..." otherwise).
|
|
56
|
+
*
|
|
57
|
+
* Note: this intentionally does NOT strip a locale prefix. The build pipeline
|
|
58
|
+
* currently passes empty `locales` to `getStaticPaths`, so locale-prefixed
|
|
59
|
+
* string entries are not produced. If/when i18n is wired through prerender,
|
|
60
|
+
* locale handling should be added here, not duplicated at call sites.
|
|
61
|
+
*/
|
|
62
|
+
declare function normalizeStaticPathsEntry(entry: StaticPathsEntry, routePattern: string): NormalizedStaticPathsEntry;
|
|
63
|
+
//#endregion
|
|
64
|
+
export { RoutePatternParams, StaticPathsEntry, fillRoutePatternSegments, matchRoutePattern, matchRoutePatternPrefix, matchRoutePatternWithOptionalDynamicSegments, normalizeStaticPathname, normalizeStaticPathsEntry, routePattern, routePatternParts };
|