@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,62 @@
|
|
|
1
|
+
import { NEXTJS_ACTION_NOT_FOUND_HEADER } from "./headers.js";
|
|
2
|
+
import { UnrecognizedActionError } from "../shims/unrecognized-action-error.js";
|
|
3
|
+
//#region src/server/server-action-not-found.ts
|
|
4
|
+
const SERVER_ACTION_NOT_FOUND_DOCS = "https://nextjs.org/docs/messages/failed-to-find-server-action";
|
|
5
|
+
const SERVER_ACTION_NOT_FOUND_BODY = "Server action not found.";
|
|
6
|
+
function getServerActionNotFoundPrefix(actionId) {
|
|
7
|
+
return `Failed to find Server Action${actionId ? ` "${actionId}"` : ""}.`;
|
|
8
|
+
}
|
|
9
|
+
function getServerActionNotFoundMessage(actionId) {
|
|
10
|
+
return `${getServerActionNotFoundPrefix(actionId)} This request might be from an older or newer deployment.\nRead more: ${SERVER_ACTION_NOT_FOUND_DOCS}`;
|
|
11
|
+
}
|
|
12
|
+
function getServerActionNotFoundClientMessage(actionId) {
|
|
13
|
+
return `Server Action "${actionId}" was not found on the server. \nRead more: ${SERVER_ACTION_NOT_FOUND_DOCS}`;
|
|
14
|
+
}
|
|
15
|
+
function getUnknownMessage(error) {
|
|
16
|
+
if (error instanceof Error) return error.message;
|
|
17
|
+
return typeof error === "string" ? error : "";
|
|
18
|
+
}
|
|
19
|
+
function isServerActionNotFoundError(error, actionId) {
|
|
20
|
+
const message = getUnknownMessage(error);
|
|
21
|
+
if (!message) return false;
|
|
22
|
+
if (actionId && message.startsWith(getServerActionNotFoundPrefix(actionId))) return true;
|
|
23
|
+
if (!actionId && message.startsWith("Failed to find Server Action")) return true;
|
|
24
|
+
if (actionId) {
|
|
25
|
+
const moduleId = actionId.split("#")[0];
|
|
26
|
+
if (message.includes(`[vite-rsc] invalid server reference '${actionId}'`) || moduleId && moduleId !== actionId && message.includes(`[vite-rsc] invalid server reference '${moduleId}'`)) return true;
|
|
27
|
+
if (message.includes(`server reference not found '${actionId}'`) || moduleId && moduleId !== actionId && message.includes(`server reference not found '${moduleId}'`)) return true;
|
|
28
|
+
return false;
|
|
29
|
+
}
|
|
30
|
+
return /\[vite-rsc] invalid server reference '/.test(message) || /server reference not found '/.test(message);
|
|
31
|
+
}
|
|
32
|
+
function createServerActionNotFoundResponse() {
|
|
33
|
+
return new Response(SERVER_ACTION_NOT_FOUND_BODY, {
|
|
34
|
+
status: 404,
|
|
35
|
+
headers: {
|
|
36
|
+
[NEXTJS_ACTION_NOT_FOUND_HEADER]: "1",
|
|
37
|
+
"content-type": "text/plain"
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
function isServerActionNotFoundResponse(response) {
|
|
42
|
+
return response.headers.get(NEXTJS_ACTION_NOT_FOUND_HEADER) === "1";
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Throw an `UnrecognizedActionError` when the server reported the requested
|
|
46
|
+
* server action id as unknown (the `x-nextjs-action-not-found` response
|
|
47
|
+
* header); otherwise return so the caller can keep processing the response.
|
|
48
|
+
*
|
|
49
|
+
* The client-side counterpart of `createServerActionNotFoundResponse`. The
|
|
50
|
+
* typed error lets client `catch` blocks call the public
|
|
51
|
+
* `unstable_isUnrecognizedActionError` predicate to detect client/server
|
|
52
|
+
* deployment skew and recover (typically by reloading the page).
|
|
53
|
+
*
|
|
54
|
+
* Mirrors Next.js, whose server-action reducer throws `UnrecognizedActionError`
|
|
55
|
+
* on this same response header:
|
|
56
|
+
* https://github.com/vercel/next.js/blob/canary/packages/next/src/client/components/router-reducer/reducers/server-action-reducer.ts
|
|
57
|
+
*/
|
|
58
|
+
function throwOnServerActionNotFound(response, actionId) {
|
|
59
|
+
if (isServerActionNotFoundResponse(response)) throw new UnrecognizedActionError(getServerActionNotFoundClientMessage(actionId));
|
|
60
|
+
}
|
|
61
|
+
//#endregion
|
|
62
|
+
export { createServerActionNotFoundResponse, getServerActionNotFoundMessage, isServerActionNotFoundError, throwOnServerActionNotFound };
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { AsyncLocalStorage } from "node:async_hooks";
|
|
2
|
+
//#region src/server/server-globals.ts
|
|
3
|
+
/**
|
|
4
|
+
* Server runtime global setup shared by vinext's generated server entries.
|
|
5
|
+
*
|
|
6
|
+
* This module intentionally runs its installer at import time. Generated entry
|
|
7
|
+
* modules import user pages and layouts as static dependencies, so any global
|
|
8
|
+
* correction that must happen before user module evaluation has to live in a
|
|
9
|
+
* side-effect dependency. A runtime function call from the generated entry
|
|
10
|
+
* body would run after static user imports have already evaluated.
|
|
11
|
+
*/
|
|
12
|
+
function clearBrowserGlobal(name) {
|
|
13
|
+
const descriptor = Object.getOwnPropertyDescriptor(globalThis, name);
|
|
14
|
+
if (!descriptor && typeof Reflect.get(globalThis, name) === "undefined") return;
|
|
15
|
+
if (!descriptor) Object.defineProperty(globalThis, name, {
|
|
16
|
+
configurable: true,
|
|
17
|
+
value: void 0,
|
|
18
|
+
writable: true
|
|
19
|
+
});
|
|
20
|
+
else if (descriptor.configurable) Reflect.deleteProperty(globalThis, name);
|
|
21
|
+
else Reflect.set(globalThis, name, void 0);
|
|
22
|
+
if (typeof Reflect.get(globalThis, name) !== "undefined") throw new Error(`[vinext] Server runtime exposes a non-removable \`${name}\` global. This breaks Next.js SSR semantics where browser globals must be absent.`);
|
|
23
|
+
}
|
|
24
|
+
function installServerGlobals() {
|
|
25
|
+
clearBrowserGlobal("window");
|
|
26
|
+
clearBrowserGlobal("document");
|
|
27
|
+
if (typeof Reflect.get(globalThis, "AsyncLocalStorage") === "undefined") Object.defineProperty(globalThis, "AsyncLocalStorage", {
|
|
28
|
+
configurable: true,
|
|
29
|
+
value: AsyncLocalStorage,
|
|
30
|
+
writable: true
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
installServerGlobals();
|
|
34
|
+
//#endregion
|
|
35
|
+
export { installServerGlobals };
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { ArtifactCompatibilityEnvelope, ArtifactCompatibilityEvaluationOptions } from "./artifact-compatibility.js";
|
|
2
|
+
import { StaticLayoutArtifactReuseDecision } from "./cache-proof.js";
|
|
3
|
+
import { ClientReuseManifestEntry, ClientReuseManifestEntryRejection, ClientReuseManifestParseResult, ClientReuseManifestRejection, ClientReuseManifestSkipDisposition, ClientReuseManifestTraceFields } from "./client-reuse-manifest.js";
|
|
4
|
+
import { createStaticLayoutClientReuseArtifactCompatibility, createStaticLayoutClientReusePayloadHash, createStaticLayoutClientReuseRouteId } from "./static-layout-client-reuse-proof.js";
|
|
5
|
+
|
|
6
|
+
//#region src/server/skip-cache-proof.d.ts
|
|
7
|
+
type SkipCacheInvalidationProof = Readonly<{
|
|
8
|
+
kind: "invalidated";
|
|
9
|
+
invalidationEpoch: string | null;
|
|
10
|
+
}> | Readonly<{
|
|
11
|
+
kind: "unknown";
|
|
12
|
+
}> | Readonly<{
|
|
13
|
+
kind: "valid";
|
|
14
|
+
}>;
|
|
15
|
+
type SkipCacheArtifactProof = Readonly<{
|
|
16
|
+
compatibility: ArtifactCompatibilityEnvelope;
|
|
17
|
+
invalidation: SkipCacheInvalidationProof;
|
|
18
|
+
payloadHash: string | null;
|
|
19
|
+
}>;
|
|
20
|
+
type SkipCacheCrossCheckAcceptanceCode = "SKIP_CACHE_CROSS_CHECK_PASSED";
|
|
21
|
+
type SkipCacheCrossCheckVerified = Readonly<{
|
|
22
|
+
code: SkipCacheCrossCheckAcceptanceCode;
|
|
23
|
+
entryId: string;
|
|
24
|
+
fields: ClientReuseManifestTraceFields;
|
|
25
|
+
kind: "verified";
|
|
26
|
+
skipDisposition: ClientReuseManifestSkipDisposition;
|
|
27
|
+
}>;
|
|
28
|
+
type SkipCacheCrossCheckRejected = Readonly<{
|
|
29
|
+
kind: "rejected";
|
|
30
|
+
rejection: ClientReuseManifestEntryRejection;
|
|
31
|
+
skipDisposition: ClientReuseManifestSkipDisposition;
|
|
32
|
+
}>;
|
|
33
|
+
type SkipCacheCrossCheckResult = SkipCacheCrossCheckRejected | SkipCacheCrossCheckVerified;
|
|
34
|
+
type CrossCheckClientReuseManifestEntryWithCacheInput = Readonly<{
|
|
35
|
+
artifact: SkipCacheArtifactProof;
|
|
36
|
+
cacheDecision: StaticLayoutArtifactReuseDecision | null;
|
|
37
|
+
entry: ClientReuseManifestEntry;
|
|
38
|
+
}> & ArtifactCompatibilityEvaluationOptions;
|
|
39
|
+
type ClientReuseSkipTransportPlan = Readonly<{
|
|
40
|
+
entryRejections: readonly ClientReuseManifestEntryRejection[];
|
|
41
|
+
kind: "renderAndSend";
|
|
42
|
+
manifestRejection?: ClientReuseManifestRejection;
|
|
43
|
+
skipDisposition: ClientReuseManifestSkipDisposition;
|
|
44
|
+
skipIneligibleEntryIds: readonly string[];
|
|
45
|
+
skippedEntryIds: readonly string[];
|
|
46
|
+
}> | Readonly<{
|
|
47
|
+
entryRejections: readonly ClientReuseManifestEntryRejection[];
|
|
48
|
+
kind: "skip";
|
|
49
|
+
skipDisposition: ClientReuseManifestSkipDisposition;
|
|
50
|
+
skipIneligibleEntryIds: readonly string[];
|
|
51
|
+
skippedEntryIds: readonly string[];
|
|
52
|
+
}>;
|
|
53
|
+
type CreateClientReuseSkipTransportPlanInput = Readonly<{
|
|
54
|
+
manifest: ClientReuseManifestParseResult;
|
|
55
|
+
maxWireEntriesToVerify?: number;
|
|
56
|
+
verifyEntry: (entry: ClientReuseManifestEntry) => SkipCacheCrossCheckResult;
|
|
57
|
+
}>;
|
|
58
|
+
declare function crossCheckClientReuseManifestEntryWithCache(input: CrossCheckClientReuseManifestEntryWithCacheInput): SkipCacheCrossCheckResult;
|
|
59
|
+
declare function createClientReuseSkipTransportPlan(input: CreateClientReuseSkipTransportPlanInput): ClientReuseSkipTransportPlan;
|
|
60
|
+
//#endregion
|
|
61
|
+
export { SkipCacheInvalidationProof, createClientReuseSkipTransportPlan, createStaticLayoutClientReuseArtifactCompatibility, createStaticLayoutClientReusePayloadHash, createStaticLayoutClientReuseRouteId, crossCheckClientReuseManifestEntryWithCache };
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
import { ARTIFACT_COMPATIBILITY_PROOF_FIELDS, evaluateArtifactCompatibility } from "./artifact-compatibility.js";
|
|
2
|
+
import { createClientReusePayloadHash } from "./client-reuse-manifest.js";
|
|
3
|
+
import { createStaticLayoutClientReuseArtifactCompatibility, createStaticLayoutClientReusePayloadHash, createStaticLayoutClientReuseRouteId } from "./static-layout-client-reuse-proof.js";
|
|
4
|
+
//#region src/server/skip-cache-proof.ts
|
|
5
|
+
function createDisabledSkipDisposition() {
|
|
6
|
+
return {
|
|
7
|
+
code: "SKIP_MODEL_DISABLED",
|
|
8
|
+
enabled: false,
|
|
9
|
+
mode: "renderAndSend"
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
function createStaticLayoutSkipDisposition(skippedEntryIds) {
|
|
13
|
+
return {
|
|
14
|
+
code: "SKIP_STATIC_LAYOUT_VERIFIED",
|
|
15
|
+
enabled: true,
|
|
16
|
+
mode: "skipStaticLayout",
|
|
17
|
+
skippedEntryIds: [...skippedEntryIds]
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
function rejectSkipCacheCrossCheck(entry, code, fields = {}) {
|
|
21
|
+
return {
|
|
22
|
+
kind: "rejected",
|
|
23
|
+
rejection: {
|
|
24
|
+
code,
|
|
25
|
+
entryId: entry.id,
|
|
26
|
+
fields
|
|
27
|
+
},
|
|
28
|
+
skipDisposition: createDisabledSkipDisposition()
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
function collectArtifactCompatibilityProofMismatches(artifactCompatibility, proofCompatibility) {
|
|
32
|
+
const mismatchedFields = [];
|
|
33
|
+
for (const field of ARTIFACT_COMPATIBILITY_PROOF_FIELDS) if (artifactCompatibility[field] !== proofCompatibility[field]) mismatchedFields.push(field);
|
|
34
|
+
return mismatchedFields;
|
|
35
|
+
}
|
|
36
|
+
function isExactArtifactCompatibility(artifactCompatibility, entryCompatibility) {
|
|
37
|
+
return collectArtifactCompatibilityProofMismatches(artifactCompatibility, entryCompatibility).length === 0;
|
|
38
|
+
}
|
|
39
|
+
function assertNever(value) {
|
|
40
|
+
throw new Error(`Unhandled skip/cache proof state: ${String(value)}`);
|
|
41
|
+
}
|
|
42
|
+
function createRenderAndSendPlan(options) {
|
|
43
|
+
return {
|
|
44
|
+
kind: "renderAndSend",
|
|
45
|
+
entryRejections: options.entryRejections ?? [],
|
|
46
|
+
...options.manifestRejection ? { manifestRejection: options.manifestRejection } : {},
|
|
47
|
+
skipDisposition: createDisabledSkipDisposition(),
|
|
48
|
+
skipIneligibleEntryIds: options.skipIneligibleEntryIds ?? [],
|
|
49
|
+
skippedEntryIds: []
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
function createVerificationBudgetExceededRejection(totalWireEntries, maxWireEntriesToVerify) {
|
|
53
|
+
return {
|
|
54
|
+
code: "SKIP_VERIFICATION_BUDGET_EXCEEDED",
|
|
55
|
+
fields: {
|
|
56
|
+
totalWireEntries,
|
|
57
|
+
maxWireEntriesToVerify
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
function crossCheckInvalidationProof(entry, invalidation) {
|
|
62
|
+
switch (invalidation.kind) {
|
|
63
|
+
case "valid": return null;
|
|
64
|
+
case "unknown": return rejectSkipCacheCrossCheck(entry, "SKIP_CACHE_INVALIDATION_UNKNOWN");
|
|
65
|
+
case "invalidated": return rejectSkipCacheCrossCheck(entry, "SKIP_CACHE_INVALIDATED", { invalidationEpoch: invalidation.invalidationEpoch });
|
|
66
|
+
default: return assertNever(invalidation);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
function crossCheckClientReuseManifestEntryWithCache(input) {
|
|
70
|
+
const { cacheDecision, entry } = input;
|
|
71
|
+
if (cacheDecision === null) return rejectSkipCacheCrossCheck(entry, "SKIP_CACHE_PROOF_MISSING");
|
|
72
|
+
if (cacheDecision.kind === "fallback") return rejectSkipCacheCrossCheck(entry, "SKIP_CACHE_PROOF_REJECTED", {
|
|
73
|
+
cacheProofCode: cacheDecision.fallback.code,
|
|
74
|
+
cacheProofMode: cacheDecision.fallback.mode,
|
|
75
|
+
cacheProofScope: cacheDecision.fallback.scope
|
|
76
|
+
});
|
|
77
|
+
const { proof } = cacheDecision;
|
|
78
|
+
if (entry.kind !== "layout" || proof.reuseClass !== "static-layout") return rejectSkipCacheCrossCheck(entry, "SKIP_CACHE_REUSE_CLASS_UNSUPPORTED", {
|
|
79
|
+
entryKind: entry.kind,
|
|
80
|
+
reuseClass: proof.reuseClass
|
|
81
|
+
});
|
|
82
|
+
if (entry.id !== proof.candidateOutput.layoutId) return rejectSkipCacheCrossCheck(entry, "SKIP_CACHE_ENTRY_ID_MISMATCH", {
|
|
83
|
+
cacheEntryId: proof.candidateOutput.layoutId,
|
|
84
|
+
manifestEntryId: entry.id
|
|
85
|
+
});
|
|
86
|
+
const artifactProofMismatches = collectArtifactCompatibilityProofMismatches(input.artifact.compatibility, proof.candidateArtifactCompatibility);
|
|
87
|
+
if (artifactProofMismatches.length > 0) return rejectSkipCacheCrossCheck(entry, "SKIP_CACHE_ARTIFACT_PROOF_MISMATCH", { mismatchedFields: artifactProofMismatches });
|
|
88
|
+
const artifactCompatibility = evaluateArtifactCompatibility(input.artifact.compatibility, entry.artifactCompatibility, { compatibilityMap: input.compatibilityMap });
|
|
89
|
+
if (artifactCompatibility.kind === "unknown") return rejectSkipCacheCrossCheck(entry, "SKIP_CACHE_ARTIFACT_COMPATIBILITY_UNKNOWN", {
|
|
90
|
+
compatibilityFallback: artifactCompatibility.fallback,
|
|
91
|
+
reason: artifactCompatibility.reason
|
|
92
|
+
});
|
|
93
|
+
if (artifactCompatibility.kind === "incompatible") return rejectSkipCacheCrossCheck(entry, "SKIP_CACHE_ARTIFACT_COMPATIBILITY_INCOMPATIBLE", {
|
|
94
|
+
compatibilityFallback: artifactCompatibility.fallback,
|
|
95
|
+
reason: artifactCompatibility.reason
|
|
96
|
+
});
|
|
97
|
+
if (entry.variantCacheKey !== proof.variant.cacheKey) return rejectSkipCacheCrossCheck(entry, "SKIP_CACHE_VARIANT_MISMATCH", {
|
|
98
|
+
cacheVariantCacheKeyHash: createClientReusePayloadHash(proof.variant.cacheKey),
|
|
99
|
+
entryVariantCacheKeyHash: createClientReusePayloadHash(entry.variantCacheKey)
|
|
100
|
+
});
|
|
101
|
+
if (input.artifact.payloadHash === null) return rejectSkipCacheCrossCheck(entry, "SKIP_CACHE_PAYLOAD_HASH_MISSING");
|
|
102
|
+
if (entry.payloadHash !== input.artifact.payloadHash) return rejectSkipCacheCrossCheck(entry, "SKIP_CACHE_PAYLOAD_HASH_MISMATCH", {
|
|
103
|
+
cachePayloadHash: input.artifact.payloadHash,
|
|
104
|
+
entryPayloadHash: entry.payloadHash
|
|
105
|
+
});
|
|
106
|
+
const invalidationRejection = crossCheckInvalidationProof(entry, input.artifact.invalidation);
|
|
107
|
+
if (invalidationRejection) return invalidationRejection;
|
|
108
|
+
const skipDisposition = isExactArtifactCompatibility(input.artifact.compatibility, entry.artifactCompatibility) ? createStaticLayoutSkipDisposition([entry.id]) : createDisabledSkipDisposition();
|
|
109
|
+
return {
|
|
110
|
+
kind: "verified",
|
|
111
|
+
code: "SKIP_CACHE_CROSS_CHECK_PASSED",
|
|
112
|
+
entryId: entry.id,
|
|
113
|
+
fields: {
|
|
114
|
+
entryKind: entry.kind,
|
|
115
|
+
reuseClass: proof.reuseClass,
|
|
116
|
+
variantCacheKeyHash: createClientReusePayloadHash(proof.variant.cacheKey)
|
|
117
|
+
},
|
|
118
|
+
skipDisposition
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
function createClientReuseSkipTransportPlan(input) {
|
|
122
|
+
const { manifest } = input;
|
|
123
|
+
if (manifest.kind === "absent") return createRenderAndSendPlan({});
|
|
124
|
+
if (manifest.kind === "rejected") return createRenderAndSendPlan({ manifestRejection: manifest.rejection });
|
|
125
|
+
const maxWireEntriesToVerify = input.maxWireEntriesToVerify ?? 8;
|
|
126
|
+
if (!Number.isSafeInteger(maxWireEntriesToVerify) || maxWireEntriesToVerify < 0) throw new RangeError("maxWireEntriesToVerify must be a non-negative safe integer");
|
|
127
|
+
const totalWireEntries = manifest.manifest.entries.length + manifest.entryRejections.length;
|
|
128
|
+
if (totalWireEntries > maxWireEntriesToVerify) return createRenderAndSendPlan({
|
|
129
|
+
entryRejections: manifest.entryRejections,
|
|
130
|
+
manifestRejection: createVerificationBudgetExceededRejection(totalWireEntries, maxWireEntriesToVerify)
|
|
131
|
+
});
|
|
132
|
+
const skippedEntryIds = [];
|
|
133
|
+
const skipIneligibleEntryIds = [];
|
|
134
|
+
const entryRejections = [...manifest.entryRejections];
|
|
135
|
+
for (const entry of manifest.manifest.entries) {
|
|
136
|
+
const verification = input.verifyEntry(entry);
|
|
137
|
+
if (verification.kind === "rejected") {
|
|
138
|
+
entryRejections.push(verification.rejection);
|
|
139
|
+
continue;
|
|
140
|
+
}
|
|
141
|
+
if (verification.entryId !== entry.id) {
|
|
142
|
+
entryRejections.push({
|
|
143
|
+
code: "SKIP_CACHE_ENTRY_ID_MISMATCH",
|
|
144
|
+
entryId: entry.id,
|
|
145
|
+
fields: {
|
|
146
|
+
verifierEntryId: verification.entryId,
|
|
147
|
+
manifestEntryId: entry.id
|
|
148
|
+
}
|
|
149
|
+
});
|
|
150
|
+
continue;
|
|
151
|
+
}
|
|
152
|
+
if (verification.skipDisposition.enabled) skippedEntryIds.push(entry.id);
|
|
153
|
+
else skipIneligibleEntryIds.push(entry.id);
|
|
154
|
+
}
|
|
155
|
+
if (skippedEntryIds.length === 0) return createRenderAndSendPlan({
|
|
156
|
+
entryRejections,
|
|
157
|
+
skipIneligibleEntryIds
|
|
158
|
+
});
|
|
159
|
+
return {
|
|
160
|
+
kind: "skip",
|
|
161
|
+
entryRejections,
|
|
162
|
+
skipDisposition: createStaticLayoutSkipDisposition(skippedEntryIds),
|
|
163
|
+
skipIneligibleEntryIds,
|
|
164
|
+
skippedEntryIds
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
//#endregion
|
|
168
|
+
export { createClientReuseSkipTransportPlan, createStaticLayoutClientReuseArtifactCompatibility, createStaticLayoutClientReusePayloadHash, createStaticLayoutClientReuseRouteId, crossCheckClientReuseManifestEntryWithCache };
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
//#region src/server/socket-error-backstop.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* Pure predicate: returns the peer-disconnect code when `err` carries
|
|
4
|
+
* one of `ECONNRESET` / `EPIPE` / `ECONNABORTED`, otherwise `undefined`.
|
|
5
|
+
* Exported for unit testing in isolation (no process-state mutation).
|
|
6
|
+
*/
|
|
7
|
+
declare function peerDisconnectCode(err: unknown): string | undefined;
|
|
8
|
+
/**
|
|
9
|
+
* Pure predicate: returns `true` when `err` is a benign failure from a
|
|
10
|
+
* dynamic `import()` of a static asset URL — the "URL dependency" pattern
|
|
11
|
+
* that Next.js tolerates at build time. Two shapes are recognised:
|
|
12
|
+
*
|
|
13
|
+
* - `ERR_UNKNOWN_FILE_EXTENSION`: the asset resolved on disk but is not an
|
|
14
|
+
* ES module (e.g. a co-located `./style.css`). The error message ends in
|
|
15
|
+
* the offending extension in quotes: `... extension ".css" for /path`.
|
|
16
|
+
* - `ERR_MODULE_NOT_FOUND`: the asset URL did not resolve (the chunk lives
|
|
17
|
+
* in `dist/server/` but the source asset does not). Node attaches the
|
|
18
|
+
* unresolved specifier on `err.url`; we match only when it points at a
|
|
19
|
+
* static-asset extension.
|
|
20
|
+
*
|
|
21
|
+
* Anything outside this allow-list (including missing `.js`/`.mjs`/`.ts`
|
|
22
|
+
* modules with no extension) returns `false` so real bugs still crash.
|
|
23
|
+
* Exported for unit testing in isolation.
|
|
24
|
+
*/
|
|
25
|
+
declare function isBenignAssetImportError(err: unknown): boolean;
|
|
26
|
+
/**
|
|
27
|
+
* Test-only: returns whether the backstop has been installed in this
|
|
28
|
+
* process. Used by the unit test to assert idempotent install via the
|
|
29
|
+
* Symbol.for guard. Not part of the public API.
|
|
30
|
+
*/
|
|
31
|
+
declare function isSocketErrorBackstopInstalled(): boolean;
|
|
32
|
+
declare function installSocketErrorBackstop(): void;
|
|
33
|
+
//#endregion
|
|
34
|
+
export { installSocketErrorBackstop, isBenignAssetImportError, isSocketErrorBackstopInstalled, peerDisconnectCode };
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
//#region src/server/socket-error-backstop.ts
|
|
2
|
+
/**
|
|
3
|
+
* Process-level backstop for peer-disconnect errors that escape
|
|
4
|
+
* per-connection / per-request error guards.
|
|
5
|
+
*
|
|
6
|
+
* Three real call sites in vinext that hit this:
|
|
7
|
+
* - `fromWeb(fetch().body).pipe(res)` in proxyExternalRewriteNode.
|
|
8
|
+
* - Streaming surfaces inside `@vitejs/plugin-rsc` with their own
|
|
9
|
+
* pipe topology (destinations aren't inbound connection sockets).
|
|
10
|
+
* - Outbound sockets created by middleware `fetch()`.
|
|
11
|
+
*
|
|
12
|
+
* Node's `pipe()` re-emits source errors onto the destination when
|
|
13
|
+
* the destination has no `'error'` listener, throwing synchronously
|
|
14
|
+
* inside a `nextTick` callback. The throw escapes to
|
|
15
|
+
* `uncaughtException`, where this listener filters it.
|
|
16
|
+
*
|
|
17
|
+
* Filters strictly on peer-disconnect codes (ECONNRESET / EPIPE /
|
|
18
|
+
* ECONNABORTED) plus benign static-asset `import()` rejections (see
|
|
19
|
+
* `isBenignAssetImportError`), and synchronously re-throws everything
|
|
20
|
+
* else, preserving Node's default crash semantics for genuine bugs.
|
|
21
|
+
* This is more conservative than Next.js's equivalent
|
|
22
|
+
* (`router-server.ts`'s log-only handler), which silently swallows
|
|
23
|
+
* every uncaught — vinext keeps real bugs surfacing.
|
|
24
|
+
*
|
|
25
|
+
* **Installed at module load.** Earlier iterations tried to gate
|
|
26
|
+
* install via Vite's `config()` hook (`command === "serve"`) so it
|
|
27
|
+
* was strictly dev-only, but the hook didn't fire reliably in
|
|
28
|
+
* vite-plus's lifecycle — install was silently skipped. The
|
|
29
|
+
* connection-level guard from #911 confirms `configureServer`-tied
|
|
30
|
+
* lifecycle hooks are timing-fragile too. Module-load install is
|
|
31
|
+
* the only place reliably observed to fire (verified via the
|
|
32
|
+
* `VINEXT_DEBUG_SOCKET_ERRORS` marker).
|
|
33
|
+
*
|
|
34
|
+
* **Prerender check is dynamic, not install-time.** Prerender (in
|
|
35
|
+
* `build/prerender.ts` and `build/run-prerender.ts`) calls
|
|
36
|
+
* `startProdServer()` from inside `vinext build` to render pages
|
|
37
|
+
* against a real HTTP server. User `fetch()` calls during prerender
|
|
38
|
+
* hit external APIs that can drop connections; absorbing those would
|
|
39
|
+
* silently produce corrupt prerendered output instead of crashing
|
|
40
|
+
* the build. Prerender already sets `VINEXT_PRERENDER=1` for its
|
|
41
|
+
* own purposes — the listener checks it at fire time and re-throws
|
|
42
|
+
* unconditionally when set, acting as if no listener were installed.
|
|
43
|
+
* Doing the check at install time wouldn't work: `index.ts` loads at
|
|
44
|
+
* Vite plugin import, well before prerender starts, so by the time
|
|
45
|
+
* `VINEXT_PRERENDER` is set the listener has already been installed
|
|
46
|
+
* (we cannot uninstall and re-install per phase).
|
|
47
|
+
*
|
|
48
|
+
* Side-effect of the unconditional re-throw during prerender: an
|
|
49
|
+
* orchestrator-induced ECONNRESET (e.g. the prerender's own HTTP
|
|
50
|
+
* client aborting a stuck route fetch) will surface the build crash
|
|
51
|
+
* as `Error: read ECONNRESET` rather than the underlying route
|
|
52
|
+
* failure. Acceptable trade-off — a hung prerender route is itself
|
|
53
|
+
* a build problem worth surfacing — but the resulting stack will
|
|
54
|
+
* point at the disconnect, not the cause. Set
|
|
55
|
+
* `VINEXT_DEBUG_SOCKET_ERRORS=1` to log peer-disconnect codes if
|
|
56
|
+
* you need to disambiguate.
|
|
57
|
+
*
|
|
58
|
+
* **Test skip is install-time.** Vitest workers that import
|
|
59
|
+
* `index.ts` directly should never have the listener installed —
|
|
60
|
+
* peer-disconnect errors during test runs should surface normally.
|
|
61
|
+
* `process.env.VITEST === "true"` is set by Vitest in every worker;
|
|
62
|
+
* `NODE_ENV === "test"` covers other test runners that follow the
|
|
63
|
+
* standard convention.
|
|
64
|
+
*
|
|
65
|
+
* **Listener ordering.** `index.ts` is imported synchronously at the
|
|
66
|
+
* top of every user's `vite.config.ts`, so vinext's listener registers
|
|
67
|
+
* before most user / tooling listeners (Sentry, OpenTelemetry,
|
|
68
|
+
* structured logging). For peer-disconnect codes the early-return is
|
|
69
|
+
* fine. For non-peer-disconnect errors the synchronous re-throw still
|
|
70
|
+
* crashes the process with the original stack, but listeners
|
|
71
|
+
* registered after vinext don't observe the event. Users who need
|
|
72
|
+
* crash-reporter visibility for non-peer-disconnect errors must
|
|
73
|
+
* register their handler before importing vinext.
|
|
74
|
+
*
|
|
75
|
+
* **Symbol.for caveat.** `Symbol.for("vinext.socketErrorBackstop")`
|
|
76
|
+
* is process-global, so if two different vinext versions are loaded
|
|
77
|
+
* in the same process the first to evaluate wins and the second's
|
|
78
|
+
* filter rules silently don't apply.
|
|
79
|
+
*
|
|
80
|
+
* Set `VINEXT_DEBUG_SOCKET_ERRORS=1` to log a one-line marker each
|
|
81
|
+
* time the listener absorbs an error.
|
|
82
|
+
*/
|
|
83
|
+
const SOCKET_BACKSTOP_FLAG = Symbol.for("vinext.socketErrorBackstop");
|
|
84
|
+
/**
|
|
85
|
+
* Pure predicate: returns the peer-disconnect code when `err` carries
|
|
86
|
+
* one of `ECONNRESET` / `EPIPE` / `ECONNABORTED`, otherwise `undefined`.
|
|
87
|
+
* Exported for unit testing in isolation (no process-state mutation).
|
|
88
|
+
*/
|
|
89
|
+
function peerDisconnectCode(err) {
|
|
90
|
+
const code = err?.code;
|
|
91
|
+
return code === "ECONNRESET" || code === "EPIPE" || code === "ECONNABORTED" ? code : void 0;
|
|
92
|
+
}
|
|
93
|
+
const STATIC_ASSET_IMPORT_EXTENSIONS = new Set([
|
|
94
|
+
".css",
|
|
95
|
+
".scss",
|
|
96
|
+
".sass",
|
|
97
|
+
".less",
|
|
98
|
+
".styl",
|
|
99
|
+
".png",
|
|
100
|
+
".jpg",
|
|
101
|
+
".jpeg",
|
|
102
|
+
".gif",
|
|
103
|
+
".svg",
|
|
104
|
+
".webp",
|
|
105
|
+
".avif",
|
|
106
|
+
".ico",
|
|
107
|
+
".bmp",
|
|
108
|
+
".woff",
|
|
109
|
+
".woff2",
|
|
110
|
+
".ttf",
|
|
111
|
+
".otf",
|
|
112
|
+
".eot",
|
|
113
|
+
".txt",
|
|
114
|
+
".md",
|
|
115
|
+
".csv",
|
|
116
|
+
".xml",
|
|
117
|
+
".pdf",
|
|
118
|
+
".wasm"
|
|
119
|
+
]);
|
|
120
|
+
/**
|
|
121
|
+
* Pure predicate: returns `true` when `err` is a benign failure from a
|
|
122
|
+
* dynamic `import()` of a static asset URL — the "URL dependency" pattern
|
|
123
|
+
* that Next.js tolerates at build time. Two shapes are recognised:
|
|
124
|
+
*
|
|
125
|
+
* - `ERR_UNKNOWN_FILE_EXTENSION`: the asset resolved on disk but is not an
|
|
126
|
+
* ES module (e.g. a co-located `./style.css`). The error message ends in
|
|
127
|
+
* the offending extension in quotes: `... extension ".css" for /path`.
|
|
128
|
+
* - `ERR_MODULE_NOT_FOUND`: the asset URL did not resolve (the chunk lives
|
|
129
|
+
* in `dist/server/` but the source asset does not). Node attaches the
|
|
130
|
+
* unresolved specifier on `err.url`; we match only when it points at a
|
|
131
|
+
* static-asset extension.
|
|
132
|
+
*
|
|
133
|
+
* Anything outside this allow-list (including missing `.js`/`.mjs`/`.ts`
|
|
134
|
+
* modules with no extension) returns `false` so real bugs still crash.
|
|
135
|
+
* Exported for unit testing in isolation.
|
|
136
|
+
*/
|
|
137
|
+
function isBenignAssetImportError(err) {
|
|
138
|
+
if (err === null || typeof err !== "object") return false;
|
|
139
|
+
const code = err.code;
|
|
140
|
+
if (code === "ERR_UNKNOWN_FILE_EXTENSION") {
|
|
141
|
+
const message = err.message ?? "";
|
|
142
|
+
const match = /extension\s+"([^"]+)"/.exec(message);
|
|
143
|
+
return match != null && STATIC_ASSET_IMPORT_EXTENSIONS.has(match[1].toLowerCase());
|
|
144
|
+
}
|
|
145
|
+
if (code === "ERR_MODULE_NOT_FOUND") {
|
|
146
|
+
const url = err.url;
|
|
147
|
+
if (typeof url !== "string") return false;
|
|
148
|
+
const pathname = url.split("?", 1)[0].split("#", 1)[0];
|
|
149
|
+
const dot = pathname.lastIndexOf(".");
|
|
150
|
+
if (dot === -1) return false;
|
|
151
|
+
return STATIC_ASSET_IMPORT_EXTENSIONS.has(pathname.slice(dot).toLowerCase());
|
|
152
|
+
}
|
|
153
|
+
return false;
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Test-only: returns whether the backstop has been installed in this
|
|
157
|
+
* process. Used by the unit test to assert idempotent install via the
|
|
158
|
+
* Symbol.for guard. Not part of the public API.
|
|
159
|
+
*/
|
|
160
|
+
function isSocketErrorBackstopInstalled() {
|
|
161
|
+
return Boolean(process[SOCKET_BACKSTOP_FLAG]);
|
|
162
|
+
}
|
|
163
|
+
function installSocketErrorBackstop() {
|
|
164
|
+
const proc = process;
|
|
165
|
+
if (proc[SOCKET_BACKSTOP_FLAG]) return;
|
|
166
|
+
if (process.env.VITEST === "true" || process.env.NODE_ENV === "test") return;
|
|
167
|
+
proc[SOCKET_BACKSTOP_FLAG] = true;
|
|
168
|
+
const debug = process.env.VINEXT_DEBUG_SOCKET_ERRORS === "1";
|
|
169
|
+
if (debug) console.warn("[vinext] socket-error backstop installed");
|
|
170
|
+
const absorbBenignAssetImport = (reason, kind) => {
|
|
171
|
+
if (!isBenignAssetImportError(reason)) return false;
|
|
172
|
+
if (debug) {
|
|
173
|
+
const code = reason?.code;
|
|
174
|
+
console.warn(`[vinext] absorbed ${kind} ${code} (asset URL import)`);
|
|
175
|
+
}
|
|
176
|
+
return true;
|
|
177
|
+
};
|
|
178
|
+
process.on("uncaughtException", (err) => {
|
|
179
|
+
if (absorbBenignAssetImport(err, "uncaughtException")) return;
|
|
180
|
+
if (process.env.VINEXT_PRERENDER === "1") throw err;
|
|
181
|
+
const code = peerDisconnectCode(err);
|
|
182
|
+
if (code) {
|
|
183
|
+
if (debug) console.warn(`[vinext] absorbed uncaughtException ${code}`);
|
|
184
|
+
return;
|
|
185
|
+
}
|
|
186
|
+
throw err;
|
|
187
|
+
});
|
|
188
|
+
process.on("unhandledRejection", (reason) => {
|
|
189
|
+
if (absorbBenignAssetImport(reason, "unhandledRejection")) return;
|
|
190
|
+
if (process.env.VINEXT_PRERENDER === "1") throw reason;
|
|
191
|
+
const code = peerDisconnectCode(reason);
|
|
192
|
+
if (code) {
|
|
193
|
+
if (debug) console.warn(`[vinext] absorbed unhandledRejection ${code}`);
|
|
194
|
+
return;
|
|
195
|
+
}
|
|
196
|
+
throw reason;
|
|
197
|
+
});
|
|
198
|
+
}
|
|
199
|
+
//#endregion
|
|
200
|
+
export { installSocketErrorBackstop, isBenignAssetImportError, isSocketErrorBackstopInstalled, peerDisconnectCode };
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
//#region src/server/static-file-cache.d.ts
|
|
2
|
+
/** Content-type lookup for static assets. Shared with prod-server.ts. */
|
|
3
|
+
declare const CONTENT_TYPES: Record<string, string>;
|
|
4
|
+
/** A servable file variant with pre-computed response headers. */
|
|
5
|
+
type FileVariant = {
|
|
6
|
+
/** Absolute file path (used for streaming large files). */path: string; /** Uncompressed or encoded byte size for buffer-threshold decisions. */
|
|
7
|
+
size: number; /** Pre-computed response headers. */
|
|
8
|
+
headers: Record<string, string>; /** In-memory buffer for small files (below BUFFER_THRESHOLD). */
|
|
9
|
+
buffer?: Buffer;
|
|
10
|
+
};
|
|
11
|
+
type StaticFileEntry = {
|
|
12
|
+
/** Weak ETag for conditional request matching. */etag: string; /** Pre-computed headers for 304 Not Modified response. */
|
|
13
|
+
notModifiedHeaders: Record<string, string>; /** Original file variant (uncompressed). */
|
|
14
|
+
original: FileVariant; /** Brotli precompressed variant, if .br file exists. */
|
|
15
|
+
br?: FileVariant; /** Gzip precompressed variant, if .gz file exists. */
|
|
16
|
+
gz?: FileVariant; /** Zstandard precompressed variant, if .zst file exists. */
|
|
17
|
+
zst?: FileVariant;
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* In-memory cache of static file metadata, populated once at server startup.
|
|
21
|
+
*
|
|
22
|
+
* Usage:
|
|
23
|
+
* const cache = await StaticFileCache.create(clientDir);
|
|
24
|
+
* const entry = cache.lookup("/_next/static/app-abc123.js");
|
|
25
|
+
* // entry.br?.headers, entry.original.headers, etc.
|
|
26
|
+
*/
|
|
27
|
+
declare class StaticFileCache {
|
|
28
|
+
private readonly entries;
|
|
29
|
+
private constructor();
|
|
30
|
+
/**
|
|
31
|
+
* Scan the client directory and build the cache.
|
|
32
|
+
*
|
|
33
|
+
* Gracefully handles non-existent directories (returns an empty cache).
|
|
34
|
+
*/
|
|
35
|
+
static create(clientDir: string): Promise<StaticFileCache>;
|
|
36
|
+
/**
|
|
37
|
+
* Look up cached metadata for a URL pathname.
|
|
38
|
+
*
|
|
39
|
+
* Returns undefined if the file is not in the cache. The root path "/"
|
|
40
|
+
* always returns undefined — index.html is served by SSR/RSC.
|
|
41
|
+
*/
|
|
42
|
+
lookup(pathname: string): StaticFileEntry | undefined;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Extract a stable weak ETag from a Vite hashed filename (e.g. `app-DqZc3R4n.js`).
|
|
46
|
+
* The hash is a content hash computed by the bundler — deterministic across
|
|
47
|
+
* identical builds regardless of filesystem timestamps.
|
|
48
|
+
*
|
|
49
|
+
* Must be a weak validator (W/) because the same tag is shared across
|
|
50
|
+
* content-encoded variants (original, .br, .gz, .zst) which are byte-different.
|
|
51
|
+
* Returns null if the filename doesn't contain a recognizable hash suffix,
|
|
52
|
+
* so the caller can fall back to mtime-based ETags.
|
|
53
|
+
*/
|
|
54
|
+
declare function etagFromFilenameHash(relativePath: string, ext: string): string | null;
|
|
55
|
+
//#endregion
|
|
56
|
+
export { CONTENT_TYPES, StaticFileCache, etagFromFilenameHash };
|