MCPcopy
hub / github.com/webpack/webpack / getInitialModuleChains

Function getInitialModuleChains

lib/wasm-sync/WebAssemblyInInitialChunkError.js:22–84  ·  view source on GitHub ↗
(
	module,
	moduleGraph,
	chunkGraph,
	requestShortener
)

Source from the content-addressed store, hash-verified

20 * @returns {string[]} all chains to the module
21 */
22const getInitialModuleChains = (
23 module,
24 moduleGraph,
25 chunkGraph,
26 requestShortener
27) => {
28 const queue = [
29 { head: module, message: module.readableIdentifier(requestShortener) }
30 ];
31 /** @type {Set<string>} */
32 const results = new Set();
33 /** @type {Set<string>} */
34 const incompleteResults = new Set();
35 /** @type {Set<Module>} */
36 const visitedModules = new Set();
37
38 for (const chain of queue) {
39 const { head, message } = chain;
40 let final = true;
41 /** @type {Set<Module>} */
42 const alreadyReferencedModules = new Set();
43 for (const connection of moduleGraph.getIncomingConnections(head)) {
44 const newHead = connection.originModule;
45 if (newHead) {
46 if (
47 !chunkGraph.getModuleChunks(newHead).some((c) => c.canBeInitial())
48 ) {
49 continue;
50 }
51 final = false;
52 if (alreadyReferencedModules.has(newHead)) continue;
53 alreadyReferencedModules.add(newHead);
54 const moduleName = newHead.readableIdentifier(requestShortener);
55 const detail = connection.explanation
56 ? ` (${connection.explanation})`
57 : "";
58 const newMessage = `${moduleName}${detail} --> ${message}`;
59 if (visitedModules.has(newHead)) {
60 incompleteResults.add(`... --> ${newMessage}`);
61 continue;
62 }
63 visitedModules.add(newHead);
64 queue.push({
65 head: newHead,
66 message: newMessage
67 });
68 } else {
69 final = false;
70 const newMessage = connection.explanation
71 ? `(${connection.explanation}) --> ${message}`
72 : message;
73 results.add(newMessage);
74 }
75 }
76 if (final) {
77 results.add(message);
78 }
79 }

Callers 1

constructorMethod · 0.85

Calls 7

getModuleChunksMethod · 0.80
canBeInitialMethod · 0.80
readableIdentifierMethod · 0.45
hasMethod · 0.45
addMethod · 0.45
pushMethod · 0.45

Tested by

no test coverage detected