source: frontend/node_modules/tapable/lib/AsyncParallelBailHook.js

Last change on this file was 9af201e, checked in by MBK <marija.karapandzova@…>, 12 days ago

Fix frontend appearance

  • Property mode set to 100644
File size: 2.3 KB
RevLine 
[9af201e]1/*
2 MIT License http://www.opensource.org/licenses/mit-license.php
3 Author Tobias Koppers @sokra
4*/
5"use strict";
6
7const Hook = require("./Hook");
8const HookCodeFactory = require("./HookCodeFactory");
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
69const factory = new AsyncParallelBailHookCodeFactory();
70
71function COMPILE(options) {
72 factory.setup(this, options);
73 return factory.create(options);
74}
75
76function AsyncParallelBailHook(args = [], name = undefined) {
77 const hook = new Hook(args, name);
78 hook.constructor = AsyncParallelBailHook;
79 hook.compile = COMPILE;
80 hook._call = undefined;
81 hook.call = undefined;
82 return hook;
83}
84
85AsyncParallelBailHook.prototype = null;
86
87module.exports = AsyncParallelBailHook;
Note: See TracBrowser for help on using the repository browser.