MCPcopy
hub / github.com/webpack/webpack / modulesBySourceType

Function modulesBySourceType

lib/ChunkGraph.js:108–134  ·  view source on GitHub ↗
(sourceTypesByModule)

Source from the content-addressed store, hash-verified

106 * @returns {ModulesBySourceType} modules by source type
107 */
108const modulesBySourceType = (sourceTypesByModule) => (set) => {
109 /** @typedef {SortableSet<Module>} ModuleSortableSet */
110 /** @type {Map<SourceType, ModuleSortableSet>} */
111 const map = new Map();
112 for (const module of set) {
113 const sourceTypes =
114 (sourceTypesByModule && sourceTypesByModule.get(module)) ||
115 module.getSourceTypes();
116 for (const sourceType of sourceTypes) {
117 let innerSet = map.get(sourceType);
118 if (innerSet === undefined) {
119 /** @type {ModuleSortableSet} */
120 innerSet = new SortableSet();
121 map.set(sourceType, innerSet);
122 }
123 innerSet.add(module);
124 }
125 }
126 for (const [key, innerSet] of map) {
127 // When all modules have the source type, we reuse the original SortableSet
128 // to benefit from the shared cache (especially for sorting)
129 if (innerSet.size === set.size) {
130 map.set(key, set);
131 }
132 }
133 return map;
134};
135
136/** @typedef {(set: SortableSet<Module>) => Map<string, SortableSet<Module>>} ModulesBySourceType */
137

Callers 2

ChunkGraph.jsFile · 0.85

Calls 4

getMethod · 0.45
getSourceTypesMethod · 0.45
setMethod · 0.45
addMethod · 0.45

Tested by

no test coverage detected