UNPKG

advanced-js-kit

Version:

Modern TypeScript utility library with tree-shaking support - Array, String, Number, Network, Sleep, and JWT utilities for JavaScript and TypeScript projects

87 lines (86 loc) 3.04 kB
// src/universal/sleep/index.ts var sleep = (params) => { return new Promise((resolve, reject) => { let delayMs = 0; try { if (!params || Object.keys(params).length === 0) { throw new Error("Sleep parameters cannot be empty"); } if (params.until?.unixTimestamp) { const now = Date.now(); const targetTime = params.until.unixTimestamp * 1e3; delayMs = Math.max(0, targetTime - now); if (delayMs === 0) { resolve(); return; } } else if (params.random) { if (params.random.milliseconds) { const { min, max } = params.random.milliseconds; if (min < 0 || max < 0 || min > max) { throw new Error("Invalid random milliseconds range"); } delayMs = Math.random() * (max - min) + min; } else if (params.random.seconds) { const { min, max } = params.random.seconds; if (min < 0 || max < 0 || min > max) { throw new Error("Invalid random seconds range"); } delayMs = (Math.random() * (max - min) + min) * 1e3; } else if (params.random.minutes) { const { min, max } = params.random.minutes; if (min < 0 || max < 0 || min > max) { throw new Error("Invalid random minutes range"); } delayMs = (Math.random() * (max - min) + min) * 60 * 1e3; } else { throw new Error("Random delay type must be specified (milliseconds, seconds, or minutes)"); } } else { if (params.milliseconds !== void 0) { if (params.milliseconds < 0) { throw new Error("Milliseconds cannot be negative"); } delayMs += params.milliseconds; } if (params.seconds !== void 0) { if (params.seconds < 0) { throw new Error("Seconds cannot be negative"); } delayMs += params.seconds * 1e3; } if (params.minutes !== void 0) { if (params.minutes < 0) { throw new Error("Minutes cannot be negative"); } delayMs += params.minutes * 60 * 1e3; } if (delayMs === 0 && !params.milliseconds && !params.seconds && !params.minutes) { throw new Error("At least one delay parameter must be specified"); } } const MAX_DELAY = 2147483647; if (delayMs > MAX_DELAY) { throw new Error(`Delay too large. Maximum delay is ${MAX_DELAY}ms`); } setTimeout(resolve, Math.floor(delayMs)); } catch (error) { reject(error); } }); }; var sleepMs = (ms) => { return sleep({ milliseconds: ms }); }; var sleepSeconds = (seconds) => { return sleep({ seconds }); }; var sleepMinutes = (minutes) => { return sleep({ minutes }); }; var sleepUntil = (unixTimestamp) => { return sleep({ until: { unixTimestamp } }); }; export { sleep, sleepMinutes, sleepMs, sleepSeconds, sleepUntil }; //# sourceMappingURL=index.js.map //# sourceMappingURL=index.js.map