MCPcopy
hub / github.com/webpack/webpack / getBlockModules

Function getBlockModules

lib/buildChunkGraph.js:345–396  ·  view source on GitHub ↗
(block, runtime)

Source from the content-addressed store, hash-verified

343 * @returns {BlockModulesInFlattenTuples | undefined} block modules in flatten tuples
344 */
345 const getBlockModules = (block, runtime) => {
346 let blockModulesMap = blockModulesRuntimeMap.get(runtime);
347 if (blockModulesMap === undefined) {
348 /** @type {BlockModulesMap} */
349 blockModulesMap = new Map();
350 blockModulesRuntimeMap.set(runtime, blockModulesMap);
351 }
352 let blockModules = blockModulesMap.get(block);
353 if (blockModules !== undefined) return blockModules;
354 const module = /** @type {Module} */ (block.getRootBlock());
355 const memCache = moduleMemCaches && moduleMemCaches.get(module);
356 if (memCache !== undefined) {
357 /** @type {BlockModulesMap} */
358 const map = memCache.provide(
359 "bundleChunkGraph.blockModules",
360 runtime,
361 () => {
362 logger.time("visitModules: prepare");
363 const map = new Map();
364 const source = firstBlockModulesMapByModule.get(module);
365 if (source !== undefined) {
366 deriveBlockModules(module, source, runtime, map);
367 } else {
368 extractBlockModules(module, moduleGraph, runtime, map);
369 }
370 logger.timeAggregate("visitModules: prepare");
371 return map;
372 }
373 );
374 // allow other runtimes to derive from a memCache hit too
375 if (!firstBlockModulesMapByModule.has(module)) {
376 firstBlockModulesMapByModule.set(module, map);
377 }
378 for (const [block, blockModules] of map) {
379 blockModulesMap.set(block, blockModules);
380 }
381 return map.get(block);
382 }
383 logger.time("visitModules: prepare");
384 const source = firstBlockModulesMapByModule.get(module);
385 if (source !== undefined) {
386 deriveBlockModules(module, source, runtime, blockModulesMap);
387 } else {
388 extractBlockModules(module, moduleGraph, runtime, blockModulesMap);
389 firstBlockModulesMapByModule.set(module, blockModulesMap);
390 }
391 blockModules =
392 /** @type {BlockModulesInFlattenTuples} */
393 (blockModulesMap.get(block));
394 logger.timeAggregate("visitModules: prepare");
395 return blockModules;
396 };
397
398 let statProcessedQueueItems = 0;
399 let statProcessedBlocks = 0;

Callers 3

processBlockFunction · 0.85
processEntryBlockFunction · 0.85
processFunction · 0.85

Calls 9

deriveBlockModulesFunction · 0.85
extractBlockModulesFunction · 0.85
getRootBlockMethod · 0.80
timeMethod · 0.80
timeAggregateMethod · 0.80
getMethod · 0.45
setMethod · 0.45
provideMethod · 0.45
hasMethod · 0.45

Tested by

no test coverage detected