UNPKG

@hot-labs/near-connect

Version:

![ezgif-26d74832f88c3c](https://github.com/user-attachments/assets/c4422057-38bb-4cd9-8bd0-568e29f46280)

48 lines 1.2 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.AutoQueue = exports.Queue = void 0; class Queue { _items = []; enqueue(item) { this._items.push(item); } dequeue() { return this._items.shift(); } get size() { return this._items.length; } } exports.Queue = Queue; class AutoQueue extends Queue { _pendingPromise = false; enqueue(action) { return new Promise((resolve, reject) => { super.enqueue({ action, resolve, reject }); this.dequeue(); }); } async dequeue() { if (this._pendingPromise) return false; const item = super.dequeue(); if (!item) return false; try { this._pendingPromise = true; const payload = await item.action(this); this._pendingPromise = false; item.resolve(payload); } catch (e) { this._pendingPromise = false; item.reject(e); } finally { void this.dequeue(); } return true; } } exports.AutoQueue = AutoQueue; //# sourceMappingURL=queue.js.map