UNPKG

@darkobits/sleep

Version:
45 lines (44 loc) 1.43 kB
import ms from "ms"; const MAX_SAFE_VALUE = 2147483647; function parseTime(time) { const parsedTime = typeof time === "number" ? time : ms(time); if (parsedTime === void 0) { throw new Error(`[sleep] Invalid interval: ${time}`); } if (parsedTime > MAX_SAFE_VALUE) { return MAX_SAFE_VALUE; } return parsedTime; } async function sleep(delay, value) { if (value instanceof Error) { await sleep(delay); throw value; } return new Promise((resolve) => { setTimeout(() => resolve(value), parseTime(delay)); }); } sleep.sync = (delay, value) => { if (typeof Atomics === "undefined") throw new TypeError("[sleep.sync] The Atomics API is not available in this environment."); if (typeof Atomics.wait === "undefined") throw new TypeError("[sleep.sync] Atomics.wait is not available in this environment."); if (typeof Int32Array === "undefined") throw new TypeError("[sleep.sync] Int32Array is not available in this environment."); if (typeof SharedArrayBuffer === "undefined") throw new TypeError("[sleep.sync] SharedArrayBuffer is not available in this environment."); Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, parseTime(delay)); if (value instanceof Error) throw value; return value; }; async function rejectAfter(delay, value) { await sleep(delay); throw value; } export { sleep as default, rejectAfter }; //# sourceMappingURL=sleep.js.map