const {
SyncHook,
SyncBailHook,
SyncWaterfallHook,
SyncLoopHook,
AsyncParallelHook,
AsyncParallelBailHook,
AsyncSeriesHook,
AsyncSeriesBailHook,
AsyncSeriesWaterfallHook
} = require("tapable");
console.log(
"1**********************************************************************\n"
);
let sh = new SyncHook(["name", "age"]);
sh.tap("A", () => {
console.log("A");
});
sh.tap(
{
name: "B",
before: "A"
},
() => {
console.log("B");
}
);
sh.tap("C", () => {
console.log("C");
});
sh.call();
/**
function anonymous(name, age) {
"use strict";
var _context;
var _x = this._x;
var _fn0 = _x[0];
_fn0(name, age);
var _fn1 = _x[1];
_fn1(name, age);
var _fn2 = _x[2];
_fn2(name, age);
}
*/
console.log(
"2**********************************************************************\n"
);
let sh2 = new SyncBailHook(["arg1"]);
sh2.tap("A", () => {
console.log("A");
});
sh2.tap("B", () => {
console.log("B");
return 1;
});
sh2.tap("C", () => {
console.log("C");
});
sh2.call();
/**
function anonymous(arg1) {
"use strict";
var _context;
var _x = this._x;
var _fn0 = _x[0];
var _result0 = _fn0(arg1);
if (_result0 !== undefined) {
return _result0;
} else {
var _fn1 = _x[1];
var _result1 = _fn1(arg1);
if (_result1 !== undefined) {
return _result1;
} else {
var _fn2 = _x[2];
var _result2 = _fn2(arg1);
if (_result2 !== undefined) {
return _result2;
} else {
}
}
}
}
*/
console.log(
"3**********************************************************************\n"
);
let sh3 = new SyncWaterfallHook(["arg1"]);
sh3.tap("A", arg => {
console.log("In A:", arg);
return "From A";
});
sh3.tap("B", arg => {
console.log("In B:", arg);
return "From B";
});
sh3.tap("A", arg => {
console.log("In C:", arg);
return "From C";
});
sh3.call("Init");
/**
function anonymous(arg1) {
"use strict";
var _context;
var _x = this._x;
var _fn0 = _x[0];
var _result0 = _fn0(arg1);
if (_result0 !== undefined) {
arg1 = _result0;
}
var _fn1 = _x[1];
var _result1 = _fn1(arg1);
if (_result1 !== undefined) {
arg1 = _result1;
}
var _fn2 = _x[2];
var _result2 = _fn2(arg1);
if (_result2 !== undefined) {
arg1 = _result2;
}
return arg1;
}
*/
console.log(
"4**********************************************************************\n"
);
let sh4 = new SyncLoopHook(["arg1"]);
sh4.tap("A", () => {
let rand = Math.random();
if (rand > 0.5) {
console.log("Bingo A");
return true;
}
});
sh4.tap("B", () => {
let rand = Math.random();
if (rand > 0.5) {
console.log("Bingo B");
return true;
}
});
sh4.call();
/**
function anonymous(arg1) {
"use strict";
var _context;
var _x = this._x;
var _loop;
do {
_loop = false;
var _fn0 = _x[0];
var _result0 = _fn0(arg1);
if (_result0 !== undefined) {
_loop = true;
} else {
var _fn1 = _x[1];
var _result1 = _fn1(arg1);
if (_result1 !== undefined) {
_loop = true;
} else {
if (!_loop) {
}
}
}
} while (_loop);
}
*/
console.log(
"5**********************************************************************\n"
);
let sh5 = new AsyncSeriesHook(["arg1"]);
sh5.tapAsync("A", (arg1, cb) => {
console.log("A +", arg1);
cb();
});
sh5.tapAsync("B", () => {
console.log("B");
});
sh5.callAsync("hx");
/**
function anonymous(arg1, _callback) {
"use strict";
var _context;
var _x = this._x;
function _next0() {
var _fn1 = _x[1];
_fn1(arg1, _err1 => {
if (_err1) {
_callback(_err1);
} else {
_callback();
}
});
}
var _fn0 = _x[0];
_fn0(arg1, _err0 => {
if (_err0) {
_callback(_err0);
} else {
_next0();
}
});
}
*/
console.log(
"6**********************************************************************\n"
);
let sh6 = new AsyncSeriesHook(["arg1"]);
sh6.tapPromise("A", arg1 => {
return new Promise(resolve => {
console.log("A + ", arg1);
resolve();
});
});
sh6.tapPromise("B", arg1 => {
return new Promise(resolve => {
console.log("B + ", arg1);
resolve();
});
});
sh6.promise("hx");
/**
function anonymous(arg1) {
"use strict";
return new Promise((_resolve, _reject) => {
var _sync = true;
function _error(_err) {
if (_sync)
_resolve(
Promise.resolve().then(() => {
throw _err;
})
);
else _reject(_err);
}
var _context;
var _x = this._x;
function _next0() {
var _fn1 = _x[1];
var _hasResult1 = false;
var _promise1 = _fn1(arg1);
if (!_promise1 || !_promise1.then)
throw new Error(
"Tap function (tapPromise) did not return promise (returned " +
_promise1 +
")"
);
_promise1.then(
_result1 => {
_hasResult1 = true;
_resolve();
},
_err1 => {
if (_hasResult1) throw _err1;
_error(_err1);
}
);
}
var _fn0 = _x[0];
var _hasResult0 = false;
var _promise0 = _fn0(arg1);
if (!_promise0 || !_promise0.then)
throw new Error(
"Tap function (tapPromise) did not return promise (returned " +
_promise0 +
")"
);
_promise0.then(
_result0 => {
_hasResult0 = true;
_next0();
},
_err0 => {
if (_hasResult0) throw _err0;
_error(_err0);
}
);
_sync = false;
});
}
*/
console.log(
"7**********************************************************************\n"
);
let sh7 = new AsyncParallelHook(["arg1"]);
sh7.tapPromise("A", arg1 => {
return new Promise(resolve => {
console.log("A + ", arg1);
resolve();
});
});
sh7.tapPromise("B", arg1 => {
return new Promise(resolve => {
console.log("B + ", arg1);
resolve();
});
});
sh7.promise("hx");
/**
function anonymous(arg1) {
"use strict";
return new Promise((_resolve, _reject) => {
var _sync = true;
function _error(_err) {
if (_sync)
_resolve(
Promise.resolve().then(() => {
throw _err;
})
);
else _reject(_err);
}
var _context;
var _x = this._x;
do {
var _counter = 2;
var _done = () => {
_resolve();
};
if (_counter <= 0) break;
var _fn0 = _x[0];
var _hasResult0 = false;
var _promise0 = _fn0(arg1);
if (!_promise0 || !_promise0.then)
throw new Error(
"Tap function (tapPromise) did not return promise (returned " +
_promise0 +
")"
);
_promise0.then(
_result0 => {
_hasResult0 = true;
if (--_counter === 0) _done();
},
_err0 => {
if (_hasResult0) throw _err0;
if (_counter > 0) {
_error(_err0);
_counter = 0;
}
}
);
if (_counter <= 0) break;
var _fn1 = _x[1];
var _hasResult1 = false;
var _promise1 = _fn1(arg1);
if (!_promise1 || !_promise1.then)
throw new Error(
"Tap function (tapPromise) did not return promise (returned " +
_promise1 +
")"
);
_promise1.then(
_result1 => {
_hasResult1 = true;
if (--_counter === 0) _done();
},
_err1 => {
if (_hasResult1) throw _err1;
if (_counter > 0) {
_error(_err1);
_counter = 0;
}
}
);
} while (false);
_sync = false;
});
}
*/