frontend/.pnpm-store/v3/files/76/5433e0f1816f18b485a8a125c8328810d0d16402e6e7e35bba96c52e84a3bb4cd8701d7a4cd888422ab9a3cdc9513ecc61bcc92bfb741706e3b3083a7caa6d

32 lines
1.1 KiB
Plaintext

import type { TimerHandle } from './timerHandle';
type SetIntervalFunction = (handler: () => void, timeout?: number, ...args: any[]) => TimerHandle;
type ClearIntervalFunction = (handle: TimerHandle) => void;
interface IntervalProvider {
setInterval: SetIntervalFunction;
clearInterval: ClearIntervalFunction;
delegate:
| {
setInterval: SetIntervalFunction;
clearInterval: ClearIntervalFunction;
}
| undefined;
}
export const intervalProvider: IntervalProvider = {
// When accessing the delegate, use the variable rather than `this` so that
// the functions can be called without being bound to the provider.
setInterval(handler: () => void, timeout?: number, ...args) {
const { delegate } = intervalProvider;
if (delegate?.setInterval) {
return delegate.setInterval(handler, timeout, ...args);
}
return setInterval(handler, timeout, ...args);
},
clearInterval(handle) {
const { delegate } = intervalProvider;
return (delegate?.clearInterval || clearInterval)(handle as any);
},
delegate: undefined,
};