mirror of
https://github.com/soconnor0919/beenpad.git
synced 2026-02-05 00:06:40 -05:00
50 lines
1.9 KiB
JavaScript
50 lines
1.9 KiB
JavaScript
const SAFE_TIMERS_SYMBOL = Symbol("vitest:SAFE_TIMERS");
|
|
function getSafeTimers() {
|
|
const { setTimeout: safeSetTimeout, setInterval: safeSetInterval, clearInterval: safeClearInterval, clearTimeout: safeClearTimeout, setImmediate: safeSetImmediate, clearImmediate: safeClearImmediate, queueMicrotask: safeQueueMicrotask } = globalThis[SAFE_TIMERS_SYMBOL] || globalThis;
|
|
const { nextTick: safeNextTick } = globalThis[SAFE_TIMERS_SYMBOL] || globalThis.process || {};
|
|
return {
|
|
nextTick: safeNextTick,
|
|
setTimeout: safeSetTimeout,
|
|
setInterval: safeSetInterval,
|
|
clearInterval: safeClearInterval,
|
|
clearTimeout: safeClearTimeout,
|
|
setImmediate: safeSetImmediate,
|
|
clearImmediate: safeClearImmediate,
|
|
queueMicrotask: safeQueueMicrotask
|
|
};
|
|
}
|
|
function setSafeTimers() {
|
|
const { setTimeout: safeSetTimeout, setInterval: safeSetInterval, clearInterval: safeClearInterval, clearTimeout: safeClearTimeout, setImmediate: safeSetImmediate, clearImmediate: safeClearImmediate, queueMicrotask: safeQueueMicrotask } = globalThis;
|
|
const { nextTick: safeNextTick } = globalThis.process || {};
|
|
const timers = {
|
|
nextTick: safeNextTick,
|
|
setTimeout: safeSetTimeout,
|
|
setInterval: safeSetInterval,
|
|
clearInterval: safeClearInterval,
|
|
clearTimeout: safeClearTimeout,
|
|
setImmediate: safeSetImmediate,
|
|
clearImmediate: safeClearImmediate,
|
|
queueMicrotask: safeQueueMicrotask
|
|
};
|
|
globalThis[SAFE_TIMERS_SYMBOL] = timers;
|
|
}
|
|
/**
|
|
* Returns a promise that resolves after the specified duration.
|
|
*
|
|
* @param timeout - Delay in milliseconds
|
|
* @param scheduler - Timer function to use, defaults to `setTimeout`. Useful for mocked timers.
|
|
*
|
|
* @example
|
|
* await delay(100)
|
|
*
|
|
* @example
|
|
* // With mocked timers
|
|
* const { setTimeout } = getSafeTimers()
|
|
* await delay(100, setTimeout)
|
|
*/
|
|
function delay(timeout, scheduler = setTimeout) {
|
|
return new Promise((resolve) => scheduler(resolve, timeout));
|
|
}
|
|
|
|
export { delay, getSafeTimers, setSafeTimers };
|