vinext 1.2.1 → 1.3.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 +12 -9
- package/dist/_virtual/_rolldown/runtime.js +1 -1
- package/dist/build/action-owner-manifest.d.ts +3 -2
- package/dist/build/action-owner-manifest.js +18 -2
- package/dist/build/app-page-static-eligibility.d.ts +17 -1
- package/dist/build/app-page-static-eligibility.js +80 -13
- package/dist/build/clean-output.d.ts +2 -1
- package/dist/build/client-build-config.d.ts +77 -6
- package/dist/build/client-build-config.js +176 -12
- package/dist/build/client-reference-async.d.ts +48 -0
- package/dist/build/client-reference-async.js +123 -0
- package/dist/build/client-reference-chunks.d.ts +32 -0
- package/dist/build/client-reference-chunks.js +111 -0
- package/dist/build/client-reference-groups.d.ts +171 -0
- package/dist/build/client-reference-groups.js +572 -0
- package/dist/build/css-url-assets.d.ts +2 -1
- package/dist/build/google-fonts/fallback-metrics.d.ts +2 -1
- package/dist/build/google-fonts/find-font-files-in-css.d.ts +1 -0
- package/dist/build/google-fonts/find-font-files-in-css.js +17 -4
- package/dist/build/google-fonts/font-metadata.d.ts +2 -1
- package/dist/build/google-fonts/validate.d.ts +2 -1
- package/dist/build/inline-css.d.ts +2 -1
- package/dist/build/layout-classification.d.ts +2 -1
- package/dist/build/module-dependency-cache.d.ts +33 -1
- package/dist/build/module-dependency-cache.js +51 -1
- package/dist/build/next-client-runtime-manifests.d.ts +12 -2
- package/dist/build/next-client-runtime-manifests.js +19 -4
- package/dist/build/nitro-public-files.d.ts +24 -0
- package/dist/build/nitro-public-files.js +60 -0
- package/dist/build/pages-client-assets-module.js +1 -1
- package/dist/build/precompress.d.ts +2 -1
- package/dist/build/precompress.js +1 -1
- package/dist/build/prerender-paths.d.ts +2 -1
- package/dist/build/prerender-paths.js +5 -2
- package/dist/build/prerender-phase.d.ts +2 -1
- package/dist/build/prerender-server-pool.js +1 -1
- package/dist/build/prerender.d.ts +3 -2
- package/dist/build/prerender.js +5 -4
- package/dist/build/report.d.ts +2 -1
- package/dist/build/route-classification-injector.d.ts +2 -1
- package/dist/build/route-classification-manifest.d.ts +2 -1
- package/dist/build/run-prerender.d.ts +2 -1
- package/dist/build/server-actions-encryption-key.d.ts +24 -0
- package/dist/build/server-actions-encryption-key.js +101 -0
- package/dist/build/ssr-manifest.d.ts +3 -0
- package/dist/build/ssr-manifest.js +34 -2
- package/dist/build/standalone.d.ts +2 -1
- package/dist/cache/cache-adapters-virtual.d.ts +2 -1
- package/dist/cache.js +1 -2
- package/dist/check.d.ts +2 -1
- package/dist/check.js +4 -0
- package/dist/cli-args.d.ts +2 -1
- package/dist/cli.js +2 -0
- package/dist/client/client-redirect-matcher.js +2 -1
- package/dist/client/client-redirects.d.ts +4 -3
- package/dist/client/client-redirects.js +2 -1
- package/dist/client/client-rewrite-params.d.ts +9 -0
- package/dist/client/client-rewrite-params.js +20 -0
- package/dist/client/client-rewrites.d.ts +2 -1
- package/dist/client/dev-error-overlay-store.d.ts +2 -1
- package/dist/client/dev-error-overlay.js +2 -1
- package/dist/client/index.js +1 -2
- package/dist/client/instrumentation-client-state.js +5 -5
- package/dist/client/navigation-runtime.d.ts +28 -3
- package/dist/client/navigation-runtime.js +42 -11
- package/dist/client/pages-router-link-navigation.d.ts +2 -1
- package/dist/client/vinext-next-data.d.ts +25 -2
- package/dist/client/window-next.d.ts +2 -1
- package/dist/config/config-matchers.d.ts +27 -41
- package/dist/config/config-matchers.js +293 -270
- package/dist/config/config-source.d.ts +34 -0
- package/dist/config/config-source.js +141 -0
- package/dist/config/dotenv.d.ts +2 -1
- package/dist/config/header-params.d.ts +29 -0
- package/dist/config/header-params.js +106 -0
- package/dist/config/next-config.d.ts +20 -6
- package/dist/config/next-config.js +149 -11
- package/dist/config/tsconfig-paths.d.ts +2 -1
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/detector.js +23 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/index.js +2 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/lookup.js +25 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/bmp.js +11 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/cur.js +15 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/dds.js +11 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/gif.js +12 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/heif.js +55 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/icns.js +76 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/ico.js +39 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/index.js +46 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/j2c.js +11 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/jp2.js +21 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/jpg.js +71 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/jxl-stream.js +42 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/jxl.js +46 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/ktx.js +19 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/png.js +28 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/pnm.js +54 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/psd.js +11 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/svg.js +79 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/tga.js +15 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/tiff.js +96 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/utils.js +53 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/webp.js +45 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/utils/bit-reader.js +38 -0
- package/dist/deps/.pnpm/ua-parser-js@1.0.35/deps/ua-parser-js/src/ua-parser.js +2 -2
- package/dist/entries/app-browser-entry.d.ts +34 -6
- package/dist/entries/app-browser-entry.js +103 -40
- package/dist/entries/app-rsc-entry.d.ts +4 -1
- package/dist/entries/app-rsc-entry.js +131 -66
- package/dist/entries/app-rsc-manifest.d.ts +12 -1
- package/dist/entries/app-rsc-manifest.js +73 -1
- package/dist/entries/app-ssr-entry.d.ts +4 -1
- package/dist/entries/app-ssr-entry.js +9 -2
- package/dist/entries/pages-client-entry.d.ts +1 -0
- package/dist/entries/pages-client-entry.js +6 -6
- package/dist/entries/pages-entry-helpers.js +1 -2
- package/dist/entries/pages-server-entry.d.ts +2 -1
- package/dist/entries/pages-server-entry.js +18 -15
- package/dist/entries/runtime-entry-module.d.ts +1 -0
- package/dist/entries/runtime-entry-module.js +4 -1
- package/dist/image/image-adapters-virtual.d.ts +2 -1
- package/dist/index.d.ts +11 -0
- package/dist/index.js +340 -116
- package/dist/init.js +17 -0
- package/dist/plugins/client-compile-hints.d.ts +30 -0
- package/dist/plugins/client-compile-hints.js +88 -0
- package/dist/plugins/client-reference-dedup.d.ts +2 -1
- package/dist/plugins/cloudflare-dev-module-urls.d.ts +2 -1
- package/dist/plugins/dynamic-preload-metadata.d.ts +3 -1
- package/dist/plugins/dynamic-preload-metadata.js +1 -1
- package/dist/plugins/environment.d.ts +2 -1
- package/dist/plugins/fonts.js +9 -12
- package/dist/plugins/ignore-dynamic-requests.d.ts +2 -1
- package/dist/plugins/import-meta-url.d.ts +2 -1
- package/dist/plugins/og-assets.d.ts +2 -1
- package/dist/plugins/og-assets.js +2 -3
- package/dist/plugins/optimize-imports.d.ts +27 -3
- package/dist/plugins/optimize-imports.js +106 -20
- package/dist/plugins/pages-node-externals.d.ts +2 -1
- package/dist/plugins/remove-console.d.ts +2 -1
- package/dist/plugins/require-condition-resolution.d.ts +2 -1
- package/dist/plugins/rsc-client-reference-loaders.d.ts +53 -1
- package/dist/plugins/rsc-client-reference-loaders.js +447 -27
- package/dist/plugins/rsc-client-shim-excludes.js +2 -0
- package/dist/plugins/sass.d.ts +2 -1
- package/dist/plugins/strip-server-exports.d.ts +2 -1
- package/dist/plugins/styled-jsx.d.ts +2 -1
- package/dist/plugins/transform-result.d.ts +2 -1
- package/dist/plugins/typeof-window.d.ts +2 -1
- package/dist/plugins/use-cache-callable.d.ts +5 -0
- package/dist/plugins/use-cache-callable.js +30 -8
- package/dist/plugins/worker-image-imports.d.ts +1 -0
- package/dist/plugins/worker-image-imports.js +2 -2
- package/dist/plugins/worker-use-server.d.ts +2 -1
- package/dist/routing/app-route-graph.d.ts +41 -1
- package/dist/routing/app-route-graph.js +122 -50
- package/dist/routing/browser-route-manifest.d.ts +44 -0
- package/dist/routing/browser-route-manifest.js +195 -0
- package/dist/routing/hashed-route-patterns.d.ts +4 -0
- package/dist/routing/hashed-route-patterns.js +22 -0
- package/dist/routing/optimistic-route-trie.d.ts +28 -0
- package/dist/routing/optimistic-route-trie.js +102 -0
- package/dist/routing/route-matching.d.ts +2 -1
- package/dist/routing/route-pattern.d.ts +2 -1
- package/dist/routing/route-validation.d.ts +6 -1
- package/dist/routing/route-validation.js +26 -10
- package/dist/server/accept-encoding.d.ts +2 -1
- package/dist/server/app-action-forwarding.d.ts +10 -1
- package/dist/server/app-action-forwarding.js +15 -1
- package/dist/server/app-bfcache-identity.d.ts +2 -1
- package/dist/server/app-browser-action-result.d.ts +2 -1
- package/dist/server/app-browser-client-reuse-manifest.d.ts +2 -1
- package/dist/server/app-browser-entry.js +175 -64
- package/dist/server/app-browser-error.d.ts +5 -2
- package/dist/server/app-browser-error.js +7 -2
- package/dist/server/app-browser-history-controller.d.ts +2 -1
- package/dist/server/app-browser-hydration.d.ts +2 -1
- package/dist/server/app-browser-interception-context.d.ts +4 -3
- package/dist/server/app-browser-mpa-navigation.d.ts +1 -0
- package/dist/server/app-browser-mpa-navigation.js +6 -5
- package/dist/server/app-browser-navigation-controller.d.ts +17 -6
- package/dist/server/app-browser-navigation-controller.js +103 -36
- package/dist/server/app-browser-popstate.d.ts +2 -1
- package/dist/server/app-browser-rsc-redirect.d.ts +2 -1
- package/dist/server/app-browser-server-action-client.d.ts +2 -1
- package/dist/server/app-browser-state.d.ts +2 -2
- package/dist/server/app-browser-state.js +1 -1
- package/dist/server/app-browser-stream.d.ts +2 -1
- package/dist/server/app-browser-visible-commit.d.ts +6 -5
- package/dist/server/app-client-reference-manifest.d.ts +31 -0
- package/dist/server/app-client-reference-manifest.js +46 -0
- package/dist/server/app-client-reference-preloader.d.ts +45 -2
- package/dist/server/app-client-reference-preloader.js +48 -10
- package/dist/server/app-elements-wire.d.ts +2 -1
- package/dist/server/app-elements.d.ts +2 -0
- package/dist/server/app-elements.js +3 -1
- package/dist/server/app-fallback-renderer.d.ts +9 -2
- package/dist/server/app-fallback-renderer.js +6 -2
- package/dist/server/app-history-state.d.ts +2 -1
- package/dist/server/app-inline-css-client.d.ts +2 -1
- package/dist/server/app-layout-param-observation.d.ts +2 -1
- package/dist/server/app-metadata-tracing.d.ts +2 -1
- package/dist/server/app-middleware.d.ts +6 -0
- package/dist/server/app-middleware.js +8 -10
- package/dist/server/app-optimistic-routing.d.ts +26 -11
- package/dist/server/app-optimistic-routing.js +38 -96
- package/dist/server/app-page-boundary-render.d.ts +20 -2
- package/dist/server/app-page-boundary-render.js +229 -39
- package/dist/server/app-page-boundary.d.ts +34 -5
- package/dist/server/app-page-boundary.js +40 -7
- package/dist/server/app-page-cache-finalizer.d.ts +2 -1
- package/dist/server/app-page-cache-finalizer.js +1 -1
- package/dist/server/app-page-cache-render.d.ts +10 -2
- package/dist/server/app-page-cache-render.js +15 -2
- package/dist/server/app-page-cache.js +2 -2
- package/dist/server/app-page-dispatch.d.ts +34 -1
- package/dist/server/app-page-dispatch.js +165 -34
- package/dist/server/app-page-element-builder.d.ts +17 -1
- package/dist/server/app-page-element-builder.js +187 -66
- package/dist/server/app-page-execution.d.ts +28 -1
- package/dist/server/app-page-execution.js +114 -5
- package/dist/server/app-page-head.d.ts +95 -3
- package/dist/server/app-page-head.js +307 -152
- package/dist/server/app-page-http-access-fallback-metadata.d.ts +48 -2
- package/dist/server/app-page-http-access-fallback-metadata.js +76 -1
- package/dist/server/app-page-method.d.ts +2 -1
- package/dist/server/app-page-probe.d.ts +2 -1
- package/dist/server/app-page-render-identity.d.ts +2 -1
- package/dist/server/app-page-render.d.ts +7 -1
- package/dist/server/app-page-render.js +38 -11
- package/dist/server/app-page-request.d.ts +14 -1
- package/dist/server/app-page-request.js +1 -1
- package/dist/server/app-page-route-wiring.d.ts +52 -2
- package/dist/server/app-page-route-wiring.js +197 -47
- package/dist/server/app-page-rsc-render-status.d.ts +3 -1
- package/dist/server/app-page-rsc-render-status.js +1 -0
- package/dist/server/app-page-search-params-observation.d.ts +8 -6
- package/dist/server/app-page-search-params-observation.js +16 -11
- package/dist/server/app-page-segment-plan.d.ts +2 -1
- package/dist/server/app-page-stream.d.ts +38 -1
- package/dist/server/app-page-stream.js +24 -4
- package/dist/server/app-pages-bridge.d.ts +4 -2
- package/dist/server/app-pages-bridge.js +11 -7
- package/dist/server/app-ppr-fallback-shell-render.d.ts +2 -1
- package/dist/server/app-ppr-fallback-shell.d.ts +2 -1
- package/dist/server/app-prerender-endpoints.d.ts +2 -1
- package/dist/server/app-prerender-static-params.d.ts +2 -1
- package/dist/server/app-prerender-static-params.js +3 -2
- package/dist/server/app-render-dependency.d.ts +11 -1
- package/dist/server/app-render-dependency.js +65 -6
- package/dist/server/app-request-stage-independent-entry.d.ts +2 -1
- package/dist/server/app-request-stage-independent-entry.js +2 -2
- package/dist/server/app-response-stage-entry.d.ts +2 -1
- package/dist/server/app-response-stage-entry.js +3 -3
- package/dist/server/app-route-handler-cache.d.ts +2 -1
- package/dist/server/app-route-handler-dispatch.d.ts +2 -1
- package/dist/server/app-route-handler-dispatch.js +4 -2
- package/dist/server/app-route-handler-execution.d.ts +4 -1
- package/dist/server/app-route-handler-execution.js +9 -2
- package/dist/server/app-route-handler-middleware-context.d.ts +2 -1
- package/dist/server/app-route-handler-middleware-context.js +3 -3
- package/dist/server/app-route-handler-response.d.ts +4 -2
- package/dist/server/app-route-handler-response.js +2 -2
- package/dist/server/app-route-handler-runtime.d.ts +4 -1
- package/dist/server/app-route-handler-runtime.js +20 -3
- package/dist/server/app-route-module-loader.d.ts +18 -1
- package/dist/server/app-route-module-loader.js +15 -6
- package/dist/server/app-route-tree-prefetch.d.ts +2 -1
- package/dist/server/app-route-tree.d.ts +20 -0
- package/dist/server/app-route-tree.js +18 -0
- package/dist/server/app-router-entry.js +2 -2
- package/dist/server/app-rsc-combined-handler.js +8 -1
- package/dist/server/app-rsc-error-handler.d.ts +2 -1
- package/dist/server/app-rsc-errors.d.ts +9 -1
- package/dist/server/app-rsc-errors.js +9 -2
- package/dist/server/app-rsc-handler.d.ts +6 -2
- package/dist/server/app-rsc-handler.js +152 -140
- package/dist/server/app-rsc-response-finalizer.d.ts +7 -1
- package/dist/server/app-rsc-response-finalizer.js +4 -1
- package/dist/server/app-rsc-response-stage.js +3 -1
- package/dist/server/app-rsc-route-matching.d.ts +39 -1
- package/dist/server/app-rsc-route-matching.js +25 -1
- package/dist/server/app-segment-config.d.ts +2 -1
- package/dist/server/app-segment-config.js +1 -14
- package/dist/server/app-server-action-execution.d.ts +25 -7
- package/dist/server/app-server-action-execution.js +53 -59
- package/dist/server/app-ssr-entry.d.ts +12 -0
- package/dist/server/app-ssr-entry.js +104 -48
- package/dist/server/app-ssr-error-meta.d.ts +2 -1
- package/dist/server/app-ssr-search-params-gate.d.ts +2 -1
- package/dist/server/app-ssr-stream.d.ts +29 -10
- package/dist/server/app-ssr-stream.js +311 -67
- package/dist/server/app-static-generation.d.ts +2 -1
- package/dist/server/app-streamed-client-references.d.ts +39 -0
- package/dist/server/app-streamed-client-references.js +156 -0
- package/dist/server/app-visited-response-cache.d.ts +2 -1
- package/dist/server/app-worker-stages.d.ts +2 -1
- package/dist/server/artifact-compatibility.d.ts +2 -1
- package/dist/server/bfcache-identity.d.ts +2 -1
- package/dist/server/cache-headers.d.ts +2 -1
- package/dist/server/cacheability-request.d.ts +2 -1
- package/dist/server/client-reuse-manifest.d.ts +2 -1
- package/dist/server/config-headers.d.ts +2 -1
- package/dist/server/config-headers.js +12 -3
- package/dist/server/csp.d.ts +2 -1
- package/dist/server/default-global-not-found-module.d.ts +2 -1
- package/dist/server/default-http-access-fallback-modules.d.ts +33 -0
- package/dist/server/default-http-access-fallback-modules.js +31 -0
- package/dist/server/defer-until-stream-consumed.d.ts +34 -0
- package/dist/server/defer-until-stream-consumed.js +154 -21
- package/dist/server/dev-lockfile.d.ts +32 -2
- package/dist/server/dev-lockfile.js +46 -2
- package/dist/server/dev-module-runner.d.ts +2 -1
- package/dist/server/dev-server.js +10 -3
- package/dist/server/fetch-handler.js +1 -2
- package/dist/server/file-based-metadata.d.ts +2 -1
- package/dist/server/framework-tracer.d.ts +2 -1
- package/dist/server/html.d.ts +1 -0
- package/dist/server/html.js +19 -1
- package/dist/server/http-conditional.d.ts +2 -1
- package/dist/server/http-error-responses.d.ts +2 -1
- package/dist/server/implicit-tags.d.ts +2 -1
- package/dist/server/isolate-shared-promise.d.ts +10 -0
- package/dist/server/isolate-shared-promise.js +33 -0
- package/dist/server/isr-cache.js +3 -2
- package/dist/server/metadata-route-build-data.d.ts +2 -1
- package/dist/server/metadata-route-build-data.js +1 -1
- package/dist/server/metadata-route-response.d.ts +2 -1
- package/dist/server/metadata-route-response.js +1 -1
- package/dist/server/metadata-routes.d.ts +2 -1
- package/dist/server/middleware-matcher-pattern.d.ts +0 -1
- package/dist/server/middleware-matcher-pattern.js +11 -140
- package/dist/server/middleware-matcher.js +5 -6
- package/dist/server/middleware-response-headers.d.ts +31 -0
- package/dist/server/middleware-response-headers.js +57 -1
- package/dist/server/middleware-runtime.d.ts +2 -1
- package/dist/server/middleware-runtime.js +26 -13
- package/dist/server/navigation-planner.d.ts +2 -2
- package/dist/server/navigation-trace.d.ts +2 -1
- package/dist/server/next-error-digest.d.ts +2 -1
- package/dist/server/nitro-public-files-plugin.d.ts +39 -0
- package/dist/server/nitro-public-files-plugin.js +106 -0
- package/dist/server/nitro-public-files.d.ts +22 -0
- package/dist/server/nitro-public-files.js +39 -0
- package/dist/server/opentelemetry-api.d.ts +2 -1
- package/dist/server/operation-token.d.ts +2 -1
- package/dist/server/pages-api-route.d.ts +2 -1
- package/dist/server/pages-asset-tags.d.ts +7 -1
- package/dist/server/pages-asset-tags.js +9 -2
- package/dist/server/pages-body-parser-config.d.ts +2 -1
- package/dist/server/pages-client-assets.d.ts +8 -1
- package/dist/server/pages-data-route.d.ts +2 -1
- package/dist/server/pages-document-asset-props.d.ts +2 -1
- package/dist/server/pages-document-initial-props.d.ts +2 -1
- package/dist/server/pages-execution-tracing.d.ts +2 -1
- package/dist/server/pages-execution-tracing.js +1 -1
- package/dist/server/pages-get-initial-props.d.ts +2 -1
- package/dist/server/pages-i18n.d.ts +18 -0
- package/dist/server/pages-i18n.js +18 -2
- package/dist/server/pages-node-compat.d.ts +5 -3
- package/dist/server/pages-node-compat.js +35 -16
- package/dist/server/pages-page-data.d.ts +7 -1
- package/dist/server/pages-page-data.js +35 -12
- package/dist/server/pages-page-handler.d.ts +3 -2
- package/dist/server/pages-page-handler.js +16 -7
- package/dist/server/pages-page-method.d.ts +2 -1
- package/dist/server/pages-page-response.d.ts +2 -1
- package/dist/server/pages-preview.d.ts +2 -1
- package/dist/server/pages-readiness.d.ts +2 -1
- package/dist/server/pages-request-pipeline.d.ts +8 -2
- package/dist/server/pages-request-pipeline.js +35 -40
- package/dist/server/pages-request-stage-entry.d.ts +2 -1
- package/dist/server/pages-request-stage-entry.js +16 -6
- package/dist/server/pages-response-stage-entry.d.ts +2 -1
- package/dist/server/pages-response-stage-entry.js +1 -1
- package/dist/server/pages-revalidate.js +1 -0
- package/dist/server/pages-route-data-kind.d.ts +2 -1
- package/dist/server/pages-router-entry.js +1 -1
- package/dist/server/prerender-cache-life-header.d.ts +2 -1
- package/dist/server/prerender-route-params.d.ts +2 -1
- package/dist/server/prod-server.d.ts +2 -2
- package/dist/server/prod-server.js +80 -36
- package/dist/server/proxy-trust.d.ts +6 -0
- package/dist/server/proxy-trust.js +12 -6
- package/dist/server/request-log.d.ts +2 -1
- package/dist/server/request-pipeline.d.ts +5 -0
- package/dist/server/request-pipeline.js +12 -1
- package/dist/server/request-tracing.d.ts +2 -1
- package/dist/server/request-tracing.js +1 -1
- package/dist/server/response-start-tracing.js +7 -29
- package/dist/server/rsc-render-stream.d.ts +4 -0
- package/dist/server/rsc-render-stream.js +25 -0
- package/dist/server/seed-cache.d.ts +2 -1
- package/dist/server/seed-cache.js +1 -1
- package/dist/server/server-reference-loader.js +10 -1
- package/dist/server/static-file-cache.d.ts +2 -1
- package/dist/server/static-file-cache.js +16 -3
- package/dist/server/static-layout-client-reuse-proof.d.ts +2 -1
- package/dist/server/worker-revalidation-context.d.ts +2 -1
- package/dist/server/worker-stages.d.ts +2 -1
- package/dist/server/worker-utils.js +1 -1
- package/dist/shims/app.d.ts +2 -1
- package/dist/shims/cache-callable-runtime.d.ts +2 -1
- package/dist/shims/cache-handler.d.ts +8 -3
- package/dist/shims/cache-handler.js +32 -11
- package/dist/shims/cache-request-state.d.ts +40 -3
- package/dist/shims/cache-request-state.js +70 -5
- package/dist/shims/cache-runtime.js +47 -19
- package/dist/shims/cache.d.ts +2 -2
- package/dist/shims/cache.js +17 -8
- package/dist/shims/caught-not-found-boundaries.d.ts +15 -0
- package/dist/shims/caught-not-found-boundaries.js +48 -0
- package/dist/shims/cdn-purge-routes.d.ts +25 -0
- package/dist/shims/cdn-purge-routes.js +77 -0
- package/dist/shims/client-locale.js +2 -1
- package/dist/shims/client-page-root.d.ts +2 -1
- package/dist/shims/config.d.ts +2 -1
- package/dist/shims/default-forbidden.d.ts +4 -0
- package/dist/shims/default-forbidden.js +18 -0
- package/dist/shims/default-not-found.d.ts +0 -5
- package/dist/shims/default-not-found.js +5 -41
- package/dist/shims/default-unauthorized.d.ts +4 -0
- package/dist/shims/default-unauthorized.js +18 -0
- package/dist/shims/dynamic.js +17 -4
- package/dist/shims/error-boundary.d.ts +39 -3
- package/dist/shims/error-boundary.js +31 -16
- package/dist/shims/font-google.js +1 -2
- package/dist/shims/font-utils.d.ts +3 -2
- package/dist/shims/font-utils.js +5 -3
- package/dist/shims/form.js +9 -4
- package/dist/shims/http-access-error-fallback.d.ts +7 -0
- package/dist/shims/http-access-error-fallback.js +47 -0
- package/dist/shims/image-props.d.ts +93 -0
- package/dist/shims/image-props.js +323 -0
- package/dist/shims/image.d.ts +4 -39
- package/dist/shims/image.js +4 -319
- package/dist/shims/internal/app-prefetch-fetch-queue.d.ts +22 -2
- package/dist/shims/internal/app-prefetch-fetch-queue.js +71 -18
- package/dist/shims/internal/app-route-prefetch-policy.d.ts +14 -3
- package/dist/shims/internal/app-route-prefetch-policy.js +29 -4
- package/dist/shims/internal/cache-context-accessor.d.ts +2 -1
- package/dist/shims/internal/client-reference-loader.d.ts +7 -0
- package/dist/shims/internal/client-reference-loader.js +91 -0
- package/dist/shims/internal/cookie-serialize.d.ts +2 -1
- package/dist/shims/internal/cookies.js +1 -2
- package/dist/shims/internal/headers-state.d.ts +9 -0
- package/dist/shims/internal/headers-state.js +19 -2
- package/dist/shims/internal/hybrid-client-route-owner-direct.d.ts +6 -2
- package/dist/shims/internal/hybrid-client-route-owner-direct.js +31 -14
- package/dist/shims/internal/hybrid-client-route-owner.js +8 -8
- package/dist/shims/internal/interpolate-as.d.ts +2 -1
- package/dist/shims/internal/pages-data-target.d.ts +2 -1
- package/dist/shims/internal/pages-data-url.d.ts +2 -1
- package/dist/shims/internal/thenable-well-known-properties.d.ts +2 -1
- package/dist/shims/link.js +198 -53
- package/dist/shims/metadata.d.ts +32 -11
- package/dist/shims/metadata.js +88 -26
- package/dist/shims/navigation-errors.d.ts +2 -1
- package/dist/shims/navigation.d.ts +23 -3
- package/dist/shims/navigation.js +91 -25
- package/dist/shims/og.js +35 -10
- package/dist/shims/pages-router-runtime.d.ts +2 -1
- package/dist/shims/ppr-fallback-shell.d.ts +2 -1
- package/dist/shims/request-context.d.ts +13 -0
- package/dist/shims/router.js +33 -43
- package/dist/shims/server.d.ts +31 -4
- package/dist/shims/server.js +58 -10
- package/dist/shims/thenable-params.d.ts +6 -1
- package/dist/shims/thenable-params.js +11 -2
- package/dist/shims/unified-request-context.d.ts +5 -0
- package/dist/shims/unified-request-context.js +5 -3
- package/dist/typegen.d.ts +2 -1
- package/dist/utils/asset-prefix.d.ts +7 -0
- package/dist/utils/asset-prefix.js +10 -1
- package/dist/utils/client-build-manifest.d.ts +4 -1
- package/dist/utils/client-build-manifest.js +20 -6
- package/dist/utils/client-entry-manifest.d.ts +13 -0
- package/dist/utils/client-entry-manifest.js +20 -1
- package/dist/utils/client-reference-chunks.d.ts +45 -0
- package/dist/utils/client-reference-chunks.js +30 -0
- package/dist/utils/client-runtime-metadata.d.ts +10 -1
- package/dist/utils/client-runtime-metadata.js +53 -9
- package/dist/utils/compare.d.ts +9 -0
- package/dist/utils/compare.js +15 -1
- package/dist/utils/lazy-chunks.d.ts +18 -0
- package/dist/utils/lazy-chunks.js +27 -1
- package/dist/utils/manifest-paths.d.ts +14 -0
- package/dist/utils/manifest-paths.js +22 -1
- package/dist/utils/middleware-request-headers.d.ts +2 -1
- package/dist/utils/path-to-regexp.d.ts +21 -0
- package/dist/{server/middleware-path-to-regexp.js → utils/path-to-regexp.js} +14 -11
- package/dist/utils/plugin-react-version.d.ts +15 -0
- package/dist/utils/plugin-react-version.js +64 -0
- package/dist/utils/project.d.ts +2 -1
- package/dist/utils/project.js +9 -1
- package/dist/utils/public-routes.d.ts +2 -0
- package/dist/utils/public-routes.js +18 -7
- package/dist/utils/query.d.ts +2 -1
- package/dist/utils/sorted-array.d.ts +2 -1
- package/dist/utils/vite-cli-invocation.d.ts +2 -1
- package/package.json +5 -5
- package/dist/deps/.pnpm/image-size@2.0.2/deps/image-size/dist/index.js +0 -808
- package/dist/server/default-not-found-module.d.ts +0 -19
- package/dist/server/default-not-found-module.js +0 -18
- package/dist/server/middleware-path-to-regexp.d.ts +0 -13
- package/dist/server/rsc-stream-hints.d.ts +0 -21
- package/dist/server/rsc-stream-hints.js +0 -227
- package/dist/utils/regex-safety.d.ts +0 -17
- package/dist/utils/regex-safety.js +0 -789
|
@@ -1,46 +1,466 @@
|
|
|
1
|
+
import path from "../deps/.pnpm/pathslash@0.1.0/deps/pathslash/dist/index.js";
|
|
2
|
+
import { magicStringTransformResult, omitUnusedBuildSourcemap } from "./transform-result.js";
|
|
3
|
+
import { resolveShimRuntimeModule } from "../entries/runtime-entry-module.js";
|
|
4
|
+
import { CLIENT_REFERENCE_GROUP_MAX_COST_BYTES, collectClientReferencePreloadPlan, collectClientReferenceRouteSignatures, measureClientReferenceGroupCosts, planClientReferenceGroups, readClientModuleBindings } from "../build/client-reference-groups.js";
|
|
5
|
+
import { collectAsyncModules, createSideEffectsDeclarationCheck } from "../build/client-reference-async.js";
|
|
6
|
+
import { RESOLVED_EAGER_CLIENT_REFERENCES_ID, hasUserClientChunkGroups } from "../build/client-build-config.js";
|
|
7
|
+
import fs from "node:fs";
|
|
8
|
+
import { isCSSRequest } from "vite";
|
|
9
|
+
import { randomBytes } from "node:crypto";
|
|
10
|
+
import MagicString from "magic-string";
|
|
1
11
|
//#region src/plugins/rsc-client-reference-loaders.ts
|
|
2
12
|
const CLIENT_REFERENCES_ID = "\0virtual:vite-rsc/client-references";
|
|
3
13
|
const RESOLVED_ID_PROXY_PREFIX = "virtual:vite-rsc/resolved-id/";
|
|
14
|
+
const RESOLVED_CLIENT_REFERENCE_GROUP_PREFIX = `\0virtual:vinext-client-reference-group-`;
|
|
15
|
+
/** Prefixes the module that registers one client reference outside every group. */
|
|
16
|
+
const RESOLVED_CLIENT_REFERENCE_MODULE_PREFIX = `\0virtual:vinext-client-reference-module/`;
|
|
17
|
+
const CLIENT_REFERENCES_ID_RE = /^\0virtual:vite-rsc\/client-references$/;
|
|
18
|
+
const CLIENT_REFERENCE_MODULE_RE = /^virtual:vinext-client-reference-(?:group-|module\/)|^virtual:vinext-client-reference-(?:chunks|eager)$/;
|
|
19
|
+
const RESOLVED_CLIENT_REFERENCE_MODULE_RE = /^\0virtual:vinext-client-reference-(?:group-|module\/)|^\0virtual:vinext-client-reference-(?:chunks|eager)$/;
|
|
20
|
+
const CLIENT_REFERENCE_CHUNKS_ID = "virtual:vinext-client-reference-chunks";
|
|
21
|
+
const RESOLVED_CLIENT_REFERENCE_CHUNKS_ID = `\0${CLIENT_REFERENCE_CHUNKS_ID}`;
|
|
22
|
+
const NO_ROUTE_CLIENT_REFERENCES_EXPORT = "export const routeClientReferences = null;\n";
|
|
23
|
+
/**
|
|
24
|
+
* Whether the cost estimate loads a module. Rolldown keeps externals and
|
|
25
|
+
* unresolved `require()`s in `importedIds` under their specifier (a bare name
|
|
26
|
+
* or URL), and never settles a load of one, so only files and `\0` virtual
|
|
27
|
+
* modules are measured.
|
|
28
|
+
*/
|
|
29
|
+
function isMeasured(id) {
|
|
30
|
+
return id.startsWith("\0") || path.isAbsolute(id);
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Whether `id` shares the package `sideEffects` flag of `owner`: it is in the
|
|
34
|
+
* same package, and the package's `sideEffects` field is not a list of files.
|
|
35
|
+
* `uniformSideEffects` caches that last check per package.json path.
|
|
36
|
+
*/
|
|
37
|
+
function isInPackage(id, owner, uniformSideEffects) {
|
|
38
|
+
const packageJsonPath = owner.packageJsonPath;
|
|
39
|
+
if (!packageJsonPath) return false;
|
|
40
|
+
const relative = path.relative(path.dirname(packageJsonPath), id);
|
|
41
|
+
if (relative.startsWith("..") || relative.split("/").includes("node_modules")) return false;
|
|
42
|
+
let uniform = uniformSideEffects.get(packageJsonPath);
|
|
43
|
+
if (uniform === void 0) {
|
|
44
|
+
try {
|
|
45
|
+
const { sideEffects } = JSON.parse(fs.readFileSync(packageJsonPath, "utf8"));
|
|
46
|
+
uniform = sideEffects === void 0 || typeof sideEffects === "boolean";
|
|
47
|
+
} catch {
|
|
48
|
+
uniform = false;
|
|
49
|
+
}
|
|
50
|
+
uniformSideEffects.set(packageJsonPath, uniform);
|
|
51
|
+
}
|
|
52
|
+
return uniform;
|
|
53
|
+
}
|
|
4
54
|
function withResolvedIdProxy(resolvedId) {
|
|
5
55
|
return resolvedId.startsWith("\0") ? RESOLVED_ID_PROXY_PREFIX + encodeURIComponent(resolvedId) : resolvedId;
|
|
6
56
|
}
|
|
7
|
-
function
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
}
|
|
22
|
-
|
|
57
|
+
function sortedRenderedExports(meta) {
|
|
58
|
+
return meta.renderedExports.slice().sort();
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* The exports of a client reference, read from the module namespace `binding`.
|
|
62
|
+
* Keep them lazy. In async or cyclic client module evaluation, eagerly copying
|
|
63
|
+
* module namespace values can observe an uninitialized binding.
|
|
64
|
+
*/
|
|
65
|
+
function generateClientReferenceObject(meta, binding) {
|
|
66
|
+
const exports = sortedRenderedExports(meta).map((name) => ` get ${JSON.stringify(name)}() { return ${binding}[${JSON.stringify(name)}]; },`).join("\n");
|
|
67
|
+
return exports ? `{\n${exports}\n}` : "{}";
|
|
68
|
+
}
|
|
69
|
+
function generateClientReferenceLoaders(metas) {
|
|
70
|
+
return `export default {\n${metas.slice().sort((a, b) => a.referenceKey.localeCompare(b.referenceKey)).map((meta) => [
|
|
71
|
+
`${JSON.stringify(meta.referenceKey)}: async () => {`,
|
|
72
|
+
` const m = await import(${JSON.stringify(withResolvedIdProxy(meta.importId))});`,
|
|
73
|
+
` return ${generateClientReferenceObject(meta, "m")};`,
|
|
74
|
+
`},`
|
|
75
|
+
].join("\n")).join("\n")}\n};\n`;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* The client build's client-references module, which the App browser entry
|
|
79
|
+
* imports. It names no client reference chunk, so the entry neither grows nor
|
|
80
|
+
* changes its hash with the app's client references: each reference's Flight
|
|
81
|
+
* row names the chunks it loads (see shims/internal/client-reference-loader.ts).
|
|
82
|
+
*/
|
|
83
|
+
function generateBrowserClientReferencesModule(loaderPath, eager) {
|
|
84
|
+
return `${eager ? `import ${JSON.stringify(RESOLVED_EAGER_CLIENT_REFERENCES_ID.slice(1))};\n` : ""}export { clientReferences as default } from ${JSON.stringify(loaderPath)};\n`;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* A client build module that registers client references as it evaluates:
|
|
88
|
+
* a route group's members, the references in chunks every page loads, or one
|
|
89
|
+
* other reference outside every group. It imports
|
|
90
|
+
* only each member's rendered exports, so unused exports and their
|
|
91
|
+
* dependencies still tree-shake as they do with direct loaders. A member
|
|
92
|
+
* without rendered exports is imported for its side effects. The last member
|
|
93
|
+
* is imported last (see build/client-reference-chunks.ts).
|
|
94
|
+
*/
|
|
95
|
+
function generateClientReferenceModule(metas, loaderPath) {
|
|
96
|
+
const imports = metas.map((meta, index) => {
|
|
97
|
+
const source = JSON.stringify(withResolvedIdProxy(meta.importId));
|
|
98
|
+
return meta.renderedExports.length > 0 ? `import * as m${index} from ${source};` : `import ${source};`;
|
|
99
|
+
});
|
|
100
|
+
const registrations = metas.map((meta, index) => `registerClientReference(${JSON.stringify(meta.referenceKey)}, ${generateClientReferenceObject(meta, `m${index}`)});`);
|
|
101
|
+
return [
|
|
102
|
+
`import { registerClientReference } from ${JSON.stringify(loaderPath)};`,
|
|
103
|
+
...imports,
|
|
104
|
+
...registrations,
|
|
105
|
+
""
|
|
106
|
+
].join("\n");
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* The browser never loads this module. Its dynamic imports make each client
|
|
110
|
+
* reference module a chunk of its own that only a Flight row names.
|
|
111
|
+
*/
|
|
112
|
+
function generateClientReferenceChunksModule(moduleIds) {
|
|
113
|
+
return `export default [\n${moduleIds.map((id) => ` () => import(${JSON.stringify(id.slice(1))}),`).join("\n")}\n];\n`;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* The SSR build's `routeClientReferences` export: the reference keys each route
|
|
117
|
+
* preloads before it renders (see server/app-client-reference-preloader.ts),
|
|
118
|
+
* stored as indices into `references`. Client references the plan doesn't know
|
|
119
|
+
* join `always`. `async` holds `asyncPlaceholder`, which renderChunk replaces
|
|
120
|
+
* with the candidates whose SSR modules evaluate asynchronously.
|
|
121
|
+
*/
|
|
122
|
+
function generateRouteClientReferencesExport(plan, metaEntries, asyncPlaceholder) {
|
|
123
|
+
if (!plan) return {
|
|
124
|
+
code: NO_ROUTE_CLIENT_REFERENCES_EXPORT,
|
|
125
|
+
asyncCandidates: []
|
|
126
|
+
};
|
|
127
|
+
const metaById = new Map(metaEntries);
|
|
128
|
+
const references = [];
|
|
129
|
+
const indices = /* @__PURE__ */ new Map();
|
|
130
|
+
const toIndices = (referenceIds) => referenceIds.flatMap((referenceId) => {
|
|
131
|
+
const meta = metaById.get(referenceId);
|
|
132
|
+
if (!meta) return [];
|
|
133
|
+
let index = indices.get(referenceId);
|
|
134
|
+
if (index === void 0) {
|
|
135
|
+
index = references.length;
|
|
136
|
+
indices.set(referenceId, index);
|
|
137
|
+
references.push(meta.referenceKey);
|
|
138
|
+
}
|
|
139
|
+
return [index];
|
|
140
|
+
});
|
|
141
|
+
const always = toIndices([...plan.preloads.always, ...metaEntries.map(([referenceId]) => referenceId).filter((referenceId) => !plan.referenceIds.has(referenceId))]);
|
|
142
|
+
const files = plan.preloads.files.map(toIndices);
|
|
143
|
+
const asyncCandidates = plan.preloads.staticOnly.flatMap((referenceId) => {
|
|
144
|
+
const index = indices.get(referenceId);
|
|
145
|
+
const meta = metaById.get(referenceId);
|
|
146
|
+
return index === void 0 || !meta ? [] : [{
|
|
147
|
+
index,
|
|
148
|
+
importId: meta.importId
|
|
149
|
+
}];
|
|
150
|
+
});
|
|
151
|
+
const manifest = {
|
|
152
|
+
references,
|
|
153
|
+
always,
|
|
154
|
+
files,
|
|
155
|
+
routes: Object.fromEntries(plan.preloads.routes),
|
|
156
|
+
routeless: plan.preloads.routeless,
|
|
157
|
+
async: asyncPlaceholder
|
|
158
|
+
};
|
|
159
|
+
return {
|
|
160
|
+
code: `export const routeClientReferences = ${JSON.stringify(manifest)};\n`,
|
|
161
|
+
asyncCandidates
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Replaces @vitejs/plugin-rsc's client-reference facades with per-reference
|
|
166
|
+
* loaders. With `routes`, the SSR build also exports the client references
|
|
167
|
+
* each App Router route preloads. With `grouping`, production client builds
|
|
168
|
+
* additionally load references that the same App Router routes reach through
|
|
169
|
+
* one shared route group module (see build/client-reference-groups.ts), so a
|
|
170
|
+
* page fetches one chunk per route group instead of one per `"use client"`
|
|
171
|
+
* module.
|
|
172
|
+
*/
|
|
173
|
+
function createRscClientReferenceLoadersPlugin(options = {}) {
|
|
174
|
+
const { routes: routeOptions } = options;
|
|
175
|
+
const grouping = routeOptions && options.grouping;
|
|
176
|
+
const loaderPath = resolveShimRuntimeModule("internal/client-reference-loader");
|
|
23
177
|
let rscApi;
|
|
178
|
+
let root = "";
|
|
179
|
+
let groupingEnabled = false;
|
|
180
|
+
let routeSignatures = /* @__PURE__ */ new Map();
|
|
181
|
+
// @vitejs/plugin-rsc also builds before the SSR environment.
|
|
182
|
+
let preloadPlan = null;
|
|
183
|
+
const referenceModules = /* @__PURE__ */ new Map();
|
|
184
|
+
let asyncCandidates = [];
|
|
185
|
+
const asyncPlaceholder = `__vinext_async_client_references_${randomBytes(8).toString("hex")}__`;
|
|
186
|
+
const asyncPlaceholderRe = new RegExp(`(["'])${asyncPlaceholder}\\1`, "g");
|
|
24
187
|
return {
|
|
25
188
|
name: "vinext:rsc-client-reference-loaders",
|
|
26
189
|
enforce: "post",
|
|
27
190
|
configResolved(config) {
|
|
191
|
+
root = config.root;
|
|
28
192
|
rscApi = config.plugins.find((plugin) => plugin.name === "rsc:minimal")?.api;
|
|
29
193
|
},
|
|
30
|
-
|
|
31
|
-
|
|
194
|
+
outputOptions: {
|
|
195
|
+
order: "post",
|
|
196
|
+
handler(output) {
|
|
197
|
+
if (this.environment?.name !== "client") return;
|
|
198
|
+
groupingEnabled = !!grouping && !hasUserClientChunkGroups(output, grouping.ownClientChunkGroups);
|
|
199
|
+
}
|
|
200
|
+
},
|
|
201
|
+
buildStart() {
|
|
202
|
+
if (this.environment.name === "rsc") {
|
|
203
|
+
routeSignatures = /* @__PURE__ */ new Map();
|
|
204
|
+
preloadPlan = null;
|
|
205
|
+
}
|
|
206
|
+
if (this.environment.name === "client") {
|
|
207
|
+
referenceModules.clear();
|
|
208
|
+
options.onClientReferenceModules?.(/* @__PURE__ */ new Map());
|
|
209
|
+
}
|
|
210
|
+
},
|
|
211
|
+
buildEnd(error) {
|
|
212
|
+
if (error || !routeOptions) return;
|
|
213
|
+
if (this.environment.name !== "rsc" || this.environment.mode !== "build") return;
|
|
32
214
|
const manager = rscApi?.manager;
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
const
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
215
|
+
const routes = routeOptions.getRoutes();
|
|
216
|
+
if (!manager || manager.isScanBuild || !routes) return;
|
|
217
|
+
const clientReferenceIds = new Set(Object.keys(manager.clientReferenceMetaMap));
|
|
218
|
+
const getModuleInfo = (id) => this.getModuleInfo(id);
|
|
219
|
+
preloadPlan = {
|
|
220
|
+
referenceIds: clientReferenceIds,
|
|
221
|
+
preloads: collectClientReferencePreloadPlan({
|
|
222
|
+
alwaysRoots: routeOptions.getAlwaysRenderedFiles(),
|
|
223
|
+
canonicalizeModuleId: routeOptions.canonicalizeModuleId,
|
|
224
|
+
clientReferenceIds,
|
|
225
|
+
entryIds: [...this.getModuleIds()].filter((id) => this.getModuleInfo(id)?.isEntry),
|
|
226
|
+
getModuleInfo,
|
|
227
|
+
routelessFiles: routeOptions.getRoutelessFiles(),
|
|
228
|
+
routes
|
|
229
|
+
})
|
|
41
230
|
};
|
|
231
|
+
if (!grouping) return;
|
|
232
|
+
routeSignatures = collectClientReferenceRouteSignatures({
|
|
233
|
+
canonicalizeModuleId: routeOptions.canonicalizeModuleId,
|
|
234
|
+
clientReferenceIds,
|
|
235
|
+
getModuleInfo,
|
|
236
|
+
root,
|
|
237
|
+
routes,
|
|
238
|
+
sharedRoots: routeOptions.getSharedRoots()
|
|
239
|
+
});
|
|
240
|
+
},
|
|
241
|
+
resolveId: {
|
|
242
|
+
filter: { id: CLIENT_REFERENCE_MODULE_RE },
|
|
243
|
+
handler(source) {
|
|
244
|
+
return referenceModules.has(`\0${source}`) ? `\0${source}` : null;
|
|
245
|
+
}
|
|
246
|
+
},
|
|
247
|
+
load: {
|
|
248
|
+
filter: { id: RESOLVED_CLIENT_REFERENCE_MODULE_RE },
|
|
249
|
+
handler(id) {
|
|
250
|
+
return referenceModules.get(id) ?? null;
|
|
251
|
+
}
|
|
252
|
+
},
|
|
253
|
+
transform: {
|
|
254
|
+
filter: { id: CLIENT_REFERENCES_ID_RE },
|
|
255
|
+
async handler(code) {
|
|
256
|
+
const manager = rscApi?.manager;
|
|
257
|
+
if (!manager || manager.isScanBuild) return null;
|
|
258
|
+
const isServer = this.environment.config.consumer === "server";
|
|
259
|
+
const metaEntries = Object.entries(manager.clientReferenceMetaMap).filter(([, meta]) => meta.serverChunk);
|
|
260
|
+
const metas = metaEntries.map(([, meta]) => meta);
|
|
261
|
+
let routeClientReferencesExport = "";
|
|
262
|
+
if (isServer) {
|
|
263
|
+
const generated = generateRouteClientReferencesExport(preloadPlan, metaEntries, asyncPlaceholder);
|
|
264
|
+
routeClientReferencesExport = generated.code;
|
|
265
|
+
asyncCandidates = generated.asyncCandidates;
|
|
266
|
+
}
|
|
267
|
+
if (metas.length === 0) return isServer ? {
|
|
268
|
+
code: `${code}\n${routeClientReferencesExport}`,
|
|
269
|
+
map: null
|
|
270
|
+
} : null;
|
|
271
|
+
for (const [id, meta] of metaEntries) meta.groupChunkId = id;
|
|
272
|
+
const isClientBuild = this.environment.name === "client" && this.environment.mode === "build";
|
|
273
|
+
const moduleKeys = /* @__PURE__ */ new Map();
|
|
274
|
+
const grouped = /* @__PURE__ */ new Set();
|
|
275
|
+
const referenceIds = new Set(metaEntries.map(([referenceId]) => referenceId));
|
|
276
|
+
const referenceKeys = new Map(metaEntries.map(([referenceId, meta]) => [referenceId, meta.referenceKey]));
|
|
277
|
+
if (grouping && groupingEnabled && isClientBuild && planClientReferenceGroups({
|
|
278
|
+
referenceIds,
|
|
279
|
+
referenceKeys,
|
|
280
|
+
signatures: routeSignatures,
|
|
281
|
+
costs: new Map([...referenceIds].map((referenceId) => [referenceId, 0])),
|
|
282
|
+
maxCostBytes: 0
|
|
283
|
+
}).length > 0) {
|
|
284
|
+
const references = /* @__PURE__ */ new Map();
|
|
285
|
+
const resolutions = /* @__PURE__ */ new Map();
|
|
286
|
+
const packages = /* @__PURE__ */ new Map();
|
|
287
|
+
const externalIds = /* @__PURE__ */ new Set();
|
|
288
|
+
const uniformSideEffects = /* @__PURE__ */ new Map();
|
|
289
|
+
const resolveCache = /* @__PURE__ */ new Map();
|
|
290
|
+
const addResolution = (resolved) => {
|
|
291
|
+
resolutions.set(resolved.id, resolved);
|
|
292
|
+
packages.set(resolved.id, resolved);
|
|
293
|
+
};
|
|
294
|
+
await Promise.all(metaEntries.map(async ([referenceId, meta]) => {
|
|
295
|
+
if (meta.importId.startsWith("\0")) {
|
|
296
|
+
references.set(referenceId, meta.importId);
|
|
297
|
+
return;
|
|
298
|
+
}
|
|
299
|
+
const resolved = await this.resolve(meta.importId);
|
|
300
|
+
if (!resolved || resolved.external) return;
|
|
301
|
+
references.set(referenceId, resolved.id);
|
|
302
|
+
addResolution(resolved);
|
|
303
|
+
}));
|
|
304
|
+
const { external } = this.environment.config.build.rolldownOptions;
|
|
305
|
+
const excludedById = /* @__PURE__ */ new Map();
|
|
306
|
+
const isExcludedById = (moduleId) => {
|
|
307
|
+
let excluded = excludedById.get(moduleId);
|
|
308
|
+
if (excluded === void 0) {
|
|
309
|
+
excluded = !isMeasured(moduleId) || moduleId === CLIENT_REFERENCES_ID || moduleId.startsWith(RESOLVED_CLIENT_REFERENCE_GROUP_PREFIX) || isCSSRequest(moduleId) || grouping.isAlwaysLoadedClientModule(moduleId);
|
|
310
|
+
excludedById.set(moduleId, excluded);
|
|
311
|
+
}
|
|
312
|
+
return excluded;
|
|
313
|
+
};
|
|
314
|
+
const costs = await measureClientReferenceGroupCosts({
|
|
315
|
+
references,
|
|
316
|
+
loadModule: async (moduleId) => {
|
|
317
|
+
if (external && !resolutions.has(moduleId) && !moduleId.startsWith("\0")) {
|
|
318
|
+
const resolved = await this.resolve(moduleId);
|
|
319
|
+
if (!resolved || resolved.external) return {
|
|
320
|
+
code: "",
|
|
321
|
+
importedIds: []
|
|
322
|
+
};
|
|
323
|
+
}
|
|
324
|
+
const { code, importedIds } = await this.load(resolutions.get(moduleId) ?? { id: moduleId });
|
|
325
|
+
if (code === null) return {
|
|
326
|
+
code,
|
|
327
|
+
importedIds
|
|
328
|
+
};
|
|
329
|
+
const importedIdSet = new Set(importedIds);
|
|
330
|
+
const owner = packages.get(moduleId);
|
|
331
|
+
return {
|
|
332
|
+
code,
|
|
333
|
+
importedIds,
|
|
334
|
+
bindings: await readClientModuleBindings({
|
|
335
|
+
code,
|
|
336
|
+
importedIds,
|
|
337
|
+
resolve: async (specifier) => {
|
|
338
|
+
if (owner && path.isAbsolute(moduleId) && (specifier.startsWith("./") || specifier.startsWith("../"))) {
|
|
339
|
+
const candidate = path.resolve(path.dirname(moduleId), specifier);
|
|
340
|
+
if (importedIdSet.has(candidate) && isInPackage(candidate, owner, uniformSideEffects)) {
|
|
341
|
+
packages.set(candidate, owner);
|
|
342
|
+
return candidate;
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
const key = `${path.dirname(moduleId)}\0${specifier}`;
|
|
346
|
+
let resolving = resolveCache.get(key);
|
|
347
|
+
if (!resolving) {
|
|
348
|
+
resolving = this.resolve(specifier, moduleId).then((resolved) => {
|
|
349
|
+
if (!resolved) return null;
|
|
350
|
+
if (resolved.external) externalIds.add(resolved.id);
|
|
351
|
+
else addResolution(resolved);
|
|
352
|
+
return resolved.id;
|
|
353
|
+
});
|
|
354
|
+
resolveCache.set(key, resolving);
|
|
355
|
+
}
|
|
356
|
+
return resolving;
|
|
357
|
+
}
|
|
358
|
+
})
|
|
359
|
+
};
|
|
360
|
+
},
|
|
361
|
+
isSideEffectFree: (moduleId) => packages.get(moduleId)?.moduleSideEffects === false,
|
|
362
|
+
isExcluded: (moduleId) => externalIds.has(moduleId) || isExcludedById(moduleId)
|
|
363
|
+
});
|
|
364
|
+
const groups = planClientReferenceGroups({
|
|
365
|
+
referenceIds,
|
|
366
|
+
referenceKeys,
|
|
367
|
+
signatures: routeSignatures,
|
|
368
|
+
costs,
|
|
369
|
+
maxCostBytes: CLIENT_REFERENCE_GROUP_MAX_COST_BYTES
|
|
370
|
+
});
|
|
371
|
+
const metaById = new Map(metaEntries);
|
|
372
|
+
for (const group of groups) {
|
|
373
|
+
const groupMetas = group.referenceIds.map((referenceId) => metaById.get(referenceId));
|
|
374
|
+
const resolvedGroupId = `${RESOLVED_CLIENT_REFERENCE_GROUP_PREFIX}${group.key}`;
|
|
375
|
+
referenceModules.set(resolvedGroupId, generateClientReferenceModule(groupMetas, loaderPath));
|
|
376
|
+
moduleKeys.set(resolvedGroupId, groupMetas.map((meta) => meta.referenceKey));
|
|
377
|
+
for (const meta of groupMetas) {
|
|
378
|
+
meta.groupChunkId = resolvedGroupId;
|
|
379
|
+
grouped.add(meta);
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
if (isClientBuild) {
|
|
384
|
+
const eager = [];
|
|
385
|
+
for (const [referenceId, meta] of metaEntries) {
|
|
386
|
+
if (grouped.has(meta)) continue;
|
|
387
|
+
if (grouping && groupingEnabled && grouping.isAlwaysLoadedClientModule(referenceId)) {
|
|
388
|
+
eager.push(meta);
|
|
389
|
+
continue;
|
|
390
|
+
}
|
|
391
|
+
const fileName = path.basename(meta.importId).replace(/\.[^.]*$/, "");
|
|
392
|
+
const moduleId = `${RESOLVED_CLIENT_REFERENCE_MODULE_PREFIX}${meta.referenceKey}/${fileName}`;
|
|
393
|
+
referenceModules.set(moduleId, generateClientReferenceModule([meta], loaderPath));
|
|
394
|
+
moduleKeys.set(moduleId, [meta.referenceKey]);
|
|
395
|
+
meta.groupChunkId = moduleId;
|
|
396
|
+
}
|
|
397
|
+
if (eager.length > 0) referenceModules.set(RESOLVED_EAGER_CLIENT_REFERENCES_ID, generateClientReferenceModule(eager, loaderPath));
|
|
398
|
+
referenceModules.set(RESOLVED_CLIENT_REFERENCE_CHUNKS_ID, generateClientReferenceChunksModule([...moduleKeys.keys()].sort()));
|
|
399
|
+
this.emitFile({
|
|
400
|
+
type: "chunk",
|
|
401
|
+
id: CLIENT_REFERENCE_CHUNKS_ID,
|
|
402
|
+
preserveSignature: "strict"
|
|
403
|
+
});
|
|
404
|
+
options.onClientReferenceModules?.(moduleKeys);
|
|
405
|
+
return {
|
|
406
|
+
code: generateBrowserClientReferencesModule(loaderPath, eager.length > 0),
|
|
407
|
+
map: null
|
|
408
|
+
};
|
|
409
|
+
}
|
|
410
|
+
return {
|
|
411
|
+
code: generateClientReferenceLoaders(metas) + routeClientReferencesExport,
|
|
412
|
+
map: null
|
|
413
|
+
};
|
|
414
|
+
}
|
|
415
|
+
},
|
|
416
|
+
async renderChunk(code, _chunk, _outputOptions, meta) {
|
|
417
|
+
if (this.environment.config.consumer !== "server") return null;
|
|
418
|
+
if (!code.includes(asyncPlaceholder)) return null;
|
|
419
|
+
const roots = /* @__PURE__ */ new Map();
|
|
420
|
+
await Promise.all(asyncCandidates.map(async ({ index, importId }) => {
|
|
421
|
+
let id = importId;
|
|
422
|
+
if (!importId.startsWith("\0") && !path.isAbsolute(importId)) {
|
|
423
|
+
const resolved = await this.resolve(importId);
|
|
424
|
+
id = resolved && !resolved.external ? resolved.id : void 0;
|
|
425
|
+
}
|
|
426
|
+
if (id === void 0) return;
|
|
427
|
+
let list = roots.get(id);
|
|
428
|
+
if (!list) roots.set(id, list = []);
|
|
429
|
+
list.push(index);
|
|
430
|
+
}));
|
|
431
|
+
const asyncIndices = [...collectAsyncModules({
|
|
432
|
+
roots: [...roots.keys()],
|
|
433
|
+
getModuleInfo: (id) => this.getModuleInfo(id),
|
|
434
|
+
chunks: Object.values(meta.chunks),
|
|
435
|
+
declaresSideEffects: createSideEffectsDeclarationCheck()
|
|
436
|
+
})].flatMap((id) => roots.get(id)).sort((a, b) => a - b);
|
|
437
|
+
const output = new MagicString(code);
|
|
438
|
+
for (const match of code.matchAll(asyncPlaceholderRe)) output.overwrite(match.index, match.index + match[0].length, JSON.stringify(asyncIndices));
|
|
439
|
+
return omitUnusedBuildSourcemap(this.environment, magicStringTransformResult(output));
|
|
440
|
+
}
|
|
441
|
+
};
|
|
442
|
+
}
|
|
443
|
+
/**
|
|
444
|
+
* Exports a null preload plan from the client-references virtual module when
|
|
445
|
+
* the app registers @vitejs/plugin-rsc itself (`rsc: false`), where vinext
|
|
446
|
+
* doesn't add the loaders plugin above. The App Router SSR entry imports the
|
|
447
|
+
* plan, and null makes it preload every client reference.
|
|
448
|
+
*/
|
|
449
|
+
function createRouteClientReferencesFallbackPlugin() {
|
|
450
|
+
return {
|
|
451
|
+
name: "vinext:route-client-references-fallback",
|
|
452
|
+
enforce: "post",
|
|
453
|
+
transform: {
|
|
454
|
+
filter: { id: CLIENT_REFERENCES_ID_RE },
|
|
455
|
+
handler(code) {
|
|
456
|
+
if (this.environment.config.consumer !== "server") return null;
|
|
457
|
+
return {
|
|
458
|
+
code: `${code}\n${NO_ROUTE_CLIENT_REFERENCES_EXPORT}`,
|
|
459
|
+
map: null
|
|
460
|
+
};
|
|
461
|
+
}
|
|
42
462
|
}
|
|
43
463
|
};
|
|
44
464
|
}
|
|
45
465
|
//#endregion
|
|
46
|
-
export { createRscClientReferenceLoadersPlugin };
|
|
466
|
+
export { RESOLVED_CLIENT_REFERENCE_CHUNKS_ID, RESOLVED_CLIENT_REFERENCE_MODULE_PREFIX, createRouteClientReferencesFallbackPlugin, createRscClientReferenceLoadersPlugin };
|
|
@@ -18,7 +18,9 @@ const VINEXT_OPTIMIZE_DEPS_EXCLUDE = Object.freeze([
|
|
|
18
18
|
const SSR_EXTERNAL_REACT_ENTRIES = Object.freeze([
|
|
19
19
|
"react",
|
|
20
20
|
"react-dom",
|
|
21
|
+
"react-dom/server",
|
|
21
22
|
"react-dom/server.edge",
|
|
23
|
+
"react-dom/static",
|
|
22
24
|
"react-dom/static.edge",
|
|
23
25
|
"react/jsx-runtime",
|
|
24
26
|
"react/jsx-dev-runtime",
|
package/dist/plugins/sass.d.ts
CHANGED
|
@@ -25,4 +25,5 @@ export declare function getTypeofWindowReplacement(environment: EnvironmentLike)
|
|
|
25
25
|
export declare function mayFoldChangeScannedImports(code: string): boolean;
|
|
26
26
|
export declare function replaceTypeofWindow(code: string, replacement: WindowType, id?: string): MagicStringTransformResult<import("magic-string").SourceMap> | null;
|
|
27
27
|
export declare function replaceConsumerEnvironmentConditions(code: string, replacements: ConsumerEnvironmentReplacements, id?: string): MagicStringTransformResult<import("magic-string").SourceMap> | null;
|
|
28
|
-
//#endregion
|
|
28
|
+
//#endregion
|
|
29
|
+
export {};
|
|
@@ -5,6 +5,11 @@ type Options = {
|
|
|
5
5
|
projectRoot: string;
|
|
6
6
|
cacheRuntime: string;
|
|
7
7
|
allowMissingRsc?: boolean;
|
|
8
|
+
/**
|
|
9
|
+
* The Server Actions encryption key vinext loaded for an auto-registered
|
|
10
|
+
* @vitejs/plugin-rsc, so reference names derive from the same key.
|
|
11
|
+
*/
|
|
12
|
+
getEncryptionKey?: () => string | undefined;
|
|
8
13
|
};
|
|
9
14
|
type BrowserTransformOptions = {
|
|
10
15
|
environmentName: string;
|
|
@@ -2,9 +2,10 @@ import path from "../deps/.pnpm/pathslash@0.1.0/deps/pathslash/dist/index.js";
|
|
|
2
2
|
import { parseProgramAsync } from "./ast-utils.js";
|
|
3
3
|
import { magicStringTransformResult } from "./transform-result.js";
|
|
4
4
|
import { NODE_MODULES_PATH_RE } from "../utils/path.js";
|
|
5
|
+
import { getServerActionsKeyCacheFsDeny, loadOrGenerateServerActionsEncryptionKey } from "../build/server-actions-encryption-key.js";
|
|
5
6
|
import { createRequire } from "node:module";
|
|
6
7
|
import { pathToFileURL } from "node:url";
|
|
7
|
-
import { createHmac
|
|
8
|
+
import { createHmac } from "node:crypto";
|
|
8
9
|
//#region src/plugins/use-cache-callable.ts
|
|
9
10
|
const PLUGIN_NAME = "vinext:server-function-directives";
|
|
10
11
|
const SOURCE_MODULE_ID_RE = /\.(?:tsx?|jsx?|mjs)(?:\?.*)?$/;
|
|
@@ -114,21 +115,33 @@ function transformBrowserModule(transforms, code, ast, id, moduleDirective, opti
|
|
|
114
115
|
referenceNames: result.exportNames.map(referenceName)
|
|
115
116
|
};
|
|
116
117
|
}
|
|
118
|
+
/**
|
|
119
|
+
* Ported from Next.js: crates/next-custom-transforms/src/transforms/server_actions.rs
|
|
120
|
+
* salts server-reference IDs with the encryption key (`serverReferenceHashSalt`
|
|
121
|
+
* in packages/next/src/build/webpack-config.ts), so rebuilds of identical
|
|
122
|
+
* source emit identical client chunks. See
|
|
123
|
+
* loadOrGenerateServerActionsEncryptionKey for where the key comes from. The
|
|
124
|
+
* secret is derived under a label rather than used directly so the reference
|
|
125
|
+
* names reveal nothing about the key.
|
|
126
|
+
*/
|
|
127
|
+
function createReferenceSecret(encryptionKey) {
|
|
128
|
+
return createHmac("sha256", encryptionKey).update("vinext use cache reference").digest();
|
|
129
|
+
}
|
|
117
130
|
async function createUseCacheCallablePlugin(options) {
|
|
118
131
|
const rscModulePath = resolvePluginRscModule(options.projectRoot, "@vitejs/plugin-rsc");
|
|
119
132
|
const transformsPath = resolvePluginRscModule(options.projectRoot, "@vitejs/plugin-rsc/transforms");
|
|
120
133
|
const rscModule = await import(pathToFileURL(rscModulePath).href);
|
|
121
134
|
const transforms = await import(pathToFileURL(transformsPath).href);
|
|
122
|
-
|
|
135
|
+
let referenceSecret;
|
|
123
136
|
let manager;
|
|
124
|
-
async function analyzeModule(manager, code, id) {
|
|
137
|
+
async function analyzeModule(manager, secret, code, id) {
|
|
125
138
|
const ast = await parseProgramAsync(code);
|
|
126
139
|
const moduleDirective = findModuleUseCacheDirective(ast);
|
|
127
140
|
const useServerBoundary = transforms.hasDirective(ast.body, "use server");
|
|
128
141
|
if (moduleDirective && useServerBoundary) throw new Error(`A module cannot contain both ${JSON.stringify(moduleDirective)} and "use server" directives.`);
|
|
129
142
|
const reference = manager.serverReferences.resolve(id, "rsc");
|
|
130
143
|
const relativeImportId = manager.toRelativeId(reference.importId);
|
|
131
|
-
const secureExportName = (name) => `$$vinext_cache_${createHmac("sha256",
|
|
144
|
+
const secureExportName = (name) => `$$vinext_cache_${createHmac("sha256", secret).update(relativeImportId).update("\0").update(name).digest("hex")}`;
|
|
132
145
|
return {
|
|
133
146
|
ast,
|
|
134
147
|
moduleDirective,
|
|
@@ -141,11 +154,12 @@ async function createUseCacheCallablePlugin(options) {
|
|
|
141
154
|
name: PLUGIN_NAME,
|
|
142
155
|
api: { async transformWorkerModule(code, id, createReference) {
|
|
143
156
|
if (!code.includes("use cache")) return;
|
|
144
|
-
|
|
157
|
+
const secret = referenceSecret;
|
|
158
|
+
if (!manager || !secret) {
|
|
145
159
|
if (findModuleUseCacheDirective(await parseProgramAsync(code))) throw new Error("vinext: cannot compile a \"use cache\" module in a Web Worker without @vitejs/plugin-rsc.");
|
|
146
160
|
return;
|
|
147
161
|
}
|
|
148
|
-
const { ast, moduleDirective, useServerBoundary, reference, secureExportName } = await analyzeModule(manager, code, id);
|
|
162
|
+
const { ast, moduleDirective, useServerBoundary, reference, secureExportName } = await analyzeModule(manager, secret, code, id);
|
|
149
163
|
if (useServerBoundary) return;
|
|
150
164
|
return transformBrowserModule(transforms, code, ast, id, moduleDirective, {
|
|
151
165
|
environmentName: "worker",
|
|
@@ -154,10 +168,17 @@ async function createUseCacheCallablePlugin(options) {
|
|
|
154
168
|
createReference
|
|
155
169
|
})?.output;
|
|
156
170
|
} },
|
|
171
|
+
config(config) {
|
|
172
|
+
return { server: { fs: { deny: getServerActionsKeyCacheFsDeny(config.server?.fs?.deny) } } };
|
|
173
|
+
},
|
|
157
174
|
configResolved(config) {
|
|
158
175
|
const pluginApi = rscModule.getPluginApi(config);
|
|
159
176
|
const hasRscPlugin = config.plugins.some((plugin) => plugin.name === "rsc");
|
|
160
177
|
if (!pluginApi && options.allowMissingRsc && !hasRscPlugin) return;
|
|
178
|
+
referenceSecret ??= createReferenceSecret(options.getEncryptionKey?.() ?? loadOrGenerateServerActionsEncryptionKey({
|
|
179
|
+
root: config.root,
|
|
180
|
+
isBuild: config.command === "build"
|
|
181
|
+
}));
|
|
161
182
|
if (!pluginApi?.manager.serverReferences) throw new Error("vinext: callable use cache requires @vitejs/plugin-rsc 0.5.34 or newer.");
|
|
162
183
|
if (options.allowMissingRsc) {
|
|
163
184
|
const useCacheIndex = config.plugins.findIndex((plugin) => plugin.name === PLUGIN_NAME);
|
|
@@ -172,12 +193,13 @@ async function createUseCacheCallablePlugin(options) {
|
|
|
172
193
|
exclude: [NODE_MODULES_PATH_RE, RESOLVED_VIRTUAL_MODULE_ID_RE]
|
|
173
194
|
} },
|
|
174
195
|
async handler(code, id) {
|
|
175
|
-
|
|
196
|
+
const secret = referenceSecret;
|
|
197
|
+
if (!manager || !secret) return;
|
|
176
198
|
if (!code.includes("use cache")) {
|
|
177
199
|
manager.serverReferences.deleteClaim(PLUGIN_NAME, id);
|
|
178
200
|
return;
|
|
179
201
|
}
|
|
180
|
-
const { ast, moduleDirective, useServerBoundary, reference, secureExportName } = await analyzeModule(manager, code, id);
|
|
202
|
+
const { ast, moduleDirective, useServerBoundary, reference, secureExportName } = await analyzeModule(manager, secret, code, id);
|
|
181
203
|
if (!(this.environment.name === "rsc")) {
|
|
182
204
|
if (useServerBoundary) {
|
|
183
205
|
manager.serverReferences.deleteClaim(PLUGIN_NAME, id);
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Plugin } from "vite";
|
|
2
2
|
//#region src/plugins/worker-image-imports.d.ts
|
|
3
|
+
export declare const WORKER_IMAGE_METADATA_PREFIX = "\0vinext-worker-image-meta:";
|
|
3
4
|
/**
|
|
4
5
|
* Preserve Next.js's StaticImageData shape for dynamic image imports inside
|
|
5
6
|
* Vite worker graphs. Worker builds use their own plugin container, so the
|