From 2e396c54fdfca4d9f115b0d7424be96d0fb5ab21 Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa Date: Wed, 27 Aug 2025 10:24:32 +0900 Subject: [PATCH 1/5] feat(rsc): add `meta` module option for client references --- packages/plugin-rsc/src/plugin.ts | 11 ++++++++++- packages/plugin-rsc/src/types/index.ts | 6 ++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/packages/plugin-rsc/src/plugin.ts b/packages/plugin-rsc/src/plugin.ts index 4df6fb845..90ba81db7 100644 --- a/packages/plugin-rsc/src/plugin.ts +++ b/packages/plugin-rsc/src/plugin.ts @@ -52,6 +52,7 @@ import { transformScanBuildStrip } from './plugins/scan' import { validateImportPlugin } from './plugins/validate-import' import { vitePluginFindSourceMapURL } from './plugins/find-source-map-url' import { parseCssVirtual, toCssVirtual, parseIdQuery } from './plugins/shared' +import type { PluginModuleMeta } from './types' const isRolldownVite = 'rolldownVersion' in vite @@ -1130,7 +1131,15 @@ function vitePluginUseClient( } const importSource = resolvePackage(`${PKG_NAME}/react/rsc`) output.prepend(`import * as $$ReactServer from "${importSource}";\n`) - return { code: output.toString(), map: { mappings: '' } } + return { + code: output.toString(), + map: { mappings: '' }, + meta: { + rsc: { + type: 'client', + }, + } satisfies PluginModuleMeta, + } }, }, { diff --git a/packages/plugin-rsc/src/types/index.ts b/packages/plugin-rsc/src/types/index.ts index aae722125..aecc3aab2 100644 --- a/packages/plugin-rsc/src/types/index.ts +++ b/packages/plugin-rsc/src/types/index.ts @@ -25,3 +25,9 @@ export interface ServerConsumerManifest { } export type CallServerCallback = (id: string, args: unknown[]) => unknown + +export type PluginModuleMeta = { + rsc: { + type: 'client' | 'server' + } +} From 9076d6c2690439b5e2a82783ba44a11c8a9331bf Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa Date: Wed, 27 Aug 2025 11:53:49 +0900 Subject: [PATCH 2/5] fix: move to group virtual --- packages/plugin-rsc/src/plugin.ts | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/packages/plugin-rsc/src/plugin.ts b/packages/plugin-rsc/src/plugin.ts index 90ba81db7..1148b1d99 100644 --- a/packages/plugin-rsc/src/plugin.ts +++ b/packages/plugin-rsc/src/plugin.ts @@ -52,7 +52,7 @@ import { transformScanBuildStrip } from './plugins/scan' import { validateImportPlugin } from './plugins/validate-import' import { vitePluginFindSourceMapURL } from './plugins/find-source-map-url' import { parseCssVirtual, toCssVirtual, parseIdQuery } from './plugins/shared' -import type { PluginModuleMeta } from './types' +import type { PluginModuleMeta as RscModuleInfoMeta } from './types' const isRolldownVite = 'rolldownVersion' in vite @@ -1134,11 +1134,6 @@ function vitePluginUseClient( return { code: output.toString(), map: { mappings: '' }, - meta: { - rsc: { - type: 'client', - }, - } satisfies PluginModuleMeta, } }, }, @@ -1216,7 +1211,15 @@ function vitePluginUseClient( export const export_${meta.referenceKey} = {${exports}}; ` } - return { code, map: null } + return { + code, + map: null, + meta: { + rsc: { + type: 'client', + }, + } satisfies RscModuleInfoMeta, + } } }, }, From 3269c3694367d274eb90bc05ca0bd6944807a4b5 Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa Date: Wed, 27 Aug 2025 11:58:49 +0900 Subject: [PATCH 3/5] Revert "fix: move to group virtual" This reverts commit 9076d6c2690439b5e2a82783ba44a11c8a9331bf. --- packages/plugin-rsc/src/plugin.ts | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/packages/plugin-rsc/src/plugin.ts b/packages/plugin-rsc/src/plugin.ts index 1148b1d99..90ba81db7 100644 --- a/packages/plugin-rsc/src/plugin.ts +++ b/packages/plugin-rsc/src/plugin.ts @@ -52,7 +52,7 @@ import { transformScanBuildStrip } from './plugins/scan' import { validateImportPlugin } from './plugins/validate-import' import { vitePluginFindSourceMapURL } from './plugins/find-source-map-url' import { parseCssVirtual, toCssVirtual, parseIdQuery } from './plugins/shared' -import type { PluginModuleMeta as RscModuleInfoMeta } from './types' +import type { PluginModuleMeta } from './types' const isRolldownVite = 'rolldownVersion' in vite @@ -1134,6 +1134,11 @@ function vitePluginUseClient( return { code: output.toString(), map: { mappings: '' }, + meta: { + rsc: { + type: 'client', + }, + } satisfies PluginModuleMeta, } }, }, @@ -1211,15 +1216,7 @@ function vitePluginUseClient( export const export_${meta.referenceKey} = {${exports}}; ` } - return { - code, - map: null, - meta: { - rsc: { - type: 'client', - }, - } satisfies RscModuleInfoMeta, - } + return { code, map: null } } }, }, From 10bce2ce53cf9238caa875c663065282262a4889 Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa Date: Wed, 27 Aug 2025 12:00:19 +0900 Subject: [PATCH 4/5] tweak --- packages/plugin-rsc/src/plugin.ts | 10 +++++++++- packages/plugin-rsc/src/types/index.ts | 2 +- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/packages/plugin-rsc/src/plugin.ts b/packages/plugin-rsc/src/plugin.ts index 90ba81db7..42d449a83 100644 --- a/packages/plugin-rsc/src/plugin.ts +++ b/packages/plugin-rsc/src/plugin.ts @@ -1216,7 +1216,15 @@ function vitePluginUseClient( export const export_${meta.referenceKey} = {${exports}}; ` } - return { code, map: null } + return { + code, + map: null, + meta: { + rsc: { + type: 'client-group', + }, + } satisfies PluginModuleMeta, + } } }, }, diff --git a/packages/plugin-rsc/src/types/index.ts b/packages/plugin-rsc/src/types/index.ts index aecc3aab2..70ab7bbb9 100644 --- a/packages/plugin-rsc/src/types/index.ts +++ b/packages/plugin-rsc/src/types/index.ts @@ -28,6 +28,6 @@ export type CallServerCallback = (id: string, args: unknown[]) => unknown export type PluginModuleMeta = { rsc: { - type: 'client' | 'server' + type: 'client' | 'client-group' } } From 934596183539bd1cd49c7c6d9eb5be8ec8c988c9 Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa Date: Wed, 27 Aug 2025 12:04:37 +0900 Subject: [PATCH 5/5] chore: rename --- packages/plugin-rsc/src/plugin.ts | 6 +++--- packages/plugin-rsc/src/types/index.ts | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/plugin-rsc/src/plugin.ts b/packages/plugin-rsc/src/plugin.ts index 42d449a83..56f9698b7 100644 --- a/packages/plugin-rsc/src/plugin.ts +++ b/packages/plugin-rsc/src/plugin.ts @@ -52,7 +52,7 @@ import { transformScanBuildStrip } from './plugins/scan' import { validateImportPlugin } from './plugins/validate-import' import { vitePluginFindSourceMapURL } from './plugins/find-source-map-url' import { parseCssVirtual, toCssVirtual, parseIdQuery } from './plugins/shared' -import type { PluginModuleMeta } from './types' +import type { RscModuleInfoMeta } from './types' const isRolldownVite = 'rolldownVersion' in vite @@ -1138,7 +1138,7 @@ function vitePluginUseClient( rsc: { type: 'client', }, - } satisfies PluginModuleMeta, + } satisfies RscModuleInfoMeta, } }, }, @@ -1223,7 +1223,7 @@ function vitePluginUseClient( rsc: { type: 'client-group', }, - } satisfies PluginModuleMeta, + } satisfies RscModuleInfoMeta, } } }, diff --git a/packages/plugin-rsc/src/types/index.ts b/packages/plugin-rsc/src/types/index.ts index 70ab7bbb9..4b9e1e967 100644 --- a/packages/plugin-rsc/src/types/index.ts +++ b/packages/plugin-rsc/src/types/index.ts @@ -26,7 +26,7 @@ export interface ServerConsumerManifest { export type CallServerCallback = (id: string, args: unknown[]) => unknown -export type PluginModuleMeta = { +export type RscModuleInfoMeta = { rsc: { type: 'client' | 'client-group' }