replaceConfusingTypeNames() — vite Function Reference
Architecture documentation for the replaceConfusingTypeNames() function in rolldown.dts.config.ts from the vite codebase.
Entity Profile
Dependency Diagram
graph TD 75c7a0b7_ad83_a9dd_0767_4aa65abcc6c7["replaceConfusingTypeNames()"] c2239521_b59e_589c_03c3_99028d5442bd["rolldown.dts.config.ts"] 75c7a0b7_ad83_a9dd_0767_4aa65abcc6c7 -->|defined in| c2239521_b59e_589c_03c3_99028d5442bd 70373351_ed91_919a_82fa_ef10cf29bd4d["escapeRegex()"] 75c7a0b7_ad83_a9dd_0767_4aa65abcc6c7 -->|calls| 70373351_ed91_919a_82fa_ef10cf29bd4d 75abe907_e9fa_75ac_980e_a78acea4fee9["unique()"] 75c7a0b7_ad83_a9dd_0767_4aa65abcc6c7 -->|calls| 75abe907_e9fa_75ac_980e_a78acea4fee9 style 75c7a0b7_ad83_a9dd_0767_4aa65abcc6c7 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
packages/vite/rolldown.dts.config.ts lines 267–347
function replaceConfusingTypeNames(
this: PluginContext,
chunk: OutputChunk,
importBindings: ImportBindings[],
) {
const isInternalEntry = chunk.fileName.startsWith('internal.')
if (!isInternalEntry) {
for (const modName in identifierReplacements) {
const imp = importBindings.filter((imp) => imp.id === modName)
// Validate that `identifierReplacements` is not outdated if there's no match
if (imp.length === 0) {
this.warn(
`${chunk.fileName} does not import "${modName}" for replacement`,
)
process.exitCode = 1
continue
}
const replacements = identifierReplacements[modName]
for (const id in replacements) {
// Validate that `identifierReplacements` is not outdated if there's no match
if (!imp.some((i) => i.locals.includes(id))) {
this.warn(
`${chunk.fileName} does not import "${id}" from "${modName}" for replacement`,
)
process.exitCode = 1
continue
}
const betterId = replacements[id]
const regexEscapedId = escapeRegex(id)
// If the better id accesses a namespace, the existing `Foo as Foo$1`
// named import cannot be replaced with `Foo as Namespace.Foo`, so we
// pre-emptively remove the whole named import
if (betterId.includes('.')) {
chunk.code = chunk.code.replace(
new RegExp(`\\b\\w+\\b as ${regexEscapedId},?\\s?`),
'',
)
}
chunk.code = chunk.code.replace(
new RegExp(`\\b${regexEscapedId}\\b`, 'g'),
betterId,
)
}
}
}
const identifiers = unique(
Array.from(
chunk.code.matchAll(identifierWithTrailingDollarRE),
(m) => m[0],
),
)
const unreplacedIds = identifiers.filter(
(id) => !ignoreConfusingTypeNames.includes(id),
)
if (unreplacedIds.length) {
const unreplacedStr = unreplacedIds.map((id) => `\n- ${id}`).join('')
this.warn(
`${chunk.fileName} contains confusing identifier names${unreplacedStr}`,
)
process.exitCode = 1
}
if (!isInternalEntry) {
const notUsedConfusingTypeNames = ignoreConfusingTypeNames.filter(
(id) => !identifiers.includes(id),
)
// Validate that `identifierReplacements` is not outdated if there's no match
if (notUsedConfusingTypeNames.length) {
const notUsedStr = notUsedConfusingTypeNames
.map((id) => `\n- ${id}`)
.join('')
this.warn(
`${chunk.fileName} contains unused identifier names${notUsedStr}`,
)
process.exitCode = 1
}
}
}
Domain
Subdomains
Defined In
Calls
Source
Frequently Asked Questions
What does replaceConfusingTypeNames() do?
replaceConfusingTypeNames() is a function in the vite codebase, defined in packages/vite/rolldown.dts.config.ts.
Where is replaceConfusingTypeNames() defined?
replaceConfusingTypeNames() is defined in packages/vite/rolldown.dts.config.ts at line 267.
What does replaceConfusingTypeNames() call?
replaceConfusingTypeNames() calls 2 function(s): escapeRegex, unique.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free