| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 | "use strict";var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/classCallCheck"));var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/createClass"));var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/defineProperty"));var _promiseUtils = require("./promiseUtils");/** * @flow *//*:: type Task = {  task: () => Promise,  _completion: Promise,};*/var TaskQueue = /*#__PURE__*/function () {  function TaskQueue() {    (0, _classCallCheck2.default)(this, TaskQueue);    (0, _defineProperty2.default)(this, "queue", void 0);    this.queue = [];  }  (0, _createClass2.default)(TaskQueue, [{    key: "enqueue",    value: function (task /*: () => Promise*/) /*: Promise*/{      var _this = this;      var taskComplete = new _promiseUtils.resolvingPromise();      this.queue.push({        task: task,        _completion: taskComplete      });      if (this.queue.length === 1) {        task().then(function () {          _this._dequeue();          taskComplete.resolve();        }, function (error) {          _this._dequeue();          taskComplete.reject(error);        });      }      return taskComplete;    }  }, {    key: "_dequeue",    value: function () {      var _this2 = this;      this.queue.shift();      if (this.queue.length) {        var next = this.queue[0];        next.task().then(function () {          _this2._dequeue();          next._completion.resolve();        }, function (error) {          _this2._dequeue();          next._completion.reject(error);        });      }    }  }]);  return TaskQueue;}();module.exports = TaskQueue;
 |