@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,104 @@
|
|
|
1
|
+
import { ArtifactCompatibilityEnvelope } from "./artifact-compatibility.js";
|
|
2
|
+
|
|
3
|
+
//#region src/server/client-reuse-manifest.d.ts
|
|
4
|
+
declare const CLIENT_REUSE_MANIFEST_SCHEMA_VERSION = 1;
|
|
5
|
+
type ClientReuseManifestSchemaVersion = 1;
|
|
6
|
+
declare const CLIENT_REUSE_MANIFEST_HASH_ALGORITHM = "fnv1a64";
|
|
7
|
+
type ClientReuseManifestHashAlgorithm = typeof CLIENT_REUSE_MANIFEST_HASH_ALGORITHM;
|
|
8
|
+
type ClientReuseManifestLimits = Readonly<{
|
|
9
|
+
maxEntryCount: number;
|
|
10
|
+
maxEntryIdLength: number;
|
|
11
|
+
maxManifestBytes: number;
|
|
12
|
+
maxPayloadHashLength: number;
|
|
13
|
+
maxVariantCacheKeyLength: number;
|
|
14
|
+
}>;
|
|
15
|
+
declare const DEFAULT_CLIENT_REUSE_MANIFEST_LIMITS: {
|
|
16
|
+
maxEntryCount: number;
|
|
17
|
+
maxEntryIdLength: number;
|
|
18
|
+
maxManifestBytes: number;
|
|
19
|
+
maxPayloadHashLength: number;
|
|
20
|
+
maxVariantCacheKeyLength: number;
|
|
21
|
+
};
|
|
22
|
+
declare const CLIENT_REUSE_MANIFEST_SKIP_VERIFICATION_ENTRY_BUDGET = 8;
|
|
23
|
+
type ClientReuseManifestEntryKind = "layout" | "page" | "route" | "slot" | "template";
|
|
24
|
+
type ClientReuseManifestEntryPrivacy = "private" | "public";
|
|
25
|
+
type ClientReuseManifestReplayWindow = Readonly<{
|
|
26
|
+
validFromVisibleCommitVersion: number;
|
|
27
|
+
validUntilVisibleCommitVersion: number;
|
|
28
|
+
}>;
|
|
29
|
+
type ClientReuseManifestEntry = Readonly<{
|
|
30
|
+
artifactCompatibility: ArtifactCompatibilityEnvelope;
|
|
31
|
+
id: string;
|
|
32
|
+
kind: ClientReuseManifestEntryKind;
|
|
33
|
+
payloadHash: string;
|
|
34
|
+
privacy: "public";
|
|
35
|
+
variantCacheKey: string;
|
|
36
|
+
}>;
|
|
37
|
+
type ClientReuseManifestWireEntry = Readonly<{
|
|
38
|
+
artifactCompatibility: ArtifactCompatibilityEnvelope;
|
|
39
|
+
id: string;
|
|
40
|
+
payloadHash: string;
|
|
41
|
+
privacy: ClientReuseManifestEntryPrivacy;
|
|
42
|
+
variantCacheKey: string;
|
|
43
|
+
}>;
|
|
44
|
+
type ClientReuseManifest = Readonly<{
|
|
45
|
+
entries: readonly ClientReuseManifestEntry[];
|
|
46
|
+
hashAlgorithm: ClientReuseManifestHashAlgorithm;
|
|
47
|
+
replayWindow: ClientReuseManifestReplayWindow;
|
|
48
|
+
schemaVersion: ClientReuseManifestSchemaVersion;
|
|
49
|
+
visibleCommitVersion: number;
|
|
50
|
+
}>;
|
|
51
|
+
type ClientReuseManifestWire = Readonly<{
|
|
52
|
+
entries: readonly ClientReuseManifestWireEntry[];
|
|
53
|
+
hashAlgorithm: ClientReuseManifestHashAlgorithm;
|
|
54
|
+
replayWindow: ClientReuseManifestReplayWindow;
|
|
55
|
+
schemaVersion: ClientReuseManifestSchemaVersion;
|
|
56
|
+
visibleCommitVersion: number;
|
|
57
|
+
}>;
|
|
58
|
+
type CreateClientReuseManifestInput = Readonly<{
|
|
59
|
+
entries: readonly ClientReuseManifestWireEntry[];
|
|
60
|
+
replayWindow?: ClientReuseManifestReplayWindow;
|
|
61
|
+
visibleCommitVersion: number;
|
|
62
|
+
}>;
|
|
63
|
+
type ClientReuseManifestRejectionCode = "SKIP_CACHE_ARTIFACT_COMPATIBILITY_INCOMPATIBLE" | "SKIP_CACHE_ARTIFACT_COMPATIBILITY_UNKNOWN" | "SKIP_CACHE_ARTIFACT_PROOF_MISMATCH" | "SKIP_CACHE_ENTRY_ID_MISMATCH" | "SKIP_CACHE_INVALIDATED" | "SKIP_CACHE_INVALIDATION_UNKNOWN" | "SKIP_CACHE_PAYLOAD_HASH_MISMATCH" | "SKIP_CACHE_PAYLOAD_HASH_MISSING" | "SKIP_CACHE_PROOF_MISSING" | "SKIP_CACHE_PROOF_REJECTED" | "SKIP_CACHE_REUSE_CLASS_UNSUPPORTED" | "SKIP_CACHE_VARIANT_MISMATCH" | "SKIP_LAYOUT_CACHE_LIFE_OBSERVED" | "SKIP_LAYOUT_CACHE_TAGS_OBSERVED" | "SKIP_LAYOUT_CACHEABLE_FETCHES_OBSERVED" | "SKIP_LAYOUT_DYNAMIC_FETCHES_OBSERVED" | "SKIP_LAYOUT_DYNAMIC_USAGE_OBSERVED" | "SKIP_LAYOUT_PARAMS_OBSERVED" | "SKIP_LAYOUT_PARAMS_OBSERVATION_INCOMPLETE" | "SKIP_LAYOUT_PARAMS_PRESENT" | "SKIP_LAYOUT_REVALIDATE_PRESENT" | "SKIP_LAYOUT_REQUEST_API_OBSERVED" | "SKIP_LAYOUT_UNSTABLE_CACHE_OBSERVED" | "SKIP_ARTIFACT_COMPATIBILITY_INVALID" | "SKIP_ENTRY_COUNT_EXCEEDED" | "SKIP_VERIFICATION_BUDGET_EXCEEDED" | "SKIP_ENTRY_HASH_INVALID" | "SKIP_ENTRY_ID_INVALID" | "SKIP_ENTRY_ID_TOO_LONG" | "SKIP_ENTRY_MALFORMED" | "SKIP_ENTRY_ORDER_NON_CANONICAL" | "SKIP_HASH_ALGORITHM_UNSUPPORTED" | "SKIP_MANIFEST_MALFORMED" | "SKIP_MANIFEST_SCHEMA_UNSUPPORTED" | "SKIP_MANIFEST_TOO_LARGE" | "SKIP_PRIVATE_ENTRY" | "SKIP_REPLAY_WINDOW_INVALID" | "SKIP_UNKNOWN_ENTRY" | "SKIP_VARIANT_CACHE_KEY_INVALID" | "SKIP_VARIANT_CACHE_KEY_TOO_LONG" | "SKIP_VISIBLE_COMMIT_VERSION_INVALID" | "SKIP_VISIBLE_COMMIT_VERSION_MISMATCH";
|
|
64
|
+
type ClientReuseManifestTraceFieldValue = string | number | boolean | null | readonly string[];
|
|
65
|
+
type ClientReuseManifestTraceFields = Readonly<Record<string, ClientReuseManifestTraceFieldValue>>;
|
|
66
|
+
type ClientReuseManifestRejection = Readonly<{
|
|
67
|
+
code: ClientReuseManifestRejectionCode;
|
|
68
|
+
fields: ClientReuseManifestTraceFields;
|
|
69
|
+
}>;
|
|
70
|
+
type ClientReuseManifestEntryRejection = ClientReuseManifestRejection & Readonly<{
|
|
71
|
+
entryId: string | null;
|
|
72
|
+
}>;
|
|
73
|
+
type ClientReuseManifestSkipDisposition = Readonly<{
|
|
74
|
+
code: "SKIP_MODEL_DISABLED";
|
|
75
|
+
enabled: false;
|
|
76
|
+
mode: "renderAndSend";
|
|
77
|
+
}> | Readonly<{
|
|
78
|
+
code: "SKIP_STATIC_LAYOUT_VERIFIED";
|
|
79
|
+
enabled: true;
|
|
80
|
+
mode: "skipStaticLayout";
|
|
81
|
+
skippedEntryIds: readonly string[];
|
|
82
|
+
}>;
|
|
83
|
+
type ClientReuseManifestParseResult = Readonly<{
|
|
84
|
+
kind: "absent";
|
|
85
|
+
}> | Readonly<{
|
|
86
|
+
kind: "rejected";
|
|
87
|
+
rejection: ClientReuseManifestRejection;
|
|
88
|
+
}> | Readonly<{
|
|
89
|
+
entryRejections: readonly ClientReuseManifestEntryRejection[];
|
|
90
|
+
kind: "parsed";
|
|
91
|
+
manifest: ClientReuseManifest;
|
|
92
|
+
skipDisposition: ClientReuseManifestSkipDisposition;
|
|
93
|
+
}>;
|
|
94
|
+
type ParseClientReuseManifestOptions = Readonly<{
|
|
95
|
+
currentVisibleCommitVersion?: number;
|
|
96
|
+
limits?: ClientReuseManifestLimits;
|
|
97
|
+
}>;
|
|
98
|
+
declare function countUtf8Bytes(input: string): number;
|
|
99
|
+
declare function createClientReusePayloadHash(input: string): string;
|
|
100
|
+
declare function createClientReuseManifest(input: CreateClientReuseManifestInput): ClientReuseManifestWire;
|
|
101
|
+
declare function serializeClientReuseManifest(input: CreateClientReuseManifestInput): string;
|
|
102
|
+
declare function parseClientReuseManifestHeader(rawHeader: string | null | undefined, options?: ParseClientReuseManifestOptions): ClientReuseManifestParseResult;
|
|
103
|
+
//#endregion
|
|
104
|
+
export { CLIENT_REUSE_MANIFEST_HASH_ALGORITHM, CLIENT_REUSE_MANIFEST_SCHEMA_VERSION, CLIENT_REUSE_MANIFEST_SKIP_VERIFICATION_ENTRY_BUDGET, ClientReuseManifestEntry, ClientReuseManifestEntryRejection, ClientReuseManifestParseResult, ClientReuseManifestRejection, ClientReuseManifestRejectionCode, ClientReuseManifestSkipDisposition, ClientReuseManifestTraceFields, DEFAULT_CLIENT_REUSE_MANIFEST_LIMITS, countUtf8Bytes, createClientReuseManifest, createClientReusePayloadHash, parseClientReuseManifestHeader, serializeClientReuseManifest };
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
import { isUnknownRecord } from "../utils/record.js";
|
|
2
|
+
import { fnv1a64 } from "../utils/hash.js";
|
|
3
|
+
import { parseArtifactCompatibilityEnvelope } from "./artifact-compatibility.js";
|
|
4
|
+
import { AppElementsWire } from "./app-elements-wire.js";
|
|
5
|
+
import { isNonNegativeSafeInteger } from "../utils/number.js";
|
|
6
|
+
//#region src/server/client-reuse-manifest.ts
|
|
7
|
+
const CLIENT_REUSE_MANIFEST_SCHEMA_VERSION = 1;
|
|
8
|
+
const CLIENT_REUSE_MANIFEST_HASH_ALGORITHM = "fnv1a64";
|
|
9
|
+
const DEFAULT_CLIENT_REUSE_MANIFEST_LIMITS = {
|
|
10
|
+
maxEntryCount: 64,
|
|
11
|
+
maxEntryIdLength: 512,
|
|
12
|
+
maxManifestBytes: 4096,
|
|
13
|
+
maxPayloadHashLength: 16,
|
|
14
|
+
maxVariantCacheKeyLength: 256
|
|
15
|
+
};
|
|
16
|
+
const CLIENT_REUSE_MANIFEST_SKIP_VERIFICATION_ENTRY_BUDGET = 8;
|
|
17
|
+
const HASH_DIGEST_PATTERN = /^[0-9a-z]+$/;
|
|
18
|
+
const textEncoder = new TextEncoder();
|
|
19
|
+
function createRejection(code, fields = {}) {
|
|
20
|
+
return {
|
|
21
|
+
code,
|
|
22
|
+
fields
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
function rejectManifest(code, fields = {}) {
|
|
26
|
+
return {
|
|
27
|
+
kind: "rejected",
|
|
28
|
+
rejection: createRejection(code, fields)
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
function rejectEntry(code, entryId, fields = {}) {
|
|
32
|
+
return {
|
|
33
|
+
code,
|
|
34
|
+
entryId,
|
|
35
|
+
fields
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
function compareManifestEntries(left, right) {
|
|
39
|
+
if (left.id < right.id) return -1;
|
|
40
|
+
if (left.id > right.id) return 1;
|
|
41
|
+
return 0;
|
|
42
|
+
}
|
|
43
|
+
function createCanonicalWireEntries(entries) {
|
|
44
|
+
const entriesById = /* @__PURE__ */ new Map();
|
|
45
|
+
for (const entry of entries) if (!entriesById.has(entry.id)) entriesById.set(entry.id, entry);
|
|
46
|
+
return Array.from(entriesById.values()).sort(compareManifestEntries);
|
|
47
|
+
}
|
|
48
|
+
function countUtf8Bytes(input) {
|
|
49
|
+
return textEncoder.encode(input).length;
|
|
50
|
+
}
|
|
51
|
+
function parseReplayWindow(value, visibleCommitVersion) {
|
|
52
|
+
if (!isUnknownRecord(value)) return {
|
|
53
|
+
kind: "rejected",
|
|
54
|
+
rejection: createRejection("SKIP_REPLAY_WINDOW_INVALID", { field: "replayWindow" })
|
|
55
|
+
};
|
|
56
|
+
const validFromVisibleCommitVersion = value.validFromVisibleCommitVersion;
|
|
57
|
+
const validUntilVisibleCommitVersion = value.validUntilVisibleCommitVersion;
|
|
58
|
+
if (!isNonNegativeSafeInteger(validFromVisibleCommitVersion) || !isNonNegativeSafeInteger(validUntilVisibleCommitVersion) || validFromVisibleCommitVersion > validUntilVisibleCommitVersion || visibleCommitVersion < validFromVisibleCommitVersion || visibleCommitVersion > validUntilVisibleCommitVersion) return {
|
|
59
|
+
kind: "rejected",
|
|
60
|
+
rejection: createRejection("SKIP_REPLAY_WINDOW_INVALID", {
|
|
61
|
+
validFromVisibleCommitVersion: isNonNegativeSafeInteger(validFromVisibleCommitVersion) ? validFromVisibleCommitVersion : null,
|
|
62
|
+
validUntilVisibleCommitVersion: isNonNegativeSafeInteger(validUntilVisibleCommitVersion) ? validUntilVisibleCommitVersion : null,
|
|
63
|
+
visibleCommitVersion
|
|
64
|
+
})
|
|
65
|
+
};
|
|
66
|
+
return {
|
|
67
|
+
kind: "parsed",
|
|
68
|
+
replayWindow: {
|
|
69
|
+
validFromVisibleCommitVersion,
|
|
70
|
+
validUntilVisibleCommitVersion
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
function currentCommitVersionMatchesReplayWindow(currentVisibleCommitVersion, replayWindow) {
|
|
75
|
+
if (currentVisibleCommitVersion === void 0) return true;
|
|
76
|
+
return currentVisibleCommitVersion >= replayWindow.validFromVisibleCommitVersion && currentVisibleCommitVersion <= replayWindow.validUntilVisibleCommitVersion;
|
|
77
|
+
}
|
|
78
|
+
function parseEntryKind(id) {
|
|
79
|
+
const parsed = AppElementsWire.parseElementKey(id);
|
|
80
|
+
if (parsed === null) return null;
|
|
81
|
+
return parsed.kind;
|
|
82
|
+
}
|
|
83
|
+
function isValidPayloadHash(value, limits) {
|
|
84
|
+
return typeof value === "string" && value.length > 0 && value.length <= limits.maxPayloadHashLength && HASH_DIGEST_PATTERN.test(value);
|
|
85
|
+
}
|
|
86
|
+
function parseManifestEntry(value, limits, index) {
|
|
87
|
+
if (!isUnknownRecord(value)) return rejectEntry("SKIP_ENTRY_MALFORMED", null, { index });
|
|
88
|
+
const id = value.id;
|
|
89
|
+
if (typeof id !== "string" || id.length === 0) return rejectEntry("SKIP_ENTRY_ID_INVALID", null, { index });
|
|
90
|
+
if (id.length > limits.maxEntryIdLength) return rejectEntry("SKIP_ENTRY_ID_TOO_LONG", id, {
|
|
91
|
+
idHash: createClientReusePayloadHash(id),
|
|
92
|
+
maxEntryIdLength: limits.maxEntryIdLength
|
|
93
|
+
});
|
|
94
|
+
const kind = parseEntryKind(id);
|
|
95
|
+
if (kind === null) return rejectEntry("SKIP_UNKNOWN_ENTRY", id, { idHash: createClientReusePayloadHash(id) });
|
|
96
|
+
const privacy = value.privacy;
|
|
97
|
+
if (privacy === "private") return rejectEntry("SKIP_PRIVATE_ENTRY", id, { privacy });
|
|
98
|
+
if (privacy !== "public") return rejectEntry("SKIP_ENTRY_MALFORMED", id, { field: "privacy" });
|
|
99
|
+
const payloadHash = value.payloadHash;
|
|
100
|
+
if (!isValidPayloadHash(payloadHash, limits)) return rejectEntry("SKIP_ENTRY_HASH_INVALID", id, { maxPayloadHashLength: limits.maxPayloadHashLength });
|
|
101
|
+
const variantCacheKey = value.variantCacheKey;
|
|
102
|
+
if (typeof variantCacheKey !== "string" || variantCacheKey.length === 0) return rejectEntry("SKIP_VARIANT_CACHE_KEY_INVALID", id, { field: "variantCacheKey" });
|
|
103
|
+
if (variantCacheKey.length > limits.maxVariantCacheKeyLength) return rejectEntry("SKIP_VARIANT_CACHE_KEY_TOO_LONG", id, {
|
|
104
|
+
maxVariantCacheKeyLength: limits.maxVariantCacheKeyLength,
|
|
105
|
+
variantCacheKeyHash: createClientReusePayloadHash(variantCacheKey)
|
|
106
|
+
});
|
|
107
|
+
const artifactCompatibility = parseArtifactCompatibilityEnvelope(value.artifactCompatibility);
|
|
108
|
+
if (artifactCompatibility === null) return rejectEntry("SKIP_ARTIFACT_COMPATIBILITY_INVALID", id, { field: "artifactCompatibility" });
|
|
109
|
+
return {
|
|
110
|
+
artifactCompatibility,
|
|
111
|
+
id,
|
|
112
|
+
kind,
|
|
113
|
+
payloadHash,
|
|
114
|
+
privacy,
|
|
115
|
+
variantCacheKey
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
function createClientReusePayloadHash(input) {
|
|
119
|
+
return fnv1a64(input);
|
|
120
|
+
}
|
|
121
|
+
function createClientReuseManifest(input) {
|
|
122
|
+
const replayWindow = input.replayWindow ?? {
|
|
123
|
+
validFromVisibleCommitVersion: input.visibleCommitVersion,
|
|
124
|
+
validUntilVisibleCommitVersion: input.visibleCommitVersion
|
|
125
|
+
};
|
|
126
|
+
return {
|
|
127
|
+
entries: createCanonicalWireEntries(input.entries),
|
|
128
|
+
hashAlgorithm: CLIENT_REUSE_MANIFEST_HASH_ALGORITHM,
|
|
129
|
+
replayWindow,
|
|
130
|
+
schemaVersion: 1,
|
|
131
|
+
visibleCommitVersion: input.visibleCommitVersion
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
function serializeClientReuseManifest(input) {
|
|
135
|
+
return JSON.stringify(createClientReuseManifest(input));
|
|
136
|
+
}
|
|
137
|
+
function parseClientReuseManifestHeader(rawHeader, options = {}) {
|
|
138
|
+
const header = rawHeader?.trim();
|
|
139
|
+
if (!header) return { kind: "absent" };
|
|
140
|
+
const limits = options.limits ?? DEFAULT_CLIENT_REUSE_MANIFEST_LIMITS;
|
|
141
|
+
const manifestBytes = countUtf8Bytes(header);
|
|
142
|
+
if (manifestBytes > limits.maxManifestBytes) return rejectManifest("SKIP_MANIFEST_TOO_LARGE", {
|
|
143
|
+
manifestBytes,
|
|
144
|
+
maxManifestBytes: limits.maxManifestBytes
|
|
145
|
+
});
|
|
146
|
+
let decoded;
|
|
147
|
+
try {
|
|
148
|
+
decoded = JSON.parse(header);
|
|
149
|
+
} catch {
|
|
150
|
+
return rejectManifest("SKIP_MANIFEST_MALFORMED");
|
|
151
|
+
}
|
|
152
|
+
if (!isUnknownRecord(decoded)) return rejectManifest("SKIP_MANIFEST_MALFORMED", { field: "manifest" });
|
|
153
|
+
if (decoded.schemaVersion !== 1) return rejectManifest("SKIP_MANIFEST_SCHEMA_UNSUPPORTED", { schemaVersion: typeof decoded.schemaVersion === "number" || typeof decoded.schemaVersion === "string" ? decoded.schemaVersion : null });
|
|
154
|
+
if (decoded.hashAlgorithm !== "fnv1a64") return rejectManifest("SKIP_HASH_ALGORITHM_UNSUPPORTED", { hashAlgorithm: typeof decoded.hashAlgorithm === "string" ? decoded.hashAlgorithm : null });
|
|
155
|
+
const visibleCommitVersion = decoded.visibleCommitVersion;
|
|
156
|
+
if (!isNonNegativeSafeInteger(visibleCommitVersion)) return rejectManifest("SKIP_VISIBLE_COMMIT_VERSION_INVALID", { visibleCommitVersion: null });
|
|
157
|
+
const replayWindowResult = parseReplayWindow(decoded.replayWindow, visibleCommitVersion);
|
|
158
|
+
if (replayWindowResult.kind === "rejected") return {
|
|
159
|
+
kind: "rejected",
|
|
160
|
+
rejection: replayWindowResult.rejection
|
|
161
|
+
};
|
|
162
|
+
const { replayWindow } = replayWindowResult;
|
|
163
|
+
if (!currentCommitVersionMatchesReplayWindow(options.currentVisibleCommitVersion, replayWindow)) return rejectManifest("SKIP_VISIBLE_COMMIT_VERSION_MISMATCH", {
|
|
164
|
+
currentVisibleCommitVersion: options.currentVisibleCommitVersion ?? null,
|
|
165
|
+
validFromVisibleCommitVersion: replayWindow.validFromVisibleCommitVersion,
|
|
166
|
+
validUntilVisibleCommitVersion: replayWindow.validUntilVisibleCommitVersion,
|
|
167
|
+
visibleCommitVersion
|
|
168
|
+
});
|
|
169
|
+
const entriesValue = decoded.entries;
|
|
170
|
+
if (!Array.isArray(entriesValue)) return rejectManifest("SKIP_MANIFEST_MALFORMED", { field: "entries" });
|
|
171
|
+
if (entriesValue.length > limits.maxEntryCount) return rejectManifest("SKIP_ENTRY_COUNT_EXCEEDED", {
|
|
172
|
+
entryCount: entriesValue.length,
|
|
173
|
+
maxEntryCount: limits.maxEntryCount
|
|
174
|
+
});
|
|
175
|
+
const entries = [];
|
|
176
|
+
const entryRejections = [];
|
|
177
|
+
let previousEntryId = null;
|
|
178
|
+
for (let index = 0; index < entriesValue.length; index++) {
|
|
179
|
+
const value = entriesValue[index];
|
|
180
|
+
if (isUnknownRecord(value) && typeof value.id === "string") {
|
|
181
|
+
if (previousEntryId !== null && value.id <= previousEntryId) return rejectManifest("SKIP_ENTRY_ORDER_NON_CANONICAL", {
|
|
182
|
+
entryIdHash: createClientReusePayloadHash(value.id),
|
|
183
|
+
previousEntryIdHash: createClientReusePayloadHash(previousEntryId)
|
|
184
|
+
});
|
|
185
|
+
previousEntryId = value.id;
|
|
186
|
+
}
|
|
187
|
+
const parsedEntry = parseManifestEntry(value, limits, index);
|
|
188
|
+
if ("code" in parsedEntry) entryRejections.push(parsedEntry);
|
|
189
|
+
else entries.push(parsedEntry);
|
|
190
|
+
}
|
|
191
|
+
return {
|
|
192
|
+
entryRejections,
|
|
193
|
+
kind: "parsed",
|
|
194
|
+
manifest: {
|
|
195
|
+
entries,
|
|
196
|
+
hashAlgorithm: CLIENT_REUSE_MANIFEST_HASH_ALGORITHM,
|
|
197
|
+
replayWindow,
|
|
198
|
+
schemaVersion: 1,
|
|
199
|
+
visibleCommitVersion
|
|
200
|
+
},
|
|
201
|
+
skipDisposition: {
|
|
202
|
+
code: "SKIP_MODEL_DISABLED",
|
|
203
|
+
enabled: false,
|
|
204
|
+
mode: "renderAndSend"
|
|
205
|
+
}
|
|
206
|
+
};
|
|
207
|
+
}
|
|
208
|
+
//#endregion
|
|
209
|
+
export { CLIENT_REUSE_MANIFEST_HASH_ALGORITHM, CLIENT_REUSE_MANIFEST_SCHEMA_VERSION, CLIENT_REUSE_MANIFEST_SKIP_VERIFICATION_ENTRY_BUDGET, DEFAULT_CLIENT_REUSE_MANIFEST_LIMITS, countUtf8Bytes, createClientReuseManifest, createClientReusePayloadHash, parseClientReuseManifestHeader, serializeClientReuseManifest };
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
//#region src/server/client-trace-metadata.d.ts
|
|
2
|
+
type ClientTraceDataEntry = {
|
|
3
|
+
key: string;
|
|
4
|
+
value: string;
|
|
5
|
+
};
|
|
6
|
+
/**
|
|
7
|
+
* Filter an entry list against the configured `clientTraceMetadata` allow-list.
|
|
8
|
+
* Returns `undefined` when the allow-list is unset so callers can skip
|
|
9
|
+
* rendering altogether.
|
|
10
|
+
*/
|
|
11
|
+
declare function filterClientTraceMetadata(entries: readonly ClientTraceDataEntry[], allowList: readonly string[] | undefined): ClientTraceDataEntry[] | undefined;
|
|
12
|
+
/**
|
|
13
|
+
* Render the filtered entries as a sequence of self-closing `<meta>` tags.
|
|
14
|
+
* Names and values are HTML-attribute escaped. Returns an empty string when
|
|
15
|
+
* `entries` is empty or undefined so callers can append unconditionally.
|
|
16
|
+
*/
|
|
17
|
+
declare function renderClientTraceMetadataTags(entries: readonly ClientTraceDataEntry[] | undefined): string;
|
|
18
|
+
/**
|
|
19
|
+
* Convenience helper: read OTel propagation data, filter against the
|
|
20
|
+
* configured allow-list, and render the resulting `<meta>` tags. Returns an
|
|
21
|
+
* empty string when the allow-list is unset, OTel is not installed, or no
|
|
22
|
+
* matching keys were emitted by the propagator.
|
|
23
|
+
*
|
|
24
|
+
* Safe to call unconditionally on every SSR render — when nothing is
|
|
25
|
+
* configured/active this is a few `try/catch`-bounded operations and returns
|
|
26
|
+
* `""`.
|
|
27
|
+
*/
|
|
28
|
+
declare function getClientTraceMetadataHTML(allowList: readonly string[] | undefined): string;
|
|
29
|
+
//#endregion
|
|
30
|
+
export { ClientTraceDataEntry, filterClientTraceMetadata, getClientTraceMetadataHTML, renderClientTraceMetadataTags };
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { escapeHtmlAttr } from "./html.js";
|
|
2
|
+
//#region src/server/client-trace-metadata.ts
|
|
3
|
+
/**
|
|
4
|
+
* Client trace metadata renderer.
|
|
5
|
+
*
|
|
6
|
+
* When `experimental.clientTraceMetadata` is configured in `next.config`,
|
|
7
|
+
* vinext emits `<meta name="..." content="...">` tags in the SSR HTML head
|
|
8
|
+
* for each configured key. The values are sourced from the active
|
|
9
|
+
* OpenTelemetry context via the registered propagator.
|
|
10
|
+
*
|
|
11
|
+
* This mirrors Next.js' implementation:
|
|
12
|
+
* - packages/next/src/server/lib/trace/utils.ts (getTracedMetadata)
|
|
13
|
+
* - packages/next/src/server/app-render/make-get-server-inserted-html.tsx (traceMetaTags)
|
|
14
|
+
*
|
|
15
|
+
* OpenTelemetry is an optional peer — we resolve `@opentelemetry/api` at
|
|
16
|
+
* runtime and silently no-op when it is not installed. This matches user
|
|
17
|
+
* expectations: apps that don't configure OTel get no meta tags, and apps
|
|
18
|
+
* that do get the filtered subset they asked for in `clientTraceMetadata`.
|
|
19
|
+
*/
|
|
20
|
+
const carrierSetter = { set(carrier, key, value) {
|
|
21
|
+
if (typeof key !== "string" || typeof value !== "string") return;
|
|
22
|
+
carrier.push({
|
|
23
|
+
key,
|
|
24
|
+
value
|
|
25
|
+
});
|
|
26
|
+
} };
|
|
27
|
+
function getOpenTelemetryTraceData() {
|
|
28
|
+
let api;
|
|
29
|
+
try {
|
|
30
|
+
const req = globalThis.require;
|
|
31
|
+
if (typeof req === "function") api = req("@opentelemetry/api");
|
|
32
|
+
} catch {
|
|
33
|
+
return [];
|
|
34
|
+
}
|
|
35
|
+
if (!api) return [];
|
|
36
|
+
try {
|
|
37
|
+
const activeContext = api.context.active();
|
|
38
|
+
const entries = [];
|
|
39
|
+
api.propagation.inject(activeContext, entries, carrierSetter);
|
|
40
|
+
return entries;
|
|
41
|
+
} catch {
|
|
42
|
+
return [];
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Filter an entry list against the configured `clientTraceMetadata` allow-list.
|
|
47
|
+
* Returns `undefined` when the allow-list is unset so callers can skip
|
|
48
|
+
* rendering altogether.
|
|
49
|
+
*/
|
|
50
|
+
function filterClientTraceMetadata(entries, allowList) {
|
|
51
|
+
if (!allowList || allowList.length === 0) return void 0;
|
|
52
|
+
const allowSet = new Set(allowList);
|
|
53
|
+
return entries.filter(({ key }) => allowSet.has(key));
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Render the filtered entries as a sequence of self-closing `<meta>` tags.
|
|
57
|
+
* Names and values are HTML-attribute escaped. Returns an empty string when
|
|
58
|
+
* `entries` is empty or undefined so callers can append unconditionally.
|
|
59
|
+
*/
|
|
60
|
+
function renderClientTraceMetadataTags(entries) {
|
|
61
|
+
if (!entries || entries.length === 0) return "";
|
|
62
|
+
let html = "";
|
|
63
|
+
for (const { key, value } of entries) html += `<meta name="${escapeHtmlAttr(key)}" content="${escapeHtmlAttr(value)}"/>`;
|
|
64
|
+
return html;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Convenience helper: read OTel propagation data, filter against the
|
|
68
|
+
* configured allow-list, and render the resulting `<meta>` tags. Returns an
|
|
69
|
+
* empty string when the allow-list is unset, OTel is not installed, or no
|
|
70
|
+
* matching keys were emitted by the propagator.
|
|
71
|
+
*
|
|
72
|
+
* Safe to call unconditionally on every SSR render — when nothing is
|
|
73
|
+
* configured/active this is a few `try/catch`-bounded operations and returns
|
|
74
|
+
* `""`.
|
|
75
|
+
*/
|
|
76
|
+
function getClientTraceMetadataHTML(allowList) {
|
|
77
|
+
if (!allowList || allowList.length === 0) return "";
|
|
78
|
+
return renderClientTraceMetadataTags(filterClientTraceMetadata(getOpenTelemetryTraceData(), allowList));
|
|
79
|
+
}
|
|
80
|
+
//#endregion
|
|
81
|
+
export { filterClientTraceMetadata, getClientTraceMetadataHTML, renderClientTraceMetadataTags };
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
//#region src/server/cookie-utils.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* Parse the cookie name out of a serialised Set-Cookie line.
|
|
4
|
+
*
|
|
5
|
+
* Bounded by the first `;` so the attribute portion (e.g. `Path=/`) is never
|
|
6
|
+
* mistaken for part of the name when the value happens to contain another
|
|
7
|
+
* `=`. Returns null when the line is not parseable (defensive — callers keep
|
|
8
|
+
* unparseable entries verbatim so they don't drop user-supplied cookies).
|
|
9
|
+
*/
|
|
10
|
+
declare function getSetCookieName(cookie: string): string | null;
|
|
11
|
+
//#endregion
|
|
12
|
+
export { getSetCookieName };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
//#region src/server/cookie-utils.ts
|
|
2
|
+
/**
|
|
3
|
+
* Parse the cookie name out of a serialised Set-Cookie line.
|
|
4
|
+
*
|
|
5
|
+
* Bounded by the first `;` so the attribute portion (e.g. `Path=/`) is never
|
|
6
|
+
* mistaken for part of the name when the value happens to contain another
|
|
7
|
+
* `=`. Returns null when the line is not parseable (defensive — callers keep
|
|
8
|
+
* unparseable entries verbatim so they don't drop user-supplied cookies).
|
|
9
|
+
*/
|
|
10
|
+
function getSetCookieName(cookie) {
|
|
11
|
+
const equalsIndex = cookie.indexOf("=");
|
|
12
|
+
if (equalsIndex <= 0) return null;
|
|
13
|
+
const semicolonIndex = cookie.indexOf(";");
|
|
14
|
+
const end = semicolonIndex === -1 ? equalsIndex : Math.min(equalsIndex, semicolonIndex);
|
|
15
|
+
return cookie.slice(0, end);
|
|
16
|
+
}
|
|
17
|
+
//#endregion
|
|
18
|
+
export { getSetCookieName };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { IncomingHttpHeaders, OutgoingHttpHeaders } from "node:http";
|
|
2
|
+
|
|
3
|
+
//#region src/server/csp.d.ts
|
|
4
|
+
type NodeHeaders = IncomingHttpHeaders | OutgoingHttpHeaders;
|
|
5
|
+
declare function getScriptNonceFromHeader(cspHeaderValue: string): string | undefined;
|
|
6
|
+
declare function getScriptNonceFromHeaders(headers: Headers | null | undefined): string | undefined;
|
|
7
|
+
declare function getScriptNonceFromNodeHeaderSources(...headersList: readonly (NodeHeaders | null | undefined)[]): string | undefined;
|
|
8
|
+
declare function getScriptNonceFromHeaderSources(...headersList: readonly (Headers | null | undefined)[]): string | undefined;
|
|
9
|
+
//#endregion
|
|
10
|
+
export { getScriptNonceFromHeader, getScriptNonceFromHeaderSources, getScriptNonceFromHeaders, getScriptNonceFromNodeHeaderSources };
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
//#region src/server/csp.ts
|
|
2
|
+
const ESCAPE_REGEX = /[&><\u2028\u2029]/;
|
|
3
|
+
function getNodeHeaderValue(headers, key) {
|
|
4
|
+
const value = headers?.[key];
|
|
5
|
+
if (Array.isArray(value)) return value.join(", ");
|
|
6
|
+
if (value == null) return;
|
|
7
|
+
return String(value);
|
|
8
|
+
}
|
|
9
|
+
function getScriptNonceFromHeader(cspHeaderValue) {
|
|
10
|
+
const directives = cspHeaderValue.split(";").map((directive) => directive.trim());
|
|
11
|
+
const directive = directives.find((value) => value.startsWith("script-src")) ?? directives.find((value) => value.startsWith("default-src"));
|
|
12
|
+
if (!directive) return;
|
|
13
|
+
const nonce = directive.split(" ").slice(1).map((source) => source.trim()).find((source) => source.startsWith("'nonce-") && source.length > 8 && source.endsWith("'"))?.slice(7, -1);
|
|
14
|
+
if (!nonce) return;
|
|
15
|
+
if (ESCAPE_REGEX.test(nonce)) throw new Error("Nonce value from Content-Security-Policy contained HTML escape characters.\nLearn more: https://nextjs.org/docs/messages/nonce-contained-invalid-characters");
|
|
16
|
+
return nonce;
|
|
17
|
+
}
|
|
18
|
+
function getScriptNonceFromHeaders(headers) {
|
|
19
|
+
const csp = headers?.get("content-security-policy") ?? headers?.get("content-security-policy-report-only");
|
|
20
|
+
if (!csp) return;
|
|
21
|
+
return getScriptNonceFromHeader(csp);
|
|
22
|
+
}
|
|
23
|
+
function getScriptNonceFromNodeHeaders(headers) {
|
|
24
|
+
const csp = getNodeHeaderValue(headers, "content-security-policy") ?? getNodeHeaderValue(headers, "content-security-policy-report-only");
|
|
25
|
+
if (!csp) return;
|
|
26
|
+
return getScriptNonceFromHeader(csp);
|
|
27
|
+
}
|
|
28
|
+
function getScriptNonceFromNodeHeaderSources(...headersList) {
|
|
29
|
+
for (const headers of headersList) {
|
|
30
|
+
const nonce = getScriptNonceFromNodeHeaders(headers);
|
|
31
|
+
if (nonce) return nonce;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
function getScriptNonceFromHeaderSources(...headersList) {
|
|
35
|
+
for (const headers of headersList) {
|
|
36
|
+
const nonce = getScriptNonceFromHeaders(headers);
|
|
37
|
+
if (nonce) return nonce;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
//#endregion
|
|
41
|
+
export { getScriptNonceFromHeader, getScriptNonceFromHeaderSources, getScriptNonceFromHeaders, getScriptNonceFromNodeHeaderSources };
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
//#region src/server/default-global-error-module.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* Module-shaped wrapper around vinext's built-in default global error
|
|
4
|
+
* component. Used as the fallback when an app does not define its own
|
|
5
|
+
* `app/global-error.tsx`. The runtime treats any `{ default: Component }`
|
|
6
|
+
* record as a "global error module", so wrapping the component this way lets
|
|
7
|
+
* us thread the default through the existing `globalErrorModule` plumbing
|
|
8
|
+
* without introducing a parallel code path.
|
|
9
|
+
*
|
|
10
|
+
* Mirrors Next.js's `defaultGlobalErrorPath`
|
|
11
|
+
* (`next/dist/client/components/builtin/global-error.js`), which is selected
|
|
12
|
+
* automatically when the user has not supplied a custom global error file:
|
|
13
|
+
* https://github.com/vercel/next.js/blob/canary/packages/next/src/build/webpack/loaders/next-app-loader/index.ts
|
|
14
|
+
*/
|
|
15
|
+
declare const DEFAULT_GLOBAL_ERROR_MODULE: {
|
|
16
|
+
readonly default: any;
|
|
17
|
+
};
|
|
18
|
+
//#endregion
|
|
19
|
+
export { DEFAULT_GLOBAL_ERROR_MODULE };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import DefaultGlobalError from "../shims/default-global-error.js";
|
|
2
|
+
//#region src/server/default-global-error-module.ts
|
|
3
|
+
/**
|
|
4
|
+
* Module-shaped wrapper around vinext's built-in default global error
|
|
5
|
+
* component. Used as the fallback when an app does not define its own
|
|
6
|
+
* `app/global-error.tsx`. The runtime treats any `{ default: Component }`
|
|
7
|
+
* record as a "global error module", so wrapping the component this way lets
|
|
8
|
+
* us thread the default through the existing `globalErrorModule` plumbing
|
|
9
|
+
* without introducing a parallel code path.
|
|
10
|
+
*
|
|
11
|
+
* Mirrors Next.js's `defaultGlobalErrorPath`
|
|
12
|
+
* (`next/dist/client/components/builtin/global-error.js`), which is selected
|
|
13
|
+
* automatically when the user has not supplied a custom global error file:
|
|
14
|
+
* https://github.com/vercel/next.js/blob/canary/packages/next/src/build/webpack/loaders/next-app-loader/index.ts
|
|
15
|
+
*/
|
|
16
|
+
const DEFAULT_GLOBAL_ERROR_MODULE = { default: DefaultGlobalError };
|
|
17
|
+
//#endregion
|
|
18
|
+
export { DEFAULT_GLOBAL_ERROR_MODULE };
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
//#region src/server/default-not-found-module.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* Module-shaped wrapper around vinext's built-in default not-found component.
|
|
4
|
+
* Used as the fallback when an app does not define its own `app/not-found.tsx`
|
|
5
|
+
* (and has not opted into `app/global-not-found.tsx`). The runtime treats any
|
|
6
|
+
* `{ default: Component }` record as a "not-found module", so wrapping the
|
|
7
|
+
* component this way lets us thread the default through the existing
|
|
8
|
+
* `rootNotFoundModule` plumbing without introducing a parallel code path.
|
|
9
|
+
*
|
|
10
|
+
* Mirrors Next.js's `defaultNotFoundPath`
|
|
11
|
+
* (`next/dist/client/components/builtin/not-found.js`), which is selected
|
|
12
|
+
* automatically when the user has not supplied a custom not-found file:
|
|
13
|
+
* https://github.com/vercel/next.js/blob/canary/packages/next/src/build/webpack/loaders/next-app-loader/index.ts
|
|
14
|
+
*/
|
|
15
|
+
declare const DEFAULT_NOT_FOUND_MODULE: {
|
|
16
|
+
readonly default: any;
|
|
17
|
+
};
|
|
18
|
+
//#endregion
|
|
19
|
+
export { DEFAULT_NOT_FOUND_MODULE };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import DefaultNotFound from "../shims/default-not-found.js";
|
|
2
|
+
//#region src/server/default-not-found-module.ts
|
|
3
|
+
/**
|
|
4
|
+
* Module-shaped wrapper around vinext's built-in default not-found component.
|
|
5
|
+
* Used as the fallback when an app does not define its own `app/not-found.tsx`
|
|
6
|
+
* (and has not opted into `app/global-not-found.tsx`). The runtime treats any
|
|
7
|
+
* `{ default: Component }` record as a "not-found module", so wrapping the
|
|
8
|
+
* component this way lets us thread the default through the existing
|
|
9
|
+
* `rootNotFoundModule` plumbing without introducing a parallel code path.
|
|
10
|
+
*
|
|
11
|
+
* Mirrors Next.js's `defaultNotFoundPath`
|
|
12
|
+
* (`next/dist/client/components/builtin/not-found.js`), which is selected
|
|
13
|
+
* automatically when the user has not supplied a custom not-found file:
|
|
14
|
+
* https://github.com/vercel/next.js/blob/canary/packages/next/src/build/webpack/loaders/next-app-loader/index.ts
|
|
15
|
+
*/
|
|
16
|
+
const DEFAULT_NOT_FOUND_MODULE = { default: DefaultNotFound };
|
|
17
|
+
//#endregion
|
|
18
|
+
export { DEFAULT_NOT_FOUND_MODULE };
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
//#region src/server/defer-until-stream-consumed.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* Defers cleanup until the downstream consumer drains or cancels the stream.
|
|
4
|
+
*/
|
|
5
|
+
declare function deferUntilStreamConsumed(stream: ReadableStream<Uint8Array>, onFlush: () => void): ReadableStream<Uint8Array>;
|
|
6
|
+
//#endregion
|
|
7
|
+
export { deferUntilStreamConsumed };
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
//#region src/server/defer-until-stream-consumed.ts
|
|
2
|
+
/**
|
|
3
|
+
* Defers cleanup until the downstream consumer drains or cancels the stream.
|
|
4
|
+
*/
|
|
5
|
+
function deferUntilStreamConsumed(stream, onFlush) {
|
|
6
|
+
let called = false;
|
|
7
|
+
const once = () => {
|
|
8
|
+
if (!called) {
|
|
9
|
+
called = true;
|
|
10
|
+
onFlush();
|
|
11
|
+
}
|
|
12
|
+
};
|
|
13
|
+
const cleanup = new TransformStream({ flush() {
|
|
14
|
+
once();
|
|
15
|
+
} });
|
|
16
|
+
const reader = stream.pipeThrough(cleanup).getReader();
|
|
17
|
+
return new ReadableStream({
|
|
18
|
+
pull(controller) {
|
|
19
|
+
return reader.read().then(({ done, value }) => {
|
|
20
|
+
if (done) controller.close();
|
|
21
|
+
else controller.enqueue(value);
|
|
22
|
+
}, (error) => {
|
|
23
|
+
once();
|
|
24
|
+
controller.error(error);
|
|
25
|
+
});
|
|
26
|
+
},
|
|
27
|
+
cancel(reason) {
|
|
28
|
+
once();
|
|
29
|
+
return reader.cancel(reason);
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
//#endregion
|
|
34
|
+
export { deferUntilStreamConsumed };
|