MCPcopy
hub / github.com/webpack/tapable / content

Method content

lib/AsyncParallelBailHook.js:11–66  ·  view source on GitHub ↗
({ onError, onResult, onDone })

Source from the content-addressed store, hash-verified

9
10class AsyncParallelBailHookCodeFactory extends HookCodeFactory {
11 content({ onError, onResult, onDone }) {
12 let code = "";
13 code += `var _results = new Array(${this.options.taps.length});\n`;
14 code += "var _checkDone = function() {\n";
15 code += "for(var i = 0; i < _results.length; i++) {\n";
16 code += "var item = _results[i];\n";
17 code += "if(item === undefined) return false;\n";
18 code += "if(item.result !== undefined) {\n";
19 code += onResult("item.result");
20 code += "return true;\n";
21 code += "}\n";
22 code += "if(item.error) {\n";
23 code += onError("item.error");
24 code += "return true;\n";
25 code += "}\n";
26 code += "}\n";
27 code += "return false;\n";
28 code += "}\n";
29 code += this.callTapsParallel({
30 onError: (i, err, done, doneBreak) => {
31 let code = "";
32 code += `if(${i} < _results.length && ((_results.length = ${
33 i + 1
34 }), (_results[${i}] = { error: ${err} }), _checkDone())) {\n`;
35 code += doneBreak(true);
36 code += "} else {\n";
37 code += done();
38 code += "}\n";
39 return code;
40 },
41 onResult: (i, result, done, doneBreak) => {
42 let code = "";
43 code += `if(${i} < _results.length && (${result} !== undefined && (_results.length = ${
44 i + 1
45 }), (_results[${i}] = { result: ${result} }), _checkDone())) {\n`;
46 code += doneBreak(true);
47 code += "} else {\n";
48 code += done();
49 code += "}\n";
50 return code;
51 },
52 onTap: (i, run, done, _doneBreak) => {
53 let code = "";
54 if (i > 0) {
55 code += `if(${i} >= _results.length) {\n`;
56 code += done();
57 code += "} else {\n";
58 }
59 code += run();
60 if (i > 0) code += "}\n";
61 return code;
62 },
63 onDone
64 });
65 return code;
66 }
67}
68

Callers

nothing calls this directly

Calls 2

callTapsParallelMethod · 0.80
doneFunction · 0.50

Tested by

no test coverage detected