UNPKG

@maximai/maxim-js

Version:

Maxim AI JS SDK. Visit https://getmaxim.ai for more info.

56 lines 1.48 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.AsyncQueue = void 0; /** * AsyncQueue - Ensures handlers are processed sequentially to prevent race conditions. * Each queued task is executed only after the previous one completes. */ class AsyncQueue { constructor() { this.queue = []; this.processing = false; } /** * Enqueue a task to be executed sequentially. * @param task - An async function to be executed */ enqueue(task) { this.queue.push(task); this.processQueue(); } /** * Process the queue sequentially. */ async processQueue() { if (this.processing) { return; } this.processing = true; while (this.queue.length > 0) { const task = this.queue.shift(); if (task) { try { await task(); } catch (e) { console.warn(`[MaximSDK][AsyncQueue] Error processing task: ${e}`); } } } this.processing = false; } /** * Check if the queue is currently empty and not processing. */ get isIdle() { return !this.processing && this.queue.length === 0; } /** * Get the current queue length. */ get length() { return this.queue.length; } } exports.AsyncQueue = AsyncQueue; //# sourceMappingURL=queue.js.map