UNPKG

astx

Version:

super powerful structural search and replace for JavaScript and TypeScript to automate your refactoring

103 lines (82 loc) 3.05 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator")); var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var AsyncPool = /*#__PURE__*/function () { function AsyncPool(entries) { (0, _classCallCheck2["default"])(this, AsyncPool); (0, _defineProperty2["default"])(this, "entries", []); (0, _defineProperty2["default"])(this, "callbacks", []); this.entries = entries.map(function (elem) { return { elem: elem, available: true }; }); } (0, _createClass2["default"])(AsyncPool, [{ key: "elements", get: function get() { return this.entries.map(function (e) { return e.elem; }); } }, { key: "run", value: function () { var _run = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(executor) { var _this = this; var entry, _this$callbacks$shift; return _regenerator["default"].wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: _context.t0 = this.entries.find(function (e) { return e.available; }); if (_context.t0) { _context.next = 5; break; } _context.next = 4; return new Promise(function (resolve) { return _this.callbacks.push(resolve); }); case 4: _context.t0 = _context.sent; case 5: entry = _context.t0; _context.prev = 6; entry.available = false; _context.next = 10; return executor(entry.elem); case 10: return _context.abrupt("return", _context.sent); case 11: _context.prev = 11; entry.available = true; (_this$callbacks$shift = this.callbacks.shift()) === null || _this$callbacks$shift === void 0 ? void 0 : _this$callbacks$shift(entry); return _context.finish(11); case 15: case "end": return _context.stop(); } } }, _callee, this, [[6,, 11, 15]]); })); function run(_x) { return _run.apply(this, arguments); } return run; }() }]); return AsyncPool; }(); exports["default"] = AsyncPool;