@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,39 @@
|
|
|
1
|
+
//#region src/server/app-page-params.ts
|
|
2
|
+
function getAppPageSegmentParamName(segment) {
|
|
3
|
+
if (segment.startsWith("[[...") && segment.endsWith("]]") && segment.length > 7) return segment.slice(5, -2);
|
|
4
|
+
if (segment.startsWith("[...") && segment.endsWith("]") && segment.length > 5) return segment.slice(4, -1);
|
|
5
|
+
if (segment.startsWith("[") && segment.endsWith("]") && !segment.includes(".") && segment.length > 2) return segment.slice(1, -1);
|
|
6
|
+
return null;
|
|
7
|
+
}
|
|
8
|
+
function isEmptyOptionalCatchAll(segment, paramValue) {
|
|
9
|
+
return segment.startsWith("[[...") && Array.isArray(paramValue) && paramValue.length === 0;
|
|
10
|
+
}
|
|
11
|
+
function resolveAppPageSegmentParamScopeKeys(routeSegments, treePosition) {
|
|
12
|
+
const paramNames = [];
|
|
13
|
+
const seen = /* @__PURE__ */ new Set();
|
|
14
|
+
const segments = routeSegments ?? [];
|
|
15
|
+
const end = Math.min(Math.max(treePosition, 0), segments.length);
|
|
16
|
+
for (let index = 0; index < end; index++) {
|
|
17
|
+
const paramName = getAppPageSegmentParamName(segments[index]);
|
|
18
|
+
if (!paramName || seen.has(paramName)) continue;
|
|
19
|
+
seen.add(paramName);
|
|
20
|
+
paramNames.push(paramName);
|
|
21
|
+
}
|
|
22
|
+
return paramNames;
|
|
23
|
+
}
|
|
24
|
+
function resolveAppPageSegmentParams(routeSegments, treePosition, matchedParams) {
|
|
25
|
+
const segmentParams = {};
|
|
26
|
+
const segments = routeSegments ?? [];
|
|
27
|
+
const end = Math.min(Math.max(treePosition, 0), segments.length);
|
|
28
|
+
for (let index = 0; index < end; index++) {
|
|
29
|
+
const segment = segments[index];
|
|
30
|
+
const paramName = getAppPageSegmentParamName(segment);
|
|
31
|
+
if (!paramName) continue;
|
|
32
|
+
const paramValue = matchedParams[paramName];
|
|
33
|
+
if (paramValue === void 0 || isEmptyOptionalCatchAll(segment, paramValue)) continue;
|
|
34
|
+
segmentParams[paramName] = paramValue;
|
|
35
|
+
}
|
|
36
|
+
return segmentParams;
|
|
37
|
+
}
|
|
38
|
+
//#endregion
|
|
39
|
+
export { getAppPageSegmentParamName, resolveAppPageSegmentParamScopeKeys, resolveAppPageSegmentParams };
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { createAppPprFallbackShells } from "./app-ppr-fallback-shell.js";
|
|
2
|
+
import { AppPageDispatchRoute, AppPagePprRuntime } from "./app-page-dispatch.js";
|
|
3
|
+
|
|
4
|
+
//#region src/server/app-page-ppr-runtime.d.ts
|
|
5
|
+
declare const appPagePprRuntime: AppPagePprRuntime<AppPageDispatchRoute>;
|
|
6
|
+
//#endregion
|
|
7
|
+
export { appPagePprRuntime, createAppPprFallbackShells };
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { beginPprFallbackShellFinalRender, createPprFallbackShellState, getPprFallbackShellState, runWithPprFallbackShellState } from "../shims/ppr-fallback-shell.js";
|
|
2
|
+
import { createAppPprFallbackShells } from "./app-ppr-fallback-shell.js";
|
|
3
|
+
import { hasSearchParams, shouldReadAppPageCache } from "./app-page-dispatch.js";
|
|
4
|
+
//#region src/server/app-page-ppr-runtime.ts
|
|
5
|
+
function classifyPprFallbackShellEligibility(options, currentRevalidateSeconds, isDraftMode, isForceStatic, isForceDynamic) {
|
|
6
|
+
if (options.renderedConcreteUrlPaths?.has(options.cleanPathname) === true) return { kind: "skip-known-pregenerated-route" };
|
|
7
|
+
const fallbackShells = options.pprFallbackCacheShells;
|
|
8
|
+
if (!fallbackShells || fallbackShells.length === 0) return { kind: "skip-no-fallback-shells" };
|
|
9
|
+
if (options.isRscRequest) return { kind: "skip-rsc-request" };
|
|
10
|
+
if (options.request.method !== "GET") return { kind: "skip-non-get" };
|
|
11
|
+
if (!isForceStatic && hasSearchParams(options.searchParams)) return { kind: "skip-search-params" };
|
|
12
|
+
if (!shouldReadAppPageCache({
|
|
13
|
+
isDraftMode,
|
|
14
|
+
isForceDynamic,
|
|
15
|
+
isProgressiveActionRender: options.isProgressiveActionRender === true,
|
|
16
|
+
isProduction: options.isProduction,
|
|
17
|
+
isRscRequest: false,
|
|
18
|
+
revalidateSeconds: currentRevalidateSeconds,
|
|
19
|
+
scriptNonce: options.scriptNonce
|
|
20
|
+
})) return { kind: "skip-cache-disabled" };
|
|
21
|
+
return {
|
|
22
|
+
kind: "probe-fallback-shells",
|
|
23
|
+
fallbackShells
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
async function probePprFallbackShellCache(options, fallbackShells, currentRevalidateSeconds) {
|
|
27
|
+
const { readAppPageFallbackShellCacheResponse } = await import("./app-page-cache.js");
|
|
28
|
+
const { rewriteAppPprFallbackShellHtmlNavigation } = await import("./app-ppr-fallback-shell.js");
|
|
29
|
+
for (const fallbackShell of fallbackShells) {
|
|
30
|
+
const fallbackShellResponse = await readAppPageFallbackShellCacheResponse({
|
|
31
|
+
clearRequestContext: options.clearRequestContext,
|
|
32
|
+
expireSeconds: options.expireSeconds,
|
|
33
|
+
fallbackPathname: fallbackShell.pathname,
|
|
34
|
+
isEdgeRuntime: options.isEdgeRuntime,
|
|
35
|
+
isrDebug: options.isrDebug,
|
|
36
|
+
isrGet: options.isrGet,
|
|
37
|
+
isrHtmlKey: options.isrHtmlKey,
|
|
38
|
+
middlewareHeaders: options.middlewareContext.headers,
|
|
39
|
+
middlewareStatus: options.middlewareContext.status,
|
|
40
|
+
revalidateSeconds: currentRevalidateSeconds ?? 0,
|
|
41
|
+
rewriteHtml(html) {
|
|
42
|
+
return rewriteAppPprFallbackShellHtmlNavigation({
|
|
43
|
+
html,
|
|
44
|
+
params: options.params,
|
|
45
|
+
pathname: options.cleanPathname,
|
|
46
|
+
searchParams: options.searchParams
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
if (fallbackShellResponse) return fallbackShellResponse;
|
|
51
|
+
}
|
|
52
|
+
return null;
|
|
53
|
+
}
|
|
54
|
+
const appPagePprRuntime = {
|
|
55
|
+
beginFinalRender: beginPprFallbackShellFinalRender,
|
|
56
|
+
getState: getPprFallbackShellState,
|
|
57
|
+
run(shell, fn) {
|
|
58
|
+
return runWithPprFallbackShellState(createPprFallbackShellState(shell), fn);
|
|
59
|
+
},
|
|
60
|
+
async tryServe(options, currentRevalidateSeconds, isDraftMode, isForceStatic, isForceDynamic) {
|
|
61
|
+
const decision = classifyPprFallbackShellEligibility(options, currentRevalidateSeconds, isDraftMode, isForceStatic, isForceDynamic);
|
|
62
|
+
return decision.kind === "probe-fallback-shells" ? probePprFallbackShellCache(options, decision.fallbackShells, currentRevalidateSeconds) : null;
|
|
63
|
+
},
|
|
64
|
+
async warm(options) {
|
|
65
|
+
const { warmPprFallbackShellCaches } = await import("./app-ppr-fallback-shell-render.js");
|
|
66
|
+
await warmPprFallbackShellCaches(options);
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
//#endregion
|
|
70
|
+
export { appPagePprRuntime, createAppPprFallbackShells };
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import { LayoutFlags } from "./app-elements-wire.js";
|
|
2
|
+
import { AppPageSpecialError, LayoutClassificationOptions } from "./app-page-execution.js";
|
|
3
|
+
|
|
4
|
+
//#region src/server/app-page-probe.d.ts
|
|
5
|
+
type ProbeReactServerSubtreeOptions = Readonly<{
|
|
6
|
+
maxDepth?: number;
|
|
7
|
+
maxNodes?: number;
|
|
8
|
+
}>;
|
|
9
|
+
/**
|
|
10
|
+
* Invokes server-component children returned by a layout probe so per-layout
|
|
11
|
+
* skip eligibility observes data dependencies created below the layout's
|
|
12
|
+
* immediate function body. The real RSC render remains authoritative; probe
|
|
13
|
+
* failures only make static-layout skip fall back to render-and-send.
|
|
14
|
+
*/
|
|
15
|
+
declare function probeReactServerSubtree(node: unknown, options?: ProbeReactServerSubtreeOptions): Promise<void>;
|
|
16
|
+
/**
|
|
17
|
+
* Build a probePage() invocation for the App Router request lifecycle.
|
|
18
|
+
*
|
|
19
|
+
* The generated RSC entry calls this once per request after route matching to
|
|
20
|
+
* eagerly invoke the page component. Surfacing redirect()/notFound() throws
|
|
21
|
+
* here lets the probe lifecycle turn them into proper HTTP responses before
|
|
22
|
+
* RSC streaming begins (see `probeAppPageBeforeRender`).
|
|
23
|
+
*
|
|
24
|
+
* The helper exists to keep the generated entry thin (a single delegation
|
|
25
|
+
* call) and to make the search-params wiring directly unit-testable. A bug
|
|
26
|
+
* here previously slipped through because the entry hand-rolled the call and
|
|
27
|
+
* read a non-existent key off `collectAppPageSearchParams`'s return value
|
|
28
|
+
* (see https://github.com/cloudflare/vinext/issues/1235).
|
|
29
|
+
*
|
|
30
|
+
* Returns `null` when the route has no page component (eg. interception-only
|
|
31
|
+
* routes), matching the caller contract on `probePage`.
|
|
32
|
+
*/
|
|
33
|
+
declare function probeAppPage(options: {
|
|
34
|
+
pageComponent: unknown;
|
|
35
|
+
asyncRouteParams: unknown;
|
|
36
|
+
searchParams: URLSearchParams | null | undefined;
|
|
37
|
+
}): unknown;
|
|
38
|
+
type AppPageProbeModule = Readonly<{
|
|
39
|
+
default?: unknown;
|
|
40
|
+
}> | null | undefined;
|
|
41
|
+
type AppPageProbeSlot = Readonly<{
|
|
42
|
+
page?: AppPageProbeModule;
|
|
43
|
+
}> | null | undefined;
|
|
44
|
+
type AppPageProbeRoute = Readonly<{
|
|
45
|
+
slots?: Readonly<Record<string, AppPageProbeSlot>> | null;
|
|
46
|
+
}>;
|
|
47
|
+
type AppPageProbeIntercept = Readonly<{
|
|
48
|
+
page?: AppPageProbeModule;
|
|
49
|
+
matchedParams?: unknown;
|
|
50
|
+
/**
|
|
51
|
+
* Key of the parallel-route slot this interception overrides. At render
|
|
52
|
+
* time the matched route's `slots[slotKey].page` is replaced by the
|
|
53
|
+
* interception page (see app-page-element-builder.ts), so the slot's own
|
|
54
|
+
* page never renders for this request.
|
|
55
|
+
*/
|
|
56
|
+
slotKey?: string | null;
|
|
57
|
+
}> | null | undefined;
|
|
58
|
+
/**
|
|
59
|
+
* Fan out the per-request page probes for the App Router dispatch lifecycle.
|
|
60
|
+
*
|
|
61
|
+
* A single request can render more than one page component: the matched page,
|
|
62
|
+
* each active parallel-route slot page, and an interception page when one
|
|
63
|
+
* matches. Each must be probed so searchParams access anywhere in the rendered
|
|
64
|
+
* tree bails the request out of the query-invariant static cache.
|
|
65
|
+
*
|
|
66
|
+
* Extracted out of the generated RSC entry so the fan-out is directly
|
|
67
|
+
* unit-testable and the entry stays codegen glue (see AGENTS.md "Generated
|
|
68
|
+
* Entry Modules Should Stay Thin"). Returns a list of resolved promises so the
|
|
69
|
+
* caller can `Promise.all` them.
|
|
70
|
+
*
|
|
71
|
+
* The fan-out is scoped to the page components that render for this request:
|
|
72
|
+
*
|
|
73
|
+
* - **Interception override:** when an interception matches it replaces the
|
|
74
|
+
* page of the slot named by `intercept.slotKey` (the element builder sets
|
|
75
|
+
* `overrides[slotKey].pageModule` to the interception page, which wins over
|
|
76
|
+
* `slot.page` in `app-page-route-wiring.tsx`). We probe the interception page
|
|
77
|
+
* in place of that slot's own page rather than probing both — probing the
|
|
78
|
+
* overridden slot page would mark an otherwise-static request dynamic for a
|
|
79
|
+
* component that never renders.
|
|
80
|
+
* - **Non-overridden slots:** `slot.page?.default` is exactly what renders.
|
|
81
|
+
* `app-page-route-wiring.tsx` resolves a slot to `overrideOrPageComponent ??
|
|
82
|
+
* defaultComponent`, so whenever a slot has a `page.tsx` that page renders.
|
|
83
|
+
* When a slot has only a `default.tsx` (including the soft-nav case at
|
|
84
|
+
* `app-page-route-wiring.tsx:741` that skips an already-mounted slot), there
|
|
85
|
+
* is no `slot.page?.default`, so `probeAppPage` short-circuits to `null` and
|
|
86
|
+
* probes nothing — a no-op, not an over-bail.
|
|
87
|
+
*
|
|
88
|
+
* Interception only fires for RSC navigations (`resolveAppPageInterceptState`
|
|
89
|
+
* returns `kind: "none"` when `!isRscRequest`, app-page-request.ts:324), so the
|
|
90
|
+
* interception handling here is gated on `isRscRequest`. For non-RSC (HTML)
|
|
91
|
+
* requests the matched route renders normally, so we probe every slot's own
|
|
92
|
+
* page and skip the interception probe entirely. The remaining "source-route"
|
|
93
|
+
* interception case (where a *different* route renders, app-page-request.ts:342)
|
|
94
|
+
* never reaches this probe: `dispatchAppPage` returns the intercepted response
|
|
95
|
+
* before calling `probePage`, so by the time this runs any matched interception
|
|
96
|
+
* is the current-route override case above.
|
|
97
|
+
*
|
|
98
|
+
* A `default.tsx` that itself awaits `searchParams` is not probed here, but the
|
|
99
|
+
* real render still observes that access and skips the query-invariant cache
|
|
100
|
+
* write (the same loading.tsx backstop), so this cannot under-bail.
|
|
101
|
+
*/
|
|
102
|
+
declare function buildAppPageProbes(options: {
|
|
103
|
+
route: AppPageProbeRoute;
|
|
104
|
+
pageComponent: unknown;
|
|
105
|
+
asyncRouteParams: unknown;
|
|
106
|
+
searchParams: URLSearchParams | null | undefined;
|
|
107
|
+
intercept?: AppPageProbeIntercept;
|
|
108
|
+
/**
|
|
109
|
+
* Whether this is an RSC navigation. Interception only fires for RSC
|
|
110
|
+
* requests, so the interception probe is ignored when this is false.
|
|
111
|
+
*/
|
|
112
|
+
isRscRequest: boolean; /** Fallback raw params used when an interception match omits its own. */
|
|
113
|
+
matchedParams: unknown;
|
|
114
|
+
makeThenableParams: (params: unknown) => unknown;
|
|
115
|
+
}): Promise<unknown>[];
|
|
116
|
+
type ProbeAppPageBeforeRenderResult = {
|
|
117
|
+
response: Response | null;
|
|
118
|
+
layoutFlags: LayoutFlags;
|
|
119
|
+
};
|
|
120
|
+
type ProbeAppPageBeforeRenderOptions = {
|
|
121
|
+
hasLoadingBoundary: boolean;
|
|
122
|
+
skipProbes?: boolean;
|
|
123
|
+
layoutCount: number;
|
|
124
|
+
probeLayoutAt: (layoutIndex: number) => unknown;
|
|
125
|
+
probePage: () => unknown;
|
|
126
|
+
renderLayoutSpecialError: (specialError: AppPageSpecialError, layoutIndex: number) => Promise<Response>;
|
|
127
|
+
renderPageSpecialError: (specialError: AppPageSpecialError) => Promise<Response>;
|
|
128
|
+
resolveSpecialError: (error: unknown) => AppPageSpecialError | null;
|
|
129
|
+
runWithSuppressedHookWarning<T>(probe: () => Promise<T>): Promise<T>; /** When provided, enables per-layout static/dynamic classification. */
|
|
130
|
+
classification?: LayoutClassificationOptions | null;
|
|
131
|
+
};
|
|
132
|
+
declare function probeAppPageBeforeRender(options: ProbeAppPageBeforeRenderOptions): Promise<ProbeAppPageBeforeRenderResult>;
|
|
133
|
+
//#endregion
|
|
134
|
+
export { buildAppPageProbes, probeAppPage, probeAppPageBeforeRender, probeReactServerSubtree };
|
|
@@ -0,0 +1,276 @@
|
|
|
1
|
+
import { markAppPagePropsForUseCache } from "../shims/internal/app-page-props-cache-key.js";
|
|
2
|
+
import { isNextRouterError } from "../shims/navigation-errors.js";
|
|
3
|
+
import "../shims/navigation-server.js";
|
|
4
|
+
import { isPromiseLike } from "../utils/promise.js";
|
|
5
|
+
import { probeAppPageComponent, probeAppPageLayouts } from "./app-page-execution.js";
|
|
6
|
+
import { collectAppPageSearchParams } from "./app-page-head.js";
|
|
7
|
+
import { makeObservedAppPageSearchParamsThenable } from "./app-page-search-params-observation.js";
|
|
8
|
+
import { Fragment, isValidElement } from "react";
|
|
9
|
+
//#region src/server/app-page-probe.ts
|
|
10
|
+
const DEFAULT_SUBTREE_PROBE_MAX_DEPTH = 32;
|
|
11
|
+
const DEFAULT_SUBTREE_PROBE_MAX_NODES = 1e3;
|
|
12
|
+
const REACT_FORWARD_REF_TYPE = Symbol.for("react.forward_ref");
|
|
13
|
+
const REACT_LAZY_TYPE = Symbol.for("react.lazy");
|
|
14
|
+
const REACT_MEMO_TYPE = Symbol.for("react.memo");
|
|
15
|
+
var AppPageSubtreeProbeLimitError = class extends Error {
|
|
16
|
+
constructor(message) {
|
|
17
|
+
super(message);
|
|
18
|
+
this.name = "AppPageSubtreeProbeLimitError";
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
var AppPageSubtreeProbeUnsupportedIterableError = class extends Error {
|
|
22
|
+
constructor() {
|
|
23
|
+
super("App page layout subtree probe cannot safely inspect iterable children");
|
|
24
|
+
this.name = "AppPageSubtreeProbeUnsupportedIterableError";
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
function isIterable(value) {
|
|
28
|
+
return Boolean(value && typeof value !== "string" && typeof value === "object" && Symbol.iterator in value && typeof value[Symbol.iterator] === "function");
|
|
29
|
+
}
|
|
30
|
+
function isProbeReactElement(value) {
|
|
31
|
+
return isValidElement(value);
|
|
32
|
+
}
|
|
33
|
+
function isObjectLike(value) {
|
|
34
|
+
return (typeof value === "object" || typeof value === "function") && value !== null;
|
|
35
|
+
}
|
|
36
|
+
function isUnknownFunction(value) {
|
|
37
|
+
return typeof value === "function";
|
|
38
|
+
}
|
|
39
|
+
function readReactMemoType(value) {
|
|
40
|
+
if (!isObjectLike(value) || Reflect.get(value, "$$typeof") !== REACT_MEMO_TYPE) return null;
|
|
41
|
+
return { innerType: Reflect.get(value, "type") };
|
|
42
|
+
}
|
|
43
|
+
function readReactLazyType(value) {
|
|
44
|
+
if (!isObjectLike(value) || Reflect.get(value, "$$typeof") !== REACT_LAZY_TYPE) return null;
|
|
45
|
+
const init = Reflect.get(value, "_init");
|
|
46
|
+
if (!isUnknownFunction(init)) return null;
|
|
47
|
+
return {
|
|
48
|
+
init,
|
|
49
|
+
payload: Reflect.get(value, "_payload")
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
function readReactForwardRefRender(value) {
|
|
53
|
+
if (!isObjectLike(value) || Reflect.get(value, "$$typeof") !== REACT_FORWARD_REF_TYPE) return null;
|
|
54
|
+
const render = Reflect.get(value, "render");
|
|
55
|
+
return isUnknownFunction(render) ? render : null;
|
|
56
|
+
}
|
|
57
|
+
async function resolveReactLazyType(lazyType) {
|
|
58
|
+
try {
|
|
59
|
+
return lazyType.init(lazyType.payload);
|
|
60
|
+
} catch (error) {
|
|
61
|
+
if (!isPromiseLike(error)) throw error;
|
|
62
|
+
await error;
|
|
63
|
+
return lazyType.init(lazyType.payload);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Invokes server-component children returned by a layout probe so per-layout
|
|
68
|
+
* skip eligibility observes data dependencies created below the layout's
|
|
69
|
+
* immediate function body. The real RSC render remains authoritative; probe
|
|
70
|
+
* failures only make static-layout skip fall back to render-and-send.
|
|
71
|
+
*/
|
|
72
|
+
async function probeReactServerSubtree(node, options = {}) {
|
|
73
|
+
const maxDepth = options.maxDepth ?? DEFAULT_SUBTREE_PROBE_MAX_DEPTH;
|
|
74
|
+
const maxNodes = options.maxNodes ?? DEFAULT_SUBTREE_PROBE_MAX_NODES;
|
|
75
|
+
let visitedNodes = 0;
|
|
76
|
+
const enterProbeNode = (depth) => {
|
|
77
|
+
if (depth > maxDepth) throw new AppPageSubtreeProbeLimitError("App page layout subtree probe exceeded max depth");
|
|
78
|
+
visitedNodes += 1;
|
|
79
|
+
if (visitedNodes > maxNodes) throw new AppPageSubtreeProbeLimitError("App page layout subtree probe exceeded max nodes");
|
|
80
|
+
};
|
|
81
|
+
const renderElementType = async (type, props, depth, wrapperDepth = 0) => {
|
|
82
|
+
if (wrapperDepth > maxDepth) throw new AppPageSubtreeProbeLimitError("App page layout subtree probe exceeded max depth");
|
|
83
|
+
if (isUnknownFunction(type)) {
|
|
84
|
+
await visit(type(props), depth + 1);
|
|
85
|
+
return true;
|
|
86
|
+
}
|
|
87
|
+
const memoType = readReactMemoType(type);
|
|
88
|
+
if (memoType) return renderElementType(memoType.innerType, props, depth, wrapperDepth + 1);
|
|
89
|
+
const lazyType = readReactLazyType(type);
|
|
90
|
+
if (lazyType) return renderElementType(await resolveReactLazyType(lazyType), props, depth, wrapperDepth + 1);
|
|
91
|
+
const forwardRefRender = readReactForwardRefRender(type);
|
|
92
|
+
if (forwardRefRender) {
|
|
93
|
+
await visit(forwardRefRender(props, null), depth + 1);
|
|
94
|
+
return true;
|
|
95
|
+
}
|
|
96
|
+
return false;
|
|
97
|
+
};
|
|
98
|
+
const visit = async (value, depth) => {
|
|
99
|
+
enterProbeNode(depth);
|
|
100
|
+
if (value == null || typeof value === "boolean" || typeof value === "number") return;
|
|
101
|
+
if (typeof value === "string" || typeof value === "bigint") return;
|
|
102
|
+
if (isPromiseLike(value)) {
|
|
103
|
+
await visit(await value, depth);
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
if (Array.isArray(value)) {
|
|
107
|
+
for (const child of value) await visit(child, depth + 1);
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
if (isIterable(value) && !isProbeReactElement(value)) throw new AppPageSubtreeProbeUnsupportedIterableError();
|
|
111
|
+
if (!isProbeReactElement(value)) return;
|
|
112
|
+
if (value.type === Fragment || typeof value.type === "string") {
|
|
113
|
+
await visit(value.props.children, depth + 1);
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
if (await renderElementType(value.type, value.props, depth)) return;
|
|
117
|
+
await visit(value.props.children, depth + 1);
|
|
118
|
+
};
|
|
119
|
+
await visit(node, 0);
|
|
120
|
+
}
|
|
121
|
+
async function probeReactServerSubtreeForDynamicUsage(node) {
|
|
122
|
+
try {
|
|
123
|
+
await probeReactServerSubtree(node);
|
|
124
|
+
} catch (error) {
|
|
125
|
+
if (isNextRouterError(error)) return;
|
|
126
|
+
throw error;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Build a probePage() invocation for the App Router request lifecycle.
|
|
131
|
+
*
|
|
132
|
+
* The generated RSC entry calls this once per request after route matching to
|
|
133
|
+
* eagerly invoke the page component. Surfacing redirect()/notFound() throws
|
|
134
|
+
* here lets the probe lifecycle turn them into proper HTTP responses before
|
|
135
|
+
* RSC streaming begins (see `probeAppPageBeforeRender`).
|
|
136
|
+
*
|
|
137
|
+
* The helper exists to keep the generated entry thin (a single delegation
|
|
138
|
+
* call) and to make the search-params wiring directly unit-testable. A bug
|
|
139
|
+
* here previously slipped through because the entry hand-rolled the call and
|
|
140
|
+
* read a non-existent key off `collectAppPageSearchParams`'s return value
|
|
141
|
+
* (see https://github.com/cloudflare/vinext/issues/1235).
|
|
142
|
+
*
|
|
143
|
+
* Returns `null` when the route has no page component (eg. interception-only
|
|
144
|
+
* routes), matching the caller contract on `probePage`.
|
|
145
|
+
*/
|
|
146
|
+
function probeAppPage(options) {
|
|
147
|
+
const { pageComponent, asyncRouteParams, searchParams } = options;
|
|
148
|
+
if (typeof pageComponent !== "function") return null;
|
|
149
|
+
const { pageSearchParams } = collectAppPageSearchParams(searchParams);
|
|
150
|
+
const result = pageComponent(markAppPagePropsForUseCache({
|
|
151
|
+
params: asyncRouteParams,
|
|
152
|
+
searchParams: makeObservedAppPageSearchParamsThenable(pageSearchParams, { observeReactPromiseStatus: true })
|
|
153
|
+
}));
|
|
154
|
+
if (isPromiseLike(result)) return result.then(async (resolved) => {
|
|
155
|
+
await probeReactServerSubtreeForDynamicUsage(resolved);
|
|
156
|
+
return resolved;
|
|
157
|
+
});
|
|
158
|
+
if (isValidElement(result) || Array.isArray(result)) return probeReactServerSubtreeForDynamicUsage(result).then(() => result);
|
|
159
|
+
return result;
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Fan out the per-request page probes for the App Router dispatch lifecycle.
|
|
163
|
+
*
|
|
164
|
+
* A single request can render more than one page component: the matched page,
|
|
165
|
+
* each active parallel-route slot page, and an interception page when one
|
|
166
|
+
* matches. Each must be probed so searchParams access anywhere in the rendered
|
|
167
|
+
* tree bails the request out of the query-invariant static cache.
|
|
168
|
+
*
|
|
169
|
+
* Extracted out of the generated RSC entry so the fan-out is directly
|
|
170
|
+
* unit-testable and the entry stays codegen glue (see AGENTS.md "Generated
|
|
171
|
+
* Entry Modules Should Stay Thin"). Returns a list of resolved promises so the
|
|
172
|
+
* caller can `Promise.all` them.
|
|
173
|
+
*
|
|
174
|
+
* The fan-out is scoped to the page components that render for this request:
|
|
175
|
+
*
|
|
176
|
+
* - **Interception override:** when an interception matches it replaces the
|
|
177
|
+
* page of the slot named by `intercept.slotKey` (the element builder sets
|
|
178
|
+
* `overrides[slotKey].pageModule` to the interception page, which wins over
|
|
179
|
+
* `slot.page` in `app-page-route-wiring.tsx`). We probe the interception page
|
|
180
|
+
* in place of that slot's own page rather than probing both — probing the
|
|
181
|
+
* overridden slot page would mark an otherwise-static request dynamic for a
|
|
182
|
+
* component that never renders.
|
|
183
|
+
* - **Non-overridden slots:** `slot.page?.default` is exactly what renders.
|
|
184
|
+
* `app-page-route-wiring.tsx` resolves a slot to `overrideOrPageComponent ??
|
|
185
|
+
* defaultComponent`, so whenever a slot has a `page.tsx` that page renders.
|
|
186
|
+
* When a slot has only a `default.tsx` (including the soft-nav case at
|
|
187
|
+
* `app-page-route-wiring.tsx:741` that skips an already-mounted slot), there
|
|
188
|
+
* is no `slot.page?.default`, so `probeAppPage` short-circuits to `null` and
|
|
189
|
+
* probes nothing — a no-op, not an over-bail.
|
|
190
|
+
*
|
|
191
|
+
* Interception only fires for RSC navigations (`resolveAppPageInterceptState`
|
|
192
|
+
* returns `kind: "none"` when `!isRscRequest`, app-page-request.ts:324), so the
|
|
193
|
+
* interception handling here is gated on `isRscRequest`. For non-RSC (HTML)
|
|
194
|
+
* requests the matched route renders normally, so we probe every slot's own
|
|
195
|
+
* page and skip the interception probe entirely. The remaining "source-route"
|
|
196
|
+
* interception case (where a *different* route renders, app-page-request.ts:342)
|
|
197
|
+
* never reaches this probe: `dispatchAppPage` returns the intercepted response
|
|
198
|
+
* before calling `probePage`, so by the time this runs any matched interception
|
|
199
|
+
* is the current-route override case above.
|
|
200
|
+
*
|
|
201
|
+
* A `default.tsx` that itself awaits `searchParams` is not probed here, but the
|
|
202
|
+
* real render still observes that access and skips the query-invariant cache
|
|
203
|
+
* write (the same loading.tsx backstop), so this cannot under-bail.
|
|
204
|
+
*/
|
|
205
|
+
function buildAppPageProbes(options) {
|
|
206
|
+
const { route, pageComponent, asyncRouteParams, searchParams, matchedParams } = options;
|
|
207
|
+
const intercept = options.isRscRequest ? options.intercept : null;
|
|
208
|
+
const probes = [probeAppPage({
|
|
209
|
+
pageComponent,
|
|
210
|
+
asyncRouteParams,
|
|
211
|
+
searchParams
|
|
212
|
+
})];
|
|
213
|
+
const overriddenSlotKey = intercept?.slotKey ?? null;
|
|
214
|
+
for (const [slotKey, slot] of Object.entries(route.slots ?? {})) {
|
|
215
|
+
if (overriddenSlotKey !== null && slotKey === overriddenSlotKey) continue;
|
|
216
|
+
probes.push(probeAppPage({
|
|
217
|
+
pageComponent: slot?.page?.default,
|
|
218
|
+
asyncRouteParams,
|
|
219
|
+
searchParams
|
|
220
|
+
}));
|
|
221
|
+
}
|
|
222
|
+
if (intercept) probes.push(probeAppPage({
|
|
223
|
+
pageComponent: intercept.page?.default,
|
|
224
|
+
asyncRouteParams: options.makeThenableParams(intercept.matchedParams ?? matchedParams),
|
|
225
|
+
searchParams
|
|
226
|
+
}));
|
|
227
|
+
return probes.map((probe) => Promise.resolve(probe));
|
|
228
|
+
}
|
|
229
|
+
async function probeAppPageBeforeRender(options) {
|
|
230
|
+
let layoutFlags = {};
|
|
231
|
+
if (options.skipProbes) return {
|
|
232
|
+
response: null,
|
|
233
|
+
layoutFlags
|
|
234
|
+
};
|
|
235
|
+
if (options.layoutCount > 0) {
|
|
236
|
+
const layoutProbeResult = await probeAppPageLayouts({
|
|
237
|
+
layoutCount: options.layoutCount,
|
|
238
|
+
async onLayoutError(layoutError, layoutIndex) {
|
|
239
|
+
const specialError = options.resolveSpecialError(layoutError);
|
|
240
|
+
if (!specialError) return null;
|
|
241
|
+
return options.renderLayoutSpecialError(specialError, layoutIndex);
|
|
242
|
+
},
|
|
243
|
+
probeLayoutAt: options.probeLayoutAt,
|
|
244
|
+
runWithSuppressedHookWarning(probe) {
|
|
245
|
+
return options.runWithSuppressedHookWarning(probe);
|
|
246
|
+
},
|
|
247
|
+
classification: options.classification
|
|
248
|
+
});
|
|
249
|
+
layoutFlags = layoutProbeResult.layoutFlags;
|
|
250
|
+
if (layoutProbeResult.response) return {
|
|
251
|
+
response: layoutProbeResult.response,
|
|
252
|
+
layoutFlags
|
|
253
|
+
};
|
|
254
|
+
}
|
|
255
|
+
if (options.hasLoadingBoundary) return {
|
|
256
|
+
response: null,
|
|
257
|
+
layoutFlags
|
|
258
|
+
};
|
|
259
|
+
return {
|
|
260
|
+
response: await probeAppPageComponent({
|
|
261
|
+
awaitAsyncResult: true,
|
|
262
|
+
async onError(pageError) {
|
|
263
|
+
const specialError = options.resolveSpecialError(pageError);
|
|
264
|
+
if (specialError) return options.renderPageSpecialError(specialError);
|
|
265
|
+
return null;
|
|
266
|
+
},
|
|
267
|
+
probePage: options.probePage,
|
|
268
|
+
runWithSuppressedHookWarning(probe) {
|
|
269
|
+
return options.runWithSuppressedHookWarning(probe);
|
|
270
|
+
}
|
|
271
|
+
}),
|
|
272
|
+
layoutFlags
|
|
273
|
+
};
|
|
274
|
+
}
|
|
275
|
+
//#endregion
|
|
276
|
+
export { buildAppPageProbes, probeAppPage, probeAppPageBeforeRender, probeReactServerSubtree };
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { AppElementsInterception } from "./app-elements-wire.js";
|
|
2
|
+
//#region src/server/app-page-render-identity.d.ts
|
|
3
|
+
type AppPageRenderIdentityInput = {
|
|
4
|
+
displayPathname: string;
|
|
5
|
+
interceptionContext?: string | null;
|
|
6
|
+
interceptSourceMatchedUrl?: string | null;
|
|
7
|
+
interceptSlotId?: string | null;
|
|
8
|
+
};
|
|
9
|
+
type AppPageRenderIdentity = {
|
|
10
|
+
displayPathname: string;
|
|
11
|
+
interception: AppElementsInterception | null;
|
|
12
|
+
interceptionContext: string | null;
|
|
13
|
+
matchedRoutePathname: string;
|
|
14
|
+
pageId: string;
|
|
15
|
+
routeId: string;
|
|
16
|
+
targetMatchedPathname: string;
|
|
17
|
+
};
|
|
18
|
+
declare function normalizeAppPageInterceptionProofPathname(pathname: string | null): string | null;
|
|
19
|
+
declare function createAppPageRenderIdentity(input: AppPageRenderIdentityInput): AppPageRenderIdentity;
|
|
20
|
+
//#endregion
|
|
21
|
+
export { AppPageRenderIdentity, createAppPageRenderIdentity, normalizeAppPageInterceptionProofPathname };
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { normalizePathnameForRouteMatch } from "../routing/utils.js";
|
|
2
|
+
import { isInterceptionMatchedUrlPath, normalizePath } from "./normalize-path.js";
|
|
3
|
+
import { AppElementsWire } from "./app-elements-wire.js";
|
|
4
|
+
import "./app-elements.js";
|
|
5
|
+
//#region src/server/app-page-render-identity.ts
|
|
6
|
+
function normalizeAppPageRenderMatchedPathname(pathname) {
|
|
7
|
+
if (!pathname.startsWith("/")) throw new Error(`[vinext] App Router render pathname must be absolute: ${pathname}`);
|
|
8
|
+
return normalizePath(normalizePathnameForRouteMatch(pathname));
|
|
9
|
+
}
|
|
10
|
+
function normalizeAppPageInterceptionProofPathname(pathname) {
|
|
11
|
+
if (pathname === null || !isInterceptionMatchedUrlPath(pathname)) return null;
|
|
12
|
+
return normalizeAppPageRenderMatchedPathname(pathname);
|
|
13
|
+
}
|
|
14
|
+
function createAppPageRenderIdentity(input) {
|
|
15
|
+
const interceptionContext = input.interceptionContext ?? null;
|
|
16
|
+
const targetMatchedPathname = normalizeAppPageRenderMatchedPathname(input.displayPathname);
|
|
17
|
+
const sourceMatchedPathname = normalizeAppPageInterceptionProofPathname(input.interceptSourceMatchedUrl ?? null);
|
|
18
|
+
const slotId = input.interceptSlotId ?? null;
|
|
19
|
+
const matchedRoutePathname = sourceMatchedPathname ?? targetMatchedPathname;
|
|
20
|
+
const routeId = AppElementsWire.encodeRouteId(matchedRoutePathname, null);
|
|
21
|
+
const pageId = AppElementsWire.encodePageId(matchedRoutePathname, null);
|
|
22
|
+
const interception = sourceMatchedPathname === null || slotId === null ? null : {
|
|
23
|
+
sourceMatchedUrl: sourceMatchedPathname,
|
|
24
|
+
sourceRouteId: AppElementsWire.encodeRouteId(sourceMatchedPathname, null),
|
|
25
|
+
slotId,
|
|
26
|
+
targetMatchedUrl: targetMatchedPathname,
|
|
27
|
+
targetRouteId: AppElementsWire.encodeRouteId(targetMatchedPathname, null)
|
|
28
|
+
};
|
|
29
|
+
return {
|
|
30
|
+
displayPathname: input.displayPathname,
|
|
31
|
+
interception,
|
|
32
|
+
interceptionContext,
|
|
33
|
+
matchedRoutePathname,
|
|
34
|
+
pageId,
|
|
35
|
+
routeId,
|
|
36
|
+
targetMatchedPathname
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
//#endregion
|
|
40
|
+
export { createAppPageRenderIdentity, normalizeAppPageInterceptionProofPathname };
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { BoundaryOutcome, CacheProofOutputScope, RenderCacheability, RenderObservation, RenderObservationCompleteness, RenderRequestApiKind } from "./cache-proof.js";
|
|
2
|
+
import { ReactNode } from "react";
|
|
3
|
+
|
|
4
|
+
//#region src/server/app-page-render-observation.d.ts
|
|
5
|
+
type AppPageRenderObservationState = Readonly<{
|
|
6
|
+
dynamicFetches: readonly string[];
|
|
7
|
+
requestApis: readonly RenderRequestApiKind[];
|
|
8
|
+
}>;
|
|
9
|
+
declare function createEmptyAppPageRenderObservationState(): AppPageRenderObservationState;
|
|
10
|
+
declare function consumeAppPageRenderObservationState(): AppPageRenderObservationState;
|
|
11
|
+
declare function discardAppPageRenderState(): void;
|
|
12
|
+
declare function createAppPageRenderObservation(options: {
|
|
13
|
+
boundaryOutcome: BoundaryOutcome;
|
|
14
|
+
cacheTags: readonly string[];
|
|
15
|
+
cacheability: RenderCacheability;
|
|
16
|
+
cleanPathname: string;
|
|
17
|
+
completeness: RenderObservationCompleteness;
|
|
18
|
+
output: CacheProofOutputScope;
|
|
19
|
+
params: Record<string, unknown>;
|
|
20
|
+
state: AppPageRenderObservationState;
|
|
21
|
+
}): RenderObservation;
|
|
22
|
+
declare function createAppPageRscOutputScope(options: {
|
|
23
|
+
element: ReactNode | Readonly<Record<string, ReactNode>>;
|
|
24
|
+
mountedSlotsHeader?: string | null;
|
|
25
|
+
renderEpoch: string | null;
|
|
26
|
+
rootBoundaryId: string | null;
|
|
27
|
+
routePattern: string;
|
|
28
|
+
}): CacheProofOutputScope;
|
|
29
|
+
declare function createAppPageHtmlOutputScope(options: {
|
|
30
|
+
element: ReactNode | Readonly<Record<string, ReactNode>>;
|
|
31
|
+
renderEpoch: string | null;
|
|
32
|
+
rootBoundaryId: string | null;
|
|
33
|
+
routePattern: string;
|
|
34
|
+
}): CacheProofOutputScope;
|
|
35
|
+
//#endregion
|
|
36
|
+
export { AppPageRenderObservationState, consumeAppPageRenderObservationState, createAppPageHtmlOutputScope, createAppPageRenderObservation, createAppPageRscOutputScope, createEmptyAppPageRenderObservationState, discardAppPageRenderState };
|