"use strict"; /* IMPORT */ Object.defineProperty(exports, "__esModule", { value: true }); /* VARIABLES */ const Queues = {}; /* SCHEDULER */ //TODO: Maybe publish this as a standalone package const Scheduler = { next: (id) => { const queue = Queues[id]; if (!queue) return; queue.shift(); const job = queue[0]; if (job) { job(() => Scheduler.next(id)); } else { delete Queues[id]; } }, schedule: (id) => { return new Promise(resolve => { let queue = Queues[id]; if (!queue) queue = Queues[id] = []; queue.push(resolve); if (queue.length > 1) return; resolve(() => Scheduler.next(id)); }); } }; /* EXPORT */ exports.default = Scheduler;