@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,285 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { promisify } from "node:util";
|
|
4
|
+
//#region src/plugins/og-asset-ownership.ts
|
|
5
|
+
const realpathNative = promisify(fs.realpath.native);
|
|
6
|
+
function isPathInside(root, target) {
|
|
7
|
+
const relative = path.relative(root, target);
|
|
8
|
+
return relative === "" || !path.isAbsolute(relative) && !relative.startsWith(`..${path.sep}`) && relative !== "..";
|
|
9
|
+
}
|
|
10
|
+
async function findPackageRoot(moduleDir, expectedPackageName) {
|
|
11
|
+
let currentDir = moduleDir;
|
|
12
|
+
while (true) {
|
|
13
|
+
try {
|
|
14
|
+
const packageJsonPath = path.join(currentDir, "package.json");
|
|
15
|
+
if ((await fs.promises.stat(packageJsonPath)).isFile()) {
|
|
16
|
+
const manifest = JSON.parse(await fs.promises.readFile(packageJsonPath, "utf8"));
|
|
17
|
+
return expectedPackageName === void 0 || manifest.name === expectedPackageName ? currentDir : null;
|
|
18
|
+
}
|
|
19
|
+
} catch {}
|
|
20
|
+
const parentDir = path.dirname(currentDir);
|
|
21
|
+
if (parentDir === currentDir) return null;
|
|
22
|
+
currentDir = parentDir;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
function getPackageNameFromSpecifier(specifier) {
|
|
26
|
+
if (specifier.startsWith(".") || specifier.startsWith("/") || specifier.startsWith("\0") || specifier.startsWith("#")) return null;
|
|
27
|
+
const segments = specifier.split("/");
|
|
28
|
+
if (specifier.startsWith("@")) return segments.length >= 2 ? `${segments[0]}/${segments[1]}` : null;
|
|
29
|
+
return segments[0] || null;
|
|
30
|
+
}
|
|
31
|
+
function getAliasedPackageName(value) {
|
|
32
|
+
if (typeof value !== "string") return null;
|
|
33
|
+
return value.match(/^(?:npm:|workspace:)(@[^/]+\/[^@]+|[^@*~^]+)(?:@|$)/)?.[1] ?? null;
|
|
34
|
+
}
|
|
35
|
+
function aliasMatches(find, source) {
|
|
36
|
+
if (typeof find === "string") return source === find || source.startsWith(`${find}/`);
|
|
37
|
+
find.lastIndex = 0;
|
|
38
|
+
return find.test(source);
|
|
39
|
+
}
|
|
40
|
+
function applyAlias(find, replacement, source) {
|
|
41
|
+
if (typeof find === "string") return replacement + source.slice(find.length);
|
|
42
|
+
find.lastIndex = 0;
|
|
43
|
+
return source.replace(find, replacement);
|
|
44
|
+
}
|
|
45
|
+
function getNodeModulesPackageRoot(logicalProjectRoot, logicalModulePath) {
|
|
46
|
+
const isProjectPath = isPathInside(logicalProjectRoot, logicalModulePath);
|
|
47
|
+
const parsedPath = path.parse(logicalModulePath);
|
|
48
|
+
const baseRoot = isProjectPath ? logicalProjectRoot : parsedPath.root;
|
|
49
|
+
const segments = (isProjectPath ? path.relative(logicalProjectRoot, logicalModulePath) : logicalModulePath.slice(parsedPath.root.length)).split(path.sep);
|
|
50
|
+
const nodeModulesIndex = segments.lastIndexOf("node_modules");
|
|
51
|
+
if (nodeModulesIndex === -1) return null;
|
|
52
|
+
const packageSegment = segments[nodeModulesIndex + 1];
|
|
53
|
+
if (!packageSegment) return null;
|
|
54
|
+
const packageSegmentCount = packageSegment.startsWith("@") ? 2 : 1;
|
|
55
|
+
if (segments.length <= nodeModulesIndex + packageSegmentCount) return null;
|
|
56
|
+
if (packageSegmentCount === 2 && !segments[nodeModulesIndex + 2]) return null;
|
|
57
|
+
return path.join(baseRoot, ...segments.slice(0, nodeModulesIndex + 1 + packageSegmentCount));
|
|
58
|
+
}
|
|
59
|
+
async function readPackageName(packageRoot) {
|
|
60
|
+
try {
|
|
61
|
+
const manifest = JSON.parse(await fs.promises.readFile(path.join(packageRoot, "package.json"), "utf8"));
|
|
62
|
+
return typeof manifest.name === "string" ? manifest.name : null;
|
|
63
|
+
} catch {
|
|
64
|
+
return null;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
async function packageOwnsAliasFile(packageRoot, packageName, aliasFile) {
|
|
68
|
+
try {
|
|
69
|
+
const manifest = JSON.parse(await fs.promises.readFile(path.join(packageRoot, "package.json"), "utf8"));
|
|
70
|
+
if (packageName !== null && manifest.name === packageName) return true;
|
|
71
|
+
return [
|
|
72
|
+
"main",
|
|
73
|
+
"module",
|
|
74
|
+
"source",
|
|
75
|
+
"browser"
|
|
76
|
+
].some((field) => typeof manifest[field] === "string" && path.resolve(packageRoot, manifest[field]) === aliasFile);
|
|
77
|
+
} catch {
|
|
78
|
+
return false;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
async function packageOwnsAliasDirectory(packageRoot, packageName, aliasDirectory) {
|
|
82
|
+
if (aliasDirectory === packageRoot) return true;
|
|
83
|
+
try {
|
|
84
|
+
const manifest = JSON.parse(await fs.promises.readFile(path.join(packageRoot, "package.json"), "utf8"));
|
|
85
|
+
if (packageName !== null && manifest.name === packageName) return true;
|
|
86
|
+
return [
|
|
87
|
+
"main",
|
|
88
|
+
"module",
|
|
89
|
+
"source",
|
|
90
|
+
"browser"
|
|
91
|
+
].some((field) => typeof manifest[field] === "string" && isPathInside(aliasDirectory, path.resolve(packageRoot, manifest[field])));
|
|
92
|
+
} catch {
|
|
93
|
+
return false;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
var OgAssetOwnership = class {
|
|
97
|
+
projectRoot = process.cwd();
|
|
98
|
+
linkedPackageRoots = /* @__PURE__ */ new Set();
|
|
99
|
+
dependencyPackageNames = /* @__PURE__ */ new Map();
|
|
100
|
+
stringAliasesByFirstCharacter = /* @__PURE__ */ new Map();
|
|
101
|
+
regularExpressionAliases = [];
|
|
102
|
+
configuredAliases = [];
|
|
103
|
+
configure(projectRoot, aliases) {
|
|
104
|
+
this.projectRoot = path.resolve(projectRoot);
|
|
105
|
+
this.dependencyPackageNames.clear();
|
|
106
|
+
try {
|
|
107
|
+
const manifest = JSON.parse(fs.readFileSync(path.join(this.projectRoot, "package.json"), "utf8"));
|
|
108
|
+
for (const field of [
|
|
109
|
+
"dependencies",
|
|
110
|
+
"devDependencies",
|
|
111
|
+
"optionalDependencies",
|
|
112
|
+
"peerDependencies"
|
|
113
|
+
]) {
|
|
114
|
+
const dependencies = manifest[field];
|
|
115
|
+
if (dependencies === null || typeof dependencies !== "object") continue;
|
|
116
|
+
for (const [packageName, value] of Object.entries(dependencies)) this.dependencyPackageNames.set(packageName, getAliasedPackageName(value) ?? packageName);
|
|
117
|
+
}
|
|
118
|
+
} catch {}
|
|
119
|
+
this.stringAliasesByFirstCharacter.clear();
|
|
120
|
+
this.regularExpressionAliases = [];
|
|
121
|
+
this.configuredAliases = [];
|
|
122
|
+
for (const [index, alias] of aliases.entries()) {
|
|
123
|
+
const indexedAlias = {
|
|
124
|
+
...alias,
|
|
125
|
+
index
|
|
126
|
+
};
|
|
127
|
+
this.configuredAliases.push(indexedAlias);
|
|
128
|
+
if (typeof alias.find === "string") {
|
|
129
|
+
const firstCharacter = alias.find[0];
|
|
130
|
+
if (firstCharacter === void 0) continue;
|
|
131
|
+
const matchingAliases = this.stringAliasesByFirstCharacter.get(firstCharacter) ?? [];
|
|
132
|
+
matchingAliases.push(indexedAlias);
|
|
133
|
+
this.stringAliasesByFirstCharacter.set(firstCharacter, matchingAliases);
|
|
134
|
+
} else this.regularExpressionAliases.push(indexedAlias);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
reset() {
|
|
138
|
+
this.linkedPackageRoots.clear();
|
|
139
|
+
}
|
|
140
|
+
shouldTrackImport(source) {
|
|
141
|
+
return this.findAlias(source) !== void 0 || this.getExpectedPackageName(source) !== void 0;
|
|
142
|
+
}
|
|
143
|
+
async recordResolvedImport(source, resolvedId) {
|
|
144
|
+
const configuredAlias = this.findAlias(source);
|
|
145
|
+
const sourcePackageName = getPackageNameFromSpecifier(source);
|
|
146
|
+
const expectedPackageName = this.getExpectedPackageName(source);
|
|
147
|
+
if (configuredAlias === void 0 && expectedPackageName === void 0) return;
|
|
148
|
+
let realResolvedPath;
|
|
149
|
+
try {
|
|
150
|
+
realResolvedPath = await realpathNative(path.resolve(resolvedId.split("?")[0]));
|
|
151
|
+
} catch {
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
154
|
+
let packageRoot;
|
|
155
|
+
if (configuredAlias !== void 0) packageRoot = await this.resolveAliasPackageRoot(configuredAlias, source, sourcePackageName, realResolvedPath);
|
|
156
|
+
else packageRoot = await findPackageRoot(path.dirname(realResolvedPath), expectedPackageName);
|
|
157
|
+
if (packageRoot !== null) this.linkedPackageRoots.add(packageRoot);
|
|
158
|
+
}
|
|
159
|
+
async resolveModuleBoundary(moduleId) {
|
|
160
|
+
const modulePath = path.resolve(moduleId.split("?")[0]);
|
|
161
|
+
let realProjectRoot;
|
|
162
|
+
let realModulePath;
|
|
163
|
+
try {
|
|
164
|
+
[realProjectRoot, realModulePath] = await Promise.all([realpathNative(this.projectRoot), realpathNative(modulePath)]);
|
|
165
|
+
} catch {
|
|
166
|
+
try {
|
|
167
|
+
realProjectRoot = await realpathNative(this.projectRoot);
|
|
168
|
+
const realModuleDir = await realpathNative(path.dirname(modulePath));
|
|
169
|
+
realModulePath = path.join(realModuleDir, path.basename(modulePath));
|
|
170
|
+
} catch {
|
|
171
|
+
return null;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
const moduleDir = path.dirname(realModulePath);
|
|
175
|
+
const logicalPackageRoot = getNodeModulesPackageRoot(this.projectRoot, modulePath);
|
|
176
|
+
if (logicalPackageRoot !== null) {
|
|
177
|
+
let realPackageRoot;
|
|
178
|
+
try {
|
|
179
|
+
realPackageRoot = await realpathNative(logicalPackageRoot);
|
|
180
|
+
} catch {
|
|
181
|
+
return null;
|
|
182
|
+
}
|
|
183
|
+
if (isPathInside(realPackageRoot, realModulePath)) return {
|
|
184
|
+
assetRoot: realPackageRoot,
|
|
185
|
+
moduleDir
|
|
186
|
+
};
|
|
187
|
+
const declaredPackageName = await readPackageName(logicalPackageRoot);
|
|
188
|
+
if (declaredPackageName === null) return null;
|
|
189
|
+
const logicalModuleRelativePath = path.relative(logicalPackageRoot, modulePath);
|
|
190
|
+
if (path.isAbsolute(logicalModuleRelativePath) || logicalModuleRelativePath === ".." || logicalModuleRelativePath.startsWith(`..${path.sep}`)) return null;
|
|
191
|
+
const canonicalPackageRoot = await findPackageRoot(moduleDir, declaredPackageName);
|
|
192
|
+
if (canonicalPackageRoot === null) return null;
|
|
193
|
+
if (path.relative(canonicalPackageRoot, realModulePath) !== logicalModuleRelativePath) return null;
|
|
194
|
+
return {
|
|
195
|
+
assetRoot: canonicalPackageRoot,
|
|
196
|
+
moduleDir
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
if (isPathInside(realProjectRoot, realModulePath)) return {
|
|
200
|
+
assetRoot: realProjectRoot,
|
|
201
|
+
moduleDir
|
|
202
|
+
};
|
|
203
|
+
const linkedPackageRoot = [...this.linkedPackageRoots].filter((root) => isPathInside(root, realModulePath)).sort((a, b) => b.length - a.length)[0];
|
|
204
|
+
if (linkedPackageRoot !== void 0) return {
|
|
205
|
+
assetRoot: linkedPackageRoot,
|
|
206
|
+
moduleDir
|
|
207
|
+
};
|
|
208
|
+
const configuredAliasRoot = await this.resolveConfiguredAliasRoot(realModulePath);
|
|
209
|
+
return configuredAliasRoot === null ? null : {
|
|
210
|
+
assetRoot: configuredAliasRoot,
|
|
211
|
+
moduleDir
|
|
212
|
+
};
|
|
213
|
+
}
|
|
214
|
+
async resolveContainedAsset(assetRoot, assetPath) {
|
|
215
|
+
try {
|
|
216
|
+
const realPath = await realpathNative(assetPath);
|
|
217
|
+
return isPathInside(assetRoot, realPath) ? realPath : null;
|
|
218
|
+
} catch {
|
|
219
|
+
return null;
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
findAlias(source) {
|
|
223
|
+
return [...this.stringAliasesByFirstCharacter.get(source[0] ?? "") ?? [], ...this.regularExpressionAliases].filter((alias) => aliasMatches(alias.find, source)).sort((a, b) => a.index - b.index)[0];
|
|
224
|
+
}
|
|
225
|
+
getExpectedPackageName(source) {
|
|
226
|
+
const packageName = getPackageNameFromSpecifier(source);
|
|
227
|
+
return packageName === null ? void 0 : this.dependencyPackageNames.get(packageName);
|
|
228
|
+
}
|
|
229
|
+
async resolveAliasPackageRoot(alias, source, sourcePackageName, realResolvedPath) {
|
|
230
|
+
const aliasTarget = applyAlias(alias.find, alias.replacement, source);
|
|
231
|
+
if (!path.isAbsolute(aliasTarget)) return null;
|
|
232
|
+
try {
|
|
233
|
+
const realAliasTarget = await realpathNative(aliasTarget);
|
|
234
|
+
const aliasTargetStat = await fs.promises.stat(realAliasTarget);
|
|
235
|
+
const hasCapture = alias.find instanceof RegExp && alias.replacement.includes("$");
|
|
236
|
+
let configuredDirectory = null;
|
|
237
|
+
if (!hasCapture) {
|
|
238
|
+
const realReplacement = await realpathNative(alias.replacement);
|
|
239
|
+
if ((await fs.promises.stat(realReplacement)).isDirectory()) configuredDirectory = realReplacement;
|
|
240
|
+
}
|
|
241
|
+
if (configuredDirectory !== null || aliasTargetStat.isDirectory()) {
|
|
242
|
+
const aliasBoundary = configuredDirectory ?? realAliasTarget;
|
|
243
|
+
const packageRoot = await findPackageRoot(path.dirname(realResolvedPath));
|
|
244
|
+
if (packageRoot === null || !isPathInside(aliasBoundary, packageRoot) || !isPathInside(packageRoot, realResolvedPath)) return null;
|
|
245
|
+
return packageRoot;
|
|
246
|
+
}
|
|
247
|
+
const packageRoot = await findPackageRoot(path.dirname(realResolvedPath));
|
|
248
|
+
if (packageRoot === null || !await packageOwnsAliasFile(packageRoot, sourcePackageName, realAliasTarget) || !isPathInside(packageRoot, realResolvedPath)) return null;
|
|
249
|
+
return packageRoot;
|
|
250
|
+
} catch {
|
|
251
|
+
return null;
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
async resolveConfiguredAliasRoot(realModulePath) {
|
|
255
|
+
const packageRoot = await findPackageRoot(path.dirname(realModulePath));
|
|
256
|
+
if (packageRoot === null || !isPathInside(packageRoot, realModulePath)) return null;
|
|
257
|
+
for (const alias of this.configuredAliases) {
|
|
258
|
+
if (!path.isAbsolute(alias.replacement)) continue;
|
|
259
|
+
const packageName = typeof alias.find === "string" ? getPackageNameFromSpecifier(alias.find) : null;
|
|
260
|
+
if (alias.replacement.indexOf("$") !== -1) {
|
|
261
|
+
const packageManifestName = await readPackageName(packageRoot);
|
|
262
|
+
if (packageManifestName === null || !aliasMatches(alias.find, packageManifestName)) continue;
|
|
263
|
+
const aliasTarget = applyAlias(alias.find, alias.replacement, packageManifestName);
|
|
264
|
+
if (!path.isAbsolute(aliasTarget)) continue;
|
|
265
|
+
try {
|
|
266
|
+
const realAliasTarget = await realpathNative(aliasTarget);
|
|
267
|
+
const aliasTargetStat = await fs.promises.stat(realAliasTarget);
|
|
268
|
+
if (aliasTargetStat.isDirectory() && isPathInside(realAliasTarget, realModulePath) || aliasTargetStat.isFile() && realAliasTarget === realModulePath) return packageRoot;
|
|
269
|
+
} catch {}
|
|
270
|
+
continue;
|
|
271
|
+
}
|
|
272
|
+
try {
|
|
273
|
+
const realReplacement = await realpathNative(alias.replacement);
|
|
274
|
+
if ((await fs.promises.stat(realReplacement)).isDirectory()) {
|
|
275
|
+
if (isPathInside(packageRoot, realReplacement) && isPathInside(realReplacement, realModulePath) && await packageOwnsAliasDirectory(packageRoot, packageName, realReplacement)) return packageRoot;
|
|
276
|
+
continue;
|
|
277
|
+
}
|
|
278
|
+
if (realReplacement === realModulePath && await packageOwnsAliasFile(packageRoot, packageName, realReplacement)) return packageRoot;
|
|
279
|
+
} catch {}
|
|
280
|
+
}
|
|
281
|
+
return null;
|
|
282
|
+
}
|
|
283
|
+
};
|
|
284
|
+
//#endregion
|
|
285
|
+
export { OgAssetOwnership };
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { Plugin } from "vite";
|
|
2
|
+
|
|
3
|
+
//#region src/plugins/og-assets.d.ts
|
|
4
|
+
/**
|
|
5
|
+
* Create the `vinext:og-inline-fetch-assets` Vite plugin.
|
|
6
|
+
*
|
|
7
|
+
* Inlines binary assets that are runtime-fetched via
|
|
8
|
+
* `fetch(new URL("./asset", import.meta.url))` or read via
|
|
9
|
+
* `readFileSync(fileURLToPath(new URL("./asset", import.meta.url)))`.
|
|
10
|
+
* Both patterns are rewritten to inline base64 literals so the code works
|
|
11
|
+
* correctly inside Cloudflare Workers where `import.meta.url` is not a
|
|
12
|
+
* valid file URL.
|
|
13
|
+
*/
|
|
14
|
+
declare function createOgInlineFetchAssetsPlugin(): Plugin;
|
|
15
|
+
/**
|
|
16
|
+
* Copy a single root copy of each requested WASM asset from `sourceDir` into
|
|
17
|
+
* `outDir`, skipping any asset whose source is missing or whose destination
|
|
18
|
+
* already exists.
|
|
19
|
+
*
|
|
20
|
+
* Extracted as a pure, dependency-injected helper so it can be unit-tested
|
|
21
|
+
* against a temp source directory without depending on the real @vercel/og
|
|
22
|
+
* install (whose `yoga.wasm` is only materialized as a side effect of the
|
|
23
|
+
* `vinext:og-font-patch` transform during a build).
|
|
24
|
+
*/
|
|
25
|
+
declare function copyMissingOgWasm(opts: {
|
|
26
|
+
outDir: string;
|
|
27
|
+
sourceDir: string;
|
|
28
|
+
assets: readonly string[];
|
|
29
|
+
}): void;
|
|
30
|
+
/**
|
|
31
|
+
* Create the `vinext:og-assets` Vite plugin.
|
|
32
|
+
*
|
|
33
|
+
* Ensures each @vercel/og WASM module (resvg.wasm, yoga.wasm) ships exactly once
|
|
34
|
+
* in the RSC output, with every loader strategy resolving to that single file:
|
|
35
|
+
*
|
|
36
|
+
* 1. `generateBundle` (post): if the bundler already emitted the WASM as a
|
|
37
|
+
* hashed asset (from the `import("./x.wasm?module")` path), rewrite the
|
|
38
|
+
* Node.js fallback reference `new URL("./x.wasm", import.meta.url)` in each
|
|
39
|
+
* chunk to point at that emitted asset (a sibling under `_next/static/`).
|
|
40
|
+
* This deduplicates without copying a second root file.
|
|
41
|
+
* 2. `writeBundle` (post): for any referenced WASM that was NOT emitted as an
|
|
42
|
+
* asset (e.g. a build that inlined or skipped it), copy a single root copy
|
|
43
|
+
* from @vercel/og's dist so the Node.js disk-read fallback still works.
|
|
44
|
+
*
|
|
45
|
+
* The decision keys off "did the bundler emit this asset?", never the deploy
|
|
46
|
+
* target — so it helps Node/self-hosted builds as well as Cloudflare Workers.
|
|
47
|
+
*/
|
|
48
|
+
declare function createOgAssetsPlugin(): Plugin;
|
|
49
|
+
//#endregion
|
|
50
|
+
export { copyMissingOgWasm, createOgAssetsPlugin, createOgInlineFetchAssetsPlugin };
|
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
import { OgAssetOwnership } from "./og-asset-ownership.js";
|
|
2
|
+
import { createRequire } from "node:module";
|
|
3
|
+
import fs from "node:fs";
|
|
4
|
+
import path from "node:path";
|
|
5
|
+
import MagicString from "magic-string";
|
|
6
|
+
//#region src/plugins/og-assets.ts
|
|
7
|
+
/**
|
|
8
|
+
* Create the `vinext:og-inline-fetch-assets` Vite plugin.
|
|
9
|
+
*
|
|
10
|
+
* Inlines binary assets that are runtime-fetched via
|
|
11
|
+
* `fetch(new URL("./asset", import.meta.url))` or read via
|
|
12
|
+
* `readFileSync(fileURLToPath(new URL("./asset", import.meta.url)))`.
|
|
13
|
+
* Both patterns are rewritten to inline base64 literals so the code works
|
|
14
|
+
* correctly inside Cloudflare Workers where `import.meta.url` is not a
|
|
15
|
+
* valid file URL.
|
|
16
|
+
*/
|
|
17
|
+
function createOgInlineFetchAssetsPlugin() {
|
|
18
|
+
const cache = /* @__PURE__ */ new Map();
|
|
19
|
+
const ownership = new OgAssetOwnership();
|
|
20
|
+
let isBuild = false;
|
|
21
|
+
return {
|
|
22
|
+
name: "vinext:og-inline-fetch-assets",
|
|
23
|
+
enforce: "pre",
|
|
24
|
+
configResolved(config) {
|
|
25
|
+
isBuild = config.command === "build";
|
|
26
|
+
ownership.configure(config.root, config.resolve.alias);
|
|
27
|
+
},
|
|
28
|
+
buildStart() {
|
|
29
|
+
if (isBuild) cache.clear();
|
|
30
|
+
ownership.reset();
|
|
31
|
+
},
|
|
32
|
+
async resolveId(source, importer, options) {
|
|
33
|
+
if (!ownership.shouldTrackImport(source)) return null;
|
|
34
|
+
const resolved = await this.resolve(source, importer, {
|
|
35
|
+
...options,
|
|
36
|
+
skipSelf: true
|
|
37
|
+
});
|
|
38
|
+
if (resolved === null || resolved.external) return null;
|
|
39
|
+
await ownership.recordResolvedImport(source, resolved.id);
|
|
40
|
+
return null;
|
|
41
|
+
},
|
|
42
|
+
transform: {
|
|
43
|
+
filter: { code: "import.meta.url" },
|
|
44
|
+
async handler(code, id) {
|
|
45
|
+
const useCache = isBuild;
|
|
46
|
+
const boundary = await ownership.resolveModuleBoundary(id);
|
|
47
|
+
if (boundary === null) return null;
|
|
48
|
+
const { assetRoot, moduleDir } = boundary;
|
|
49
|
+
const s = new MagicString(code);
|
|
50
|
+
let didReplace = false;
|
|
51
|
+
const readAsBase64 = async (absPath) => {
|
|
52
|
+
const realPath = await ownership.resolveContainedAsset(assetRoot, absPath);
|
|
53
|
+
if (realPath === null) return null;
|
|
54
|
+
const cached = useCache ? cache.get(realPath) : void 0;
|
|
55
|
+
if (cached !== void 0) return cached;
|
|
56
|
+
try {
|
|
57
|
+
const b64 = (await fs.promises.readFile(realPath)).toString("base64");
|
|
58
|
+
if (useCache) cache.set(realPath, b64);
|
|
59
|
+
return b64;
|
|
60
|
+
} catch {
|
|
61
|
+
return null;
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
if (code.includes("fetch(")) for (const match of code.matchAll(/fetch\(\s*new URL\(\s*(["'])(\.[^"']+)\1\s*,\s*import\.meta\.url\s*\)\s*\)(?:\.then\(\s*(?:function\s*\([^)]*\)|\([^)]*\)\s*=>)\s*\{?\s*return\s+[^.]+\.arrayBuffer\(\)\s*;?\s*\}?\s*,?\s*\)|\.then\(\s*\([^)]*\)\s*=>\s*[^.]+\.arrayBuffer\(\)\s*,?\s*\))/g)) {
|
|
65
|
+
const fullMatch = match[0];
|
|
66
|
+
const relPath = match[2];
|
|
67
|
+
const fileBase64 = await readAsBase64(path.resolve(moduleDir, relPath));
|
|
68
|
+
if (fileBase64 === null) continue;
|
|
69
|
+
const inlined = [
|
|
70
|
+
`(function(){`,
|
|
71
|
+
`var b=${JSON.stringify(fileBase64)};`,
|
|
72
|
+
`var r=atob(b);`,
|
|
73
|
+
`var a=new Uint8Array(r.length);`,
|
|
74
|
+
`for(var i=0;i<r.length;i++)a[i]=r.charCodeAt(i);`,
|
|
75
|
+
`return Promise.resolve(a.buffer);`,
|
|
76
|
+
`})()`
|
|
77
|
+
].join("");
|
|
78
|
+
s.overwrite(match.index, match.index + fullMatch.length, inlined);
|
|
79
|
+
didReplace = true;
|
|
80
|
+
}
|
|
81
|
+
if (code.includes("readFileSync(")) for (const match of code.matchAll(/[a-zA-Z_$][a-zA-Z0-9_$]*\.readFileSync\(\s*(?:[a-zA-Z_$][a-zA-Z0-9_$]*\.)?fileURLToPath\(\s*new URL\(\s*(["'])(\.[^"']+)\1\s*,\s*import\.meta\.url\s*\)\s*\)\s*\)/g)) {
|
|
82
|
+
const fullMatch = match[0];
|
|
83
|
+
const relPath = match[2];
|
|
84
|
+
const fileBase64 = await readAsBase64(path.resolve(moduleDir, relPath));
|
|
85
|
+
if (fileBase64 === null) continue;
|
|
86
|
+
const inlined = `Buffer.from(${JSON.stringify(fileBase64)},"base64")`;
|
|
87
|
+
s.overwrite(match.index, match.index + fullMatch.length, inlined);
|
|
88
|
+
didReplace = true;
|
|
89
|
+
}
|
|
90
|
+
if (!didReplace) return null;
|
|
91
|
+
return {
|
|
92
|
+
code: s.toString(),
|
|
93
|
+
map: s.generateMap({ hires: "boundary" })
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
const OG_WASM_ASSETS = ["resvg.wasm", "yoga.wasm"];
|
|
100
|
+
/**
|
|
101
|
+
* Find an emitted WASM asset in the output bundle whose name corresponds to the
|
|
102
|
+
* given base file (e.g. base `resvg.wasm` matches the emitted `resvg-HASH.wasm`).
|
|
103
|
+
*
|
|
104
|
+
* The bundler emits the `import("./resvg.wasm?module")` dynamic import as a
|
|
105
|
+
* hashed asset. When it exists, both loader strategies can point at the same
|
|
106
|
+
* physical file — no second copy needed.
|
|
107
|
+
*
|
|
108
|
+
* @returns the emitted asset's `fileName` (relative to outDir), or null.
|
|
109
|
+
*/
|
|
110
|
+
function findEmittedWasmAsset(bundle, baseName) {
|
|
111
|
+
const stem = baseName.replace(/\.wasm$/, "");
|
|
112
|
+
const re = new RegExp(`^${stem}(?:-[\\w-]+)?\\.wasm$`);
|
|
113
|
+
for (const output of Object.values(bundle)) {
|
|
114
|
+
if (output.type !== "asset") continue;
|
|
115
|
+
if (re.test(path.posix.basename(output.fileName))) return output.fileName;
|
|
116
|
+
}
|
|
117
|
+
return null;
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Build the regex that matches the Node.js fallback reference
|
|
121
|
+
* `new URL("./<base>", import.meta.url)` for a given WASM base name.
|
|
122
|
+
*
|
|
123
|
+
* Handles all three quote styles ("'`) because the minifier may rewrite the
|
|
124
|
+
* string literal (commonly to a template literal) by the time the chunk code
|
|
125
|
+
* is available in generateBundle.
|
|
126
|
+
*/
|
|
127
|
+
function fallbackUrlRegex(baseName) {
|
|
128
|
+
const escaped = baseName.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
129
|
+
return new RegExp(String.raw`new URL\(\s*(["'\`])\.\/${escaped}\1\s*,\s*import\.meta\.url\s*\)`, "g");
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Copy a single root copy of each requested WASM asset from `sourceDir` into
|
|
133
|
+
* `outDir`, skipping any asset whose source is missing or whose destination
|
|
134
|
+
* already exists.
|
|
135
|
+
*
|
|
136
|
+
* Extracted as a pure, dependency-injected helper so it can be unit-tested
|
|
137
|
+
* against a temp source directory without depending on the real @vercel/og
|
|
138
|
+
* install (whose `yoga.wasm` is only materialized as a side effect of the
|
|
139
|
+
* `vinext:og-font-patch` transform during a build).
|
|
140
|
+
*/
|
|
141
|
+
function copyMissingOgWasm(opts) {
|
|
142
|
+
for (const asset of opts.assets) {
|
|
143
|
+
const src = path.join(opts.sourceDir, asset);
|
|
144
|
+
const dest = path.join(opts.outDir, asset);
|
|
145
|
+
if (fs.existsSync(src) && !fs.existsSync(dest)) fs.copyFileSync(src, dest);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Create the `vinext:og-assets` Vite plugin.
|
|
150
|
+
*
|
|
151
|
+
* Ensures each @vercel/og WASM module (resvg.wasm, yoga.wasm) ships exactly once
|
|
152
|
+
* in the RSC output, with every loader strategy resolving to that single file:
|
|
153
|
+
*
|
|
154
|
+
* 1. `generateBundle` (post): if the bundler already emitted the WASM as a
|
|
155
|
+
* hashed asset (from the `import("./x.wasm?module")` path), rewrite the
|
|
156
|
+
* Node.js fallback reference `new URL("./x.wasm", import.meta.url)` in each
|
|
157
|
+
* chunk to point at that emitted asset (a sibling under `_next/static/`).
|
|
158
|
+
* This deduplicates without copying a second root file.
|
|
159
|
+
* 2. `writeBundle` (post): for any referenced WASM that was NOT emitted as an
|
|
160
|
+
* asset (e.g. a build that inlined or skipped it), copy a single root copy
|
|
161
|
+
* from @vercel/og's dist so the Node.js disk-read fallback still works.
|
|
162
|
+
*
|
|
163
|
+
* The decision keys off "did the bundler emit this asset?", never the deploy
|
|
164
|
+
* target — so it helps Node/self-hosted builds as well as Cloudflare Workers.
|
|
165
|
+
*/
|
|
166
|
+
function createOgAssetsPlugin() {
|
|
167
|
+
let dedupedBases = /* @__PURE__ */ new Set();
|
|
168
|
+
return {
|
|
169
|
+
name: "vinext:og-assets",
|
|
170
|
+
apply: "build",
|
|
171
|
+
enforce: "post",
|
|
172
|
+
generateBundle: {
|
|
173
|
+
order: "post",
|
|
174
|
+
handler(_options, bundle) {
|
|
175
|
+
if (this.environment?.name !== "rsc") return;
|
|
176
|
+
dedupedBases = /* @__PURE__ */ new Set();
|
|
177
|
+
const chunks = Object.values(bundle).filter((o) => o.type === "chunk");
|
|
178
|
+
for (const base of OG_WASM_ASSETS) {
|
|
179
|
+
if (!chunks.some((c) => c.code.includes(base))) continue;
|
|
180
|
+
const emitted = findEmittedWasmAsset(bundle, base);
|
|
181
|
+
if (!emitted) continue;
|
|
182
|
+
for (const chunk of chunks) {
|
|
183
|
+
const re = fallbackUrlRegex(base);
|
|
184
|
+
const chunkDir = path.posix.dirname(chunk.fileName);
|
|
185
|
+
const rel = path.posix.relative(chunkDir, emitted);
|
|
186
|
+
const ref = rel.startsWith(".") ? rel : `./${rel}`;
|
|
187
|
+
const s = new MagicString(chunk.code);
|
|
188
|
+
let edited = false;
|
|
189
|
+
for (const m of chunk.code.matchAll(re)) {
|
|
190
|
+
const quote = m[1];
|
|
191
|
+
const start = m.index;
|
|
192
|
+
s.overwrite(start, start + m[0].length, `new URL(${quote}${ref}${quote}, import.meta.url)`);
|
|
193
|
+
edited = true;
|
|
194
|
+
}
|
|
195
|
+
if (!edited) continue;
|
|
196
|
+
chunk.code = s.toString();
|
|
197
|
+
if (chunk.map) chunk.map = s.generateMap({
|
|
198
|
+
hires: "boundary",
|
|
199
|
+
source: chunk.fileName
|
|
200
|
+
});
|
|
201
|
+
}
|
|
202
|
+
dedupedBases.add(base);
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
},
|
|
206
|
+
writeBundle: {
|
|
207
|
+
sequential: true,
|
|
208
|
+
order: "post",
|
|
209
|
+
async handler(options, bundle) {
|
|
210
|
+
if (this.environment?.name !== "rsc") return;
|
|
211
|
+
const outDir = options.dir;
|
|
212
|
+
if (!outDir) return;
|
|
213
|
+
const chunkCode = Object.values(bundle).map((output) => output.type === "chunk" ? output.code : "").join("\n");
|
|
214
|
+
const referencedAssets = OG_WASM_ASSETS.filter((asset) => chunkCode.includes(asset) && !dedupedBases.has(asset));
|
|
215
|
+
if (referencedAssets.length === 0) return;
|
|
216
|
+
try {
|
|
217
|
+
const ogPkgPath = createRequire(import.meta.url).resolve("@vercel/og/package.json");
|
|
218
|
+
copyMissingOgWasm({
|
|
219
|
+
outDir,
|
|
220
|
+
sourceDir: path.join(path.dirname(ogPkgPath), "dist"),
|
|
221
|
+
assets: referencedAssets
|
|
222
|
+
});
|
|
223
|
+
} catch {}
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
};
|
|
227
|
+
}
|
|
228
|
+
//#endregion
|
|
229
|
+
export { copyMissingOgWasm, createOgAssetsPlugin, createOgInlineFetchAssetsPlugin };
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { ResolvedNextConfig } from "../config/next-config.js";
|
|
2
|
+
import { Plugin } from "vite";
|
|
3
|
+
|
|
4
|
+
//#region src/plugins/optimize-imports.d.ts
|
|
5
|
+
type BarrelExportEntry = {
|
|
6
|
+
source: string;
|
|
7
|
+
isNamespace: boolean;
|
|
8
|
+
originalName?: string;
|
|
9
|
+
};
|
|
10
|
+
type BarrelExportMap = Map<string, BarrelExportEntry>;
|
|
11
|
+
/**
|
|
12
|
+
* Packages whose barrel imports are automatically optimized.
|
|
13
|
+
* Matches Next.js's built-in optimizePackageImports defaults plus radix-ui.
|
|
14
|
+
* @see https://github.com/vercel/next.js/blob/9c31bbdaa/packages/next/src/server/config.ts#L1301
|
|
15
|
+
*/
|
|
16
|
+
declare const DEFAULT_OPTIMIZE_PACKAGES: string[];
|
|
17
|
+
declare function createOptimizedImportSourceMatcher(packages: Iterable<string>): (code: string) => boolean;
|
|
18
|
+
/**
|
|
19
|
+
* Build a map of exported names → source sub-module for a barrel package.
|
|
20
|
+
*
|
|
21
|
+
* Parses the barrel entry file AST and extracts the export map.
|
|
22
|
+
* Handles: `export * as X from`, `export { A } from`, `import * as X; export { X }`,
|
|
23
|
+
* and `export * from "./sub"` (recursively resolves wildcard re-exports).
|
|
24
|
+
*
|
|
25
|
+
* Returns null if `entryPath` is empty, the file cannot be read, or the file
|
|
26
|
+
* has a parse error. Returns an empty map if the file is valid but exports
|
|
27
|
+
* nothing.
|
|
28
|
+
*
|
|
29
|
+
* @param entryPath - Pre-resolved absolute path to the barrel entry file (the
|
|
30
|
+
* caller owns entry resolution + its caching), or null when it could not be
|
|
31
|
+
* resolved.
|
|
32
|
+
*/
|
|
33
|
+
declare function buildBarrelExportMap(entryPath: string | null, readFile: (filepath: string) => Promise<string | null>, cache?: Map<string, BarrelExportMap>): Promise<BarrelExportMap | null>;
|
|
34
|
+
/**
|
|
35
|
+
* Creates the vinext:optimize-imports Vite plugin.
|
|
36
|
+
*
|
|
37
|
+
* @param nextConfig - Resolved Next.js config (may be undefined before config hook runs).
|
|
38
|
+
* @param getRoot - Returns the current project root (set by the vinext:config hook).
|
|
39
|
+
*/
|
|
40
|
+
declare function createOptimizeImportsPlugin(getNextConfig: () => ResolvedNextConfig | undefined, getRoot: () => string): Plugin;
|
|
41
|
+
//#endregion
|
|
42
|
+
export { DEFAULT_OPTIMIZE_PACKAGES, buildBarrelExportMap, createOptimizeImportsPlugin, createOptimizedImportSourceMatcher };
|