UNPKG

astx

Version:

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

36 lines (29 loc) 3.12 kB
export default class AsyncPool { entries = [] callbacks = [] constructor(entries) { this.entries = entries.map((elem) => ({ elem, available: true, })) } get elements() { return this.entries.map((e) => e.elem) } async run(executor) { const entry = this.entries.find((e) => e.available) || (await new Promise((resolve) => this.callbacks.push(resolve))) try { entry.available = false return await executor(entry.elem) } finally { var _this$callbacks$shift entry.available = true ;(_this$callbacks$shift = this.callbacks.shift()) === null || _this$callbacks$shift === void 0 ? void 0 : _this$callbacks$shift(entry) } } } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJBc3luY1Bvb2wiLCJlbnRyaWVzIiwiY2FsbGJhY2tzIiwiY29uc3RydWN0b3IiLCJtYXAiLCJlbGVtIiwiYXZhaWxhYmxlIiwiZWxlbWVudHMiLCJlIiwicnVuIiwiZXhlY3V0b3IiLCJlbnRyeSIsImZpbmQiLCJQcm9taXNlIiwicmVzb2x2ZSIsInB1c2giLCJzaGlmdCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ub2RlL0FzeW5jUG9vbC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJ0eXBlIEVudHJ5PEU+ID0geyBlbGVtOiBFOyBhdmFpbGFibGU6IGJvb2xlYW4gfVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBc3luY1Bvb2w8RT4ge1xuICBlbnRyaWVzOiBFbnRyeTxFPltdID0gW11cbiAgY2FsbGJhY2tzOiAoKGVudHJ5OiBFbnRyeTxFPikgPT4gdm9pZClbXSA9IFtdXG5cbiAgY29uc3RydWN0b3IoZW50cmllczogRVtdKSB7XG4gICAgdGhpcy5lbnRyaWVzID0gZW50cmllcy5tYXAoKGVsZW0pID0+ICh7IGVsZW0sIGF2YWlsYWJsZTogdHJ1ZSB9KSlcbiAgfVxuXG4gIGdldCBlbGVtZW50cygpOiBFW10ge1xuICAgIHJldHVybiB0aGlzLmVudHJpZXMubWFwKChlKSA9PiBlLmVsZW0pXG4gIH1cblxuICBhc3luYyBydW48VD4oZXhlY3V0b3I6IChlbGVtOiBFKSA9PiBQcm9taXNlPFQ+KTogUHJvbWlzZTxUPiB7XG4gICAgY29uc3QgZW50cnkgPVxuICAgICAgdGhpcy5lbnRyaWVzLmZpbmQoKGUpID0+IGUuYXZhaWxhYmxlKSB8fFxuICAgICAgKGF3YWl0IG5ldyBQcm9taXNlPEVudHJ5PEU+PigocmVzb2x2ZSkgPT4gdGhpcy5jYWxsYmFja3MucHVzaChyZXNvbHZlKSkpXG4gICAgdHJ5IHtcbiAgICAgIGVudHJ5LmF2YWlsYWJsZSA9IGZhbHNlXG4gICAgICByZXR1cm4gYXdhaXQgZXhlY3V0b3IoZW50cnkuZWxlbSlcbiAgICB9IGZpbmFsbHkge1xuICAgICAgZW50cnkuYXZhaWxhYmxlID0gdHJ1ZVxuICAgICAgdGhpcy5jYWxsYmFja3Muc2hpZnQoKT8uKGVudHJ5KVxuICAgIH1cbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOztBQUVBLGVBQWUsTUFBTUEsU0FBTixDQUFtQjtFQUNoQ0MsT0FBTyxHQUFlLEVBQWY7RUFDUEMsU0FBUyxHQUFrQyxFQUFsQzs7RUFFVEMsV0FBVyxDQUFDRixPQUFELEVBQWU7SUFDeEIsS0FBS0EsT0FBTCxHQUFlQSxPQUFPLENBQUNHLEdBQVIsQ0FBWSxDQUFDQyxJQUFELE1BQVcsRUFBRUEsSUFBRixFQUFRQyxTQUFTLEVBQUUsSUFBbkIsRUFBWCxDQUFaLENBQWY7RUFDRDs7RUFFVyxJQUFSQyxRQUFRLEdBQVE7SUFDbEIsT0FBTyxLQUFLTixPQUFMLENBQWFHLEdBQWIsQ0FBaUIsQ0FBQ0ksQ0FBRCxLQUFPQSxDQUFDLENBQUNILElBQTFCLENBQVA7RUFDRDs7RUFFUSxNQUFISSxHQUFHLENBQUlDLFFBQUosRUFBbUQ7SUFDMUQsTUFBTUMsS0FBSztJQUNULEtBQUtWLE9BQUwsQ0FBYVcsSUFBYixDQUFrQixDQUFDSixDQUFELEtBQU9BLENBQUMsQ0FBQ0YsU0FBM0I7SUFDQyxNQUFNLElBQUlPLE9BQUosQ0FBc0IsQ0FBQ0MsT0FBRCxLQUFhLEtBQUtaLFNBQUwsQ0FBZWEsSUFBZixDQUFvQkQsT0FBcEIsQ0FBbkMsQ0FEUCxDQURGO0lBR0EsSUFBSTtNQUNGSCxLQUFLLENBQUNMLFNBQU4sR0FBa0IsS0FBbEI7TUFDQSxPQUFPLE1BQU1JLFFBQVEsQ0FBQ0MsS0FBSyxDQUFDTixJQUFQLENBQXJCO0lBQ0QsQ0FIRCxTQUdVO01BQ1JNLEtBQUssQ0FBQ0wsU0FBTixHQUFrQixJQUFsQjtNQUNBLDhCQUFLSixTQUFMLENBQWVjLEtBQWYsa0ZBQXlCTCxLQUF6QjtJQUNEO0VBQ0YsQ0F2QitCIn0=