|
|
'use strict';
Object.defineProperty(exports, '__esModule', { value: true }); exports.default = void 0;
function _fakeTimers() { const data = require('@sinonjs/fake-timers');
_fakeTimers = function () { return data; };
return data; }
function _jestMessageUtil() { const data = require('jest-message-util');
_jestMessageUtil = function () { return data; };
return data; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
class FakeTimers { constructor({global, config, maxLoops}) { _defineProperty(this, '_clock', void 0);
_defineProperty(this, '_config', void 0);
_defineProperty(this, '_fakingTime', void 0);
_defineProperty(this, '_global', void 0);
_defineProperty(this, '_fakeTimers', void 0);
_defineProperty(this, '_maxLoops', void 0);
this._global = global; this._config = config; this._maxLoops = maxLoops || 100000; this._fakingTime = false; this._fakeTimers = (0, _fakeTimers().withGlobal)(global); }
clearAllTimers() { if (this._fakingTime) { this._clock.reset(); } }
dispose() { this.useRealTimers(); }
runAllTimers() { if (this._checkFakeTimers()) { this._clock.runAll(); } }
runOnlyPendingTimers() { if (this._checkFakeTimers()) { this._clock.runToLast(); } }
advanceTimersToNextTimer(steps = 1) { if (this._checkFakeTimers()) { for (let i = steps; i > 0; i--) { this._clock.next(); // Fire all timers at this point: https://github.com/sinonjs/fake-timers/issues/250
this._clock.tick(0);
if (this._clock.countTimers() === 0) { break; } } } }
advanceTimersByTime(msToRun) { if (this._checkFakeTimers()) { this._clock.tick(msToRun); } }
runAllTicks() { if (this._checkFakeTimers()) { // @ts-expect-error
this._clock.runMicrotasks(); } }
useRealTimers() { if (this._fakingTime) { this._clock.uninstall();
this._fakingTime = false; } }
useFakeTimers() { if (!this._fakingTime) { const toFake = Object.keys(this._fakeTimers.timers); this._clock = this._fakeTimers.install({ loopLimit: this._maxLoops, now: Date.now(), target: this._global, toFake }); this._fakingTime = true; } }
reset() { if (this._checkFakeTimers()) { const {now} = this._clock;
this._clock.reset();
this._clock.setSystemTime(now); } }
setSystemTime(now) { if (this._checkFakeTimers()) { this._clock.setSystemTime(now); } }
getRealSystemTime() { return Date.now(); }
getTimerCount() { if (this._checkFakeTimers()) { return this._clock.countTimers(); }
return 0; }
_checkFakeTimers() { if (!this._fakingTime) { this._global.console.warn( 'A function to advance timers was called but the timers API is not ' + 'mocked with fake timers. Call `jest.useFakeTimers()` in this test or ' + 'enable fake timers globally by setting `"timers": "fake"` in the ' + 'configuration file\nStack Trace:\n' + (0, _jestMessageUtil().formatStackTrace)( new Error().stack, this._config, { noStackTrace: false } ) ); }
return this._fakingTime; } }
exports.default = FakeTimers;
|