createBackwardCompatibleFileToModulesMap() — vite Function Reference
Architecture documentation for the createBackwardCompatibleFileToModulesMap() function in mixedModuleGraph.ts from the vite codebase.
Entity Profile
Dependency Diagram
graph TD f69e7359_4c92_c290_7870_d78b5ebc9060["createBackwardCompatibleFileToModulesMap()"] cd2f5017_5d73_e10a_7c43_22b962517f0c["mixedModuleGraph.ts"] f69e7359_4c92_c290_7870_d78b5ebc9060 -->|defined in| cd2f5017_5d73_e10a_7c43_22b962517f0c 3acdf189_b419_0a41_c750_a3225ac83e3d["constructor()"] 3acdf189_b419_0a41_c750_a3225ac83e3d -->|calls| f69e7359_4c92_c290_7870_d78b5ebc9060 d1f8b612_857c_d18a_b763_92f90bf93d2b["get()"] f69e7359_4c92_c290_7870_d78b5ebc9060 -->|calls| d1f8b612_857c_d18a_b763_92f90bf93d2b 57bd050c_f162_f6af_9491_3a9b3bcd5ca2["set()"] f69e7359_4c92_c290_7870_d78b5ebc9060 -->|calls| 57bd050c_f162_f6af_9491_3a9b3bcd5ca2 d8391f75_fffc_b831_70c9_fb964a1caf82["getBackwardCompatibleModuleNode()"] f69e7359_4c92_c290_7870_d78b5ebc9060 -->|calls| d8391f75_fffc_b831_70c9_fb964a1caf82 b0a4d406_602a_9986_f073_0dd8b083afb9["mapIterator()"] f69e7359_4c92_c290_7870_d78b5ebc9060 -->|calls| b0a4d406_602a_9986_f073_0dd8b083afb9 style f69e7359_4c92_c290_7870_d78b5ebc9060 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
packages/vite/src/node/server/mixedModuleGraph.ts lines 648–741
function createBackwardCompatibleFileToModulesMap(
moduleGraph: ModuleGraph,
): Map<string, Set<ModuleNode>> {
const getFileToModulesMap = (): Map<string, Set<EnvironmentModuleNode>> => {
// A good approximation to the previous logic that returned the union of
// the importedModules and importers from both the browser and server
if (!moduleGraph._ssr.fileToModulesMap.size) {
return moduleGraph._client.fileToModulesMap
}
const map = new Map(moduleGraph._client.fileToModulesMap)
for (const [key, modules] of moduleGraph._ssr.fileToModulesMap) {
const modulesSet = map.get(key)
if (!modulesSet) {
map.set(key, modules)
} else {
for (const ssrModule of modules) {
let hasModule = false
for (const clientModule of modulesSet) {
hasModule ||= clientModule.id === ssrModule.id
if (hasModule) {
break
}
}
if (!hasModule) {
modulesSet.add(ssrModule)
}
}
}
}
return map
}
const getBackwardCompatibleModules = (
modules: Set<EnvironmentModuleNode>,
): Set<ModuleNode> =>
new Set(
[...modules].map((mod) =>
moduleGraph.getBackwardCompatibleModuleNode(mod),
),
)
return {
[Symbol.iterator]() {
return this.entries()
},
get(key) {
const clientModules = moduleGraph._client.fileToModulesMap.get(key)
const ssrModules = moduleGraph._ssr.fileToModulesMap.get(key)
if (!clientModules && !ssrModules) {
return
}
const modules = clientModules ?? new Set<EnvironmentModuleNode>()
if (ssrModules) {
for (const ssrModule of ssrModules) {
if (ssrModule.id) {
let found = false
for (const mod of modules) {
found ||= mod.id === ssrModule.id
if (found) {
break
}
}
if (!found) {
modules.add(ssrModule)
}
}
}
}
return getBackwardCompatibleModules(modules)
},
keys() {
return getFileToModulesMap().keys()
},
values() {
return mapIterator(
getFileToModulesMap().values(),
getBackwardCompatibleModules,
)
},
entries() {
return mapIterator(getFileToModulesMap().entries(), ([key, modules]) => [
key,
Domain
Subdomains
Called By
Source
Frequently Asked Questions
What does createBackwardCompatibleFileToModulesMap() do?
createBackwardCompatibleFileToModulesMap() is a function in the vite codebase, defined in packages/vite/src/node/server/mixedModuleGraph.ts.
Where is createBackwardCompatibleFileToModulesMap() defined?
createBackwardCompatibleFileToModulesMap() is defined in packages/vite/src/node/server/mixedModuleGraph.ts at line 648.
What does createBackwardCompatibleFileToModulesMap() call?
createBackwardCompatibleFileToModulesMap() calls 4 function(s): get, getBackwardCompatibleModuleNode, mapIterator, set.
What calls createBackwardCompatibleFileToModulesMap()?
createBackwardCompatibleFileToModulesMap() is called by 1 function(s): constructor.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free