vinext 1.0.0-beta.9 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +150 -92
- package/THIRD_PARTY_LICENSES.md +51 -0
- package/dist/_virtual/_rolldown/runtime.js +25 -0
- package/dist/build/action-owner-manifest.d.ts +8 -9
- package/dist/build/action-owner-manifest.js +23 -5
- package/dist/build/assets-ignore.d.ts +3 -4
- package/dist/build/clean-output.d.ts +2 -3
- package/dist/build/client-build-config.d.ts +40 -12
- package/dist/build/client-build-config.js +76 -6
- package/dist/build/css-url-assets.d.ts +4 -5
- package/dist/build/css-url-assets.js +5 -2
- package/dist/build/google-fonts/build-url.d.ts +3 -4
- package/dist/build/google-fonts/fallback-metrics.d.ts +3 -4
- package/dist/build/google-fonts/find-font-files-in-css.d.ts +2 -3
- package/dist/build/google-fonts/font-metadata.d.ts +2 -3
- package/dist/build/google-fonts/get-axes.d.ts +2 -3
- package/dist/build/google-fonts/sort-variants.d.ts +2 -3
- package/dist/build/google-fonts/validate.d.ts +2 -3
- package/dist/build/google-fonts/validate.js +8 -4
- package/dist/build/inject-pregenerated-paths.d.ts +2 -3
- package/dist/build/inject-pregenerated-paths.js +16 -14
- package/dist/build/inline-css.d.ts +3 -4
- package/dist/build/layout-classification-types.d.ts +4 -5
- package/dist/build/layout-classification.d.ts +7 -8
- package/dist/build/lifecycle.d.ts +42 -0
- package/dist/build/lifecycle.js +253 -0
- package/dist/build/module-dependency-cache.d.ts +2 -3
- package/dist/build/next-client-runtime-manifests.d.ts +4 -5
- package/dist/build/nitro-route-rules.d.ts +6 -7
- package/dist/build/nitro-route-rules.js +1 -1
- package/dist/build/pages-client-assets-module.d.ts +4 -8
- package/dist/build/pages-client-assets-module.js +7 -14
- package/dist/build/precompress.d.ts +2 -3
- package/dist/build/precompress.js +1 -1
- package/dist/build/prerender-cloudflare-loader.d.ts +4 -0
- package/dist/build/prerender-cloudflare-loader.js +49 -0
- package/dist/build/prerender-paths.d.ts +36 -11
- package/dist/build/prerender-paths.js +274 -102
- package/dist/build/prerender-phase.d.ts +2 -3
- package/dist/build/prerender-server-entry.js +11 -3
- package/dist/build/prerender-server-pool.d.ts +9 -6
- package/dist/build/prerender-server-pool.js +8 -5
- package/dist/build/prerender.d.ts +73 -16
- package/dist/build/prerender.js +272 -80
- package/dist/build/preview-credentials.d.ts +5 -6
- package/dist/build/preview-credentials.js +2 -2
- package/dist/build/public-dir-conflict.d.ts +5 -6
- package/dist/build/public-dir-conflict.js +2 -1
- package/dist/build/report.d.ts +24 -20
- package/dist/build/report.js +10 -2
- package/dist/build/route-classification-injector.d.ts +2 -3
- package/dist/build/route-classification-manifest.d.ts +5 -6
- package/dist/build/run-prerender.d.ts +11 -9
- package/dist/build/run-prerender.js +26 -16
- package/dist/build/server-entry.d.ts +6 -0
- package/dist/build/server-entry.js +34 -0
- package/dist/build/server-manifest.d.ts +8 -3
- package/dist/build/server-manifest.js +14 -2
- package/dist/build/ssr-manifest.d.ts +5 -6
- package/dist/build/standalone.d.ts +2 -3
- package/dist/build/standalone.js +2 -2
- package/dist/build/static-export.d.ts +6 -7
- package/dist/cache/cache-adapters-virtual.d.ts +60 -20
- package/dist/cache/cache-adapters-virtual.js +50 -7
- package/dist/check.d.ts +11 -10
- package/dist/check.js +467 -176
- package/dist/cli-args.d.ts +7 -16
- package/dist/cli-args.js +2 -45
- package/dist/cli-dev-config.d.ts +10 -7
- package/dist/cli-dev-config.js +160 -3
- package/dist/cli.js +124 -442
- package/dist/client/app-nav-failure-handler.d.ts +6 -7
- package/dist/client/browser-globals.d.ts +4 -0
- package/dist/client/browser-globals.js +5 -0
- package/dist/client/client-rewrite-matcher.d.ts +2 -3
- package/dist/client/client-rewrites.d.ts +4 -5
- package/dist/client/dev-error-overlay-store.d.ts +13 -14
- package/dist/client/dev-error-overlay.d.ts +15 -15
- package/dist/client/dev-error-overlay.js +8 -5
- package/dist/client/instrumentation-client-inject.d.ts +3 -4
- package/dist/client/instrumentation-client-state.d.ts +5 -6
- package/dist/client/instrumentation-client.d.ts +3 -4
- package/dist/client/navigation-runtime.d.ts +20 -17
- package/dist/client/navigation-runtime.js +4 -3
- package/dist/client/pages-router-link-navigation.d.ts +4 -5
- package/dist/client/react-instance.d.ts +2 -3
- package/dist/client/validate-module-path.d.ts +2 -3
- package/dist/client/vinext-next-data.d.ts +7 -10
- package/dist/client/window-next.d.ts +4 -5
- package/dist/config/config-matchers.d.ts +16 -16
- package/dist/config/config-matchers.js +2 -4
- package/dist/config/dotenv.d.ts +3 -4
- package/dist/config/dotenv.js +14 -2
- package/dist/config/next-config.d.ts +31 -27
- package/dist/config/next-config.js +163 -16
- package/dist/config/prerender.d.ts +20 -16
- package/dist/config/prerender.js +10 -4
- package/dist/config/request-context.d.ts +5 -6
- package/dist/config/server-external-packages.d.ts +14 -3
- package/dist/config/server-external-packages.js +37 -3
- package/dist/config/tsconfig-paths.d.ts +3 -4
- package/dist/deps/.pnpm/ignore@5.3.2/deps/ignore/index.js +189 -0
- package/dist/deps/.pnpm/ua-parser-js@1.0.35/deps/ua-parser-js/src/ua-parser.js +1057 -0
- package/dist/entries/app-browser-entry.d.ts +4 -5
- package/dist/entries/app-browser-entry.js +1 -3
- package/dist/entries/app-rsc-entry.d.ts +10 -3
- package/dist/entries/app-rsc-entry.js +503 -51
- package/dist/entries/app-rsc-manifest.d.ts +4 -3
- package/dist/entries/app-rsc-manifest.js +26 -8
- package/dist/entries/app-ssr-entry.d.ts +2 -3
- package/dist/entries/app-ssr-entry.js +8 -1
- package/dist/entries/pages-client-entry.d.ts +3 -3
- package/dist/entries/pages-client-entry.js +17 -2
- package/dist/entries/pages-server-entry.d.ts +13 -3
- package/dist/entries/pages-server-entry.js +234 -33
- package/dist/entries/runtime-entry-module.d.ts +4 -5
- package/dist/image/image-adapters-virtual.d.ts +4 -5
- package/dist/index.d.ts +10 -11
- package/dist/index.js +848 -255
- package/dist/init-cloudflare.d.ts +26 -17
- package/dist/init-cloudflare.js +711 -103
- package/dist/init-platform.d.ts +26 -22
- package/dist/init-platform.js +85 -29
- package/dist/init.d.ts +19 -13
- package/dist/init.js +126 -42
- package/dist/plugins/action-owner-manifest.d.ts +3 -4
- package/dist/plugins/action-owner-manifest.js +10 -3
- package/dist/plugins/ast-scope.d.ts +10 -11
- package/dist/plugins/ast-scope.js +10 -22
- package/dist/plugins/ast-utils.d.ts +16 -29
- package/dist/plugins/ast-utils.js +27 -71
- package/dist/plugins/async-hooks-stub.d.ts +2 -3
- package/dist/plugins/client-reference-dedup.d.ts +4 -5
- package/dist/plugins/commonjs-syntax.d.ts +16 -0
- package/dist/plugins/commonjs-syntax.js +22 -0
- package/dist/plugins/css-data-url.d.ts +2 -3
- package/dist/plugins/css-module-imports.d.ts +3 -4
- package/dist/plugins/css-module-imports.js +1 -1
- package/dist/plugins/dynamic-preload-metadata.d.ts +3 -4
- package/dist/plugins/dynamic-preload-metadata.js +55 -154
- package/dist/plugins/environment.d.ts +2 -3
- package/dist/plugins/extensionless-dynamic-import.d.ts +2 -3
- package/dist/plugins/extensionless-dynamic-import.js +6 -10
- package/dist/plugins/fonts.d.ts +10 -11
- package/dist/plugins/fonts.js +4 -3
- package/dist/plugins/ignore-dynamic-requests.d.ts +14 -4
- package/dist/plugins/ignore-dynamic-requests.js +113 -91
- package/dist/plugins/import-meta-url.d.ts +6 -7
- package/dist/plugins/import-meta-url.js +36 -48
- package/dist/plugins/instrumentation-client.d.ts +3 -3
- package/dist/plugins/instrumentation-client.js +46 -10
- package/dist/plugins/middleware-export-validation.d.ts +3 -4
- package/dist/plugins/middleware-export-validation.js +3 -3
- package/dist/plugins/middleware-server-only.d.ts +2 -3
- package/dist/plugins/og-asset-ownership.d.ts +5 -4
- package/dist/plugins/og-asset-ownership.js +24 -13
- package/dist/plugins/og-assets.d.ts +22 -5
- package/dist/plugins/og-assets.js +82 -21
- package/dist/plugins/og-harfbuzz.d.ts +24 -0
- package/dist/plugins/og-harfbuzz.js +271 -0
- package/dist/plugins/optimize-imports.d.ts +7 -7
- package/dist/plugins/optimize-imports.js +34 -45
- package/dist/plugins/pages-node-externals.d.ts +2 -3
- package/dist/plugins/pages-node-externals.js +6 -11
- package/dist/plugins/postcss.d.ts +8 -4
- package/dist/plugins/postcss.js +1 -1
- package/dist/plugins/remove-console.d.ts +2 -3
- package/dist/plugins/remove-console.js +0 -1
- package/dist/plugins/require-condition-resolution.d.ts +3 -4
- package/dist/plugins/require-condition-resolution.js +17 -18
- package/dist/plugins/require-context.d.ts +3 -3
- package/dist/plugins/require-context.js +41 -22
- package/dist/plugins/rsc-client-reference-loaders.d.ts +2 -3
- package/dist/plugins/rsc-client-shim-excludes.d.ts +4 -5
- package/dist/plugins/rsc-client-shim-excludes.js +1 -0
- package/dist/plugins/rsc-reference-validation-normalizer.d.ts +2 -3
- package/dist/plugins/sass.d.ts +7 -8
- package/dist/plugins/sass.js +7 -4
- package/dist/plugins/scan-build-css.d.ts +12 -0
- package/dist/plugins/scan-build-css.js +39 -0
- package/dist/plugins/server-externals-manifest.d.ts +2 -3
- package/dist/plugins/strip-server-exports.d.ts +7 -6
- package/dist/plugins/strip-server-exports.js +4 -2
- package/dist/plugins/styled-jsx.d.ts +2 -3
- package/dist/plugins/styled-jsx.js +7 -7
- package/dist/plugins/transform-cache.d.ts +2 -3
- package/dist/plugins/transform-result.d.ts +21 -4
- package/dist/plugins/transform-result.js +23 -2
- package/dist/plugins/transitive-externals.d.ts +2 -3
- package/dist/plugins/typeof-window.d.ts +16 -7
- package/dist/plugins/typeof-window.js +62 -39
- package/dist/plugins/use-cache-callable.d.ts +2 -5
- package/dist/plugins/use-cache-callable.js +43 -22
- package/dist/plugins/wasm-module-import.d.ts +2 -3
- package/dist/plugins/worker-image-imports.d.ts +2 -3
- package/dist/plugins/worker-image-imports.js +6 -8
- package/dist/routing/app-route-graph.d.ts +18 -19
- package/dist/routing/app-route-graph.js +5 -6
- package/dist/routing/app-route-ids.d.ts +3 -0
- package/dist/routing/app-route-ids.js +6 -0
- package/dist/routing/app-router.d.ts +19 -6
- package/dist/routing/app-router.js +24 -2
- package/dist/routing/file-matcher.d.ts +9 -10
- package/dist/routing/pages-router.d.ts +6 -6
- package/dist/routing/pages-router.js +1 -1
- package/dist/routing/route-matching.d.ts +4 -5
- package/dist/routing/route-matching.js +4 -2
- package/dist/routing/route-pattern.d.ts +13 -14
- package/dist/routing/route-trie.d.ts +5 -6
- package/dist/routing/route-validation.d.ts +3 -4
- package/dist/routing/route-validation.js +12 -11
- package/dist/routing/utils.d.ts +13 -14
- package/dist/server/accept-encoding.d.ts +9 -10
- package/dist/server/api-handler.d.ts +2 -3
- package/dist/server/api-handler.js +9 -6
- package/dist/server/app-action-forwarding.d.ts +3 -4
- package/dist/server/app-action-forwarding.js +1 -1
- package/dist/server/app-action-request.d.ts +2 -3
- package/dist/server/app-bfcache-id.d.ts +4 -4
- package/dist/server/app-bfcache-id.js +7 -1
- package/dist/server/app-bfcache-identity.d.ts +8 -9
- package/dist/server/app-bfcache-identity.js +1 -2
- package/dist/server/app-browser-action-result.d.ts +15 -16
- package/dist/server/app-browser-client-reuse-manifest.d.ts +2 -3
- package/dist/server/app-browser-entry.js +91 -36
- package/dist/server/app-browser-error.d.ts +5 -6
- package/dist/server/app-browser-error.js +9 -3
- package/dist/server/app-browser-history-controller.d.ts +4 -5
- package/dist/server/app-browser-hydration.d.ts +16 -6
- package/dist/server/app-browser-hydration.js +15 -2
- package/dist/server/app-browser-interception-context.d.ts +3 -4
- package/dist/server/app-browser-mpa-navigation.d.ts +4 -5
- package/dist/server/app-browser-navigation-abort.d.ts +3 -4
- package/dist/server/app-browser-navigation-controller.d.ts +8 -8
- package/dist/server/app-browser-navigation-controller.js +9 -5
- package/dist/server/app-browser-navigation-response.d.ts +2 -3
- package/dist/server/app-browser-popstate.d.ts +4 -5
- package/dist/server/app-browser-prefetch-response.d.ts +5 -6
- package/dist/server/app-browser-rsc-redirect.d.ts +4 -5
- package/dist/server/app-browser-server-action-client.d.ts +7 -6
- package/dist/server/app-browser-server-action-client.js +9 -5
- package/dist/server/app-browser-server-action-navigation.d.ts +2 -3
- package/dist/server/app-browser-state.d.ts +17 -17
- package/dist/server/app-browser-state.js +7 -3
- package/dist/server/app-browser-stream.d.ts +5 -6
- package/dist/server/app-browser-stream.js +8 -6
- package/dist/server/app-browser-supplemental-refresh.d.ts +11 -12
- package/dist/server/app-browser-visible-commit.d.ts +6 -7
- package/dist/server/app-client-reference-preloader.d.ts +2 -3
- package/dist/server/app-elements-wire-key.d.ts +25 -0
- package/dist/server/app-elements-wire-key.js +69 -0
- package/dist/server/app-elements-wire.d.ts +34 -53
- package/dist/server/app-elements-wire.js +4 -75
- package/dist/server/app-elements.d.ts +5 -5
- package/dist/server/app-elements.js +1 -1
- package/dist/server/app-fallback-renderer.d.ts +4 -4
- package/dist/server/app-fallback-renderer.js +6 -6
- package/dist/server/app-fetch-tracing.d.ts +15 -0
- package/dist/server/app-fetch-tracing.js +38 -0
- package/dist/server/app-history-state.d.ts +25 -27
- package/dist/server/app-history-state.js +21 -16
- package/dist/server/app-hook-warning-suppression.d.ts +2 -3
- package/dist/server/app-hydration-cache-publication.d.ts +3 -4
- package/dist/server/app-inline-css-client.d.ts +3 -4
- package/dist/server/app-interception-context-header.d.ts +2 -3
- package/dist/server/app-layout-param-observation.d.ts +7 -8
- package/dist/server/app-metadata-tracing.d.ts +12 -0
- package/dist/server/app-metadata-tracing.js +17 -0
- package/dist/server/app-middleware.d.ts +7 -7
- package/dist/server/app-middleware.js +2 -3
- package/dist/server/app-mounted-slots-header.d.ts +2 -3
- package/dist/server/app-mounted-slots-header.js +2 -2
- package/dist/server/app-optimistic-routing.d.ts +10 -11
- package/dist/server/app-optimistic-routing.js +3 -2
- package/dist/server/app-page-boundary-render.d.ts +6 -6
- package/dist/server/app-page-boundary-render.js +10 -4
- package/dist/server/app-page-boundary.d.ts +9 -10
- package/dist/server/app-page-boundary.js +1 -1
- package/dist/server/app-page-cache-finalizer.d.ts +18 -9
- package/dist/server/app-page-cache-finalizer.js +51 -16
- package/dist/server/app-page-cache-render.d.ts +8 -5
- package/dist/server/app-page-cache-render.js +22 -4
- package/dist/server/app-page-cache.d.ts +28 -9
- package/dist/server/app-page-cache.js +95 -24
- package/dist/server/app-page-dispatch.d.ts +34 -12
- package/dist/server/app-page-dispatch.js +181 -64
- package/dist/server/app-page-element-builder.d.ts +13 -11
- package/dist/server/app-page-element-builder.js +104 -61
- package/dist/server/app-page-execution.d.ts +14 -14
- package/dist/server/app-page-execution.js +11 -7
- package/dist/server/app-page-head.d.ts +19 -16
- package/dist/server/app-page-head.js +25 -25
- package/dist/server/app-page-http-access-fallback-metadata.d.ts +6 -5
- package/dist/server/app-page-http-access-fallback-metadata.js +9 -2
- package/dist/server/app-page-method.d.ts +5 -11
- package/dist/server/app-page-method.js +2 -9
- package/dist/server/app-page-params.d.ts +5 -6
- package/dist/server/app-page-ppr-runtime.d.ts +2 -2
- package/dist/server/app-page-probe.d.ts +5 -6
- package/dist/server/app-page-probe.js +5 -4
- package/dist/server/app-page-render-identity.d.ts +4 -5
- package/dist/server/app-page-render-observation.d.ts +8 -9
- package/dist/server/app-page-render-observation.js +1 -1
- package/dist/server/app-page-render.d.ts +41 -6
- package/dist/server/app-page-render.js +171 -24
- package/dist/server/app-page-request.d.ts +10 -9
- package/dist/server/app-page-request.js +16 -12
- package/dist/server/app-page-response.d.ts +20 -9
- package/dist/server/app-page-response.js +30 -12
- package/dist/server/app-page-route-wiring.d.ts +15 -15
- package/dist/server/app-page-route-wiring.js +31 -24
- package/dist/server/app-page-search-params-observation.d.ts +26 -5
- package/dist/server/app-page-search-params-observation.js +43 -7
- package/dist/server/app-page-segment-plan.d.ts +2 -3
- package/dist/server/app-page-segment-state.d.ts +11 -12
- package/dist/server/app-page-stream.d.ts +27 -11
- package/dist/server/app-page-stream.js +34 -6
- package/dist/server/app-page-tracing.d.ts +33 -0
- package/dist/server/app-page-tracing.js +50 -0
- package/dist/server/app-pages-bridge.d.ts +6 -6
- package/dist/server/app-pages-bridge.js +18 -4
- package/dist/server/app-post-middleware-context.d.ts +2 -3
- package/dist/server/app-ppr-fallback-shell-render.d.ts +3 -4
- package/dist/server/app-ppr-fallback-shell-render.js +3 -2
- package/dist/server/app-ppr-fallback-shell.d.ts +6 -7
- package/dist/server/app-prerender-endpoints.d.ts +5 -5
- package/dist/server/app-prerender-endpoints.js +3 -1
- package/dist/server/app-prerender-static-params.d.ts +15 -7
- package/dist/server/app-prerender-static-params.js +24 -9
- package/dist/server/app-render-abort-error.d.ts +3 -0
- package/dist/server/app-render-abort-error.js +8 -0
- package/dist/server/app-render-dependency.d.ts +14 -13
- package/dist/server/app-render-dependency.js +5 -1
- package/dist/server/app-request-context.d.ts +3 -4
- package/dist/server/app-request-stage-context.d.ts +5 -0
- package/dist/server/app-request-stage-context.js +11 -0
- package/dist/server/app-request-stage-dispatch.d.ts +25 -0
- package/dist/server/app-request-stage-dispatch.js +54 -0
- package/dist/server/app-request-stage-independent-entry.d.ts +8 -0
- package/dist/server/app-request-stage-independent-entry.js +112 -0
- package/dist/server/app-response-header-provenance.d.ts +13 -7
- package/dist/server/app-response-header-provenance.js +34 -1
- package/dist/server/app-response-stage-entry.d.ts +9 -0
- package/dist/server/app-response-stage-entry.js +87 -0
- package/dist/server/app-route-handler-cache.d.ts +4 -4
- package/dist/server/app-route-handler-cache.js +51 -35
- package/dist/server/app-route-handler-dispatch.d.ts +3 -3
- package/dist/server/app-route-handler-dispatch.js +77 -56
- package/dist/server/app-route-handler-execution.d.ts +26 -14
- package/dist/server/app-route-handler-execution.js +94 -28
- package/dist/server/app-route-handler-middleware-context.d.ts +8 -0
- package/dist/server/app-route-handler-middleware-context.js +15 -0
- package/dist/server/app-route-handler-policy.d.ts +11 -11
- package/dist/server/app-route-handler-policy.js +2 -2
- package/dist/server/app-route-handler-response.d.ts +9 -10
- package/dist/server/app-route-handler-response.js +14 -3
- package/dist/server/app-route-handler-runtime.d.ts +9 -10
- package/dist/server/app-route-handler-runtime.js +20 -16
- package/dist/server/app-route-module-loader.d.ts +6 -7
- package/dist/server/app-route-request-built-ins.d.ts +3 -4
- package/dist/server/app-route-tree-prefetch.d.ts +6 -7
- package/dist/server/app-route-tree-prefetch.js +2 -1
- package/dist/server/app-router-entry.d.ts +4 -1
- package/dist/server/app-router-entry.js +33 -17
- package/dist/server/app-rsc-cache-busting.d.ts +34 -27
- package/dist/server/app-rsc-cache-busting.js +14 -2
- package/dist/server/app-rsc-combined-handler.d.ts +9 -0
- package/dist/server/app-rsc-combined-handler.js +11 -0
- package/dist/server/app-rsc-embedded-chunks.d.ts +6 -7
- package/dist/server/app-rsc-error-handler.d.ts +12 -6
- package/dist/server/app-rsc-error-handler.js +15 -6
- package/dist/server/app-rsc-errors.d.ts +11 -9
- package/dist/server/app-rsc-errors.js +14 -16
- package/dist/server/app-rsc-handler.d.ts +32 -6
- package/dist/server/app-rsc-handler.js +425 -64
- package/dist/server/app-rsc-redirect-flight.d.ts +4 -5
- package/dist/server/app-rsc-render-mode.d.ts +8 -9
- package/dist/server/app-rsc-request-normalization.d.ts +3 -3
- package/dist/server/app-rsc-request-normalization.js +5 -3
- package/dist/server/app-rsc-response-finalizer.d.ts +8 -5
- package/dist/server/app-rsc-response-finalizer.js +10 -7
- package/dist/server/app-rsc-response-stage.d.ts +6 -0
- package/dist/server/app-rsc-response-stage.js +251 -0
- package/dist/server/app-rsc-route-matching.d.ts +3 -4
- package/dist/server/app-rsc-route-matching.js +3 -2
- package/dist/server/app-rsc-state-fingerprint.d.ts +3 -4
- package/dist/server/app-rsc-vary.d.ts +16 -0
- package/dist/server/app-rsc-vary.js +31 -0
- package/dist/server/app-segment-config.d.ts +119 -7
- package/dist/server/app-segment-config.js +242 -2
- package/dist/server/app-server-action-execution.d.ts +18 -13
- package/dist/server/app-server-action-execution.js +86 -33
- package/dist/server/app-ssr-entry.d.ts +14 -4
- package/dist/server/app-ssr-entry.js +62 -15
- package/dist/server/app-ssr-error-meta.d.ts +3 -4
- package/dist/server/app-ssr-error-meta.js +2 -1
- package/dist/server/app-ssr-router-instance.d.ts +2 -3
- package/dist/server/app-ssr-search-params-gate.d.ts +20 -0
- package/dist/server/app-ssr-search-params-gate.js +54 -0
- package/dist/server/app-ssr-stream.d.ts +13 -9
- package/dist/server/app-ssr-stream.js +34 -8
- package/dist/server/app-static-generation.d.ts +4 -5
- package/dist/server/app-visited-response-cache.d.ts +11 -12
- package/dist/server/app-visited-response-cache.js +2 -2
- package/dist/server/app-worker-stages.d.ts +112 -0
- package/dist/server/app-worker-stages.js +105 -0
- package/dist/server/artifact-compatibility.d.ts +11 -12
- package/dist/server/before-interactive-head.d.ts +2 -3
- package/dist/server/bfcache-identity.d.ts +7 -8
- package/dist/server/cache-control.d.ts +35 -13
- package/dist/server/cache-control.js +64 -6
- package/dist/server/cache-headers.d.ts +3 -4
- package/dist/server/cache-proof.d.ts +75 -70
- package/dist/server/cache-proof.js +9 -1
- package/dist/server/cacheability-limits.d.ts +4 -5
- package/dist/server/cacheability-limits.js +2 -2
- package/dist/server/cacheability-manifest.d.ts +42 -16
- package/dist/server/cacheability-manifest.js +60 -10
- package/dist/server/cacheability-request.d.ts +37 -8
- package/dist/server/cacheability-request.js +192 -90
- package/dist/server/client-reuse-manifest.d.ts +17 -18
- package/dist/server/client-reuse-manifest.js +2 -2
- package/dist/server/client-trace-metadata.d.ts +9 -6
- package/dist/server/client-trace-metadata.js +27 -15
- package/dist/server/cloudflare-workers-tracing.d.ts +1 -0
- package/dist/server/cloudflare-workers-tracing.js +8 -0
- package/dist/server/config-headers.d.ts +19 -5
- package/dist/server/config-headers.js +25 -11
- package/dist/server/cookie-utils.d.ts +2 -3
- package/dist/server/csp.d.ts +5 -6
- package/dist/server/default-global-error-module.d.ts +2 -3
- package/dist/server/default-global-not-found-module.d.ts +2 -3
- package/dist/server/default-not-found-module.d.ts +2 -3
- package/dist/server/defer-until-stream-consumed.d.ts +2 -3
- package/dist/server/defer-until-stream-consumed.js +2 -1
- package/dist/server/dev-initial-server-error.d.ts +3 -4
- package/dist/server/dev-initial-server-error.js +2 -1
- package/dist/server/dev-lockfile.d.ts +7 -8
- package/dist/server/dev-lockfile.js +4 -1
- package/dist/server/dev-module-runner.d.ts +2 -3
- package/dist/server/dev-origin-check.d.ts +5 -6
- package/dist/server/dev-route-files.d.ts +2 -3
- package/dist/server/dev-server.d.ts +4 -5
- package/dist/server/dev-server.js +141 -64
- package/dist/server/dev-stack-sourcemap.d.ts +7 -7
- package/dist/server/dev-stack-sourcemap.js +1 -1
- package/dist/server/document-initial-head.d.ts +3 -4
- package/dist/server/edge-api-runtime.d.ts +4 -5
- package/dist/server/fetch-handler.d.ts +3 -2
- package/dist/server/fetch-handler.js +3 -18
- package/dist/server/file-based-metadata.d.ts +2 -3
- package/dist/server/framework-tracer.d.ts +46 -0
- package/dist/server/framework-tracer.js +125 -0
- package/dist/server/fully-buffered-response.d.ts +11 -0
- package/dist/server/fully-buffered-response.js +19 -0
- package/dist/server/headers.d.ts +56 -61
- package/dist/server/headers.js +22 -31
- package/dist/server/html.d.ts +6 -27
- package/dist/server/html.js +16 -1
- package/dist/server/http-conditional.d.ts +5 -6
- package/dist/server/http-date.d.ts +2 -3
- package/dist/server/http-error-responses.d.ts +9 -10
- package/dist/server/http-error-responses.js +1 -0
- package/dist/server/http-range.d.ts +4 -5
- package/dist/server/hybrid-route-priority.d.ts +4 -5
- package/dist/server/image-optimization.d.ts +20 -21
- package/dist/server/implicit-tags.d.ts +3 -4
- package/dist/server/instrumentation-runtime.d.ts +17 -21
- package/dist/server/instrumentation-runtime.js +26 -8
- package/dist/server/instrumentation.d.ts +26 -30
- package/dist/server/instrumentation.js +18 -23
- package/dist/server/isr-cache.d.ts +30 -27
- package/dist/server/isr-cache.js +23 -70
- package/dist/server/isr-decision.d.ts +4 -4
- package/dist/server/metadata-route-build-data.d.ts +4 -5
- package/dist/server/metadata-route-response.d.ts +7 -7
- package/dist/server/metadata-route-response.js +158 -35
- package/dist/server/metadata-routes.d.ts +18 -19
- package/dist/server/middleware-matcher-pattern.d.ts +6 -7
- package/dist/server/middleware-matcher.d.ts +6 -7
- package/dist/server/middleware-path-to-regexp.d.ts +6 -7
- package/dist/server/middleware-path-to-regexp.js +11 -9
- package/dist/server/middleware-response-headers.d.ts +3 -4
- package/dist/server/middleware-runtime.d.ts +7 -8
- package/dist/server/middleware-runtime.js +36 -7
- package/dist/server/middleware.d.ts +5 -5
- package/dist/server/multi-stage.d.ts +141 -0
- package/dist/server/multi-stage.js +8 -0
- package/dist/server/navigation-planner.d.ts +26 -26
- package/dist/server/navigation-trace.d.ts +11 -12
- package/dist/server/next-error-digest.d.ts +4 -5
- package/dist/server/normalize-path.d.ts +5 -6
- package/dist/server/open-redirect.d.ts +2 -3
- package/dist/server/opentelemetry-api.d.ts +59 -0
- package/dist/server/opentelemetry-api.js +53 -0
- package/dist/server/opentelemetry-tracing.d.ts +5 -0
- package/dist/server/opentelemetry-tracing.js +83 -0
- package/dist/server/operation-token.d.ts +11 -12
- package/dist/server/otel-tracer-extension.d.ts +7 -9
- package/dist/server/otel-tracer-extension.js +37 -36
- package/dist/server/pages-api-route.d.ts +5 -4
- package/dist/server/pages-api-route.js +28 -9
- package/dist/server/pages-asset-tags.d.ts +7 -6
- package/dist/server/pages-asset-tags.js +104 -18
- package/dist/server/pages-body-parser-config.d.ts +4 -5
- package/dist/server/pages-body-parser-config.js +4 -4
- package/dist/server/pages-client-assets.d.ts +13 -5
- package/dist/server/pages-data-route.d.ts +11 -12
- package/dist/server/pages-data-route.js +1 -1
- package/dist/server/pages-default-404.d.ts +3 -4
- package/dist/server/pages-dev-hydration.d.ts +9 -4
- package/dist/server/pages-dev-hydration.js +19 -7
- package/dist/server/pages-dev-module-url.d.ts +3 -4
- package/dist/server/pages-dev-stylesheets.d.ts +5 -6
- package/dist/server/pages-document-asset-props.d.ts +6 -7
- package/dist/server/pages-document-initial-props.d.ts +5 -5
- package/dist/server/pages-document-initial-props.js +4 -2
- package/dist/server/pages-execution-tracing.d.ts +40 -0
- package/dist/server/pages-execution-tracing.js +80 -0
- package/dist/server/pages-get-initial-props.d.ts +9 -10
- package/dist/server/pages-i18n.d.ts +8 -8
- package/dist/server/pages-media-type.d.ts +4 -5
- package/dist/server/pages-node-compat.d.ts +11 -10
- package/dist/server/pages-node-compat.js +12 -4
- package/dist/server/pages-page-data.d.ts +23 -19
- package/dist/server/pages-page-data.js +82 -75
- package/dist/server/pages-page-handler.d.ts +7 -6
- package/dist/server/pages-page-handler.js +103 -47
- package/dist/server/pages-page-method.d.ts +2 -3
- package/dist/server/pages-page-response.d.ts +14 -10
- package/dist/server/pages-page-response.js +52 -32
- package/dist/server/pages-preview.d.ts +10 -11
- package/dist/server/pages-readiness.d.ts +2 -3
- package/dist/server/pages-request-pipeline.d.ts +15 -12
- package/dist/server/pages-request-pipeline.js +80 -35
- package/dist/server/pages-request-stage-entry.d.ts +23 -0
- package/dist/server/pages-request-stage-entry.js +316 -0
- package/dist/server/pages-response-stage-entry.d.ts +11 -0
- package/dist/server/pages-response-stage-entry.js +106 -0
- package/dist/server/pages-response-stage.d.ts +31 -0
- package/dist/server/pages-response-stage.js +49 -0
- package/dist/server/pages-revalidate.d.ts +3 -4
- package/dist/server/pages-revalidate.js +9 -4
- package/dist/server/pages-route-data-kind.d.ts +18 -0
- package/dist/server/pages-route-data-kind.js +11 -0
- package/dist/server/pages-router-entry.d.ts +1 -25
- package/dist/server/pages-router-entry.js +35 -148
- package/dist/server/pages-serializable-props.d.ts +3 -4
- package/dist/server/pregenerated-concrete-paths.d.ts +9 -7
- package/dist/server/pregenerated-concrete-paths.js +12 -6
- package/dist/server/prerender-cache-life-header.d.ts +3 -4
- package/dist/server/prerender-manifest.d.ts +17 -11
- package/dist/server/prerender-manifest.js +7 -4
- package/dist/server/prerender-route-params.d.ts +16 -9
- package/dist/server/prerender-route-params.js +18 -3
- package/dist/server/prerender-work-unit-setup.d.ts +2 -3
- package/dist/server/prerender-work-unit-setup.js +5 -5
- package/dist/server/prod-server.d.ts +12 -9
- package/dist/server/prod-server.js +127 -44
- package/dist/server/proxy-trust.d.ts +5 -6
- package/dist/server/request-log.d.ts +3 -4
- package/dist/server/request-pipeline.d.ts +16 -16
- package/dist/server/request-pipeline.js +7 -2
- package/dist/server/request-stage.d.ts +5 -0
- package/dist/server/request-stage.js +7 -0
- package/dist/server/request-tracing.d.ts +22 -0
- package/dist/server/request-tracing.js +180 -0
- package/dist/server/response-stage-cacheability.d.ts +37 -0
- package/dist/server/response-stage-cacheability.js +55 -0
- package/dist/server/response-stage-policy.d.ts +23 -0
- package/dist/server/response-stage-policy.js +89 -0
- package/dist/server/response-stage.d.ts +5 -0
- package/dist/server/response-stage.js +7 -0
- package/dist/server/response-start-tracing.d.ts +14 -0
- package/dist/server/response-start-tracing.js +80 -0
- package/dist/server/revalidation-host.d.ts +2 -3
- package/dist/server/revalidation-host.js +1 -1
- package/dist/server/revalidation-request.d.ts +8 -0
- package/dist/server/revalidation-request.js +37 -0
- package/dist/server/rsc-completion-metadata.d.ts +6 -7
- package/dist/server/rsc-stream-hints.d.ts +18 -7
- package/dist/server/rsc-stream-hints.js +70 -35
- package/dist/server/seed-cache.d.ts +2 -3
- package/dist/server/seed-cache.js +8 -7
- package/dist/server/server-action-not-found.d.ts +5 -6
- package/dist/server/server-globals.d.ts +2 -3
- package/dist/server/skip-cache-proof.d.ts +4 -4
- package/dist/server/socket-error-backstop.d.ts +5 -6
- package/dist/server/socket-error-backstop.js +1 -1
- package/dist/server/static-file-cache.d.ts +5 -6
- package/dist/server/static-file-cache.js +9 -7
- package/dist/server/static-file-signal.d.ts +9 -6
- package/dist/server/static-file-signal.js +51 -2
- package/dist/server/static-layout-client-reuse-proof.d.ts +4 -5
- package/dist/server/streaming-metadata.d.ts +2 -3
- package/dist/server/tracer.d.ts +5 -0
- package/dist/server/tracer.js +13 -0
- package/dist/server/worker-prerender-discovery.d.ts +5 -6
- package/dist/server/worker-revalidation-context.d.ts +4 -4
- package/dist/server/worker-revalidation-context.js +6 -5
- package/dist/server/worker-stages.d.ts +43 -0
- package/dist/server/worker-stages.js +25 -0
- package/dist/server/worker-utils.d.ts +5 -6
- package/dist/server/worker-utils.js +2 -1
- package/dist/server/workers-tracing.d.ts +34 -0
- package/dist/server/workers-tracing.js +67 -0
- package/dist/shims/amp.d.ts +3 -4
- package/dist/shims/app-router-scroll-state.d.ts +9 -10
- package/dist/shims/app-router-scroll.d.ts +4 -5
- package/dist/shims/app-router-scroll.js +2 -1
- package/dist/shims/app.d.ts +5 -6
- package/dist/shims/before-interactive-context.d.ts +5 -6
- package/dist/shims/cache-callable-runtime.d.ts +44 -4
- package/dist/shims/cache-callable-runtime.js +168 -8
- package/dist/shims/cache-for-request.d.ts +2 -3
- package/dist/shims/cache-handler.d.ts +33 -20
- package/dist/shims/cache-handler.js +61 -2
- package/dist/shims/cache-request-state.d.ts +26 -38
- package/dist/shims/cache-request-state.js +2 -13
- package/dist/shims/cache-runtime.d.ts +23 -21
- package/dist/shims/cache-runtime.js +110 -28
- package/dist/shims/cache.d.ts +17 -16
- package/dist/shims/cache.js +19 -15
- package/dist/shims/cacheability-classification.d.ts +50 -29
- package/dist/shims/cacheability-classification.js +29 -14
- package/dist/shims/cdn-cache-state.d.ts +13 -0
- package/dist/shims/cdn-cache-state.js +23 -0
- package/dist/shims/cdn-cache.d.ts +59 -21
- package/dist/shims/cdn-cache.js +31 -47
- package/dist/shims/client-hook-error.d.ts +3 -4
- package/dist/shims/client-locale.d.ts +2 -3
- package/dist/shims/client-page-root.d.ts +24 -0
- package/dist/shims/client-page-root.js +121 -0
- package/dist/shims/compat-router.d.ts +2 -3
- package/dist/shims/config.d.ts +3 -4
- package/dist/shims/constants.d.ts +73 -74
- package/dist/shims/constants.js +1 -1
- package/dist/shims/default-not-found.d.ts +2 -3
- package/dist/shims/document.d.ts +9 -9
- package/dist/shims/dynamic-preload-chunks.d.ts +2 -3
- package/dist/shims/dynamic-preload-chunks.js +17 -13
- package/dist/shims/dynamic.d.ts +3 -3
- package/dist/shims/error-boundary-navigation.d.ts +3 -4
- package/dist/shims/error-boundary.d.ts +17 -18
- package/dist/shims/error-boundary.js +17 -11
- package/dist/shims/error.d.ts +5 -19
- package/dist/shims/error.js +17 -10
- package/dist/shims/error.react-server.d.ts +4 -7
- package/dist/shims/error.react-server.js +4 -1
- package/dist/shims/fetch-cache.d.ts +22 -22
- package/dist/shims/fetch-cache.js +46 -20
- package/dist/shims/font-google-base.d.ts +9 -9
- package/dist/shims/font-google-base.js +2 -1
- package/dist/shims/font-local.d.ts +3 -3
- package/dist/shims/font-local.js +1 -1
- package/dist/shims/font-utils.d.ts +14 -15
- package/dist/shims/form.d.ts +2 -2
- package/dist/shims/form.js +10 -7
- package/dist/shims/hash-scroll.d.ts +5 -6
- package/dist/shims/head-state.d.ts +4 -5
- package/dist/shims/head.d.ts +16 -16
- package/dist/shims/head.js +5 -4
- package/dist/shims/headers.d.ts +44 -73
- package/dist/shims/headers.js +87 -144
- package/dist/shims/i18n-context.d.ts +5 -6
- package/dist/shims/i18n-state.d.ts +4 -5
- package/dist/shims/image-config.d.ts +5 -6
- package/dist/shims/image-config.js +2 -0
- package/dist/shims/image.d.ts +5 -5
- package/dist/shims/image.js +12 -8
- package/dist/shims/internal/als-registry.d.ts +4 -5
- package/dist/shims/internal/api-utils.d.ts +3 -4
- package/dist/shims/internal/app-page-props-cache-key.d.ts +32 -4
- package/dist/shims/internal/app-page-props-cache-key.js +53 -1
- package/dist/shims/internal/app-prefetch-fetch-queue.d.ts +5 -6
- package/dist/shims/internal/app-prefetch-rsc-request.d.ts +5 -17
- package/dist/shims/internal/app-prefetch-rsc-request.js +5 -14
- package/dist/shims/internal/app-route-detection.d.ts +2 -2
- package/dist/shims/internal/app-route-prefetch-policy.d.ts +5 -8
- package/dist/shims/internal/app-route-prefetch-policy.js +0 -1
- package/dist/shims/internal/app-router-context.d.ts +9 -10
- package/dist/shims/internal/cache-context-accessor.d.ts +16 -0
- package/dist/shims/internal/cache-context-accessor.js +15 -0
- package/dist/shims/internal/cookie-serialize.d.ts +4 -5
- package/dist/shims/internal/format-url-object.d.ts +7 -0
- package/dist/shims/internal/format-url-object.js +53 -0
- package/dist/shims/internal/headers-state.d.ts +74 -0
- package/dist/shims/internal/headers-state.js +157 -0
- package/dist/shims/internal/hybrid-client-route-owner-direct.d.ts +6 -7
- package/dist/shims/internal/hybrid-client-route-owner.d.ts +3 -3
- package/dist/shims/internal/hybrid-client-route-owner.js +3 -2
- package/dist/shims/internal/interpolate-as.d.ts +5 -6
- package/dist/shims/internal/interpolate-as.js +4 -2
- package/dist/shims/internal/link-status-registry.d.ts +5 -6
- package/dist/shims/internal/make-hanging-promise.d.ts +3 -4
- package/dist/shims/internal/navigation-untracked.d.ts +2 -3
- package/dist/shims/internal/normalize-router-href.d.ts +15 -0
- package/dist/shims/internal/normalize-router-href.js +41 -0
- package/dist/shims/internal/pages-data-fetch-dedup.d.ts +8 -9
- package/dist/shims/internal/pages-data-target.d.ts +8 -6
- package/dist/shims/internal/pages-data-target.js +32 -36
- package/dist/shims/internal/pages-data-url.d.ts +4 -5
- package/dist/shims/internal/pages-data-url.js +2 -1
- package/dist/shims/internal/pages-router-accessor.d.ts +3 -4
- package/dist/shims/internal/pages-router-components.d.ts +3 -4
- package/dist/shims/internal/route-pattern-for-warning.d.ts +5 -6
- package/dist/shims/internal/route-pattern-for-warning.js +3 -3
- package/dist/shims/internal/router-context.d.ts +2 -3
- package/dist/shims/internal/thenable-well-known-properties.d.ts +10 -0
- package/dist/shims/internal/thenable-well-known-properties.js +33 -0
- package/dist/shims/internal/utils.d.ts +7 -8
- package/dist/shims/internal/work-unit-async-storage.d.ts +10 -11
- package/dist/shims/layout-segment-context.d.ts +3 -4
- package/dist/shims/link-prefetch.d.ts +9 -10
- package/dist/shims/link.d.ts +4 -4
- package/dist/shims/link.js +56 -116
- package/dist/shims/metadata.d.ts +15 -16
- package/dist/shims/metadata.js +40 -36
- package/dist/shims/navigation-context-accessors.d.ts +9 -0
- package/dist/shims/navigation-context-accessors.js +19 -0
- package/dist/shims/navigation-context-state.d.ts +27 -18
- package/dist/shims/navigation-errors.d.ts +18 -19
- package/dist/shims/navigation-state.d.ts +6 -7
- package/dist/shims/navigation.d.ts +80 -68
- package/dist/shims/navigation.js +26 -18
- package/dist/shims/navigation.react-server.d.ts +9 -9
- package/dist/shims/offline.d.ts +2 -3
- package/dist/shims/og.d.ts +2 -2
- package/dist/shims/pages-router-runtime.d.ts +4 -5
- package/dist/shims/ppr-fallback-shell.d.ts +13 -14
- package/dist/shims/readonly-url-search-params.d.ts +2 -3
- package/dist/shims/request-context.d.ts +5 -6
- package/dist/shims/request-state-types.d.ts +2 -1
- package/dist/shims/root-params.d.ts +14 -15
- package/dist/shims/root-params.js +1 -1
- package/dist/shims/router-state.d.ts +5 -6
- package/dist/shims/router-state.js +1 -1
- package/dist/shims/router.d.ts +22 -21
- package/dist/shims/router.js +339 -164
- package/dist/shims/script-nonce-context.d.ts +8 -6
- package/dist/shims/script-nonce-context.js +15 -6
- package/dist/shims/script.d.ts +4 -4
- package/dist/shims/script.js +9 -7
- package/dist/shims/search-params-gate.d.ts +35 -0
- package/dist/shims/search-params-gate.js +32 -0
- package/dist/shims/server.d.ts +19 -51
- package/dist/shims/server.js +66 -30
- package/dist/shims/slot.d.ts +33 -15
- package/dist/shims/slot.js +41 -9
- package/dist/shims/streamed-icons.d.ts +3 -4
- package/dist/shims/thenable-params.d.ts +5 -7
- package/dist/shims/thenable-params.js +3 -24
- package/dist/shims/unified-request-context.d.ts +35 -32
- package/dist/shims/unified-request-context.js +34 -24
- package/dist/shims/unrecognized-action-error.d.ts +3 -4
- package/dist/shims/url-safety.d.ts +5 -6
- package/dist/shims/url-utils.d.ts +12 -13
- package/dist/shims/use-merged-ref.d.ts +2 -3
- package/dist/shims/user-agent.d.ts +31 -0
- package/dist/shims/user-agent.js +16 -0
- package/dist/shims/web-vitals.d.ts +2 -2
- package/dist/typegen.d.ts +3 -4
- package/dist/utils/asset-prefix.d.ts +7 -8
- package/dist/utils/base-path.d.ts +5 -6
- package/dist/utils/built-asset-url.d.ts +2 -3
- package/dist/utils/built-asset-url.js +1 -1
- package/dist/utils/cache-control-metadata.d.ts +4 -5
- package/dist/utils/client-build-manifest.d.ts +6 -7
- package/dist/utils/client-build-manifest.js +2 -1
- package/dist/utils/client-entry-manifest.d.ts +6 -7
- package/dist/utils/client-runtime-metadata.d.ts +8 -3
- package/dist/utils/client-runtime-metadata.js +18 -1
- package/dist/utils/commonjs-loader.d.ts +4 -5
- package/dist/utils/compare.d.ts +2 -3
- package/dist/utils/deployment-id.d.ts +6 -7
- package/dist/utils/dev-error-recovery-event.d.ts +2 -3
- package/dist/utils/dev-stack-sourcemap-endpoint.d.ts +2 -3
- package/dist/utils/domain-locale.d.ts +7 -8
- package/dist/utils/encode-cache-tag.d.ts +4 -4
- package/dist/utils/encode-cache-tag.js +11 -1
- package/dist/utils/error-cause.d.ts +2 -3
- package/dist/utils/external-url.d.ts +2 -3
- package/dist/utils/has-trailing-comma.d.ts +3 -4
- package/dist/utils/hash.d.ts +3 -4
- package/dist/utils/html-limited-bots.d.ts +3 -4
- package/dist/utils/lazy-chunks.d.ts +8 -9
- package/dist/utils/lazy-chunks.js +4 -4
- package/dist/utils/manifest-paths.d.ts +5 -6
- package/dist/utils/mdx-scan.d.ts +11 -4
- package/dist/utils/mdx-scan.js +27 -1
- package/dist/utils/middleware-request-headers.d.ts +7 -6
- package/dist/utils/middleware-request-headers.js +6 -1
- package/dist/utils/navigation-signal.d.ts +3 -3
- package/dist/utils/navigation-signal.js +16 -1
- package/dist/utils/number.d.ts +2 -3
- package/dist/utils/package-name.d.ts +3 -4
- package/dist/utils/parse-cookie.d.ts +4 -5
- package/dist/utils/path.d.ts +8 -9
- package/dist/utils/plugin-options.d.ts +2 -3
- package/dist/utils/precompressed-variant.d.ts +3 -4
- package/dist/utils/prerender-output-paths.d.ts +4 -5
- package/dist/utils/project.d.ts +19 -30
- package/dist/utils/project.js +20 -29
- package/dist/utils/promise.d.ts +2 -3
- package/dist/utils/protocol-headers.d.ts +14 -15
- package/dist/utils/public-file-path.d.ts +2 -3
- package/dist/utils/public-routes.d.ts +2 -3
- package/dist/utils/query.d.ts +14 -9
- package/dist/utils/query.js +22 -1
- package/dist/utils/react-compiler-support.d.ts +6 -7
- package/dist/utils/react-version.d.ts +4 -3
- package/dist/utils/react-version.js +19 -1
- package/dist/utils/record.d.ts +2 -3
- package/dist/utils/redirect-digest.d.ts +3 -4
- package/dist/utils/regex-safety.d.ts +4 -5
- package/dist/utils/regex.d.ts +2 -3
- package/dist/utils/safe-json-file.d.ts +2 -3
- package/dist/utils/sorted-array.d.ts +2 -3
- package/dist/utils/text-stream.d.ts +3 -4
- package/dist/utils/vinext-root.d.ts +2 -3
- package/dist/utils/virtual-module.d.ts +3 -4
- package/dist/utils/vite-cli-invocation.d.ts +21 -0
- package/dist/utils/vite-cli-invocation.js +151 -0
- package/dist/utils/vite-version.d.ts +5 -6
- package/next-package.json +4 -0
- package/package.json +51 -6
- package/dist/server/metadata-route-cache-policy.d.ts +0 -6
- package/dist/server/metadata-route-cache-policy.js +0 -6
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import path from "../deps/.pnpm/pathslash@0.1.0/deps/pathslash/dist/index.js";
|
|
2
|
-
import { magicStringTransformResult } from "./transform-result.js";
|
|
2
|
+
import { magicStringTransformResult, omitUnusedBuildSourcemap } from "./transform-result.js";
|
|
3
|
+
import { resolveHarfbuzzWasmPath } from "./og-harfbuzz.js";
|
|
3
4
|
import { OgAssetOwnership } from "./og-asset-ownership.js";
|
|
4
5
|
import { createRequire } from "node:module";
|
|
5
6
|
import fs from "node:fs";
|
|
@@ -79,22 +80,68 @@ function createOgInlineFetchAssetsPlugin() {
|
|
|
79
80
|
s.overwrite(match.index, match.index + fullMatch.length, inlined);
|
|
80
81
|
didReplace = true;
|
|
81
82
|
}
|
|
82
|
-
if (code.includes("readFileSync(")) for (const match of code
|
|
83
|
-
const
|
|
84
|
-
const relPath = match[2];
|
|
85
|
-
const fileBase64 = await readAsBase64(path.resolve(moduleDir, relPath));
|
|
83
|
+
if (code.includes("readFileSync(")) for (const match of matchReadFileSyncAssetUrls(code)) {
|
|
84
|
+
const fileBase64 = await readAsBase64(path.resolve(moduleDir, match.relPath));
|
|
86
85
|
if (fileBase64 === null) continue;
|
|
87
86
|
const inlined = `Buffer.from(${JSON.stringify(fileBase64)},"base64")`;
|
|
88
|
-
s.overwrite(match.
|
|
87
|
+
s.overwrite(match.start, match.end, inlined);
|
|
89
88
|
didReplace = true;
|
|
90
89
|
}
|
|
91
90
|
if (!didReplace) return null;
|
|
92
|
-
return magicStringTransformResult(s);
|
|
91
|
+
return omitUnusedBuildSourcemap(this.environment, magicStringTransformResult(s));
|
|
93
92
|
}
|
|
94
93
|
}
|
|
95
94
|
};
|
|
96
95
|
}
|
|
97
|
-
const
|
|
96
|
+
const READ_FILE_SYNC_ASSET_URL_TAIL_RE = /\.readFileSync\(\s*(?:[a-zA-Z_$][a-zA-Z0-9_$]*\.)?fileURLToPath\(\s*new URL\(\s*(["'])(\.[^"']+)\1\s*,\s*import\.meta\.url\s*\)\s*\)\s*\)/y;
|
|
97
|
+
/**
|
|
98
|
+
* Find every `<identifier>.readFileSync(fileURLToPath(new URL("./file", import.meta.url)))`
|
|
99
|
+
* call in `code`.
|
|
100
|
+
*
|
|
101
|
+
* Returns the same matches, in the same order, as `code.matchAll()` with
|
|
102
|
+
* `/[a-zA-Z_$][a-zA-Z0-9_$]*` followed by `READ_FILE_SYNC_ASSET_URL_TAIL_RE` as a
|
|
103
|
+
* global regex. That regex retries the identifier prefix at every identifier
|
|
104
|
+
* character of the module, which is slow on large bundles such as typescript.js.
|
|
105
|
+
* A match's identifier always ends right at a `.readFileSync(` occurrence, so
|
|
106
|
+
* candidates are found with `indexOf` and the identifier is recovered by
|
|
107
|
+
* scanning backwards.
|
|
108
|
+
*/
|
|
109
|
+
function matchReadFileSyncAssetUrls(code) {
|
|
110
|
+
const matches = [];
|
|
111
|
+
let searchFrom = 0;
|
|
112
|
+
let dot = code.indexOf(".readFileSync(");
|
|
113
|
+
while (dot !== -1) {
|
|
114
|
+
let start = dot;
|
|
115
|
+
while (start > searchFrom && isAsciiIdentifierPart(code.charCodeAt(start - 1))) start--;
|
|
116
|
+
while (start < dot && !isAsciiIdentifierStart(code.charCodeAt(start))) start++;
|
|
117
|
+
if (start < dot) {
|
|
118
|
+
READ_FILE_SYNC_ASSET_URL_TAIL_RE.lastIndex = dot;
|
|
119
|
+
const tail = READ_FILE_SYNC_ASSET_URL_TAIL_RE.exec(code);
|
|
120
|
+
if (tail !== null) {
|
|
121
|
+
const end = dot + tail[0].length;
|
|
122
|
+
matches.push({
|
|
123
|
+
start,
|
|
124
|
+
end,
|
|
125
|
+
relPath: tail[2]
|
|
126
|
+
});
|
|
127
|
+
searchFrom = end;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
dot = code.indexOf(".readFileSync(", Math.max(dot + 1, searchFrom));
|
|
131
|
+
}
|
|
132
|
+
return matches;
|
|
133
|
+
}
|
|
134
|
+
function isAsciiIdentifierStart(charCode) {
|
|
135
|
+
return charCode >= 97 && charCode <= 122 || charCode >= 65 && charCode <= 90 || charCode === 95 || charCode === 36;
|
|
136
|
+
}
|
|
137
|
+
function isAsciiIdentifierPart(charCode) {
|
|
138
|
+
return isAsciiIdentifierStart(charCode) || charCode >= 48 && charCode <= 57;
|
|
139
|
+
}
|
|
140
|
+
const OG_WASM_ASSETS = [
|
|
141
|
+
"resvg.wasm",
|
|
142
|
+
"yoga.wasm",
|
|
143
|
+
"hb.wasm"
|
|
144
|
+
];
|
|
98
145
|
/**
|
|
99
146
|
* Find an emitted WASM asset in the output bundle whose name corresponds to the
|
|
100
147
|
* given base file (e.g. base `resvg.wasm` matches the emitted `resvg-HASH.wasm`).
|
|
@@ -105,15 +152,20 @@ const OG_WASM_ASSETS = ["resvg.wasm", "yoga.wasm"];
|
|
|
105
152
|
*
|
|
106
153
|
* @returns the emitted asset's `fileName` (relative to outDir), or null.
|
|
107
154
|
*/
|
|
108
|
-
function findEmittedWasmAsset(bundle, baseName) {
|
|
155
|
+
function findEmittedWasmAsset(bundle, baseName, expectedSource) {
|
|
109
156
|
const stem = baseName.replace(/\.wasm$/, "");
|
|
110
157
|
const re = new RegExp(`^${stem}(?:[-.][\\w-]+)?\\.wasm$`);
|
|
111
158
|
for (const output of Object.values(bundle)) {
|
|
112
159
|
if (output.type !== "asset") continue;
|
|
113
|
-
if (re.test(path.basename(output.fileName)))
|
|
160
|
+
if (!re.test(path.basename(output.fileName))) continue;
|
|
161
|
+
if (expectedSource && !isSameBytes(output.source, expectedSource)) continue;
|
|
162
|
+
return output.fileName;
|
|
114
163
|
}
|
|
115
164
|
return null;
|
|
116
165
|
}
|
|
166
|
+
function isSameBytes(source, expected) {
|
|
167
|
+
return source instanceof Uint8Array && Buffer.from(source).equals(expected);
|
|
168
|
+
}
|
|
117
169
|
/**
|
|
118
170
|
* Build the regex that matches the Node.js fallback reference
|
|
119
171
|
* `new URL("./<base>", import.meta.url)` for a given WASM base name.
|
|
@@ -162,7 +214,7 @@ function copyMissingOgWasm(opts) {
|
|
|
162
214
|
* target — so it helps Node/self-hosted builds as well as Cloudflare Workers.
|
|
163
215
|
*/
|
|
164
216
|
function createOgAssetsPlugin() {
|
|
165
|
-
|
|
217
|
+
const dedupedBasesByEnvironment = /* @__PURE__ */ new Map();
|
|
166
218
|
return {
|
|
167
219
|
name: "vinext:og-assets",
|
|
168
220
|
apply: "build",
|
|
@@ -170,17 +222,18 @@ function createOgAssetsPlugin() {
|
|
|
170
222
|
generateBundle: {
|
|
171
223
|
order: "post",
|
|
172
224
|
handler(_options, bundle) {
|
|
173
|
-
|
|
174
|
-
|
|
225
|
+
const envName = this.environment?.name;
|
|
226
|
+
if (envName !== "rsc" && envName !== "ssr") return;
|
|
227
|
+
const dedupedBases = /* @__PURE__ */ new Set();
|
|
228
|
+
dedupedBasesByEnvironment.set(envName, dedupedBases);
|
|
175
229
|
const chunks = Object.values(bundle).filter((o) => o.type === "chunk");
|
|
176
230
|
for (const base of OG_WASM_ASSETS) {
|
|
177
231
|
if (!chunks.some((c) => c.code.includes(base))) continue;
|
|
178
|
-
const emitted = findEmittedWasmAsset(bundle, base);
|
|
179
|
-
if (!emitted) continue;
|
|
232
|
+
const emitted = findEmittedWasmAsset(bundle, base, base === "hb.wasm" ? fs.readFileSync(resolveHarfbuzzWasmPath(createRequire(import.meta.url).resolve("@vercel/og"))) : void 0);
|
|
180
233
|
for (const chunk of chunks) {
|
|
181
234
|
const re = fallbackUrlRegex(base);
|
|
182
235
|
const chunkDir = path.dirname(chunk.fileName);
|
|
183
|
-
const rel = path.relative(chunkDir, emitted);
|
|
236
|
+
const rel = path.relative(chunkDir, emitted ?? base);
|
|
184
237
|
const ref = rel.startsWith(".") ? rel : `./${rel}`;
|
|
185
238
|
const s = new MagicString(chunk.code);
|
|
186
239
|
let edited = false;
|
|
@@ -197,7 +250,7 @@ function createOgAssetsPlugin() {
|
|
|
197
250
|
source: chunk.fileName
|
|
198
251
|
});
|
|
199
252
|
}
|
|
200
|
-
dedupedBases.add(base);
|
|
253
|
+
if (emitted) dedupedBases.add(base);
|
|
201
254
|
}
|
|
202
255
|
}
|
|
203
256
|
},
|
|
@@ -205,18 +258,26 @@ function createOgAssetsPlugin() {
|
|
|
205
258
|
sequential: true,
|
|
206
259
|
order: "post",
|
|
207
260
|
async handler(options, bundle) {
|
|
208
|
-
|
|
261
|
+
const envName = this.environment?.name;
|
|
262
|
+
if (envName !== "rsc" && envName !== "ssr") return;
|
|
209
263
|
const outDir = options.dir;
|
|
210
264
|
if (!outDir) return;
|
|
211
265
|
const chunkCode = Object.values(bundle).map((output) => output.type === "chunk" ? output.code : "").join("\n");
|
|
212
|
-
const
|
|
266
|
+
const dedupedBases = dedupedBasesByEnvironment.get(envName);
|
|
267
|
+
dedupedBasesByEnvironment.delete(envName);
|
|
268
|
+
const referencedAssets = OG_WASM_ASSETS.filter((asset) => chunkCode.includes(asset) && !dedupedBases?.has(asset));
|
|
213
269
|
if (referencedAssets.length === 0) return;
|
|
214
270
|
try {
|
|
215
271
|
const ogPkgPath = createRequire(import.meta.url).resolve("@vercel/og/package.json");
|
|
216
272
|
copyMissingOgWasm({
|
|
217
273
|
outDir,
|
|
218
274
|
sourceDir: path.join(path.dirname(ogPkgPath), "dist"),
|
|
219
|
-
assets: referencedAssets
|
|
275
|
+
assets: referencedAssets.filter((asset) => asset !== "hb.wasm")
|
|
276
|
+
});
|
|
277
|
+
if (referencedAssets.includes("hb.wasm")) copyMissingOgWasm({
|
|
278
|
+
outDir,
|
|
279
|
+
sourceDir: path.dirname(resolveHarfbuzzWasmPath(ogPkgPath)),
|
|
280
|
+
assets: ["hb.wasm"]
|
|
220
281
|
});
|
|
221
282
|
} catch {}
|
|
222
283
|
}
|
|
@@ -224,4 +285,4 @@ function createOgAssetsPlugin() {
|
|
|
224
285
|
};
|
|
225
286
|
}
|
|
226
287
|
//#endregion
|
|
227
|
-
export { copyMissingOgWasm, createOgAssetsPlugin, createOgInlineFetchAssetsPlugin };
|
|
288
|
+
export { copyMissingOgWasm, createOgAssetsPlugin, createOgInlineFetchAssetsPlugin, matchReadFileSyncAssetUrls };
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { Plugin } from "vite";
|
|
2
|
+
//#region src/plugins/og-harfbuzz.d.ts
|
|
3
|
+
/**
|
|
4
|
+
* Resolve the `hb.wasm` binary that matches the glue inlined in @vercel/og.
|
|
5
|
+
* @vercel/og and satori pin exact versions, so resolving through
|
|
6
|
+
* @vercel/og → satori → harfbuzzjs yields the build the bundle was made from.
|
|
7
|
+
*/
|
|
8
|
+
export declare function resolveHarfbuzzWasmPath(ogEntry: string): string;
|
|
9
|
+
/**
|
|
10
|
+
* Read every function type in a WASM binary as an Emscripten signature (result
|
|
11
|
+
* letter, or `v` for none, then parameters). Any callback HarfBuzz calls
|
|
12
|
+
* through its function table must have one of these types, so adapters for
|
|
13
|
+
* all of them cover every callback the glue can register.
|
|
14
|
+
*/
|
|
15
|
+
export declare function readWasmFunctionSignatures(wasm: Uint8Array): string[];
|
|
16
|
+
/**
|
|
17
|
+
* Build the module Emscripten's `convertJsFunctionToWasm` compiles for a
|
|
18
|
+
* signature: it imports a JavaScript function as `e.f` and re-exports it as
|
|
19
|
+
* `f`. Every section in it is shorter than 128 bytes, so each length and count
|
|
20
|
+
* is a single LEB128 byte.
|
|
21
|
+
*/
|
|
22
|
+
export declare function createHarfbuzzCallbackWasm(signature: string): Uint8Array<ArrayBuffer>;
|
|
23
|
+
export declare function createOgHarfbuzzPlugin(): Plugin;
|
|
24
|
+
//#endregion
|
|
@@ -0,0 +1,271 @@
|
|
|
1
|
+
import path, { toSlash } from "../deps/.pnpm/pathslash@0.1.0/deps/pathslash/dist/index.js";
|
|
2
|
+
import { forEachAstChild, getAstName, staticStringValue } from "./ast-utils.js";
|
|
3
|
+
import { magicStringTransformResult, omitUnusedBuildSourcemap } from "./transform-result.js";
|
|
4
|
+
import { isFunctionNode } from "./ast-scope.js";
|
|
5
|
+
import { createTransformCache } from "./transform-cache.js";
|
|
6
|
+
import { createRequire } from "node:module";
|
|
7
|
+
import fs from "node:fs";
|
|
8
|
+
import { parseAst } from "vite";
|
|
9
|
+
import MagicString from "magic-string";
|
|
10
|
+
//#region src/plugins/og-harfbuzz.ts
|
|
11
|
+
/**
|
|
12
|
+
* vinext:og-harfbuzz — load @vercel/og's bundled HarfBuzz under vinext.
|
|
13
|
+
*
|
|
14
|
+
* @vercel/og 1.x inlines harfbuzzjs's Emscripten glue into both entry bundles.
|
|
15
|
+
* Unmodified, that glue cannot start:
|
|
16
|
+
*
|
|
17
|
+
* - Node ESM: its Node branch calls esbuild's `__require("fs")` and reads
|
|
18
|
+
* `__dirname`, neither of which exists in an ES module.
|
|
19
|
+
* - workerd: it reads `self.location.href`, takes the Node branch under
|
|
20
|
+
* `nodejs_compat`, and fetches `hb.wasm` from a relative URL. Workers also
|
|
21
|
+
* forbid compiling WASM from bytes, which Emscripten does for every
|
|
22
|
+
* JavaScript callback it adds to the WASM function table.
|
|
23
|
+
*
|
|
24
|
+
* The transform locates the HarfBuzz factory by syntax (the function that
|
|
25
|
+
* names `"hb.wasm"` and reads Emscripten's `instantiateWasm` hook) and, inside
|
|
26
|
+
* it only:
|
|
27
|
+
*
|
|
28
|
+
* 1. sets every `ENVIRONMENT_IS_*` flag to `false`, so no host branch runs;
|
|
29
|
+
* 2. replaces `instantiateWasm` reads with a vinext loader that instantiates
|
|
30
|
+
* `hb.wasm` synchronously (a `?module` import on workerd, a disk read on
|
|
31
|
+
* Node), so a bad binary rejects initialization instead of hanging it;
|
|
32
|
+
* 3. on workerd, serves callback modules from precompiled adapters instead
|
|
33
|
+
* of `new WebAssembly.Module(bytes)`.
|
|
34
|
+
*
|
|
35
|
+
* Whitespace, esbuild's renames and harfbuzzjs's wrapper code can change
|
|
36
|
+
* freely. If a patch site is missing, the build fails with an explicit error
|
|
37
|
+
* instead of shipping an OG route that breaks at runtime.
|
|
38
|
+
*/
|
|
39
|
+
const HARFBUZZ_WASM = "hb.wasm";
|
|
40
|
+
const VALUE_TYPES = {
|
|
41
|
+
i: 127,
|
|
42
|
+
j: 126,
|
|
43
|
+
f: 125,
|
|
44
|
+
d: 124
|
|
45
|
+
};
|
|
46
|
+
const VALUE_TYPE_LETTERS = new Map(Object.entries(VALUE_TYPES).map(([k, v]) => [v, k]));
|
|
47
|
+
/**
|
|
48
|
+
* Resolve the `hb.wasm` binary that matches the glue inlined in @vercel/og.
|
|
49
|
+
* @vercel/og and satori pin exact versions, so resolving through
|
|
50
|
+
* @vercel/og → satori → harfbuzzjs yields the build the bundle was made from.
|
|
51
|
+
*/
|
|
52
|
+
function resolveHarfbuzzWasmPath(ogEntry) {
|
|
53
|
+
const satoriEntry = createRequire(ogEntry).resolve("satori");
|
|
54
|
+
return toSlash(createRequire(satoriEntry).resolve(`harfbuzzjs/${HARFBUZZ_WASM}`));
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Read every function type in a WASM binary as an Emscripten signature (result
|
|
58
|
+
* letter, or `v` for none, then parameters). Any callback HarfBuzz calls
|
|
59
|
+
* through its function table must have one of these types, so adapters for
|
|
60
|
+
* all of them cover every callback the glue can register.
|
|
61
|
+
*/
|
|
62
|
+
function readWasmFunctionSignatures(wasm) {
|
|
63
|
+
let offset = 8;
|
|
64
|
+
const readU32 = () => {
|
|
65
|
+
let result = 0;
|
|
66
|
+
for (let shift = 0;; shift += 7) {
|
|
67
|
+
const byte = wasm[offset++];
|
|
68
|
+
result |= (byte & 127) << shift;
|
|
69
|
+
if (!(byte & 128)) return result >>> 0;
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
const readTypes = () => {
|
|
73
|
+
let letters = "";
|
|
74
|
+
for (let count = readU32(); count > 0; count--) {
|
|
75
|
+
const letter = VALUE_TYPE_LETTERS.get(wasm[offset++]);
|
|
76
|
+
letters = letter && letters !== null ? letters + letter : null;
|
|
77
|
+
}
|
|
78
|
+
return letters;
|
|
79
|
+
};
|
|
80
|
+
const signatures = /* @__PURE__ */ new Set();
|
|
81
|
+
while (offset < wasm.length) {
|
|
82
|
+
const sectionId = wasm[offset++];
|
|
83
|
+
const sectionEnd = readU32() + offset;
|
|
84
|
+
if (sectionId === 1) for (let count = readU32(); count > 0; count--) {
|
|
85
|
+
offset++;
|
|
86
|
+
const params = readTypes();
|
|
87
|
+
const results = readTypes();
|
|
88
|
+
if (params !== null && results !== null && results.length <= 1) signatures.add((results || "v") + params);
|
|
89
|
+
}
|
|
90
|
+
offset = sectionEnd;
|
|
91
|
+
}
|
|
92
|
+
return [...signatures];
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Build the module Emscripten's `convertJsFunctionToWasm` compiles for a
|
|
96
|
+
* signature: it imports a JavaScript function as `e.f` and re-exports it as
|
|
97
|
+
* `f`. Every section in it is shorter than 128 bytes, so each length and count
|
|
98
|
+
* is a single LEB128 byte.
|
|
99
|
+
*/
|
|
100
|
+
function createHarfbuzzCallbackWasm(signature) {
|
|
101
|
+
const typeCode = (letter) => {
|
|
102
|
+
const code = VALUE_TYPES[letter];
|
|
103
|
+
if (code === void 0) throw new Error(`[vinext] Invalid WASM callback signature: ${signature}`);
|
|
104
|
+
return code;
|
|
105
|
+
};
|
|
106
|
+
const [result, ...params] = signature;
|
|
107
|
+
const results = result === "v" ? [] : [typeCode(result)];
|
|
108
|
+
const functionType = [
|
|
109
|
+
96,
|
|
110
|
+
params.length,
|
|
111
|
+
...params.map(typeCode),
|
|
112
|
+
results.length,
|
|
113
|
+
...results
|
|
114
|
+
];
|
|
115
|
+
if (functionType.length > 64) throw new Error(`[vinext] WASM callback signature too long: ${signature}`);
|
|
116
|
+
const section = (id, contents) => [
|
|
117
|
+
id,
|
|
118
|
+
contents.length,
|
|
119
|
+
...contents
|
|
120
|
+
];
|
|
121
|
+
return Uint8Array.from([
|
|
122
|
+
0,
|
|
123
|
+
97,
|
|
124
|
+
115,
|
|
125
|
+
109,
|
|
126
|
+
1,
|
|
127
|
+
0,
|
|
128
|
+
0,
|
|
129
|
+
0,
|
|
130
|
+
...section(1, [1, ...functionType]),
|
|
131
|
+
...section(2, [
|
|
132
|
+
1,
|
|
133
|
+
1,
|
|
134
|
+
101,
|
|
135
|
+
1,
|
|
136
|
+
102,
|
|
137
|
+
0,
|
|
138
|
+
0
|
|
139
|
+
]),
|
|
140
|
+
...section(7, [
|
|
141
|
+
1,
|
|
142
|
+
1,
|
|
143
|
+
102,
|
|
144
|
+
0,
|
|
145
|
+
0
|
|
146
|
+
])
|
|
147
|
+
]);
|
|
148
|
+
}
|
|
149
|
+
/** Write each callback adapter once and return its path by signature. */
|
|
150
|
+
function writeHarfbuzzCallbackModules(harfbuzzWasm, outDir) {
|
|
151
|
+
fs.mkdirSync(outDir, { recursive: true });
|
|
152
|
+
const modules = /* @__PURE__ */ new Map();
|
|
153
|
+
for (const signature of readWasmFunctionSignatures(fs.readFileSync(harfbuzzWasm))) {
|
|
154
|
+
const filePath = path.join(outDir, `harfbuzz-callback-${signature}.wasm`);
|
|
155
|
+
if (!fs.existsSync(filePath)) {
|
|
156
|
+
const tempPath = `${filePath}.${process.pid}.tmp`;
|
|
157
|
+
fs.writeFileSync(tempPath, createHarfbuzzCallbackWasm(signature));
|
|
158
|
+
fs.renameSync(tempPath, filePath);
|
|
159
|
+
}
|
|
160
|
+
modules.set(signature, filePath);
|
|
161
|
+
}
|
|
162
|
+
return modules;
|
|
163
|
+
}
|
|
164
|
+
const contains = (outer, inner) => outer.start <= inner.start && inner.end <= outer.end;
|
|
165
|
+
/**
|
|
166
|
+
* Find the HarfBuzz factory — the innermost function that both names
|
|
167
|
+
* `"hb.wasm"` and reads `instantiateWasm` — and the patch sites inside it.
|
|
168
|
+
* Scoping edits to that function keeps yoga's own Emscripten module, which
|
|
169
|
+
* also reads `instantiateWasm`, untouched.
|
|
170
|
+
*/
|
|
171
|
+
function findHarfbuzzPatchSites(program) {
|
|
172
|
+
const functionStack = [];
|
|
173
|
+
const wasmNameScopes = [];
|
|
174
|
+
const instantiateWasmMembers = [];
|
|
175
|
+
const environmentFlags = [];
|
|
176
|
+
const moduleCompilations = [];
|
|
177
|
+
const visit = (node) => {
|
|
178
|
+
const isFunction = isFunctionNode(node);
|
|
179
|
+
if (isFunction) functionStack.push(node);
|
|
180
|
+
if (staticStringValue(node) === HARFBUZZ_WASM) wasmNameScopes.push([...functionStack]);
|
|
181
|
+
else if (node.type === "MemberExpression" && getAstName(node.property) === "instantiateWasm") instantiateWasmMembers.push(node);
|
|
182
|
+
else if (node.type === "VariableDeclarator" && node.id.type === "Identifier" && node.id.name.startsWith("ENVIRONMENT_IS_") && node.init) environmentFlags.push({
|
|
183
|
+
declarator: node,
|
|
184
|
+
init: node.init
|
|
185
|
+
});
|
|
186
|
+
else if (node.type === "NewExpression" && node.callee.type === "MemberExpression" && getAstName(node.callee.object) === "WebAssembly" && getAstName(node.callee.property) === "Module" && functionStack.length > 0) moduleCompilations.push({
|
|
187
|
+
node,
|
|
188
|
+
enclosingFunction: functionStack[functionStack.length - 1]
|
|
189
|
+
});
|
|
190
|
+
forEachAstChild(node, visit);
|
|
191
|
+
if (isFunction) functionStack.pop();
|
|
192
|
+
};
|
|
193
|
+
visit(program);
|
|
194
|
+
const factories = /* @__PURE__ */ new Set();
|
|
195
|
+
for (const scopes of wasmNameScopes) {
|
|
196
|
+
const factory = [...scopes].reverse().find((scope) => instantiateWasmMembers.some((member) => contains(scope, member)));
|
|
197
|
+
if (factory) factories.add(factory);
|
|
198
|
+
}
|
|
199
|
+
if (factories.size !== 1) return `expected one function that names "${HARFBUZZ_WASM}" and reads instantiateWasm, found ${factories.size}`;
|
|
200
|
+
const [factory] = factories;
|
|
201
|
+
const flags = environmentFlags.filter(({ declarator }) => contains(factory, declarator));
|
|
202
|
+
if (!flags.some(({ declarator }) => getAstName(declarator.id) === "ENVIRONMENT_IS_NODE")) return "the factory does not declare ENVIRONMENT_IS_NODE";
|
|
203
|
+
return {
|
|
204
|
+
instantiateWasmReads: instantiateWasmMembers.filter((member) => contains(factory, member)),
|
|
205
|
+
environmentFlags: flags.map(({ init }) => init),
|
|
206
|
+
moduleCompilations: moduleCompilations.filter(({ node }) => contains(factory, node))
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
const INSTANTIATE_WASM = `function __vi_hb_instantiateWasm(imports, receiveInstance) {
|
|
210
|
+
var instance = new WebAssembly.Instance(__vi_hb_module(), imports);
|
|
211
|
+
receiveInstance(instance);
|
|
212
|
+
return instance.exports;
|
|
213
|
+
}`;
|
|
214
|
+
/**
|
|
215
|
+
* Patch one @vercel/og entry bundle. The result depends only on the bundle
|
|
216
|
+
* source, its id, the command and the callback module directory; callback
|
|
217
|
+
* modules are written once and reused by later calls.
|
|
218
|
+
*/
|
|
219
|
+
function patchHarfbuzzBundle(code, id, isBuild, callbackModuleDir, error) {
|
|
220
|
+
const ogEntry = toSlash(id.split("?", 1)[0]);
|
|
221
|
+
const isWorkerd = ogEntry.endsWith("/index.edge.js");
|
|
222
|
+
const fail = (reason) => error(`[vinext] Unsupported @vercel/og HarfBuzz bundle in ${ogEntry}: ${reason}. vinext must be updated to support this @vercel/og version.`);
|
|
223
|
+
const sites = findHarfbuzzPatchSites(parseAst(code, { lang: "js" }));
|
|
224
|
+
if (typeof sites === "string") return fail(sites);
|
|
225
|
+
const output = new MagicString(code);
|
|
226
|
+
for (const flag of sites.environmentFlags) output.overwrite(flag.start, flag.end, "false");
|
|
227
|
+
for (const member of sites.instantiateWasmReads) output.overwrite(member.start, member.end, "__vi_hb_instantiateWasm");
|
|
228
|
+
const harfbuzzWasm = resolveHarfbuzzWasmPath(ogEntry);
|
|
229
|
+
const preamble = [];
|
|
230
|
+
if (isWorkerd) {
|
|
231
|
+
if (sites.moduleCompilations.length === 0) return fail("no callback module compilation (new WebAssembly.Module) was found");
|
|
232
|
+
for (const { node, enclosingFunction } of sites.moduleCompilations) {
|
|
233
|
+
const signature = isFunctionNode(enclosingFunction) ? enclosingFunction.params[1] : void 0;
|
|
234
|
+
if (signature?.type !== "Identifier") return fail("the callback compiler does not take a (func, sig) signature");
|
|
235
|
+
output.prependLeft(node.start, `(__vi_hb_callbacks[${signature.name}.replace(/p/g, "i")] || `);
|
|
236
|
+
output.appendRight(node.end, ")");
|
|
237
|
+
}
|
|
238
|
+
const callbacks = [...writeHarfbuzzCallbackModules(harfbuzzWasm, callbackModuleDir)];
|
|
239
|
+
preamble.push(`import __vi_hb_wasm from ${JSON.stringify(`${harfbuzzWasm}?module`)};`, ...callbacks.map(([, file], index) => `import __vi_hb_callback_${index} from ${JSON.stringify(`${file}?module`)};`), `var __vi_hb_callbacks = { ${callbacks.map(([signature], index) => `${signature}: __vi_hb_callback_${index}`).join(", ")} };`, "function __vi_hb_module() { return __vi_hb_wasm; }");
|
|
240
|
+
} else {
|
|
241
|
+
const location = isBuild ? `new URL("./${HARFBUZZ_WASM}", import.meta.url)` : JSON.stringify(harfbuzzWasm);
|
|
242
|
+
preamble.push(`import { readFileSync as __vi_hb_readFileSync } from "node:fs";`, `function __vi_hb_module() { return new WebAssembly.Module(__vi_hb_readFileSync(${location})); }`);
|
|
243
|
+
}
|
|
244
|
+
output.prepend(`${preamble.join("\n")}\n${INSTANTIATE_WASM}\n`);
|
|
245
|
+
return magicStringTransformResult(output);
|
|
246
|
+
}
|
|
247
|
+
function createOgHarfbuzzPlugin() {
|
|
248
|
+
let callbackModuleDir;
|
|
249
|
+
let isBuild = false;
|
|
250
|
+
const cached = createTransformCache();
|
|
251
|
+
return {
|
|
252
|
+
name: "vinext:og-harfbuzz",
|
|
253
|
+
enforce: "pre",
|
|
254
|
+
configResolved(config) {
|
|
255
|
+
callbackModuleDir = path.join(toSlash(config.root), ".vinext", "og-assets");
|
|
256
|
+
isBuild = config.command === "build";
|
|
257
|
+
},
|
|
258
|
+
transform: {
|
|
259
|
+
filter: {
|
|
260
|
+
id: /[\\/]@vercel[\\/]og[\\/]dist[\\/]index\.(?:edge|node)\.js(?:\?.*)?$/,
|
|
261
|
+
code: /["'`]hb\.wasm["'`]/
|
|
262
|
+
},
|
|
263
|
+
handler(code, id) {
|
|
264
|
+
const patch = () => patchHarfbuzzBundle(code, id, isBuild, callbackModuleDir, (message) => this.error(message));
|
|
265
|
+
return omitUnusedBuildSourcemap(this.environment, isBuild ? cached(id, code, callbackModuleDir, patch) : patch());
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
};
|
|
269
|
+
}
|
|
270
|
+
//#endregion
|
|
271
|
+
export { createHarfbuzzCallbackWasm, createOgHarfbuzzPlugin, readWasmFunctionSignatures, resolveHarfbuzzWasmPath };
|
|
@@ -9,11 +9,12 @@ type BarrelExportEntry = {
|
|
|
9
9
|
type BarrelExportMap = Map<string, BarrelExportEntry>;
|
|
10
10
|
/**
|
|
11
11
|
* Packages whose barrel imports are automatically optimized.
|
|
12
|
-
* Matches Next.js's built-in optimizePackageImports defaults plus
|
|
12
|
+
* Matches Next.js's built-in optimizePackageImports defaults plus vinext-specific
|
|
13
|
+
* compatibility entries for radix-ui and @chakra-ui/react.
|
|
13
14
|
* @see https://github.com/vercel/next.js/blob/9c31bbdaa/packages/next/src/server/config.ts#L1301
|
|
14
15
|
*/
|
|
15
|
-
declare const DEFAULT_OPTIMIZE_PACKAGES: string[];
|
|
16
|
-
declare function createOptimizedImportSourceMatcher(packages: Iterable<string>): (code: string) => boolean;
|
|
16
|
+
export declare const DEFAULT_OPTIMIZE_PACKAGES: string[];
|
|
17
|
+
export declare function createOptimizedImportSourceMatcher(packages: Iterable<string>): (code: string) => boolean;
|
|
17
18
|
/**
|
|
18
19
|
* Build a map of exported names → source sub-module for a barrel package.
|
|
19
20
|
*
|
|
@@ -29,13 +30,12 @@ declare function createOptimizedImportSourceMatcher(packages: Iterable<string>):
|
|
|
29
30
|
* caller owns entry resolution + its caching), or null when it could not be
|
|
30
31
|
* resolved.
|
|
31
32
|
*/
|
|
32
|
-
declare function buildBarrelExportMap(entryPath: string | null, readFile: (filepath: string) => Promise<string | null>, cache?: Map<string, BarrelExportMap>): Promise<BarrelExportMap | null>;
|
|
33
|
+
export declare function buildBarrelExportMap(entryPath: string | null, readFile: (filepath: string) => Promise<string | null>, cache?: Map<string, BarrelExportMap>): Promise<BarrelExportMap | null>;
|
|
33
34
|
/**
|
|
34
35
|
* Creates the vinext:optimize-imports Vite plugin.
|
|
35
36
|
*
|
|
36
37
|
* @param nextConfig - Resolved Next.js config (may be undefined before config hook runs).
|
|
37
38
|
* @param getRoot - Returns the current project root (set by the vinext:config hook).
|
|
38
39
|
*/
|
|
39
|
-
declare function createOptimizeImportsPlugin(getNextConfig: () => ResolvedNextConfig | undefined, getRoot: () => string): Plugin;
|
|
40
|
-
//#endregion
|
|
41
|
-
export { DEFAULT_OPTIMIZE_PACKAGES, buildBarrelExportMap, createOptimizeImportsPlugin, createOptimizedImportSourceMatcher };
|
|
40
|
+
export declare function createOptimizeImportsPlugin(getNextConfig: () => ResolvedNextConfig | undefined, getRoot: () => string): Plugin;
|
|
41
|
+
//#endregion
|