@@ -93,7 +93,8 @@ class RscPluginManager {
9393 buildAssetsManifest : AssetsManifest | undefined
9494 isScanBuild : boolean = false
9595 clientReferenceMetaMap : Record < string , ClientReferenceMeta > = { }
96- clientReferenceGroupMap : Record < string , ClientReferenceMeta [ ] > = { }
96+ clientReferenceGroups : Record < /* group name*/ string , ClientReferenceMeta [ ] > =
97+ { }
9798 serverReferenceMetaMap : Record < string , ServerRerferenceMeta > = { }
9899 serverResourcesMetaMap : Record < string , { key : string } > = { }
99100
@@ -1122,9 +1123,11 @@ function vitePluginUseClient(
11221123 } ,
11231124 load ( id ) {
11241125 if ( id === '\0virtual:vite-rsc/client-references' ) {
1126+ // not used during dev
11251127 if ( this . environment . mode === 'dev' ) {
11261128 return { code : `export default {}` , map : null }
11271129 }
1130+ // no custom chunking needed for scan
11281131 if ( manager . isScanBuild ) {
11291132 let code = ``
11301133 for ( const meta of Object . values ( manager . clientReferenceMetaMap ) ) {
@@ -1133,16 +1136,18 @@ function vitePluginUseClient(
11331136 return { code, map : null }
11341137 }
11351138 let code = ''
1136- manager . clientReferenceGroupMap = { }
1139+ // group client reference modules by `clientChunks` option
1140+ manager . clientReferenceGroups = { }
11371141 for ( const meta of Object . values ( manager . clientReferenceMetaMap ) ) {
11381142 const name =
11391143 useClientPluginOptions . clientChunks ?.( meta . importId ) ||
1144+ // use original module id as name by default
11401145 normalizePath ( path . relative ( manager . config . root , meta . importId ) )
1141- const group = ( manager . clientReferenceGroupMap [ name ] ??= [ ] )
1146+ const group = ( manager . clientReferenceGroups [ name ] ??= [ ] )
11421147 group . push ( meta )
11431148 }
11441149 for ( const [ name , metas ] of Object . entries (
1145- manager . clientReferenceGroupMap ,
1150+ manager . clientReferenceGroups ,
11461151 ) ) {
11471152 const groupVirtual = `virtual:vite-rsc/client-references/group/${ name } `
11481153 for ( const meta of metas ) {
@@ -1157,14 +1162,16 @@ function vitePluginUseClient(
11571162 code = `export default {${ code } };\n`
11581163 return { code, map : null }
11591164 }
1165+ // re-export client reference modules from each group
11601166 if ( id . startsWith ( '\0virtual:vite-rsc/client-references/group/' ) ) {
11611167 const name = id . slice (
11621168 '\0virtual:vite-rsc/client-references/group/' . length ,
11631169 )
1164- const metas = manager . clientReferenceGroupMap [ name ]
1170+ const metas = manager . clientReferenceGroups [ name ]
11651171 assert ( metas , `unknown client reference group: ${ name } ` )
11661172 let code = ``
11671173 for ( const meta of metas ) {
1174+ // pick only rendredExports to tree-shake unused client references
11681175 const exports = meta . renderedExports
11691176 . map ( ( name ) => `${ name } : import_${ meta . referenceKey } .${ name } ,\n` )
11701177 . sort ( )
0 commit comments