Skip to content

Commit eac76d5

Browse files
hi-ogawaclaude
andcommitted
refactor(rsc): merge environmentImportOutputMap into environmentImportMetaMap
Add fileName field to EnvironmentImportMeta instead of tracking output filenames in a separate map. This simplifies the data structure and removes the TODO about merging the maps. Co-Authored-By: Claude Opus 4.5 <[email protected]>
1 parent e8ffe96 commit eac76d5

File tree

2 files changed

+6
-9
lines changed

2 files changed

+6
-9
lines changed

packages/plugin-rsc/src/plugin.ts

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -126,9 +126,6 @@ class RscPluginManager {
126126
serverReferenceMetaMap: Record<string, ServerRerferenceMeta> = {}
127127
serverResourcesMetaMap: Record<string, { key: string }> = {}
128128
environmentImportMetaMap: Record<string, EnvironmentImportMeta> = {}
129-
// TODO: per-environment (can we merge to environmentImportMetaMap?)
130-
// Maps resolvedId to output fileName (populated in generateBundle)
131-
environmentImportOutputMap: Record<string, string> = {}
132129

133130
stabilize(): void {
134131
// sort for stable build
@@ -176,8 +173,7 @@ class RscPluginManager {
176173

177174
let code = 'export default {\n'
178175
for (const [resolvedId, meta] of Object.entries(imports)) {
179-
const outputFileName = this.environmentImportOutputMap[resolvedId]
180-
if (!outputFileName) {
176+
if (!meta.fileName) {
181177
console.warn(
182178
`[vite-rsc] missing output for environment import: ${resolvedId}`,
183179
)
@@ -186,7 +182,7 @@ class RscPluginManager {
186182
const targetOutDir =
187183
this.config.environments[meta.targetEnv]!.build.outDir
188184
const relativePath = normalizeRelativePath(
189-
path.relative(sourceOutDir, path.join(targetOutDir, outputFileName)),
185+
path.relative(sourceOutDir, path.join(targetOutDir, meta.fileName)),
190186
)
191187
code += ` ${JSON.stringify(resolvedId)}: () => import(${JSON.stringify(relativePath)}),\n`
192188
}

packages/plugin-rsc/src/plugins/import-environment.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ export type EnvironmentImportMeta = {
2121
targetEnv: string
2222
sourceEnv: string
2323
specifier: string
24+
fileName?: string
2425
}
2526

2627
export function vitePluginImportEnvironment(
@@ -179,9 +180,9 @@ export function vitePluginImportEnvironment(
179180
// This runs in both RSC and SSR builds to capture all outputs
180181
for (const [fileName, chunk] of Object.entries(bundle)) {
181182
if (chunk.type === 'chunk' && chunk.isEntry && chunk.facadeModuleId) {
182-
const resolvedId = chunk.facadeModuleId
183-
if (resolvedId in manager.environmentImportMetaMap) {
184-
manager.environmentImportOutputMap[resolvedId] = fileName
183+
const meta = manager.environmentImportMetaMap[chunk.facadeModuleId]
184+
if (meta) {
185+
meta.fileName = fileName
185186
}
186187
}
187188
}

0 commit comments

Comments
 (0)