vinext 0.0.55 → 0.1.1
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/README.md +51 -15
- package/dist/build/assets-ignore.d.ts +32 -0
- package/dist/build/assets-ignore.js +48 -0
- package/dist/build/clean-output.d.ts +1 -2
- package/dist/build/clean-output.js +0 -2
- package/dist/build/client-build-config.d.ts +42 -3
- package/dist/build/client-build-config.js +86 -4
- package/dist/build/css-url-assets.d.ts +29 -0
- package/dist/build/css-url-assets.js +211 -0
- package/dist/build/google-fonts/build-url.d.ts +1 -2
- package/dist/build/google-fonts/build-url.js +0 -2
- package/dist/build/google-fonts/fallback-metrics-data.js +0 -2
- package/dist/build/google-fonts/fallback-metrics.d.ts +1 -2
- package/dist/build/google-fonts/fallback-metrics.js +0 -2
- package/dist/build/google-fonts/font-data.js +0 -2
- package/dist/build/google-fonts/font-metadata.d.ts +1 -2
- package/dist/build/google-fonts/font-metadata.js +0 -2
- package/dist/build/google-fonts/get-axes.d.ts +1 -2
- package/dist/build/google-fonts/get-axes.js +0 -2
- package/dist/build/google-fonts/sort-variants.d.ts +1 -2
- package/dist/build/google-fonts/sort-variants.js +0 -2
- package/dist/build/google-fonts/validate.d.ts +1 -2
- package/dist/build/google-fonts/validate.js +0 -2
- package/dist/build/inline-css.d.ts +1 -2
- package/dist/build/inline-css.js +0 -2
- package/dist/build/layout-classification-types.d.ts +1 -2
- package/dist/build/layout-classification.d.ts +2 -3
- package/dist/build/layout-classification.js +1 -3
- 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 +1 -2
- package/dist/build/nitro-route-rules.js +0 -2
- package/dist/build/precompress.d.ts +1 -2
- package/dist/build/precompress.js +0 -2
- package/dist/build/prerender.d.ts +2 -3
- package/dist/build/prerender.js +14 -2
- package/dist/build/report.d.ts +1 -2
- package/dist/build/report.js +0 -2
- package/dist/build/route-classification-injector.d.ts +1 -2
- package/dist/build/route-classification-injector.js +4 -6
- package/dist/build/route-classification-manifest.d.ts +5 -6
- package/dist/build/route-classification-manifest.js +5 -7
- package/dist/build/run-prerender.d.ts +1 -2
- package/dist/build/run-prerender.js +15 -7
- package/dist/build/server-manifest.d.ts +1 -2
- package/dist/build/server-manifest.js +0 -2
- package/dist/build/ssr-manifest.d.ts +1 -2
- package/dist/build/ssr-manifest.js +2 -4
- package/dist/build/standalone.d.ts +1 -2
- package/dist/build/standalone.js +0 -2
- package/dist/build/static-export.d.ts +2 -3
- package/dist/build/static-export.js +0 -2
- package/dist/cache/cache-adapters-virtual.d.ts +50 -0
- package/dist/cache/cache-adapters-virtual.js +45 -0
- package/dist/check.d.ts +33 -2
- package/dist/check.js +306 -24
- package/dist/cli-args.d.ts +1 -2
- package/dist/cli-args.js +0 -2
- package/dist/cli.js +9 -13
- package/dist/client/instrumentation-client-inject.d.ts +1 -2
- package/dist/client/instrumentation-client-inject.js +0 -2
- package/dist/client/instrumentation-client-state.d.ts +1 -2
- package/dist/client/instrumentation-client-state.js +0 -2
- package/dist/client/instrumentation-client.d.ts +1 -2
- package/dist/client/instrumentation-client.js +0 -2
- package/dist/client/navigation-runtime.d.ts +9 -2
- package/dist/client/navigation-runtime.js +1 -3
- package/dist/client/pages-router-link-navigation.d.ts +1 -2
- package/dist/client/pages-router-link-navigation.js +0 -2
- package/dist/client/validate-module-path.d.ts +1 -2
- package/dist/client/validate-module-path.js +0 -2
- package/dist/client/vinext-next-data.d.ts +3 -3
- package/dist/client/vinext-next-data.js +0 -2
- package/dist/client/window-next.d.ts +1 -2
- package/dist/client/window-next.js +0 -2
- package/dist/cloudflare/index.d.ts +1 -1
- package/dist/cloudflare/index.js +1 -1
- package/dist/cloudflare/src/cache/cdn-adapter.runtime.js +97 -0
- package/dist/cloudflare/{kv-cache-handler.d.ts → src/cache/kv-data-adapter.runtime.d.ts} +25 -6
- package/dist/cloudflare/{kv-cache-handler.js → src/cache/kv-data-adapter.runtime.js} +36 -28
- package/dist/cloudflare/src/utils/cache-control-metadata.js +20 -0
- package/dist/cloudflare/tpr.d.ts +2 -3
- package/dist/cloudflare/tpr.js +8 -8
- package/dist/config/config-matchers.d.ts +20 -2
- package/dist/config/config-matchers.js +35 -3
- package/dist/config/dotenv.d.ts +1 -2
- package/dist/config/dotenv.js +0 -2
- package/dist/config/next-config.d.ts +32 -5
- package/dist/config/next-config.js +53 -6
- package/dist/config/tsconfig-paths.d.ts +1 -2
- package/dist/config/tsconfig-paths.js +3 -7
- package/dist/deploy.d.ts +48 -3
- package/dist/deploy.js +180 -415
- package/dist/entries/app-browser-entry.d.ts +1 -2
- package/dist/entries/app-browser-entry.js +0 -2
- package/dist/entries/app-rsc-entry.d.ts +12 -6
- package/dist/entries/app-rsc-entry.js +101 -62
- package/dist/entries/app-rsc-manifest.d.ts +1 -2
- package/dist/entries/app-rsc-manifest.js +40 -9
- package/dist/entries/app-ssr-entry.d.ts +1 -2
- package/dist/entries/app-ssr-entry.js +0 -2
- package/dist/entries/pages-client-entry.d.ts +3 -3
- package/dist/entries/pages-client-entry.js +16 -5
- package/dist/entries/pages-entry-helpers.d.ts +2 -11
- package/dist/entries/pages-entry-helpers.js +1 -20
- package/dist/entries/pages-server-entry.d.ts +2 -3
- package/dist/entries/pages-server-entry.js +98 -703
- package/dist/entries/runtime-entry-module.d.ts +1 -2
- package/dist/entries/runtime-entry-module.js +0 -2
- package/dist/index.d.ts +22 -2
- package/dist/index.js +376 -316
- package/dist/init.d.ts +1 -2
- package/dist/init.js +1 -3
- 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 +1 -2
- package/dist/plugins/async-hooks-stub.js +0 -2
- package/dist/plugins/client-reference-dedup.d.ts +1 -2
- package/dist/plugins/client-reference-dedup.js +4 -8
- package/dist/plugins/css-data-url.d.ts +1 -2
- package/dist/plugins/css-data-url.js +0 -2
- package/dist/plugins/fonts.d.ts +13 -3
- package/dist/plugins/fonts.js +19 -13
- package/dist/plugins/import-meta-url.d.ts +2 -2
- package/dist/plugins/import-meta-url.js +187 -33
- package/dist/plugins/instrumentation-client.d.ts +1 -2
- package/dist/plugins/instrumentation-client.js +0 -2
- package/dist/plugins/middleware-server-only.d.ts +1 -2
- package/dist/plugins/middleware-server-only.js +0 -2
- package/dist/plugins/og-assets.d.ts +32 -8
- package/dist/plugins/og-assets.js +126 -34
- package/dist/plugins/optimize-imports.d.ts +1 -2
- package/dist/plugins/optimize-imports.js +9 -17
- package/dist/plugins/postcss.d.ts +1 -2
- package/dist/plugins/postcss.js +18 -16
- package/dist/plugins/remove-console.d.ts +1 -2
- package/dist/plugins/remove-console.js +0 -2
- package/dist/plugins/require-context.d.ts +6 -0
- package/dist/plugins/require-context.js +184 -0
- package/dist/plugins/rsc-client-reference-loaders.d.ts +1 -2
- package/dist/plugins/rsc-client-reference-loaders.js +0 -2
- package/dist/plugins/rsc-client-shim-excludes.d.ts +1 -2
- package/dist/plugins/rsc-client-shim-excludes.js +0 -2
- package/dist/plugins/sass.d.ts +1 -2
- package/dist/plugins/sass.js +0 -2
- package/dist/plugins/server-externals-manifest.d.ts +1 -2
- package/dist/plugins/server-externals-manifest.js +0 -2
- package/dist/plugins/strip-server-exports.d.ts +1 -2
- package/dist/plugins/strip-server-exports.js +0 -2
- package/dist/routing/app-route-graph.d.ts +14 -10
- package/dist/routing/app-route-graph.js +146 -35
- package/dist/routing/app-router.d.ts +1 -2
- package/dist/routing/app-router.js +0 -2
- package/dist/routing/file-matcher.d.ts +6 -2
- package/dist/routing/file-matcher.js +15 -7
- package/dist/routing/pages-router.d.ts +1 -2
- package/dist/routing/pages-router.js +0 -2
- package/dist/routing/route-matching.d.ts +1 -2
- package/dist/routing/route-matching.js +0 -2
- package/dist/routing/route-pattern.d.ts +2 -2
- package/dist/routing/route-pattern.js +16 -3
- package/dist/routing/route-trie.d.ts +1 -2
- package/dist/routing/route-trie.js +0 -2
- package/dist/routing/route-validation.d.ts +1 -2
- package/dist/routing/route-validation.js +0 -2
- package/dist/routing/utils.d.ts +44 -2
- package/dist/routing/utils.js +62 -3
- package/dist/server/api-handler.d.ts +1 -2
- package/dist/server/api-handler.js +4 -2
- package/dist/server/app-bfcache-id.d.ts +5 -0
- package/dist/server/app-bfcache-id.js +5 -0
- package/dist/server/app-browser-action-result.d.ts +1 -2
- package/dist/server/app-browser-action-result.js +0 -2
- 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.js +244 -88
- package/dist/server/app-browser-error.d.ts +1 -2
- package/dist/server/app-browser-error.js +0 -2
- package/dist/server/app-browser-hydration.d.ts +1 -2
- package/dist/server/app-browser-hydration.js +0 -2
- package/dist/server/app-browser-interception-context.d.ts +2 -2
- package/dist/server/app-browser-interception-context.js +15 -4
- package/dist/server/app-browser-mpa-navigation.d.ts +2 -2
- package/dist/server/app-browser-mpa-navigation.js +9 -3
- package/dist/server/app-browser-navigation-controller.d.ts +15 -4
- package/dist/server/app-browser-navigation-controller.js +80 -4
- package/dist/server/app-browser-popstate.d.ts +12 -4
- package/dist/server/app-browser-popstate.js +19 -6
- package/dist/server/app-browser-rsc-redirect.d.ts +1 -2
- package/dist/server/app-browser-rsc-redirect.js +0 -2
- package/dist/server/app-browser-state.d.ts +31 -4
- package/dist/server/app-browser-state.js +196 -10
- package/dist/server/app-browser-stream.d.ts +1 -2
- package/dist/server/app-browser-stream.js +0 -2
- package/dist/server/app-browser-visible-commit.d.ts +2 -3
- package/dist/server/app-browser-visible-commit.js +30 -21
- package/dist/server/app-client-reference-preloader.d.ts +1 -2
- package/dist/server/app-client-reference-preloader.js +0 -2
- package/dist/server/app-elements-wire.d.ts +14 -8
- package/dist/server/app-elements-wire.js +45 -24
- package/dist/server/app-elements.d.ts +2 -3
- package/dist/server/app-elements.js +2 -4
- package/dist/server/app-fallback-renderer.d.ts +5 -5
- package/dist/server/app-fallback-renderer.js +4 -3
- package/dist/server/app-history-state.d.ts +62 -2
- package/dist/server/app-history-state.js +176 -10
- package/dist/server/app-hook-warning-suppression.d.ts +1 -2
- package/dist/server/app-hook-warning-suppression.js +0 -2
- package/dist/server/app-inline-css-client.d.ts +1 -2
- package/dist/server/app-inline-css-client.js +0 -2
- package/dist/server/app-interception-context-header.d.ts +1 -2
- package/dist/server/app-interception-context-header.js +0 -2
- package/dist/server/app-layout-param-observation.d.ts +15 -2
- package/dist/server/app-layout-param-observation.js +46 -8
- package/dist/server/app-middleware.d.ts +1 -2
- package/dist/server/app-middleware.js +0 -2
- package/dist/server/app-mounted-slots-header.d.ts +1 -2
- package/dist/server/app-mounted-slots-header.js +0 -2
- package/dist/server/app-optimistic-routing.d.ts +1 -2
- package/dist/server/app-optimistic-routing.js +0 -2
- package/dist/server/app-page-boundary-render.d.ts +4 -3
- package/dist/server/app-page-boundary-render.js +59 -28
- package/dist/server/app-page-boundary.d.ts +11 -2
- package/dist/server/app-page-boundary.js +13 -4
- package/dist/server/app-page-cache.d.ts +3 -3
- package/dist/server/app-page-cache.js +36 -11
- package/dist/server/app-page-dispatch.d.ts +25 -5
- package/dist/server/app-page-dispatch.js +122 -25
- package/dist/server/app-page-element-builder.d.ts +4 -2
- package/dist/server/app-page-element-builder.js +31 -21
- package/dist/server/app-page-execution.d.ts +8 -3
- package/dist/server/app-page-execution.js +55 -24
- package/dist/server/app-page-head.d.ts +1 -2
- package/dist/server/app-page-head.js +6 -6
- package/dist/server/app-page-method.d.ts +1 -2
- package/dist/server/app-page-method.js +0 -2
- package/dist/server/app-page-params.d.ts +1 -2
- package/dist/server/app-page-params.js +0 -2
- package/dist/server/app-page-probe.d.ts +79 -2
- package/dist/server/app-page-probe.js +89 -9
- package/dist/server/app-page-render-identity.d.ts +1 -2
- package/dist/server/app-page-render-identity.js +0 -2
- package/dist/server/app-page-render-observation.d.ts +1 -2
- package/dist/server/app-page-render-observation.js +0 -2
- package/dist/server/app-page-render.d.ts +15 -3
- package/dist/server/app-page-render.js +171 -12
- package/dist/server/app-page-request.d.ts +12 -9
- package/dist/server/app-page-request.js +12 -11
- package/dist/server/app-page-response.d.ts +4 -4
- package/dist/server/app-page-response.js +6 -4
- package/dist/server/app-page-route-wiring.d.ts +14 -3
- package/dist/server/app-page-route-wiring.js +65 -12
- 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 +1 -2
- package/dist/server/app-page-segment-state.js +1 -8
- package/dist/server/app-page-stream.d.ts +54 -9
- package/dist/server/app-page-stream.js +61 -10
- package/dist/server/app-pages-bridge.d.ts +41 -0
- package/dist/server/app-pages-bridge.js +54 -0
- package/dist/server/app-post-middleware-context.d.ts +1 -2
- package/dist/server/app-post-middleware-context.js +0 -2
- package/dist/server/app-ppr-fallback-shell.d.ts +21 -0
- package/dist/server/app-ppr-fallback-shell.js +82 -0
- package/dist/server/app-prerender-endpoints.d.ts +1 -2
- package/dist/server/app-prerender-endpoints.js +0 -2
- package/dist/server/app-prerender-static-params.d.ts +15 -2
- package/dist/server/app-prerender-static-params.js +44 -13
- package/dist/server/app-render-dependency.d.ts +3 -2
- package/dist/server/app-render-dependency.js +9 -3
- package/dist/server/app-request-context.d.ts +1 -2
- package/dist/server/app-request-context.js +0 -2
- package/dist/server/app-route-handler-cache.d.ts +2 -2
- package/dist/server/app-route-handler-cache.js +1 -2
- package/dist/server/app-route-handler-dispatch.d.ts +2 -2
- package/dist/server/app-route-handler-dispatch.js +2 -2
- package/dist/server/app-route-handler-execution.d.ts +2 -2
- package/dist/server/app-route-handler-execution.js +3 -4
- package/dist/server/app-route-handler-policy.d.ts +1 -2
- package/dist/server/app-route-handler-policy.js +0 -2
- package/dist/server/app-route-handler-response.d.ts +2 -3
- package/dist/server/app-route-handler-response.js +7 -6
- package/dist/server/app-route-handler-runtime.d.ts +2 -2
- package/dist/server/app-route-handler-runtime.js +3 -4
- package/dist/server/app-route-module-loader.d.ts +43 -0
- package/dist/server/app-route-module-loader.js +32 -0
- package/dist/server/app-router-entry.d.ts +1 -2
- package/dist/server/app-router-entry.js +2 -2
- package/dist/server/app-rsc-cache-busting.d.ts +10 -2
- package/dist/server/app-rsc-cache-busting.js +13 -4
- package/dist/server/app-rsc-embedded-chunks.d.ts +1 -2
- package/dist/server/app-rsc-embedded-chunks.js +0 -2
- package/dist/server/app-rsc-error-handler.d.ts +1 -2
- package/dist/server/app-rsc-error-handler.js +0 -2
- package/dist/server/app-rsc-errors.d.ts +1 -2
- package/dist/server/app-rsc-errors.js +0 -2
- package/dist/server/app-rsc-handler.d.ts +17 -2
- package/dist/server/app-rsc-handler.js +24 -15
- package/dist/server/app-rsc-render-mode.d.ts +1 -2
- package/dist/server/app-rsc-render-mode.js +0 -2
- package/dist/server/app-rsc-request-normalization.d.ts +4 -5
- package/dist/server/app-rsc-request-normalization.js +2 -4
- package/dist/server/app-rsc-response-finalizer.d.ts +1 -2
- package/dist/server/app-rsc-response-finalizer.js +2 -2
- package/dist/server/app-rsc-route-matching.d.ts +20 -2
- package/dist/server/app-rsc-route-matching.js +29 -6
- package/dist/server/app-segment-config.d.ts +4 -2
- package/dist/server/app-segment-config.js +8 -2
- package/dist/server/app-server-action-execution.d.ts +18 -3
- package/dist/server/app-server-action-execution.js +75 -18
- package/dist/server/app-ssr-entry.d.ts +11 -4
- package/dist/server/app-ssr-entry.js +47 -15
- package/dist/server/app-ssr-error-meta.d.ts +1 -2
- package/dist/server/app-ssr-error-meta.js +0 -2
- package/dist/server/app-ssr-stream.d.ts +1 -2
- package/dist/server/app-ssr-stream.js +31 -3
- package/dist/server/app-static-generation.d.ts +1 -2
- package/dist/server/app-static-generation.js +0 -2
- 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 +1 -2
- package/dist/server/artifact-compatibility.js +2 -6
- package/dist/server/cache-control.d.ts +15 -2
- package/dist/server/cache-control.js +21 -3
- package/dist/server/cache-headers.d.ts +1 -2
- package/dist/server/cache-headers.js +0 -2
- package/dist/server/cache-proof.d.ts +1 -2
- package/dist/server/cache-proof.js +0 -2
- package/dist/server/client-reuse-manifest.d.ts +3 -3
- package/dist/server/client-reuse-manifest.js +6 -10
- package/dist/server/client-trace-metadata.d.ts +1 -2
- package/dist/server/client-trace-metadata.js +0 -2
- package/dist/server/cookie-utils.d.ts +1 -2
- package/dist/server/cookie-utils.js +0 -2
- package/dist/server/csp.d.ts +1 -2
- package/dist/server/csp.js +0 -2
- package/dist/server/default-global-error-module.d.ts +1 -2
- package/dist/server/default-global-error-module.js +0 -2
- package/dist/server/default-not-found-module.d.ts +1 -2
- package/dist/server/default-not-found-module.js +0 -2
- package/dist/server/dev-error-overlay-store.d.ts +20 -4
- package/dist/server/dev-error-overlay-store.js +23 -4
- package/dist/server/dev-error-overlay.d.ts +39 -3
- package/dist/server/dev-error-overlay.js +952 -164
- 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 +1 -2
- package/dist/server/dev-lockfile.js +0 -2
- package/dist/server/dev-module-runner.d.ts +1 -2
- package/dist/server/dev-module-runner.js +0 -2
- package/dist/server/dev-origin-check.d.ts +1 -2
- package/dist/server/dev-origin-check.js +0 -2
- package/dist/server/dev-route-files.d.ts +1 -2
- package/dist/server/dev-route-files.js +0 -2
- package/dist/server/dev-server.d.ts +3 -4
- package/dist/server/dev-server.js +129 -49
- 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 +1 -2
- package/dist/server/document-initial-head.js +0 -2
- package/dist/server/edge-api-runtime.d.ts +1 -2
- package/dist/server/edge-api-runtime.js +0 -2
- package/dist/server/file-based-metadata.d.ts +1 -2
- package/dist/server/file-based-metadata.js +0 -2
- package/dist/server/headers.d.ts +3 -2
- package/dist/server/headers.js +3 -3
- package/dist/server/html.d.ts +1 -2
- package/dist/server/html.js +0 -2
- package/dist/server/http-error-responses.d.ts +1 -2
- package/dist/server/http-error-responses.js +0 -2
- package/dist/server/image-optimization.d.ts +1 -2
- package/dist/server/image-optimization.js +0 -2
- package/dist/server/implicit-tags.d.ts +1 -2
- package/dist/server/implicit-tags.js +0 -2
- package/dist/server/instrumentation-runtime.d.ts +1 -2
- package/dist/server/instrumentation-runtime.js +0 -2
- package/dist/server/instrumentation.d.ts +1 -2
- package/dist/server/instrumentation.js +0 -2
- package/dist/server/isr-cache.d.ts +46 -3
- package/dist/server/isr-cache.js +93 -24
- package/dist/server/metadata-route-build-data.d.ts +1 -2
- package/dist/server/metadata-route-build-data.js +0 -2
- package/dist/server/metadata-route-response.d.ts +1 -2
- package/dist/server/metadata-route-response.js +0 -2
- package/dist/server/metadata-routes.d.ts +1 -2
- package/dist/server/metadata-routes.js +0 -2
- package/dist/server/middleware-matcher.d.ts +1 -2
- package/dist/server/middleware-matcher.js +0 -2
- package/dist/server/middleware-request-headers.d.ts +1 -2
- package/dist/server/middleware-request-headers.js +0 -2
- package/dist/server/middleware-response-headers.d.ts +1 -2
- package/dist/server/middleware-response-headers.js +0 -2
- package/dist/server/middleware-runtime.d.ts +1 -2
- package/dist/server/middleware-runtime.js +14 -5
- package/dist/server/middleware.d.ts +2 -3
- package/dist/server/middleware.js +0 -2
- package/dist/server/navigation-planner.d.ts +16 -2
- package/dist/server/navigation-planner.js +6 -6
- package/dist/server/navigation-trace.d.ts +1 -2
- package/dist/server/navigation-trace.js +0 -2
- package/dist/server/next-error-digest.d.ts +1 -2
- package/dist/server/next-error-digest.js +0 -2
- package/dist/server/normalize-path.d.ts +1 -2
- package/dist/server/normalize-path.js +0 -2
- package/dist/server/pages-api-route.d.ts +1 -2
- package/dist/server/pages-api-route.js +1 -3
- package/dist/server/pages-asset-tags.d.ts +66 -0
- package/dist/server/pages-asset-tags.js +116 -0
- package/dist/server/pages-body-parser-config.d.ts +1 -2
- package/dist/server/pages-body-parser-config.js +0 -2
- package/dist/server/pages-data-route.d.ts +39 -2
- package/dist/server/pages-data-route.js +46 -3
- package/dist/server/pages-default-404.d.ts +1 -2
- package/dist/server/pages-default-404.js +0 -2
- package/dist/server/pages-document-initial-props.d.ts +1 -2
- package/dist/server/pages-document-initial-props.js +0 -2
- package/dist/server/pages-get-initial-props.d.ts +17 -0
- package/dist/server/pages-get-initial-props.js +50 -0
- package/dist/server/pages-i18n.d.ts +1 -2
- package/dist/server/pages-i18n.js +0 -2
- package/dist/server/pages-media-type.d.ts +1 -2
- package/dist/server/pages-media-type.js +1 -2
- package/dist/server/pages-node-compat.d.ts +11 -2
- package/dist/server/pages-node-compat.js +38 -3
- package/dist/server/pages-page-data.d.ts +17 -10
- package/dist/server/pages-page-data.js +79 -35
- package/dist/server/pages-page-handler.d.ts +97 -0
- package/dist/server/pages-page-handler.js +348 -0
- package/dist/server/pages-page-method.d.ts +1 -2
- package/dist/server/pages-page-method.js +0 -2
- package/dist/server/pages-page-response.d.ts +11 -3
- package/dist/server/pages-page-response.js +16 -5
- 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 +99 -0
- package/dist/server/pages-request-pipeline.js +209 -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 +1 -2
- package/dist/server/pages-serializable-props.js +0 -2
- package/dist/server/pregenerated-concrete-paths.d.ts +32 -0
- package/dist/server/pregenerated-concrete-paths.js +78 -0
- package/dist/server/prerender-route-params.d.ts +13 -3
- package/dist/server/prerender-route-params.js +30 -11
- package/dist/server/prerender-work-unit-setup.d.ts +1 -2
- package/dist/server/prerender-work-unit-setup.js +0 -2
- package/dist/server/prod-server.d.ts +8 -6
- package/dist/server/prod-server.js +101 -219
- package/dist/server/proxy-trust.d.ts +1 -2
- package/dist/server/proxy-trust.js +0 -2
- package/dist/server/request-log.d.ts +1 -2
- package/dist/server/request-log.js +0 -2
- package/dist/server/request-pipeline.d.ts +14 -2
- package/dist/server/request-pipeline.js +42 -3
- package/dist/server/rsc-stream-hints.d.ts +1 -2
- package/dist/server/rsc-stream-hints.js +0 -2
- package/dist/server/seed-cache.d.ts +6 -2
- package/dist/server/seed-cache.js +10 -8
- package/dist/server/server-action-not-found.d.ts +1 -2
- package/dist/server/server-action-not-found.js +0 -2
- package/dist/server/server-globals.d.ts +1 -2
- package/dist/server/server-globals.js +0 -2
- package/dist/server/skip-cache-proof.d.ts +1 -2
- package/dist/server/skip-cache-proof.js +0 -2
- package/dist/server/socket-error-backstop.d.ts +19 -2
- package/dist/server/socket-error-backstop.js +77 -6
- package/dist/server/static-file-cache.d.ts +1 -2
- package/dist/server/static-file-cache.js +0 -2
- package/dist/server/static-layout-client-reuse-proof.d.ts +1 -2
- package/dist/server/static-layout-client-reuse-proof.js +0 -2
- package/dist/server/streaming-metadata.d.ts +1 -2
- package/dist/server/streaming-metadata.js +0 -2
- package/dist/server/worker-utils.d.ts +1 -2
- package/dist/server/worker-utils.js +3 -6
- package/dist/shims/amp.d.ts +1 -2
- package/dist/shims/amp.js +0 -2
- package/dist/shims/app-router-scroll-state.d.ts +1 -2
- package/dist/shims/app-router-scroll-state.js +0 -2
- package/dist/shims/app-router-scroll.d.ts +3 -5
- package/dist/shims/app-router-scroll.js +22 -6
- package/dist/shims/app.d.ts +1 -2
- package/dist/shims/app.js +0 -2
- package/dist/shims/before-interactive-context.d.ts +1 -2
- package/dist/shims/before-interactive-context.js +0 -2
- package/dist/shims/cache-for-request.d.ts +1 -2
- package/dist/shims/cache-for-request.js +0 -2
- package/dist/shims/cache-runtime.d.ts +20 -5
- package/dist/shims/cache-runtime.js +66 -31
- package/dist/shims/cache.d.ts +48 -7
- package/dist/shims/cache.js +79 -20
- 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 +1 -2
- package/dist/shims/client-hook-error.js +0 -2
- package/dist/shims/client-locale.d.ts +1 -2
- package/dist/shims/client-locale.js +1 -3
- package/dist/shims/compat-router.d.ts +1 -2
- package/dist/shims/compat-router.js +0 -2
- package/dist/shims/config.d.ts +1 -2
- package/dist/shims/config.js +0 -2
- package/dist/shims/constants.d.ts +1 -2
- package/dist/shims/constants.js +0 -2
- package/dist/shims/default-global-error.d.ts +3 -4
- package/dist/shims/default-global-error.js +0 -2
- package/dist/shims/default-not-found.d.ts +1 -2
- package/dist/shims/default-not-found.js +0 -2
- package/dist/shims/document.d.ts +5 -7
- package/dist/shims/document.js +0 -2
- package/dist/shims/dynamic.d.ts +1 -2
- package/dist/shims/dynamic.js +0 -2
- package/dist/shims/error-boundary.d.ts +32 -18
- package/dist/shims/error-boundary.js +43 -3
- package/dist/shims/error.d.ts +1 -2
- package/dist/shims/error.js +0 -2
- package/dist/shims/fetch-cache.d.ts +14 -2
- package/dist/shims/fetch-cache.js +20 -5
- package/dist/shims/font-google-base.d.ts +1 -2
- package/dist/shims/font-google-base.js +1 -13
- package/dist/shims/font-local.d.ts +1 -2
- package/dist/shims/font-local.js +1 -15
- package/dist/shims/font-utils.d.ts +7 -2
- package/dist/shims/font-utils.js +13 -3
- package/dist/shims/form.d.ts +12 -5
- package/dist/shims/form.js +98 -21
- package/dist/shims/hash-scroll.d.ts +2 -2
- package/dist/shims/hash-scroll.js +3 -3
- package/dist/shims/head-state.d.ts +1 -2
- package/dist/shims/head-state.js +0 -2
- package/dist/shims/head.d.ts +1 -2
- package/dist/shims/head.js +0 -2
- package/dist/shims/headers.d.ts +9 -2
- package/dist/shims/headers.js +13 -3
- package/dist/shims/i18n-context.d.ts +1 -2
- package/dist/shims/i18n-context.js +0 -2
- package/dist/shims/i18n-state.d.ts +1 -2
- package/dist/shims/i18n-state.js +0 -2
- package/dist/shims/image-config.d.ts +1 -2
- package/dist/shims/image-config.js +0 -2
- package/dist/shims/image.d.ts +1 -2
- package/dist/shims/image.js +1 -3
- package/dist/shims/internal/als-registry.d.ts +1 -2
- package/dist/shims/internal/als-registry.js +0 -2
- package/dist/shims/internal/api-utils.d.ts +1 -2
- package/dist/shims/internal/app-route-detection.d.ts +1 -2
- package/dist/shims/internal/app-route-detection.js +0 -2
- package/dist/shims/internal/app-router-context.d.ts +1 -2
- package/dist/shims/internal/app-router-context.js +0 -2
- package/dist/shims/internal/cookie-serialize.d.ts +1 -2
- package/dist/shims/internal/cookie-serialize.js +0 -2
- 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 +1 -2
- package/dist/shims/internal/make-hanging-promise.js +0 -2
- package/dist/shims/internal/pages-data-fetch-dedup.d.ts +1 -2
- package/dist/shims/internal/pages-data-fetch-dedup.js +0 -2
- package/dist/shims/internal/pages-data-target.d.ts +1 -2
- package/dist/shims/internal/pages-data-target.js +0 -2
- package/dist/shims/internal/pages-data-url.d.ts +1 -2
- package/dist/shims/internal/pages-data-url.js +0 -2
- package/dist/shims/internal/parse-cookie-header.d.ts +1 -2
- package/dist/shims/internal/parse-cookie-header.js +0 -2
- 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 +2 -4
- package/dist/shims/internal/router-context.js +0 -2
- package/dist/shims/internal/utils.d.ts +2 -2
- package/dist/shims/internal/utils.js +0 -2
- package/dist/shims/internal/work-unit-async-storage.d.ts +1 -2
- package/dist/shims/internal/work-unit-async-storage.js +0 -2
- package/dist/shims/layout-segment-context.d.ts +2 -4
- package/dist/shims/layout-segment-context.js +0 -2
- package/dist/shims/legacy-image.d.ts +1 -2
- package/dist/shims/legacy-image.js +0 -2
- package/dist/shims/link-prefetch.d.ts +1 -2
- package/dist/shims/link-prefetch.js +0 -2
- package/dist/shims/link.d.ts +2 -2
- package/dist/shims/link.js +40 -20
- package/dist/shims/metadata.d.ts +4 -5
- package/dist/shims/metadata.js +1 -3
- package/dist/shims/navigation-state.d.ts +1 -2
- package/dist/shims/navigation-state.js +0 -2
- package/dist/shims/navigation.d.ts +25 -9
- package/dist/shims/navigation.js +251 -46
- package/dist/shims/navigation.react-server.d.ts +1 -2
- package/dist/shims/navigation.react-server.js +0 -2
- package/dist/shims/offline.d.ts +1 -2
- package/dist/shims/offline.js +0 -2
- package/dist/shims/og.d.ts +1 -2
- package/dist/shims/og.js +2 -4
- package/dist/shims/pages-router-runtime.d.ts +7 -2
- package/dist/shims/pages-router-runtime.js +11 -3
- package/dist/shims/ppr-fallback-shell.d.ts +29 -0
- package/dist/shims/ppr-fallback-shell.js +149 -0
- package/dist/shims/readonly-url-search-params.d.ts +1 -2
- package/dist/shims/readonly-url-search-params.js +0 -2
- package/dist/shims/request-context.d.ts +9 -5
- package/dist/shims/request-context.js +0 -2
- package/dist/shims/request-state-types.d.ts +1 -1
- package/dist/shims/root-params.d.ts +1 -2
- package/dist/shims/root-params.js +0 -2
- package/dist/shims/router-state.d.ts +2 -2
- package/dist/shims/router-state.js +2 -2
- package/dist/shims/router.d.ts +6 -4
- package/dist/shims/router.js +262 -40
- package/dist/shims/script-nonce-context.d.ts +1 -2
- package/dist/shims/script-nonce-context.js +0 -2
- package/dist/shims/script.d.ts +1 -2
- package/dist/shims/script.js +0 -2
- package/dist/shims/server.d.ts +1 -2
- package/dist/shims/server.js +0 -2
- package/dist/shims/slot.d.ts +11 -4
- package/dist/shims/slot.js +121 -9
- package/dist/shims/thenable-params.d.ts +2 -2
- package/dist/shims/thenable-params.js +107 -12
- package/dist/shims/unified-request-context.d.ts +1 -2
- package/dist/shims/unified-request-context.js +0 -2
- package/dist/shims/unrecognized-action-error.d.ts +1 -2
- package/dist/shims/unrecognized-action-error.js +0 -2
- package/dist/shims/url-safety.d.ts +1 -2
- package/dist/shims/url-safety.js +0 -2
- package/dist/shims/url-utils.d.ts +1 -2
- package/dist/shims/url-utils.js +0 -2
- package/dist/shims/use-merged-ref.d.ts +1 -2
- package/dist/shims/use-merged-ref.js +0 -2
- package/dist/shims/web-vitals.d.ts +1 -2
- package/dist/shims/web-vitals.js +0 -2
- package/dist/typegen.d.ts +1 -2
- package/dist/typegen.js +2 -9
- package/dist/utils/asset-prefix.d.ts +1 -2
- package/dist/utils/asset-prefix.js +0 -2
- package/dist/utils/base-path.d.ts +1 -2
- package/dist/utils/base-path.js +0 -2
- package/dist/utils/cache-control-metadata.d.ts +1 -4
- package/dist/utils/cache-control-metadata.js +1 -3
- package/dist/utils/client-build-manifest.d.ts +8 -2
- package/dist/utils/client-build-manifest.js +30 -7
- package/dist/utils/client-entry-manifest.d.ts +11 -0
- package/dist/utils/client-entry-manifest.js +29 -0
- package/dist/utils/compare.d.ts +4 -0
- package/dist/utils/compare.js +8 -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 +1 -2
- package/dist/utils/domain-locale.js +2 -4
- package/dist/utils/encode-cache-tag.d.ts +1 -2
- package/dist/utils/encode-cache-tag.js +0 -2
- package/dist/utils/error-cause.d.ts +1 -2
- package/dist/utils/error-cause.js +0 -2
- package/dist/utils/hash.d.ts +1 -2
- package/dist/utils/hash.js +0 -2
- package/dist/utils/html-limited-bots.d.ts +1 -2
- package/dist/utils/html-limited-bots.js +0 -2
- package/dist/utils/lazy-chunks.d.ts +1 -2
- package/dist/utils/lazy-chunks.js +0 -2
- package/dist/utils/manifest-paths.d.ts +8 -3
- package/dist/utils/manifest-paths.js +15 -3
- package/dist/utils/mdx-scan.d.ts +1 -2
- package/dist/utils/mdx-scan.js +0 -2
- package/dist/utils/navigation-signal.d.ts +1 -2
- package/dist/utils/navigation-signal.js +0 -2
- package/dist/utils/number.d.ts +4 -0
- package/dist/utils/number.js +6 -0
- package/dist/utils/path.d.ts +4 -2
- package/dist/utils/path.js +5 -3
- package/dist/utils/prerender-output-paths.d.ts +1 -2
- package/dist/utils/prerender-output-paths.js +0 -2
- package/dist/utils/project.d.ts +1 -2
- package/dist/utils/project.js +0 -2
- package/dist/utils/promise.d.ts +4 -0
- package/dist/utils/promise.js +6 -0
- package/dist/utils/public-routes.d.ts +1 -2
- package/dist/utils/public-routes.js +0 -2
- package/dist/utils/query.d.ts +1 -2
- package/dist/utils/query.js +0 -2
- package/dist/utils/record.d.ts +1 -2
- package/dist/utils/record.js +0 -2
- package/dist/utils/regex.d.ts +4 -0
- package/dist/utils/regex.js +6 -0
- package/dist/utils/safe-json-file.d.ts +1 -2
- package/dist/utils/safe-json-file.js +0 -2
- package/dist/utils/sorted-array.d.ts +1 -2
- package/dist/utils/sorted-array.js +0 -2
- package/dist/utils/text-stream.d.ts +1 -2
- package/dist/utils/text-stream.js +0 -2
- package/dist/utils/vinext-root.d.ts +1 -2
- package/dist/utils/vinext-root.js +0 -2
- package/dist/utils/vite-version.d.ts +1 -2
- package/dist/utils/vite-version.js +0 -2
- package/package.json +23 -6
- package/dist/build/clean-output.js.map +0 -1
- package/dist/build/client-build-config.js.map +0 -1
- package/dist/build/google-fonts/build-url.js.map +0 -1
- package/dist/build/google-fonts/fallback-metrics-data.js.map +0 -1
- package/dist/build/google-fonts/fallback-metrics.js.map +0 -1
- package/dist/build/google-fonts/font-data.js.map +0 -1
- package/dist/build/google-fonts/font-metadata.js.map +0 -1
- package/dist/build/google-fonts/get-axes.js.map +0 -1
- package/dist/build/google-fonts/sort-variants.js.map +0 -1
- package/dist/build/google-fonts/validate.js.map +0 -1
- package/dist/build/inline-css.js.map +0 -1
- package/dist/build/layout-classification.js.map +0 -1
- package/dist/build/nitro-route-rules.js.map +0 -1
- package/dist/build/precompress.js.map +0 -1
- package/dist/build/prerender.js.map +0 -1
- package/dist/build/report.js.map +0 -1
- package/dist/build/route-classification-injector.js.map +0 -1
- package/dist/build/route-classification-manifest.js.map +0 -1
- package/dist/build/run-prerender.js.map +0 -1
- package/dist/build/server-manifest.js.map +0 -1
- package/dist/build/ssr-manifest.js.map +0 -1
- package/dist/build/standalone.js.map +0 -1
- package/dist/build/static-export.js.map +0 -1
- package/dist/check.js.map +0 -1
- package/dist/cli-args.js.map +0 -1
- package/dist/cli.js.map +0 -1
- package/dist/client/instrumentation-client-inject.js.map +0 -1
- package/dist/client/instrumentation-client-state.js.map +0 -1
- package/dist/client/instrumentation-client.js.map +0 -1
- package/dist/client/navigation-runtime.js.map +0 -1
- package/dist/client/pages-router-link-navigation.js.map +0 -1
- package/dist/client/validate-module-path.js.map +0 -1
- package/dist/client/vinext-next-data.js.map +0 -1
- package/dist/client/window-next.js.map +0 -1
- package/dist/cloudflare/kv-cache-handler.js.map +0 -1
- package/dist/cloudflare/tpr.js.map +0 -1
- package/dist/config/config-matchers.js.map +0 -1
- package/dist/config/dotenv.js.map +0 -1
- package/dist/config/next-config.js.map +0 -1
- package/dist/config/tsconfig-paths.js.map +0 -1
- package/dist/deploy.js.map +0 -1
- package/dist/entries/app-browser-entry.js.map +0 -1
- package/dist/entries/app-rsc-entry.js.map +0 -1
- package/dist/entries/app-rsc-manifest.js.map +0 -1
- package/dist/entries/app-ssr-entry.js.map +0 -1
- package/dist/entries/pages-client-entry.js.map +0 -1
- package/dist/entries/pages-entry-helpers.js.map +0 -1
- package/dist/entries/pages-server-entry.js.map +0 -1
- package/dist/entries/runtime-entry-module.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/init.js.map +0 -1
- package/dist/plugins/async-hooks-stub.js.map +0 -1
- package/dist/plugins/client-reference-dedup.js.map +0 -1
- package/dist/plugins/css-data-url.js.map +0 -1
- package/dist/plugins/fonts.js.map +0 -1
- package/dist/plugins/import-meta-url.js.map +0 -1
- package/dist/plugins/instrumentation-client.js.map +0 -1
- package/dist/plugins/middleware-server-only.js.map +0 -1
- package/dist/plugins/og-assets.js.map +0 -1
- package/dist/plugins/optimize-imports.js.map +0 -1
- package/dist/plugins/postcss.js.map +0 -1
- package/dist/plugins/remove-console.js.map +0 -1
- package/dist/plugins/rsc-client-reference-loaders.js.map +0 -1
- package/dist/plugins/rsc-client-shim-excludes.js.map +0 -1
- package/dist/plugins/sass.js.map +0 -1
- package/dist/plugins/server-externals-manifest.js.map +0 -1
- package/dist/plugins/strip-server-exports.js.map +0 -1
- package/dist/routing/app-route-graph.js.map +0 -1
- package/dist/routing/app-router.js.map +0 -1
- package/dist/routing/file-matcher.js.map +0 -1
- package/dist/routing/pages-router.js.map +0 -1
- package/dist/routing/route-matching.js.map +0 -1
- package/dist/routing/route-pattern.js.map +0 -1
- package/dist/routing/route-trie.js.map +0 -1
- package/dist/routing/route-validation.js.map +0 -1
- package/dist/routing/utils.js.map +0 -1
- package/dist/server/api-handler.js.map +0 -1
- package/dist/server/app-browser-action-result.js.map +0 -1
- package/dist/server/app-browser-entry.js.map +0 -1
- package/dist/server/app-browser-error.js.map +0 -1
- package/dist/server/app-browser-hydration.js.map +0 -1
- package/dist/server/app-browser-interception-context.js.map +0 -1
- package/dist/server/app-browser-mpa-navigation.js.map +0 -1
- package/dist/server/app-browser-navigation-controller.js.map +0 -1
- package/dist/server/app-browser-popstate.js.map +0 -1
- package/dist/server/app-browser-rsc-redirect.js.map +0 -1
- package/dist/server/app-browser-state.js.map +0 -1
- package/dist/server/app-browser-stream.js.map +0 -1
- package/dist/server/app-browser-visible-commit.js.map +0 -1
- package/dist/server/app-client-reference-preloader.js.map +0 -1
- package/dist/server/app-elements-wire.js.map +0 -1
- package/dist/server/app-elements.js.map +0 -1
- package/dist/server/app-fallback-renderer.js.map +0 -1
- package/dist/server/app-history-state.js.map +0 -1
- package/dist/server/app-hook-warning-suppression.js.map +0 -1
- package/dist/server/app-inline-css-client.js.map +0 -1
- package/dist/server/app-interception-context-header.js.map +0 -1
- package/dist/server/app-layout-param-observation.js.map +0 -1
- package/dist/server/app-middleware.js.map +0 -1
- package/dist/server/app-mounted-slots-header.js.map +0 -1
- package/dist/server/app-optimistic-routing.js.map +0 -1
- package/dist/server/app-page-boundary-render.js.map +0 -1
- package/dist/server/app-page-boundary.js.map +0 -1
- package/dist/server/app-page-cache.js.map +0 -1
- package/dist/server/app-page-dispatch.js.map +0 -1
- package/dist/server/app-page-element-builder.js.map +0 -1
- package/dist/server/app-page-execution.js.map +0 -1
- package/dist/server/app-page-head.js.map +0 -1
- package/dist/server/app-page-method.js.map +0 -1
- package/dist/server/app-page-params.js.map +0 -1
- package/dist/server/app-page-probe.js.map +0 -1
- package/dist/server/app-page-render-identity.js.map +0 -1
- package/dist/server/app-page-render-observation.js.map +0 -1
- package/dist/server/app-page-render.js.map +0 -1
- package/dist/server/app-page-request.js.map +0 -1
- package/dist/server/app-page-response.js.map +0 -1
- package/dist/server/app-page-route-wiring.js.map +0 -1
- package/dist/server/app-page-segment-state.js.map +0 -1
- package/dist/server/app-page-stream.js.map +0 -1
- package/dist/server/app-post-middleware-context.js.map +0 -1
- package/dist/server/app-prerender-endpoints.js.map +0 -1
- package/dist/server/app-prerender-static-params.js.map +0 -1
- package/dist/server/app-render-dependency.js.map +0 -1
- package/dist/server/app-request-context.js.map +0 -1
- package/dist/server/app-route-handler-cache.js.map +0 -1
- package/dist/server/app-route-handler-dispatch.js.map +0 -1
- package/dist/server/app-route-handler-execution.js.map +0 -1
- package/dist/server/app-route-handler-policy.js.map +0 -1
- package/dist/server/app-route-handler-response.js.map +0 -1
- package/dist/server/app-route-handler-runtime.js.map +0 -1
- package/dist/server/app-router-entry.js.map +0 -1
- package/dist/server/app-rsc-cache-busting.js.map +0 -1
- package/dist/server/app-rsc-embedded-chunks.js.map +0 -1
- package/dist/server/app-rsc-error-handler.js.map +0 -1
- package/dist/server/app-rsc-errors.js.map +0 -1
- package/dist/server/app-rsc-handler.js.map +0 -1
- package/dist/server/app-rsc-render-mode.js.map +0 -1
- package/dist/server/app-rsc-request-normalization.js.map +0 -1
- package/dist/server/app-rsc-response-finalizer.js.map +0 -1
- package/dist/server/app-rsc-route-matching.js.map +0 -1
- package/dist/server/app-segment-config.js.map +0 -1
- package/dist/server/app-server-action-execution.js.map +0 -1
- package/dist/server/app-ssr-entry.js.map +0 -1
- package/dist/server/app-ssr-error-meta.js.map +0 -1
- package/dist/server/app-ssr-stream.js.map +0 -1
- package/dist/server/app-static-generation.js.map +0 -1
- package/dist/server/artifact-compatibility.js.map +0 -1
- package/dist/server/cache-control.js.map +0 -1
- package/dist/server/cache-headers.js.map +0 -1
- package/dist/server/cache-proof.js.map +0 -1
- package/dist/server/client-reuse-manifest.js.map +0 -1
- package/dist/server/client-trace-metadata.js.map +0 -1
- package/dist/server/cookie-utils.js.map +0 -1
- package/dist/server/csp.js.map +0 -1
- package/dist/server/default-global-error-module.js.map +0 -1
- package/dist/server/default-not-found-module.js.map +0 -1
- package/dist/server/dev-error-overlay-store.js.map +0 -1
- package/dist/server/dev-error-overlay.js.map +0 -1
- package/dist/server/dev-lockfile.js.map +0 -1
- package/dist/server/dev-module-runner.js.map +0 -1
- package/dist/server/dev-origin-check.js.map +0 -1
- package/dist/server/dev-route-files.js.map +0 -1
- package/dist/server/dev-server.js.map +0 -1
- package/dist/server/document-initial-head.js.map +0 -1
- package/dist/server/edge-api-runtime.js.map +0 -1
- package/dist/server/file-based-metadata.js.map +0 -1
- package/dist/server/headers.js.map +0 -1
- package/dist/server/html.js.map +0 -1
- package/dist/server/http-error-responses.js.map +0 -1
- package/dist/server/image-optimization.js.map +0 -1
- package/dist/server/implicit-tags.js.map +0 -1
- package/dist/server/instrumentation-runtime.js.map +0 -1
- package/dist/server/instrumentation.js.map +0 -1
- package/dist/server/isr-cache.js.map +0 -1
- package/dist/server/metadata-route-build-data.js.map +0 -1
- package/dist/server/metadata-route-response.js.map +0 -1
- package/dist/server/metadata-routes.js.map +0 -1
- package/dist/server/middleware-matcher.js.map +0 -1
- package/dist/server/middleware-request-headers.js.map +0 -1
- package/dist/server/middleware-response-headers.js.map +0 -1
- package/dist/server/middleware-runtime.js.map +0 -1
- package/dist/server/middleware.js.map +0 -1
- package/dist/server/navigation-planner.js.map +0 -1
- package/dist/server/navigation-trace.js.map +0 -1
- package/dist/server/next-error-digest.js.map +0 -1
- package/dist/server/normalize-path.js.map +0 -1
- package/dist/server/pages-api-route.js.map +0 -1
- package/dist/server/pages-body-parser-config.js.map +0 -1
- package/dist/server/pages-data-route.js.map +0 -1
- package/dist/server/pages-default-404.js.map +0 -1
- package/dist/server/pages-document-initial-props.js.map +0 -1
- package/dist/server/pages-i18n.js.map +0 -1
- package/dist/server/pages-media-type.js.map +0 -1
- package/dist/server/pages-node-compat.js.map +0 -1
- package/dist/server/pages-page-data.js.map +0 -1
- package/dist/server/pages-page-method.js.map +0 -1
- package/dist/server/pages-page-response.js.map +0 -1
- package/dist/server/pages-serializable-props.js.map +0 -1
- package/dist/server/prerender-route-params.js.map +0 -1
- package/dist/server/prerender-work-unit-setup.js.map +0 -1
- package/dist/server/prod-server.js.map +0 -1
- package/dist/server/proxy-trust.js.map +0 -1
- package/dist/server/request-log.js.map +0 -1
- package/dist/server/request-pipeline.js.map +0 -1
- package/dist/server/rsc-stream-hints.js.map +0 -1
- package/dist/server/seed-cache.js.map +0 -1
- package/dist/server/server-action-not-found.js.map +0 -1
- package/dist/server/server-globals.js.map +0 -1
- package/dist/server/skip-cache-proof.js.map +0 -1
- package/dist/server/socket-error-backstop.js.map +0 -1
- package/dist/server/static-file-cache.js.map +0 -1
- package/dist/server/static-layout-client-reuse-proof.js.map +0 -1
- package/dist/server/streaming-metadata.js.map +0 -1
- package/dist/server/worker-utils.js.map +0 -1
- package/dist/shims/amp.js.map +0 -1
- package/dist/shims/app-router-scroll-state.js.map +0 -1
- package/dist/shims/app-router-scroll.js.map +0 -1
- package/dist/shims/app.js.map +0 -1
- package/dist/shims/before-interactive-context.js.map +0 -1
- package/dist/shims/cache-for-request.js.map +0 -1
- package/dist/shims/cache-runtime.js.map +0 -1
- package/dist/shims/cache.js.map +0 -1
- package/dist/shims/client-hook-error.js.map +0 -1
- package/dist/shims/client-locale.js.map +0 -1
- package/dist/shims/compat-router.js.map +0 -1
- package/dist/shims/config.js.map +0 -1
- package/dist/shims/constants.js.map +0 -1
- package/dist/shims/default-global-error.js.map +0 -1
- package/dist/shims/default-not-found.js.map +0 -1
- package/dist/shims/document.js.map +0 -1
- package/dist/shims/dynamic.js.map +0 -1
- package/dist/shims/error-boundary.js.map +0 -1
- package/dist/shims/error.js.map +0 -1
- package/dist/shims/fetch-cache.js.map +0 -1
- package/dist/shims/font-google-base.js.map +0 -1
- package/dist/shims/font-local.js.map +0 -1
- package/dist/shims/font-utils.js.map +0 -1
- package/dist/shims/form.js.map +0 -1
- package/dist/shims/hash-scroll.js.map +0 -1
- package/dist/shims/head-state.js.map +0 -1
- package/dist/shims/head.js.map +0 -1
- package/dist/shims/headers.js.map +0 -1
- package/dist/shims/i18n-context.js.map +0 -1
- package/dist/shims/i18n-state.js.map +0 -1
- package/dist/shims/image-config.js.map +0 -1
- package/dist/shims/image.js.map +0 -1
- package/dist/shims/internal/als-registry.js.map +0 -1
- package/dist/shims/internal/app-route-detection.js.map +0 -1
- package/dist/shims/internal/app-router-context.js.map +0 -1
- package/dist/shims/internal/cookie-serialize.js.map +0 -1
- package/dist/shims/internal/make-hanging-promise.js.map +0 -1
- package/dist/shims/internal/pages-data-fetch-dedup.js.map +0 -1
- package/dist/shims/internal/pages-data-target.js.map +0 -1
- package/dist/shims/internal/pages-data-url.js.map +0 -1
- package/dist/shims/internal/parse-cookie-header.js.map +0 -1
- package/dist/shims/internal/router-context.js.map +0 -1
- package/dist/shims/internal/utils.js.map +0 -1
- package/dist/shims/internal/work-unit-async-storage.js.map +0 -1
- package/dist/shims/layout-segment-context.js.map +0 -1
- package/dist/shims/legacy-image.js.map +0 -1
- package/dist/shims/link-prefetch.js.map +0 -1
- package/dist/shims/link.js.map +0 -1
- package/dist/shims/metadata.js.map +0 -1
- package/dist/shims/navigation-state.js.map +0 -1
- package/dist/shims/navigation.js.map +0 -1
- package/dist/shims/navigation.react-server.js.map +0 -1
- package/dist/shims/offline.js.map +0 -1
- package/dist/shims/og.js.map +0 -1
- package/dist/shims/pages-router-runtime.js.map +0 -1
- package/dist/shims/readonly-url-search-params.js.map +0 -1
- package/dist/shims/request-context.js.map +0 -1
- package/dist/shims/root-params.js.map +0 -1
- package/dist/shims/router-state.js.map +0 -1
- package/dist/shims/router.js.map +0 -1
- package/dist/shims/script-nonce-context.js.map +0 -1
- package/dist/shims/script.js.map +0 -1
- package/dist/shims/server.js.map +0 -1
- package/dist/shims/slot.js.map +0 -1
- package/dist/shims/thenable-params.js.map +0 -1
- package/dist/shims/unified-request-context.js.map +0 -1
- package/dist/shims/unrecognized-action-error.js.map +0 -1
- package/dist/shims/url-safety.js.map +0 -1
- package/dist/shims/url-utils.js.map +0 -1
- package/dist/shims/use-merged-ref.js.map +0 -1
- package/dist/shims/web-vitals.js.map +0 -1
- package/dist/typegen.js.map +0 -1
- package/dist/utils/asset-prefix.js.map +0 -1
- package/dist/utils/base-path.js.map +0 -1
- package/dist/utils/cache-control-metadata.js.map +0 -1
- package/dist/utils/client-build-manifest.js.map +0 -1
- package/dist/utils/domain-locale.js.map +0 -1
- package/dist/utils/encode-cache-tag.js.map +0 -1
- package/dist/utils/error-cause.js.map +0 -1
- package/dist/utils/hash.js.map +0 -1
- package/dist/utils/html-limited-bots.js.map +0 -1
- package/dist/utils/lazy-chunks.js.map +0 -1
- package/dist/utils/manifest-paths.js.map +0 -1
- package/dist/utils/mdx-scan.js.map +0 -1
- package/dist/utils/navigation-signal.js.map +0 -1
- package/dist/utils/path.js.map +0 -1
- package/dist/utils/prerender-output-paths.js.map +0 -1
- package/dist/utils/project.js.map +0 -1
- package/dist/utils/public-routes.js.map +0 -1
- package/dist/utils/query.js.map +0 -1
- package/dist/utils/record.js.map +0 -1
- package/dist/utils/safe-json-file.js.map +0 -1
- package/dist/utils/sorted-array.js.map +0 -1
- package/dist/utils/text-stream.js.map +0 -1
- package/dist/utils/vinext-root.js.map +0 -1
- package/dist/utils/vite-version.js.map +0 -1
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { ValidFileMatcher } from "./file-matcher.js";
|
|
2
|
+
import { isInvisibleSegment } from "./utils.js";
|
|
2
3
|
|
|
3
4
|
//#region src/routing/app-route-graph.d.ts
|
|
4
5
|
type InterceptingRoute = {
|
|
@@ -23,6 +24,11 @@ type InterceptingRoute = {
|
|
|
23
24
|
pagePath: string; /** Absolute layout paths inside the intercepting route tree, outermost to innermost */
|
|
24
25
|
layoutPaths: string[]; /** Parameter names for dynamic segments */
|
|
25
26
|
params: string[];
|
|
27
|
+
/**
|
|
28
|
+
* Synthetic page-carrier slot id for sibling (slot-less) interception.
|
|
29
|
+
* Set only when the marker has no `@slot` wrapper; undefined for slot intercepts.
|
|
30
|
+
*/
|
|
31
|
+
slotId?: string;
|
|
26
32
|
};
|
|
27
33
|
type ParallelSlot = {
|
|
28
34
|
/** Graph-owned semantic slot identity. Required on AppRouteGraphParallelSlot. */id?: string; /** Stable slot identity (name + owning directory), used for route serialization keys. */
|
|
@@ -72,7 +78,13 @@ type AppRoute = {
|
|
|
72
78
|
routePath: string | null; /** Ordered list of layout files from root to leaf */
|
|
73
79
|
layouts: string[]; /** Ordered list of all discovered template files from root to leaf (not necessarily aligned 1:1 with layouts) */
|
|
74
80
|
templates: string[]; /** Parallel route slots (from @slot directories at the route's directory level) */
|
|
75
|
-
parallelSlots: ParallelSlot[];
|
|
81
|
+
parallelSlots: ParallelSlot[];
|
|
82
|
+
/**
|
|
83
|
+
* Interception markers not wrapped in an `@slot` directory.
|
|
84
|
+
* On soft-nav, the intercepting page replaces the entire page response.
|
|
85
|
+
* Empty array when there are no sibling-style interception markers.
|
|
86
|
+
*/
|
|
87
|
+
siblingIntercepts: InterceptingRoute[]; /** Loading component path */
|
|
76
88
|
loadingPath: string | null; /** Error component path (leaf directory only) */
|
|
77
89
|
errorPath: string | null;
|
|
78
90
|
/**
|
|
@@ -264,13 +276,6 @@ declare function buildAppRouteGraph(appDir: string, matcher: ValidFileMatcher):
|
|
|
264
276
|
routeManifest: RouteManifest;
|
|
265
277
|
}>;
|
|
266
278
|
declare function computeRootParamNames(routeSegments: readonly string[], layoutTreePositions: readonly number[]): string[];
|
|
267
|
-
/**
|
|
268
|
-
* Check whether a path segment is invisible in the URL (route groups, parallel slots, ".").
|
|
269
|
-
*
|
|
270
|
-
* Used by computeInterceptTarget, convertSegmentsToRouteParts, and
|
|
271
|
-
* hasRemainingVisibleSegments — keep this the single source of truth.
|
|
272
|
-
*/
|
|
273
|
-
declare function isInvisibleSegment(segment: string): boolean;
|
|
274
279
|
/**
|
|
275
280
|
* Convert filesystem path segments to URL route parts, skipping invisible segments
|
|
276
281
|
* (route groups, @slots, ".") and converting dynamic segment syntax to Express-style
|
|
@@ -305,5 +310,4 @@ declare function computeAppRouteStaticSiblings(allRoutes: readonly {
|
|
|
305
310
|
patternParts?: readonly string[] | null;
|
|
306
311
|
}): string[];
|
|
307
312
|
//#endregion
|
|
308
|
-
export { AppRoute,
|
|
309
|
-
//# sourceMappingURL=app-route-graph.d.ts.map
|
|
313
|
+
export { AppRoute, AppRouteGraphRoute, AppRouteSemanticIds, GraphVersion, RootBoundaryId, RouteManifest, RouteManifestInterception, RouteManifestRootBoundary, RouteManifestRoute, RouteManifestSlotBinding, StaticSegmentGraph, buildAppRouteGraph, computeAppRouteStaticSiblings, computeRootParamNames, convertSegmentsToRouteParts, isInvisibleSegment };
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { compareRoutes, decodeRouteSegment } from "./utils.js";
|
|
2
|
-
import { scanWithExtensions } from "./file-matcher.js";
|
|
1
|
+
import { compareRoutes, decodeRouteSegment, isInvisibleSegment } from "./utils.js";
|
|
2
|
+
import { findFileWithExts, scanWithExtensions } from "./file-matcher.js";
|
|
3
3
|
import { validateRoutePatterns } from "./route-validation.js";
|
|
4
|
+
import { compareStrings } from "../utils/compare.js";
|
|
4
5
|
import fs from "node:fs";
|
|
5
6
|
import path from "node:path";
|
|
6
7
|
import { createHash } from "node:crypto";
|
|
@@ -32,17 +33,17 @@ function createAppRouteGraphSlotId(slotName, ownerTreePath) {
|
|
|
32
33
|
function createAppRouteGraphDefaultId(slotId) {
|
|
33
34
|
return `default:${slotId}`;
|
|
34
35
|
}
|
|
36
|
+
const SIBLING_INTERCEPT_SLOT_NAME = "__vinext_sibling_intercept";
|
|
37
|
+
function createAppRouteGraphSiblingInterceptSlotId(sourcePattern) {
|
|
38
|
+
return createAppRouteGraphSlotId(SIBLING_INTERCEPT_SLOT_NAME, sourcePattern);
|
|
39
|
+
}
|
|
35
40
|
function createAppRouteGraphInterceptionId(slotId, sourcePattern, targetPattern) {
|
|
36
41
|
return `interception:${slotId}:${sourcePattern}->${targetPattern}`;
|
|
37
42
|
}
|
|
38
43
|
function createAppRouteGraphRootBoundaryId(treePath) {
|
|
39
44
|
return `root-boundary:${treePath}`;
|
|
40
45
|
}
|
|
41
|
-
|
|
42
|
-
if (left < right) return -1;
|
|
43
|
-
if (left > right) return 1;
|
|
44
|
-
return 0;
|
|
45
|
-
}
|
|
46
|
+
const compareStableStrings = compareStrings;
|
|
46
47
|
function sortedMapValues(map) {
|
|
47
48
|
return Array.from(map.entries()).sort(([left], [right]) => compareStableStrings(left, right)).map(([, value]) => value);
|
|
48
49
|
}
|
|
@@ -185,6 +186,21 @@ function createStaticSegmentGraph(routes) {
|
|
|
185
186
|
slot
|
|
186
187
|
});
|
|
187
188
|
}
|
|
189
|
+
for (const ir of route.siblingIntercepts) {
|
|
190
|
+
if (!ir.slotId) continue;
|
|
191
|
+
const id = createAppRouteGraphInterceptionId(ir.slotId, ir.sourceMatchPattern, ir.targetPattern);
|
|
192
|
+
interceptions.set(id, {
|
|
193
|
+
id,
|
|
194
|
+
sourcePattern: ir.sourceMatchPattern,
|
|
195
|
+
sourcePatternParts: splitRouteManifestPatternParts(ir.sourceMatchPattern),
|
|
196
|
+
targetPattern: ir.targetPattern,
|
|
197
|
+
targetPatternParts: splitRouteManifestPatternParts(ir.targetPattern),
|
|
198
|
+
slotId: ir.slotId,
|
|
199
|
+
ownerLayoutId: null,
|
|
200
|
+
interceptingRouteId: routeIdByPattern.get(ir.sourceMatchPattern) ?? null,
|
|
201
|
+
targetRouteId: routeIdByPattern.get(ir.targetPattern) ?? null
|
|
202
|
+
});
|
|
203
|
+
}
|
|
188
204
|
}
|
|
189
205
|
return {
|
|
190
206
|
routes: routeEntries,
|
|
@@ -356,9 +372,10 @@ async function buildAppRouteGraph(appDir, matcher) {
|
|
|
356
372
|
}
|
|
357
373
|
const slotSubRoutes = discoverSlotSubRoutes(routes, matcher, ghostParentRoutes);
|
|
358
374
|
routes.push(...slotSubRoutes);
|
|
375
|
+
discoverSiblingInterceptingRoutes(routes, appDir, matcher);
|
|
359
376
|
validatePageRouteConflicts(routes, appDir);
|
|
360
377
|
validateRoutePatterns(routes.map((route) => route.pattern));
|
|
361
|
-
validateRoutePatterns([...new Set(routes.flatMap((route) => route.parallelSlots.flatMap((slot) => slot.interceptingRoutes.map((intercept) => intercept.targetPattern))))]);
|
|
378
|
+
validateRoutePatterns([...new Set(routes.flatMap((route) => [...route.parallelSlots.flatMap((slot) => slot.interceptingRoutes.map((intercept) => intercept.targetPattern)), ...route.siblingIntercepts.map((intercept) => intercept.targetPattern)]))]);
|
|
362
379
|
routes.sort(compareRoutes);
|
|
363
380
|
return {
|
|
364
381
|
routes,
|
|
@@ -459,6 +476,8 @@ function discoverSlotSubRoutes(routes, matcher, ghostParents = []) {
|
|
|
459
476
|
if (subPathMap.size === 0) continue;
|
|
460
477
|
const childrenDefault = findFile(parentPageDir, "default", matcher);
|
|
461
478
|
if (parentRoute.pagePath && !childrenDefault) continue;
|
|
479
|
+
const childrenCatchAll = childrenDefault ? null : findCatchAllPage(parentPageDir, matcher);
|
|
480
|
+
const childrenFallback = childrenDefault ?? childrenCatchAll;
|
|
462
481
|
for (const { rawSegments, converted: convertedSubRoute, slotPages } of subPathMap.values()) {
|
|
463
482
|
const { urlSegments: urlParts, params: subParams, isDynamic: subIsDynamic } = convertedSubRoute;
|
|
464
483
|
const subUrlPath = urlParts.join("/");
|
|
@@ -482,7 +501,7 @@ function discoverSlotSubRoutes(routes, matcher, ghostParents = []) {
|
|
|
482
501
|
const newRoute = {
|
|
483
502
|
ids: createAppRouteSemanticIds({
|
|
484
503
|
pattern,
|
|
485
|
-
pagePath:
|
|
504
|
+
pagePath: childrenFallback,
|
|
486
505
|
routePath: null,
|
|
487
506
|
routeSegments: [...parentRoute.routeSegments, ...rawSegments],
|
|
488
507
|
layoutTreePositions: parentRoute.layoutTreePositions,
|
|
@@ -490,7 +509,7 @@ function discoverSlotSubRoutes(routes, matcher, ghostParents = []) {
|
|
|
490
509
|
slots: subSlots
|
|
491
510
|
}),
|
|
492
511
|
pattern,
|
|
493
|
-
pagePath:
|
|
512
|
+
pagePath: childrenFallback,
|
|
494
513
|
routePath: null,
|
|
495
514
|
layouts: parentRoute.layouts,
|
|
496
515
|
templates: parentRoute.templates,
|
|
@@ -510,7 +529,8 @@ function discoverSlotSubRoutes(routes, matcher, ghostParents = []) {
|
|
|
510
529
|
isDynamic: parentRoute.isDynamic || subIsDynamic,
|
|
511
530
|
params: [...parentRoute.params, ...subParams],
|
|
512
531
|
rootParamNames: parentRoute.rootParamNames,
|
|
513
|
-
patternParts: [...parentRoute.patternParts, ...urlParts]
|
|
532
|
+
patternParts: [...parentRoute.patternParts, ...urlParts],
|
|
533
|
+
siblingIntercepts: []
|
|
514
534
|
};
|
|
515
535
|
syntheticRoutes.push(newRoute);
|
|
516
536
|
routesByPattern.set(pattern, newRoute);
|
|
@@ -552,6 +572,34 @@ function findSlotSubPages(slotDir, matcher) {
|
|
|
552
572
|
return results;
|
|
553
573
|
}
|
|
554
574
|
/**
|
|
575
|
+
* Find a sibling catch-all page directly under `dir`, i.e. a `[...slug]` or
|
|
576
|
+
* `[[...slug]]` directory that contains a `page` file. Returns the absolute
|
|
577
|
+
* page path, or null when no catch-all sibling exists.
|
|
578
|
+
*
|
|
579
|
+
* Used as the children fallback for slot-only sub-routes (an explicit `@slot`
|
|
580
|
+
* sub-page with no corresponding children page or `default.tsx`): Next.js
|
|
581
|
+
* serves the children prop from the nearest catch-all, so `/baz` renders
|
|
582
|
+
* `[...catchAll]/page.tsx` for children while `@slot/baz/page.tsx` fills the
|
|
583
|
+
* slot. Optional catch-alls (`[[...slug]]`) qualify because they also match a
|
|
584
|
+
* single extra segment.
|
|
585
|
+
*/
|
|
586
|
+
function findCatchAllPage(dir, matcher) {
|
|
587
|
+
let entries;
|
|
588
|
+
try {
|
|
589
|
+
entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
590
|
+
} catch {
|
|
591
|
+
return null;
|
|
592
|
+
}
|
|
593
|
+
for (const entry of entries) {
|
|
594
|
+
if (!entry.isDirectory()) continue;
|
|
595
|
+
const name = entry.name;
|
|
596
|
+
if (!(name.startsWith("[...") && name.endsWith("]") || name.startsWith("[[...") && name.endsWith("]]"))) continue;
|
|
597
|
+
const page = findFile(path.join(dir, name), "page", matcher);
|
|
598
|
+
if (page) return page;
|
|
599
|
+
}
|
|
600
|
+
return null;
|
|
601
|
+
}
|
|
602
|
+
/**
|
|
555
603
|
* Convert a file path relative to app/ into an AppRoute.
|
|
556
604
|
*/
|
|
557
605
|
function fileToAppRoute(file, appDir, type, matcher) {
|
|
@@ -623,7 +671,8 @@ function directoryToAppRoute(dir, appDir, matcher, pagePath, routePath) {
|
|
|
623
671
|
isDynamic,
|
|
624
672
|
params,
|
|
625
673
|
rootParamNames: computeRootParamNames(segments, layoutTreePositions),
|
|
626
|
-
patternParts: urlSegments
|
|
674
|
+
patternParts: urlSegments,
|
|
675
|
+
siblingIntercepts: []
|
|
627
676
|
};
|
|
628
677
|
}
|
|
629
678
|
function dynamicParamNameFromSegment(segment) {
|
|
@@ -1065,6 +1114,86 @@ function discoverInterceptingRoutes(slotDir, routeDir, appDir, matcher) {
|
|
|
1065
1114
|
return results;
|
|
1066
1115
|
}
|
|
1067
1116
|
/**
|
|
1117
|
+
* Discover sibling-style interception markers — interception marker directories
|
|
1118
|
+
* (e.g. `(..)showcase`, `(..)(..)hoge`) that are NOT wrapped inside an `@slot`
|
|
1119
|
+
* directory. Mutates each matching route's `siblingIntercepts` array.
|
|
1120
|
+
*
|
|
1121
|
+
* Sibling intercepts use the same conventions and target-computation logic as
|
|
1122
|
+
* slot intercepts, but their intercepting page replaces the full page response
|
|
1123
|
+
* (not a slot) during soft navigation.
|
|
1124
|
+
*/
|
|
1125
|
+
function discoverSiblingInterceptingRoutes(routes, appDir, matcher) {
|
|
1126
|
+
const routesByDir = /* @__PURE__ */ new Map();
|
|
1127
|
+
for (const route of routes) {
|
|
1128
|
+
const filePath = route.pagePath ?? route.routePath;
|
|
1129
|
+
if (!filePath) continue;
|
|
1130
|
+
const routeDir = path.dirname(filePath);
|
|
1131
|
+
if (!routesByDir.has(routeDir)) routesByDir.set(routeDir, route);
|
|
1132
|
+
}
|
|
1133
|
+
function walk(dir) {
|
|
1134
|
+
let entries;
|
|
1135
|
+
try {
|
|
1136
|
+
entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
1137
|
+
} catch {
|
|
1138
|
+
return;
|
|
1139
|
+
}
|
|
1140
|
+
for (const entry of entries) {
|
|
1141
|
+
if (!entry.isDirectory()) continue;
|
|
1142
|
+
if (entry.name.startsWith("_")) continue;
|
|
1143
|
+
if (entry.name.startsWith("@")) continue;
|
|
1144
|
+
const childDir = path.join(dir, entry.name);
|
|
1145
|
+
const marker = matchInterceptConvention(entry.name);
|
|
1146
|
+
if (marker) {
|
|
1147
|
+
const restOfName = entry.name.slice(marker.prefix.length);
|
|
1148
|
+
const parentDir = dir;
|
|
1149
|
+
const results = [];
|
|
1150
|
+
collectInterceptingPages(childDir, childDir, marker.convention, restOfName, parentDir, appDir, parentDir, results, matcher);
|
|
1151
|
+
for (const ir of results) {
|
|
1152
|
+
ir.slotId = createAppRouteGraphSiblingInterceptSlotId(ir.sourceMatchPattern);
|
|
1153
|
+
const owner = findOwnerRouteForDir(parentDir, appDir, routes, routesByDir);
|
|
1154
|
+
if (owner) owner.siblingIntercepts.push(ir);
|
|
1155
|
+
}
|
|
1156
|
+
continue;
|
|
1157
|
+
}
|
|
1158
|
+
walk(childDir);
|
|
1159
|
+
}
|
|
1160
|
+
}
|
|
1161
|
+
walk(appDir);
|
|
1162
|
+
}
|
|
1163
|
+
/**
|
|
1164
|
+
* Find the best route to attach a sibling intercept to, given the directory
|
|
1165
|
+
* that contains the interception marker.
|
|
1166
|
+
*
|
|
1167
|
+
* 1. Exact hit: a route whose page/handler lives directly in `dir`.
|
|
1168
|
+
* 2. Subtree hit: shallowest route whose page lives anywhere under `dir`
|
|
1169
|
+
* (handles catch-all routes like `/templates/:catchAll+`).
|
|
1170
|
+
* 3. Ancestor walk: walk up the directory tree toward `appDir` looking for
|
|
1171
|
+
* any of the above. This handles the case where the marker directory has
|
|
1172
|
+
* no sibling pages at all (e.g. `deep/path/(...)target` with no
|
|
1173
|
+
* `deep/path/page.tsx`).
|
|
1174
|
+
*/
|
|
1175
|
+
function findOwnerRouteForDir(dir, appDir, routes, routesByDir) {
|
|
1176
|
+
let current = dir;
|
|
1177
|
+
while (true) {
|
|
1178
|
+
const exact = routesByDir.get(current);
|
|
1179
|
+
if (exact) return exact;
|
|
1180
|
+
const currentWithSep = current + path.sep;
|
|
1181
|
+
let best = null;
|
|
1182
|
+
for (const route of routes) {
|
|
1183
|
+
const filePath = route.pagePath ?? route.routePath;
|
|
1184
|
+
if (!filePath) continue;
|
|
1185
|
+
if (!filePath.startsWith(currentWithSep)) continue;
|
|
1186
|
+
if (!best || route.patternParts.length < best.patternParts.length) best = route;
|
|
1187
|
+
}
|
|
1188
|
+
if (best) return best;
|
|
1189
|
+
if (current === appDir) break;
|
|
1190
|
+
const parent = path.dirname(current);
|
|
1191
|
+
if (parent === current) break;
|
|
1192
|
+
current = parent;
|
|
1193
|
+
}
|
|
1194
|
+
return null;
|
|
1195
|
+
}
|
|
1196
|
+
/**
|
|
1068
1197
|
* Recursively scan a directory tree for page.tsx files that are inside
|
|
1069
1198
|
* intercepting route directories.
|
|
1070
1199
|
*/
|
|
@@ -1140,18 +1269,6 @@ function computeInterceptSourceMatchPattern(interceptParentDir, appDir) {
|
|
|
1140
1269
|
return "/" + urlSegments.join("/");
|
|
1141
1270
|
}
|
|
1142
1271
|
/**
|
|
1143
|
-
* Check whether a path segment is invisible in the URL (route groups, parallel slots, ".").
|
|
1144
|
-
*
|
|
1145
|
-
* Used by computeInterceptTarget, convertSegmentsToRouteParts, and
|
|
1146
|
-
* hasRemainingVisibleSegments — keep this the single source of truth.
|
|
1147
|
-
*/
|
|
1148
|
-
function isInvisibleSegment(segment) {
|
|
1149
|
-
if (segment === ".") return true;
|
|
1150
|
-
if (segment.startsWith("(") && segment.endsWith(")")) return true;
|
|
1151
|
-
if (segment.startsWith("@")) return true;
|
|
1152
|
-
return false;
|
|
1153
|
-
}
|
|
1154
|
-
/**
|
|
1155
1272
|
* Compute the target URL pattern for an intercepting route.
|
|
1156
1273
|
*
|
|
1157
1274
|
* Interception conventions (..), (..)(..)" climb by *visible route segments*
|
|
@@ -1167,9 +1284,11 @@ function computeInterceptTarget(convention, interceptSegment, currentDir, interc
|
|
|
1167
1284
|
const routeSegments = path.relative(appDir, routeDir).split(path.sep).filter(Boolean);
|
|
1168
1285
|
let baseParts;
|
|
1169
1286
|
switch (convention) {
|
|
1170
|
-
case ".":
|
|
1171
|
-
|
|
1287
|
+
case ".": {
|
|
1288
|
+
const interceptParentDir = path.dirname(interceptRoot);
|
|
1289
|
+
baseParts = path.relative(appDir, interceptParentDir).split(path.sep).filter(Boolean);
|
|
1172
1290
|
break;
|
|
1291
|
+
}
|
|
1173
1292
|
case "..":
|
|
1174
1293
|
case "../..": {
|
|
1175
1294
|
const levelsToClimb = convention === ".." ? 1 : 2;
|
|
@@ -1229,13 +1348,7 @@ function markerForInterceptionConvention(convention) {
|
|
|
1229
1348
|
* Find a file by name (without extension) in a directory.
|
|
1230
1349
|
* Checks configured pageExtensions.
|
|
1231
1350
|
*/
|
|
1232
|
-
|
|
1233
|
-
for (const ext of matcher.dottedExtensions) {
|
|
1234
|
-
const filePath = path.join(dir, name + ext);
|
|
1235
|
-
if (fs.existsSync(filePath)) return filePath;
|
|
1236
|
-
}
|
|
1237
|
-
return null;
|
|
1238
|
-
}
|
|
1351
|
+
const findFile = findFileWithExts;
|
|
1239
1352
|
/**
|
|
1240
1353
|
* Convert filesystem path segments to URL route parts, skipping invisible segments
|
|
1241
1354
|
* (route groups, @slots, ".") and converting dynamic segment syntax to Express-style
|
|
@@ -1334,5 +1447,3 @@ function computeAppRouteStaticSiblings(allRoutes, matchedRoute) {
|
|
|
1334
1447
|
}
|
|
1335
1448
|
//#endregion
|
|
1336
1449
|
export { buildAppRouteGraph, computeAppRouteStaticSiblings, computeRootParamNames, convertSegmentsToRouteParts, isInvisibleSegment };
|
|
1337
|
-
|
|
1338
|
-
//# sourceMappingURL=app-route-graph.js.map
|
|
@@ -27,5 +27,4 @@ declare function matchAppRoute(url: string, routes: AppRoute[]): {
|
|
|
27
27
|
params: Record<string, string | string[]>;
|
|
28
28
|
} | null;
|
|
29
29
|
//#endregion
|
|
30
|
-
export { type AppRoute, appRouteGraph, appRouter, computeAppRouteStaticSiblings, computeRootParamNames, convertSegmentsToRouteParts, invalidateAppRouteCache, matchAppRoute };
|
|
31
|
-
//# sourceMappingURL=app-router.d.ts.map
|
|
30
|
+
export { type AppRoute, appRouteGraph, appRouter, computeAppRouteStaticSiblings, computeRootParamNames, convertSegmentsToRouteParts, invalidateAppRouteCache, matchAppRoute };
|
|
@@ -18,6 +18,11 @@ type ValidFileMatcher = {
|
|
|
18
18
|
declare function createValidFileMatcher(pageExtensions?: readonly string[] | null): ValidFileMatcher;
|
|
19
19
|
/** Check if a file exists with any configured page extension. */
|
|
20
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;
|
|
21
26
|
/**
|
|
22
27
|
* Vite's default `resolve.extensions` covers `.tsx/.ts/.jsx/.js/.json` (and
|
|
23
28
|
* `.mjs/.mts`). When the user configures `pageExtensions` with values Vite
|
|
@@ -43,5 +48,4 @@ declare function buildViteResolveExtensions(pageExtensions?: readonly string[] |
|
|
|
43
48
|
*/
|
|
44
49
|
declare function scanWithExtensions(stem: string, cwd: string, extensions: readonly string[], exclude?: (name: string) => boolean): AsyncGenerator<string>;
|
|
45
50
|
//#endregion
|
|
46
|
-
export { ValidFileMatcher, buildViteResolveExtensions, createValidFileMatcher, findFileWithExtensions, normalizePageExtensions, scanWithExtensions };
|
|
47
|
-
//# sourceMappingURL=file-matcher.d.ts.map
|
|
51
|
+
export { ValidFileMatcher, buildViteResolveExtensions, createValidFileMatcher, findFileWithExtensions, findFileWithExts, normalizePageExtensions, scanWithExtensions };
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
import { escapeRegExp } from "../utils/regex.js";
|
|
1
2
|
import { existsSync } from "node:fs";
|
|
3
|
+
import path from "node:path";
|
|
2
4
|
import { glob } from "node:fs/promises";
|
|
3
5
|
//#region src/routing/file-matcher.ts
|
|
4
6
|
const DEFAULT_PAGE_EXTENSIONS = [
|
|
@@ -7,9 +9,6 @@ const DEFAULT_PAGE_EXTENSIONS = [
|
|
|
7
9
|
"jsx",
|
|
8
10
|
"js"
|
|
9
11
|
];
|
|
10
|
-
function escapeRegex(value) {
|
|
11
|
-
return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
12
|
-
}
|
|
13
12
|
function normalizePageExtensions(pageExtensions) {
|
|
14
13
|
if (!Array.isArray(pageExtensions) || pageExtensions.length === 0) return [...DEFAULT_PAGE_EXTENSIONS];
|
|
15
14
|
const filtered = pageExtensions.filter((ext) => typeof ext === "string").map((ext) => ext.trim().replace(/^\.+/, "")).filter((ext) => ext.length > 0);
|
|
@@ -26,7 +25,7 @@ function buildExtensionGlob(stem, extensions) {
|
|
|
26
25
|
function createValidFileMatcher(pageExtensions) {
|
|
27
26
|
const extensions = normalizePageExtensions(pageExtensions);
|
|
28
27
|
const dottedExtensions = extensions.map((ext) => `.${ext}`);
|
|
29
|
-
const extPattern = `(?:${extensions.map((ext) =>
|
|
28
|
+
const extPattern = `(?:${extensions.map((ext) => escapeRegExp(ext)).join("|")})`;
|
|
30
29
|
const extensionRegex = new RegExp(`\\.${extPattern}$`);
|
|
31
30
|
const createLeafPattern = (fileNames) => {
|
|
32
31
|
const names = fileNames.length === 1 ? fileNames[0] : `(${fileNames.join("|")})`;
|
|
@@ -65,6 +64,17 @@ function findFileWithExtensions(basePath, matcher) {
|
|
|
65
64
|
return matcher.dottedExtensions.some((ext) => existsSync(basePath + ext));
|
|
66
65
|
}
|
|
67
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.join(dir, name + ext);
|
|
73
|
+
if (existsSync(filePath)) return filePath;
|
|
74
|
+
}
|
|
75
|
+
return null;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
68
78
|
* Vite's default `resolve.extensions` covers `.tsx/.ts/.jsx/.js/.json` (and
|
|
69
79
|
* `.mjs/.mts`). When the user configures `pageExtensions` with values Vite
|
|
70
80
|
* does not know about — e.g. `["platform.tsx", "tsx", "mdx"]` from the
|
|
@@ -113,6 +123,4 @@ async function* scanWithExtensions(stem, cwd, extensions, exclude) {
|
|
|
113
123
|
})) yield file;
|
|
114
124
|
}
|
|
115
125
|
//#endregion
|
|
116
|
-
export { buildViteResolveExtensions, createValidFileMatcher, findFileWithExtensions, normalizePageExtensions, scanWithExtensions };
|
|
117
|
-
|
|
118
|
-
//# sourceMappingURL=file-matcher.js.map
|
|
126
|
+
export { buildViteResolveExtensions, createValidFileMatcher, findFileWithExtensions, findFileWithExts, normalizePageExtensions, scanWithExtensions };
|
|
@@ -45,5 +45,4 @@ declare function matchRoute(url: string, routes: Route[]): {
|
|
|
45
45
|
*/
|
|
46
46
|
declare function apiRouter(pagesDir: string, pageExtensions?: readonly string[], matcher?: ValidFileMatcher): Promise<Route[]>;
|
|
47
47
|
//#endregion
|
|
48
|
-
export { Route, apiRouter, invalidateRouteCache, matchRoute, pagesRouter, patternToNextFormat };
|
|
49
|
-
//# sourceMappingURL=pages-router.d.ts.map
|
|
48
|
+
export { Route, apiRouter, invalidateRouteCache, matchRoute, pagesRouter, patternToNextFormat };
|
|
@@ -24,5 +24,4 @@ declare function matchRouteWithTrie<R extends {
|
|
|
24
24
|
params: Record<string, string | string[]>;
|
|
25
25
|
} | null;
|
|
26
26
|
//#endregion
|
|
27
|
-
export { createRouteTrieCache, matchRouteWithTrie };
|
|
28
|
-
//# sourceMappingURL=route-matching.d.ts.map
|
|
27
|
+
export { createRouteTrieCache, matchRouteWithTrie };
|
|
@@ -5,6 +5,7 @@ declare function routePattern(pathname: string): string;
|
|
|
5
5
|
declare function fillRoutePatternSegments(pathname: string, params: RoutePatternParams): string | null;
|
|
6
6
|
declare function matchRoutePattern(urlParts: readonly string[], patternParts: readonly string[]): RoutePatternParams | null;
|
|
7
7
|
declare function matchRoutePatternPrefix(pathParts: readonly string[], patternParts: readonly string[]): boolean;
|
|
8
|
+
declare function matchRoutePatternWithOptionalDynamicSegments(pathParts: readonly string[], patternParts: readonly string[]): boolean;
|
|
8
9
|
/**
|
|
9
10
|
* A single entry from `getStaticPaths().paths`.
|
|
10
11
|
*
|
|
@@ -60,5 +61,4 @@ declare function normalizeStaticPathname(pathname: string): string;
|
|
|
60
61
|
*/
|
|
61
62
|
declare function normalizeStaticPathsEntry(entry: StaticPathsEntry, routePattern: string): NormalizedStaticPathsEntry;
|
|
62
63
|
//#endregion
|
|
63
|
-
export { RoutePatternParams, StaticPathsEntry, fillRoutePatternSegments, matchRoutePattern, matchRoutePatternPrefix, normalizeStaticPathname, normalizeStaticPathsEntry, routePattern, routePatternParts };
|
|
64
|
-
//# sourceMappingURL=route-pattern.d.ts.map
|
|
64
|
+
export { RoutePatternParams, StaticPathsEntry, fillRoutePatternSegments, matchRoutePattern, matchRoutePatternPrefix, matchRoutePatternWithOptionalDynamicSegments, normalizeStaticPathname, normalizeStaticPathsEntry, routePattern, routePatternParts };
|
|
@@ -104,6 +104,21 @@ function matchRoutePatternPrefix(pathParts, patternParts) {
|
|
|
104
104
|
}
|
|
105
105
|
return true;
|
|
106
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
|
+
}
|
|
107
122
|
/**
|
|
108
123
|
* Strip query string and a single trailing slash from a pathname.
|
|
109
124
|
*
|
|
@@ -147,6 +162,4 @@ function normalizeStaticPathsEntry(entry, routePattern) {
|
|
|
147
162
|
return { params };
|
|
148
163
|
}
|
|
149
164
|
//#endregion
|
|
150
|
-
export { fillRoutePatternSegments, matchRoutePattern, matchRoutePatternPrefix, normalizeStaticPathname, normalizeStaticPathsEntry, routePattern, routePatternParts };
|
|
151
|
-
|
|
152
|
-
//# sourceMappingURL=route-pattern.js.map
|
|
165
|
+
export { fillRoutePatternSegments, matchRoutePattern, matchRoutePatternPrefix, matchRoutePatternWithOptionalDynamicSegments, normalizeStaticPathname, normalizeStaticPathsEntry, routePattern, routePatternParts };
|
|
@@ -64,5 +64,4 @@ declare function trieMatch<R>(root: TrieNode<R>, urlParts: string[]): {
|
|
|
64
64
|
params: Record<string, string | string[]>;
|
|
65
65
|
} | null;
|
|
66
66
|
//#endregion
|
|
67
|
-
export { TrieNode, buildRouteTrie, trieMatch };
|
|
68
|
-
//# sourceMappingURL=route-trie.d.ts.map
|
|
67
|
+
export { TrieNode, buildRouteTrie, trieMatch };
|
|
@@ -7,5 +7,4 @@
|
|
|
7
7
|
declare function patternToNextFormat(pattern: string): string;
|
|
8
8
|
declare function validateRoutePatterns(patterns: readonly string[]): void;
|
|
9
9
|
//#endregion
|
|
10
|
-
export { patternToNextFormat, validateRoutePatterns };
|
|
11
|
-
//# sourceMappingURL=route-validation.d.ts.map
|
|
10
|
+
export { patternToNextFormat, validateRoutePatterns };
|
package/dist/routing/utils.d.ts
CHANGED
|
@@ -41,6 +41,48 @@ declare function buildParams(entries: Array<[string, string | string[]]>): Recor
|
|
|
41
41
|
* strict normalization layer rejects them at the request boundary).
|
|
42
42
|
*/
|
|
43
43
|
declare function decodeMatchedParams(params: Record<string, string | string[]>): void;
|
|
44
|
+
/**
|
|
45
|
+
* Check whether a path segment is invisible in the URL (route groups, parallel
|
|
46
|
+
* slots, "."). Single source of truth shared by the route graph (Node) and
|
|
47
|
+
* browser-side bfcache identity logic. Lives in this browser-safe utils module
|
|
48
|
+
* so importing it does not drag node:path/node:fs into the client bundle.
|
|
49
|
+
*/
|
|
50
|
+
declare function isInvisibleSegment(segment: string): boolean;
|
|
51
|
+
/** Split a pathname into its non-empty segments without decoding. */
|
|
52
|
+
declare function splitPathSegments(pathname: string): string[];
|
|
53
|
+
/**
|
|
54
|
+
* Catch-all filesystem segment, e.g. `[...slug]`. Browser-safe predicate shared
|
|
55
|
+
* with the route graph's segment parsing (dynamicParamNameFromSegment) so the
|
|
56
|
+
* bracket conventions live in one place. The length guard rejects empty names
|
|
57
|
+
* (`[...]`).
|
|
58
|
+
*/
|
|
59
|
+
declare function isCatchAllSegment(segment: string): boolean;
|
|
60
|
+
/**
|
|
61
|
+
* Optional-catch-all filesystem segment, e.g. `[[...slug]]`. Unlike a catch-all,
|
|
62
|
+
* this matches zero or more URL segments.
|
|
63
|
+
*/
|
|
64
|
+
declare function isOptionalCatchAllSegment(segment: string): boolean;
|
|
65
|
+
/**
|
|
66
|
+
* Count how many pathname segments a tree path's *visible* segments consume,
|
|
67
|
+
* given the total number of pathname segments available.
|
|
68
|
+
*
|
|
69
|
+
* This is the minimal pure slice of the canonical filesystem-segment →
|
|
70
|
+
* URL-segment mapping in `app-route-graph.ts` (`convertSegmentsToRouteParts`),
|
|
71
|
+
* extracted here so browser-side bfcache identity logic can share it without
|
|
72
|
+
* importing the Node-bound route graph module. `convertSegmentsToRouteParts`
|
|
73
|
+
* remains the source of truth for how each segment kind maps to a URL part.
|
|
74
|
+
*
|
|
75
|
+
* Each ordinary visible segment (static or `[x]`) consumes exactly one pathname
|
|
76
|
+
* segment. A catch-all (`[...x]`) is terminal and consumes every remaining
|
|
77
|
+
* pathname segment. An optional-catch-all (`[[...x]]`) is also terminal but may
|
|
78
|
+
* match zero segments, so it consumes only the remaining pathname segments
|
|
79
|
+
* (which is zero once preceding segments have already consumed the pathname) —
|
|
80
|
+
* never more than are actually present.
|
|
81
|
+
*
|
|
82
|
+
* @param visibleTreePathSegments URL-visible tree-path segments (callers must
|
|
83
|
+
* pre-filter invisible segments via `isInvisibleSegment`).
|
|
84
|
+
* @param pathnameSegmentCount Total number of pathname segments available.
|
|
85
|
+
*/
|
|
86
|
+
declare function countConsumedPathnameSegments(visibleTreePathSegments: readonly string[], pathnameSegmentCount: number): number;
|
|
44
87
|
//#endregion
|
|
45
|
-
export { buildParams, compareRoutes, decodeMatchedParams, decodeRouteSegment, normalizePathnameForRouteMatch, normalizePathnameForRouteMatchStrict, splitPathnameForRouteMatch };
|
|
46
|
-
//# sourceMappingURL=utils.d.ts.map
|
|
88
|
+
export { buildParams, compareRoutes, countConsumedPathnameSegments, decodeMatchedParams, decodeRouteSegment, isCatchAllSegment, isInvisibleSegment, isOptionalCatchAllSegment, normalizePathnameForRouteMatch, normalizePathnameForRouteMatchStrict, splitPathSegments, splitPathnameForRouteMatch };
|
package/dist/routing/utils.js
CHANGED
|
@@ -125,7 +125,66 @@ function decodeMatchedParams(params) {
|
|
|
125
125
|
else params[key] = decodeMatchedParam(value);
|
|
126
126
|
}
|
|
127
127
|
}
|
|
128
|
+
/**
|
|
129
|
+
* Check whether a path segment is invisible in the URL (route groups, parallel
|
|
130
|
+
* slots, "."). Single source of truth shared by the route graph (Node) and
|
|
131
|
+
* browser-side bfcache identity logic. Lives in this browser-safe utils module
|
|
132
|
+
* so importing it does not drag node:path/node:fs into the client bundle.
|
|
133
|
+
*/
|
|
134
|
+
function isInvisibleSegment(segment) {
|
|
135
|
+
if (segment === ".") return true;
|
|
136
|
+
if (segment.startsWith("(") && segment.endsWith(")")) return true;
|
|
137
|
+
if (segment.startsWith("@")) return true;
|
|
138
|
+
return false;
|
|
139
|
+
}
|
|
140
|
+
/** Split a pathname into its non-empty segments without decoding. */
|
|
141
|
+
function splitPathSegments(pathname) {
|
|
142
|
+
return pathname.split("/").filter(Boolean);
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Catch-all filesystem segment, e.g. `[...slug]`. Browser-safe predicate shared
|
|
146
|
+
* with the route graph's segment parsing (dynamicParamNameFromSegment) so the
|
|
147
|
+
* bracket conventions live in one place. The length guard rejects empty names
|
|
148
|
+
* (`[...]`).
|
|
149
|
+
*/
|
|
150
|
+
function isCatchAllSegment(segment) {
|
|
151
|
+
return segment.startsWith("[...") && segment.endsWith("]") && segment.length > 5;
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Optional-catch-all filesystem segment, e.g. `[[...slug]]`. Unlike a catch-all,
|
|
155
|
+
* this matches zero or more URL segments.
|
|
156
|
+
*/
|
|
157
|
+
function isOptionalCatchAllSegment(segment) {
|
|
158
|
+
return segment.startsWith("[[...") && segment.endsWith("]]") && segment.length > 7;
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Count how many pathname segments a tree path's *visible* segments consume,
|
|
162
|
+
* given the total number of pathname segments available.
|
|
163
|
+
*
|
|
164
|
+
* This is the minimal pure slice of the canonical filesystem-segment →
|
|
165
|
+
* URL-segment mapping in `app-route-graph.ts` (`convertSegmentsToRouteParts`),
|
|
166
|
+
* extracted here so browser-side bfcache identity logic can share it without
|
|
167
|
+
* importing the Node-bound route graph module. `convertSegmentsToRouteParts`
|
|
168
|
+
* remains the source of truth for how each segment kind maps to a URL part.
|
|
169
|
+
*
|
|
170
|
+
* Each ordinary visible segment (static or `[x]`) consumes exactly one pathname
|
|
171
|
+
* segment. A catch-all (`[...x]`) is terminal and consumes every remaining
|
|
172
|
+
* pathname segment. An optional-catch-all (`[[...x]]`) is also terminal but may
|
|
173
|
+
* match zero segments, so it consumes only the remaining pathname segments
|
|
174
|
+
* (which is zero once preceding segments have already consumed the pathname) —
|
|
175
|
+
* never more than are actually present.
|
|
176
|
+
*
|
|
177
|
+
* @param visibleTreePathSegments URL-visible tree-path segments (callers must
|
|
178
|
+
* pre-filter invisible segments via `isInvisibleSegment`).
|
|
179
|
+
* @param pathnameSegmentCount Total number of pathname segments available.
|
|
180
|
+
*/
|
|
181
|
+
function countConsumedPathnameSegments(visibleTreePathSegments, pathnameSegmentCount) {
|
|
182
|
+
let consumed = 0;
|
|
183
|
+
for (const segment of visibleTreePathSegments) {
|
|
184
|
+
if (isCatchAllSegment(segment) || isOptionalCatchAllSegment(segment)) return Math.max(consumed, pathnameSegmentCount);
|
|
185
|
+
consumed += 1;
|
|
186
|
+
}
|
|
187
|
+
return consumed;
|
|
188
|
+
}
|
|
128
189
|
//#endregion
|
|
129
|
-
export { buildParams, compareRoutes, decodeMatchedParams, decodeRouteSegment, normalizePathnameForRouteMatch, normalizePathnameForRouteMatchStrict, splitPathnameForRouteMatch };
|
|
130
|
-
|
|
131
|
-
//# sourceMappingURL=utils.js.map
|
|
190
|
+
export { buildParams, compareRoutes, countConsumedPathnameSegments, decodeMatchedParams, decodeRouteSegment, isCatchAllSegment, isInvisibleSegment, isOptionalCatchAllSegment, normalizePathnameForRouteMatch, normalizePathnameForRouteMatchStrict, splitPathSegments, splitPathnameForRouteMatch };
|
|
@@ -9,5 +9,4 @@ import { IncomingMessage, ServerResponse } from "node:http";
|
|
|
9
9
|
*/
|
|
10
10
|
declare function handleApiRoute(runner: ModuleImporter, req: IncomingMessage, res: ServerResponse, url: string, apiRoutes: Route[]): Promise<boolean>;
|
|
11
11
|
//#endregion
|
|
12
|
-
export { handleApiRoute };
|
|
13
|
-
//# sourceMappingURL=api-handler.d.ts.map
|
|
12
|
+
export { handleApiRoute };
|