UNPKG

scryfall-client

Version:
58 lines (57 loc) 1.61 kB
import Task from "./task"; var DEFAULT_SCRYFALL_DESIGNATED_WAIT_TIME = 100; var taskCurrentlyInProgress = false; // eslint-disable-next-line @typescript-eslint/no-explicit-any var queue = []; var delayTime = DEFAULT_SCRYFALL_DESIGNATED_WAIT_TIME; export function clearQueue() { queue = []; taskCurrentlyInProgress = false; } function delayForScryfallDesignatedTime() { return new Promise(function (resolve) { setTimeout(resolve, delayTime); }); } export function setTaskDelayTime(time) { delayTime = time; } export function resetTaskDelayTime() { delayTime = DEFAULT_SCRYFALL_DESIGNATED_WAIT_TIME; } function checkForEnquedTasks(recursiveCheck) { if (queue.length > 0) { var nextTask_1 = queue.shift(); if (!nextTask_1) { taskCurrentlyInProgress = false; return; } delayForScryfallDesignatedTime().then(function () { taskCurrentlyInProgress = true; nextTask_1.start().then(function () { checkForEnquedTasks(); }); }); } else if (recursiveCheck) { taskCurrentlyInProgress = false; } else { delayForScryfallDesignatedTime().then(function () { checkForEnquedTasks(true); }); } } export default function enqueTask(task) { var handler = new Task(task); if (!taskCurrentlyInProgress) { taskCurrentlyInProgress = true; handler.start().then(function () { checkForEnquedTasks(); }); } else { queue.push(handler); } return handler.getPromise(); }