MCPcopy
hub / github.com/webpack/webpack / deriveBlockModules

Function deriveBlockModules

lib/buildChunkGraph.js:255–281  ·  view source on GitHub ↗
(module, source, runtime, blockModulesMap)

Source from the content-addressed store, hash-verified

253 * @param {BlockModulesMap} blockModulesMap block modules map to fill
254 */
255const deriveBlockModules = (module, source, runtime, blockModulesMap) => {
256 /** @type {DependenciesBlock[]} */
257 const queue = [module];
258 while (queue.length > 0) {
259 const block = /** @type {DependenciesBlock} */ (queue.pop());
260 const sourceModules =
261 /** @type {BlockModulesInFlattenTuples} */
262 (source.get(block));
263 let target = sourceModules;
264 for (let i = 0, len = sourceModules.length; i < len; i += 3) {
265 const state = getActiveStateOfConnections(
266 /** @type {ModuleGraphConnection[]} */ (sourceModules[i + 2]),
267 runtime
268 );
269 if (target === sourceModules) {
270 if (state === sourceModules[i + 1]) continue;
271 // states diverged, copy (states before i are identical)
272 target = [...sourceModules];
273 }
274 target[i + 1] = state;
275 }
276 blockModulesMap.set(block, target);
277 for (const b of block.blocks) {
278 queue.push(b);
279 }
280 }
281};
282
283/**
284 * Processes the provided logger.

Callers 1

getBlockModulesFunction · 0.85

Calls 5

popMethod · 0.80
getMethod · 0.45
setMethod · 0.45
pushMethod · 0.45

Tested by

no test coverage detected