UNPKG

jgb-cli

Version:

```shell npm i -g jgb-cli #全局安装 ```

106 lines 7.36 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = require("tslib"); var PromiseQueue = /** @class */ (function () { function PromiseQueue(callback, options) { if (options === void 0) { options = {}; } this.queue = []; this.processing = new Set(); this.processed = new Set(); this.numRunning = 0; this.runPromise = null; this.resolve = null; this.reject = null; this.process = callback; this.maxConcurrent = options.maxConcurrent || Infinity; this.retry = options.retry !== false; } PromiseQueue.prototype.add = function (job) { var args = []; for (var _i = 1; _i < arguments.length; _i++) { args[_i - 1] = arguments[_i]; } if (this.processing.has(job)) { return; } if (this.runPromise && this.numRunning < this.maxConcurrent) { this.runJob(job, args); } else { this.queue.push([job, args]); } this.processing.add(job); }; PromiseQueue.prototype.run = function () { var _this = this; if (this.runPromise) { return this.runPromise; } var runPromise = new Promise(function (resolve, reject) { _this.resolve = resolve; _this.reject = reject; }); this.runPromise = runPromise; this._next(); return runPromise; }; PromiseQueue.prototype.runJob = function (job, args) { return tslib_1.__awaiter(this, void 0, void 0, function () { var err_1; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: _a.trys.push([0, 2, , 3]); this.numRunning++; return [4 /*yield*/, this.process.apply(this, tslib_1.__spread([job], args))]; case 1: _a.sent(); this.processing.delete(job); this.processed.add(job); this.numRunning--; this._next(); return [3 /*break*/, 3]; case 2: err_1 = _a.sent(); this.numRunning--; if (this.retry) { this.queue.push([job, args]); } else { this.processing.delete(job); } if (this.reject) { this.reject(err_1); } this._reset(); return [3 /*break*/, 3]; case 3: return [2 /*return*/]; } }); }); }; PromiseQueue.prototype._next = function () { if (!this.runPromise) { return; } if (this.queue.length > 0) { while (this.queue.length > 0 && this.numRunning < this.maxConcurrent) { var _a = tslib_1.__read(this.queue.shift(), 2), job = _a[0], args = _a[1]; this.runJob(job, args); } } else if (this.processing.size === 0) { this.resolve(this.processed); this._reset(); } }; PromiseQueue.prototype._reset = function () { this.processed = new Set(); this.runPromise = null; this.resolve = null; this.reject = null; }; return PromiseQueue; }()); exports.default = PromiseQueue; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHJvbWlzZVF1ZXVlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL1Byb21pc2VRdWV1ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQTtJQVlFLHNCQUNFLFFBQXVDLEVBQ3ZDLE9BR007UUFITix3QkFBQSxFQUFBLFlBR007UUFiUixVQUFLLEdBQVUsRUFBRSxDQUFDO1FBQ2xCLGVBQVUsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLGNBQVMsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ3RCLGVBQVUsR0FBRyxDQUFDLENBQUM7UUFDZixlQUFVLEdBQWlCLElBQUksQ0FBQztRQUNoQyxZQUFPLEdBQW9CLElBQUksQ0FBQztRQUNoQyxXQUFNLEdBQW9CLElBQUksQ0FBQztRQVM3QixJQUFJLENBQUMsT0FBTyxHQUFHLFFBQVEsQ0FBQztRQUN4QixJQUFJLENBQUMsYUFBYSxHQUFHLE9BQU8sQ0FBQyxhQUFhLElBQUksUUFBUSxDQUFDO1FBQ3ZELElBQUksQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssS0FBSyxLQUFLLENBQUM7SUFDdkMsQ0FBQztJQUVELDBCQUFHLEdBQUgsVUFBSSxHQUFRO1FBQUUsY0FBYzthQUFkLFVBQWMsRUFBZCxxQkFBYyxFQUFkLElBQWM7WUFBZCw2QkFBYzs7UUFDMUIsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUM1QixPQUFPO1NBQ1I7UUFFRCxJQUFJLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQzNELElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQ3hCO2FBQU07WUFDTCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO1NBQzlC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