{"version":3,"file":"fake-timers-src.cjs","sources":["../../../../../../node_modules/@sinonjs/fake-timers/src/fake-timers-src.js"],"sourcesContent":["\"use strict\";\n\nconst globalObject = require(\"@sinonjs/commons\").global;\nlet timersModule, timersPromisesModule;\nif (typeof require === \"function\" && typeof module === \"object\") {\n    try {\n        timersModule = require(\"timers\");\n    } catch (e) {\n        // ignored\n    }\n    try {\n        timersPromisesModule = require(\"timers/promises\");\n    } catch (e) {\n        // ignored\n    }\n}\n\n/**\n * @typedef {object} IdleDeadline\n * @property {boolean} didTimeout - whether or not the callback was called before reaching the optional timeout\n * @property {function():number} timeRemaining - a floating-point value providing an estimate of the number of milliseconds remaining in the current idle period\n */\n\n/**\n * Queues a function to be called during a browser's idle periods\n * @callback RequestIdleCallback\n * @param {function(IdleDeadline)} callback\n * @param {{timeout: number}} options - an options object\n * @returns {number} the id\n */\n\n/**\n * @callback NextTick\n * @param {VoidVarArgsFunc} callback - the callback to run\n * @param {...*} args - optional arguments to call the callback with\n * @returns {void}\n */\n\n/**\n * @callback SetImmediate\n * @param {VoidVarArgsFunc} callback - the callback to run\n * @param {...*} args - optional arguments to call the callback with\n * @returns {NodeImmediate}\n */\n\n/**\n * @callback VoidVarArgsFunc\n * @param {...*} callback - the callback to run\n * @returns {void}\n */\n\n/**\n * @typedef RequestAnimationFrame\n * @property {function(number):void} requestAnimationFrame\n * @returns {number} - the id\n */\n\n/**\n * @typedef Performance\n * @property {function(): number} now\n */\n\n/* eslint-disable jsdoc/require-property-description */\n/**\n * @typedef {object} Clock\n * @property {number} now - the current time\n * @property {Date} Date - the Date constructor\n * @property {number} loopLimit - the maximum number of timers before assuming an infinite loop\n * @property {RequestIdleCallback} requestIdleCallback\n * @property {function(number):void} cancelIdleCallback\n * @property {setTimeout} setTimeout\n * @property {clearTimeout} clearTimeout\n * @property {NextTick} nextTick\n * @property {queueMicrotask} queueMicrotask\n * @property {setInterval} setInterval\n * @property {clearInterval} clearInterval\n * @property {SetImmediate} setImmediate\n * @property {function(NodeImmediate):void} clearImmediate\n * @property {function():number} countTimers\n * @property {RequestAnimationFrame} requestAnimationFrame\n * @property {function(number):void} cancelAnimationFrame\n * @property {function():void} runMicrotasks\n * @property {function(string | number): number} tick\n * @property {function(string | number): Promise<number>} tickAsync\n * @property {function(): number} next\n * @property {function(): Promise<number>} nextAsync\n * @property {function(): number} runAll\n * @property {function(): number} runToFrame\n * @property {function(): Promise<number>} runAllAsync\n * @property {function(): number} runToLast\n * @property {function(): Promise<number>} runToLastAsync\n * @property {function(): void} reset\n * @property {function(number | Date): void} setSystemTime\n * @property {function(number): void} jump\n * @property {Performance} performance\n * @property {function(number[]): number[]} hrtime - process.hrtime (legacy)\n * @property {function(): void} uninstall Uninstall the clock.\n * @property {Function[]} methods - the methods that are faked\n * @property {boolean} [shouldClearNativeTimers] inherited from config\n * @property {{methodName:string, original:any}[] | undefined} timersModuleMethods\n * @property {{methodName:string, original:any}[] | undefined} timersPromisesModuleMethods\n * @property {Map<function(): void, AbortSignal>} abortListenerMap\n */\n/* eslint-enable jsdoc/require-property-description */\n\n/**\n * Configuration object for the `install` method.\n * @typedef {object} Config\n * @property {number|Date} [now] a number (in milliseconds) or a Date object (default epoch)\n * @property {string[]} [toFake] names of the methods that should be faked.\n * @property {number} [loopLimit] the maximum number of timers that will be run when calling runAll()\n * @property {boolean} [shouldAdvanceTime] tells FakeTimers to increment mocked time automatically (default false)\n * @property {number} [advanceTimeDelta] increment mocked time every <<advanceTimeDelta>> ms (default: 20ms)\n * @property {boolean} [shouldClearNativeTimers] forwards clear timer calls to native functions if they are not fakes (default: false)\n * @property {boolean} [ignoreMissingTimers] default is false, meaning asking to fake timers that are not present will throw an error\n */\n\n/* eslint-disable jsdoc/require-property-description */\n/**\n * The internal structure to describe a scheduled fake timer\n * @typedef {object} Timer\n * @property {Function} func\n * @property {*[]} args\n * @property {number} delay\n * @property {number} callAt\n * @property {number} createdAt\n * @property {boolean} immediate\n * @property {number} id\n * @property {Error} [error]\n */\n\n/**\n * A Node timer\n * @typedef {object} NodeImmediate\n * @property {function(): boolean} hasRef\n * @property {function(): NodeImmediate} ref\n * @property {function(): NodeImmediate} unref\n */\n/* eslint-enable jsdoc/require-property-description */\n\n/* eslint-disable complexity */\n\n/**\n * Mocks available features in the specified global namespace.\n * @param {*} _global Namespace to mock (e.g. `window`)\n * @returns {FakeTimers}\n */\nfunction withGlobal(_global) {\n    const maxTimeout = Math.pow(2, 31) - 1; //see https://heycam.github.io/webidl/#abstract-opdef-converttoint\n    const idCounterStart = 1e12; // arbitrarily large number to avoid collisions with native timer IDs\n    const NOOP = function () {\n        return undefined;\n    };\n    const NOOP_ARRAY = function () {\n        return [];\n    };\n    const isPresent = {};\n    let timeoutResult,\n        addTimerReturnsObject = false;\n\n    if (_global.setTimeout) {\n        isPresent.setTimeout = true;\n        timeoutResult = _global.setTimeout(NOOP, 0);\n        addTimerReturnsObject = typeof timeoutResult === \"object\";\n    }\n    isPresent.clearTimeout = Boolean(_global.clearTimeout);\n    isPresent.setInterval = Boolean(_global.setInterval);\n    isPresent.clearInterval = Boolean(_global.clearInterval);\n    isPresent.hrtime =\n        _global.process && typeof _global.process.hrtime === \"function\";\n    isPresent.hrtimeBigint =\n        isPresent.hrtime && typeof _global.process.hrtime.bigint === \"function\";\n    isPresent.nextTick =\n        _global.process && typeof _global.process.nextTick === \"function\";\n    const utilPromisify = _global.process && require(\"util\").promisify;\n    isPresent.performance =\n        _global.performance && typeof _global.performance.now === \"function\";\n    const hasPerformancePrototype =\n        _global.Performance &&\n        (typeof _global.Performance).match(/^(function|object)$/);\n    const hasPerformanceConstructorPrototype =\n        _global.performance &&\n        _global.performance.constructor &&\n        _global.performance.constructor.prototype;\n    isPresent.queueMicrotask = _global.hasOwnProperty(\"queueMicrotask\");\n    isPresent.requestAnimationFrame =\n        _global.requestAnimationFrame &&\n        typeof _global.requestAnimationFrame === \"function\";\n    isPresent.cancelAnimationFrame =\n        _global.cancelAnimationFrame &&\n        typeof _global.cancelAnimationFrame === \"function\";\n    isPresent.requestIdleCallback =\n        _global.requestIdleCallback &&\n        typeof _global.requestIdleCallback === \"function\";\n    isPresent.cancelIdleCallbackPresent =\n        _global.cancelIdleCallback &&\n        typeof _global.cancelIdleCallback === \"function\";\n    isPresent.setImmediate =\n        _global.setImmediate && typeof _global.setImmediate === \"function\";\n    isPresent.clearImmediate =\n        _global.clearImmediate && typeof _global.clearImmediate === \"function\";\n    isPresent.Intl = _global.Intl && typeof _global.Intl === \"object\";\n\n    if (_global.clearTimeout) {\n        _global.clearTimeout(timeoutResult);\n    }\n\n    const NativeDate = _global.Date;\n    const NativeIntl = isPresent.Intl\n        ? Object.defineProperties(\n              Object.create(null),\n              Object.getOwnPropertyDescriptors(_global.Intl),\n          )\n        : undefined;\n    let uniqueTimerId = idCounterStart;\n\n    if (NativeDate === undefined) {\n        throw new Error(\n            \"The global scope doesn't have a `Date` object\" +\n                \" (see https://github.com/sinonjs/sinon/issues/1852#issuecomment-419622780)\",\n        );\n    }\n    isPresent.Date = true;\n\n    /**\n     * The PerformanceEntry object encapsulates a single performance metric\n     * that is part of the browser's performance timeline.\n     *\n     * This is an object returned by the `mark` and `measure` methods on the Performance prototype\n     */\n    class FakePerformanceEntry {\n        constructor(name, entryType, startTime, duration) {\n            this.name = name;\n            this.entryType = entryType;\n            this.startTime = startTime;\n            this.duration = duration;\n        }\n\n        toJSON() {\n            return JSON.stringify({ ...this });\n        }\n    }\n\n    /**\n     * @param {number} num\n     * @returns {boolean}\n     */\n    function isNumberFinite(num) {\n        if (Number.isFinite) {\n            return Number.isFinite(num);\n        }\n\n        return isFinite(num);\n    }\n\n    let isNearInfiniteLimit = false;\n\n    /**\n     * @param {Clock} clock\n     * @param {number} i\n     */\n    function checkIsNearInfiniteLimit(clock, i) {\n        if (clock.loopLimit && i === clock.loopLimit - 1) {\n            isNearInfiniteLimit = true;\n        }\n    }\n\n    /**\n     *\n     */\n    function resetIsNearInfiniteLimit() {\n        isNearInfiniteLimit = false;\n    }\n\n    /**\n     * Parse strings like \"01:10:00\" (meaning 1 hour, 10 minutes, 0 seconds) into\n     * number of milliseconds. This is used to support human-readable strings passed\n     * to clock.tick()\n     * @param {string} str\n     * @returns {number}\n     */\n    function parseTime(str) {\n        if (!str) {\n            return 0;\n        }\n\n        const strings = str.split(\":\");\n        const l = strings.length;\n        let i = l;\n        let ms = 0;\n        let parsed;\n\n        if (l > 3 || !/^(\\d\\d:){0,2}\\d\\d?$/.test(str)) {\n            throw new Error(\n                \"tick only understands numbers, 'm:s' and 'h:m:s'. Each part must be two digits\",\n            );\n        }\n\n        while (i--) {\n            parsed = parseInt(strings[i], 10);\n\n            if (parsed >= 60) {\n                throw new Error(`Invalid time ${str}`);\n            }\n\n            ms += parsed * Math.pow(60, l - i - 1);\n        }\n\n        return ms * 1000;\n    }\n\n    /**\n     * Get the decimal part of the millisecond value as nanoseconds\n     * @param {number} msFloat the number of milliseconds\n     * @returns {number} an integer number of nanoseconds in the range [0,1e6)\n     *\n     * Example: nanoRemainer(123.456789) -> 456789\n     */\n    function nanoRemainder(msFloat) {\n        const modulo = 1e6;\n        const remainder = (msFloat * 1e6) % modulo;\n        const positiveRemainder =\n            remainder < 0 ? remainder + modulo : remainder;\n\n        return Math.floor(positiveRemainder);\n    }\n\n    /**\n     * Used to grok the `now` parameter to createClock.\n     * @param {Date|number} epoch the system time\n     * @returns {number}\n     */\n    function getEpoch(epoch) {\n        if (!epoch) {\n            return 0;\n        }\n        if (typeof epoch.getTime === \"function\") {\n            return epoch.getTime();\n        }\n        if (typeof epoch === \"number\") {\n            return epoch;\n        }\n        throw new TypeError(\"now should be milliseconds since UNIX epoch\");\n    }\n\n    /**\n     * @param {number} from\n     * @param {number} to\n     * @param {Timer} timer\n     * @returns {boolean}\n     */\n    function inRange(from, to, timer) {\n        return timer && timer.callAt >= from && timer.callAt <= to;\n    }\n\n    /**\n     * @param {Clock} clock\n     * @param {Timer} job\n     */\n    function getInfiniteLoopError(clock, job) {\n        const infiniteLoopError = new Error(\n            `Aborting after running ${clock.loopLimit} timers, assuming an infinite loop!`,\n        );\n\n        if (!job.error) {\n            return infiniteLoopError;\n        }\n\n        // pattern never matched in Node\n        const computedTargetPattern = /target\\.*[<|(|[].*?[>|\\]|)]\\s*/;\n        let clockMethodPattern = new RegExp(\n            String(Object.keys(clock).join(\"|\")),\n        );\n\n        if (addTimerReturnsObject) {\n            // node.js environment\n            clockMethodPattern = new RegExp(\n                `\\\\s+at (Object\\\\.)?(?:${Object.keys(clock).join(\"|\")})\\\\s+`,\n            );\n        }\n\n        let matchedLineIndex = -1;\n        job.error.stack.split(\"\\n\").some(function (line, i) {\n            // If we've matched a computed target line (e.g. setTimeout) then we\n            // don't need to look any further. Return true to stop iterating.\n            const matchedComputedTarget = line.match(computedTargetPattern);\n            /* istanbul ignore if */\n            if (matchedComputedTarget) {\n                matchedLineIndex = i;\n                return true;\n            }\n\n            // If we've matched a clock method line, then there may still be\n            // others further down the trace. Return false to keep iterating.\n            const matchedClockMethod = line.match(clockMethodPattern);\n            if (matchedClockMethod) {\n                matchedLineIndex = i;\n                return false;\n            }\n\n            // If we haven't matched anything on this line, but we matched\n            // previously and set the matched line index, then we can stop.\n            // If we haven't matched previously, then we should keep iterating.\n            return matchedLineIndex >= 0;\n        });\n\n        const stack = `${infiniteLoopError}\\n${job.type || \"Microtask\"} - ${\n            job.func.name || \"anonymous\"\n        }\\n${job.error.stack\n            .split(\"\\n\")\n            .slice(matchedLineIndex + 1)\n            .join(\"\\n\")}`;\n\n        try {\n            Object.defineProperty(infiniteLoopError, \"stack\", {\n                value: stack,\n            });\n        } catch (e) {\n            // noop\n        }\n\n        return infiniteLoopError;\n    }\n\n    //eslint-disable-next-line jsdoc/require-jsdoc\n    function createDate() {\n        class ClockDate extends NativeDate {\n            /**\n             * @param {number} year\n             * @param {number} month\n             * @param {number} date\n             * @param {number} hour\n             * @param {number} minute\n             * @param {number} second\n             * @param {number} ms\n             * @returns void\n             */\n            // eslint-disable-next-line no-unused-vars\n            constructor(year, month, date, hour, minute, second, ms) {\n                // Defensive and verbose to avoid potential harm in passing\n                // explicit undefined when user does not pass argument\n                if (arguments.length === 0) {\n                    super(ClockDate.clock.now);\n                } else {\n                    super(...arguments);\n                }\n\n                // ensures identity checks using the constructor prop still works\n                // this should have no other functional effect\n                Object.defineProperty(this, \"constructor\", {\n                    value: NativeDate,\n                    enumerable: false,\n                });\n            }\n\n            static [Symbol.hasInstance](instance) {\n                return instance instanceof NativeDate;\n            }\n        }\n\n        ClockDate.isFake = true;\n\n        if (NativeDate.now) {\n            ClockDate.now = function now() {\n                return ClockDate.clock.now;\n            };\n        }\n\n        if (NativeDate.toSource) {\n            ClockDate.toSource = function toSource() {\n                return NativeDate.toSource();\n            };\n        }\n\n        ClockDate.toString = function toString() {\n            return NativeDate.toString();\n        };\n\n        // noinspection UnnecessaryLocalVariableJS\n        /**\n         * A normal Class constructor cannot be called without `new`, but Date can, so we need\n         * to wrap it in a Proxy in order to ensure this functionality of Date is kept intact\n         * @type {ClockDate}\n         */\n        const ClockDateProxy = new Proxy(ClockDate, {\n            // handler for [[Call]] invocations (i.e. not using `new`)\n            apply() {\n                // the Date constructor called as a function, ref Ecma-262 Edition 5.1, section 15.9.2.\n                // This remains so in the 10th edition of 2019 as well.\n                if (this instanceof ClockDate) {\n                    throw new TypeError(\n                        \"A Proxy should only capture `new` calls with the `construct` handler. This is not supposed to be possible, so check the logic.\",\n                    );\n                }\n\n                return new NativeDate(ClockDate.clock.now).toString();\n            },\n        });\n\n        return ClockDateProxy;\n    }\n\n    /**\n     * Mirror Intl by default on our fake implementation\n     *\n     * Most of the properties are the original native ones,\n     * but we need to take control of those that have a\n     * dependency on the current clock.\n     * @returns {object} the partly fake Intl implementation\n     */\n    function createIntl() {\n        const ClockIntl = {};\n        /*\n         * All properties of Intl are non-enumerable, so we need\n         * to do a bit of work to get them out.\n         */\n        Object.getOwnPropertyNames(NativeIntl).forEach(\n            (property) => (ClockIntl[property] = NativeIntl[property]),\n        );\n\n        ClockIntl.DateTimeFormat = function (...args) {\n            const realFormatter = new NativeIntl.DateTimeFormat(...args);\n            const formatter = {};\n\n            [\"formatRange\", \"formatRangeToParts\", \"resolvedOptions\"].forEach(\n                (method) => {\n                    formatter[method] =\n                        realFormatter[method].bind(realFormatter);\n                },\n            );\n\n            [\"format\", \"formatToParts\"].forEach((method) => {\n                formatter[method] = function (date) {\n                    return realFormatter[method](date || ClockIntl.clock.now);\n                };\n            });\n\n            return formatter;\n        };\n\n        ClockIntl.DateTimeFormat.prototype = Object.create(\n            NativeIntl.DateTimeFormat.prototype,\n        );\n\n        ClockIntl.DateTimeFormat.supportedLocalesOf =\n            NativeIntl.DateTimeFormat.supportedLocalesOf;\n\n        return ClockIntl;\n    }\n\n    //eslint-disable-next-line jsdoc/require-jsdoc\n    function enqueueJob(clock, job) {\n        // enqueues a microtick-deferred task - ecma262/#sec-enqueuejob\n        if (!clock.jobs) {\n            clock.jobs = [];\n        }\n        clock.jobs.push(job);\n    }\n\n    //eslint-disable-next-line jsdoc/require-jsdoc\n    function runJobs(clock) {\n        // runs all microtick-deferred tasks - ecma262/#sec-runjobs\n        if (!clock.jobs) {\n            return;\n        }\n        for (let i = 0; i < clock.jobs.length; i++) {\n            const job = clock.jobs[i];\n            job.func.apply(null, job.args);\n\n            checkIsNearInfiniteLimit(clock, i);\n            if (clock.loopLimit && i > clock.loopLimit) {\n                throw getInfiniteLoopError(clock, job);\n            }\n        }\n        resetIsNearInfiniteLimit();\n        clock.jobs = [];\n    }\n\n    /**\n     * @param {Clock} clock\n     * @param {Timer} timer\n     * @returns {number} id of the created timer\n     */\n    function addTimer(clock, timer) {\n        if (timer.func === undefined) {\n            throw new Error(\"Callback must be provided to timer calls\");\n        }\n\n        if (addTimerReturnsObject) {\n            // Node.js environment\n            if (typeof timer.func !== \"function\") {\n                throw new TypeError(\n                    `[ERR_INVALID_CALLBACK]: Callback must be a function. Received ${\n                        timer.func\n                    } of type ${typeof timer.func}`,\n                );\n            }\n        }\n\n        if (isNearInfiniteLimit) {\n            timer.error = new Error();\n        }\n\n        timer.type = timer.immediate ? \"Immediate\" : \"Timeout\";\n\n        if (timer.hasOwnProperty(\"delay\")) {\n            if (typeof timer.delay !== \"number\") {\n                timer.delay = parseInt(timer.delay, 10);\n            }\n\n            if (!isNumberFinite(timer.delay)) {\n                timer.delay = 0;\n            }\n            timer.delay = timer.delay > maxTimeout ? 1 : timer.delay;\n            timer.delay = Math.max(0, timer.delay);\n        }\n\n        if (timer.hasOwnProperty(\"interval\")) {\n            timer.type = \"Interval\";\n            timer.interval = timer.interval > maxTimeout ? 1 : timer.interval;\n        }\n\n        if (timer.hasOwnProperty(\"animation\")) {\n            timer.type = \"AnimationFrame\";\n            timer.animation = true;\n        }\n\n        if (timer.hasOwnProperty(\"idleCallback\")) {\n            timer.type = \"IdleCallback\";\n            timer.idleCallback = true;\n        }\n\n        if (!clock.timers) {\n            clock.timers = {};\n        }\n\n        timer.id = uniqueTimerId++;\n        timer.createdAt = clock.now;\n        timer.callAt =\n            clock.now + (parseInt(timer.delay) || (clock.duringTick ? 1 : 0));\n\n        clock.timers[timer.id] = timer;\n\n        if (addTimerReturnsObject) {\n            const res = {\n                refed: true,\n                ref: function () {\n                    this.refed = true;\n                    return res;\n                },\n                unref: function () {\n                    this.refed = false;\n                    return res;\n                },\n                hasRef: function () {\n                    return this.refed;\n                },\n                refresh: function () {\n                    timer.callAt =\n                        clock.now +\n                        (parseInt(timer.delay) || (clock.duringTick ? 1 : 0));\n\n                    // it _might_ have been removed, but if not the assignment is perfectly fine\n                    clock.timers[timer.id] = timer;\n\n                    return res;\n                },\n                [Symbol.toPrimitive]: function () {\n                    return timer.id;\n                },\n            };\n            return res;\n        }\n\n        return timer.id;\n    }\n\n    /* eslint consistent-return: \"off\" */\n    /**\n     * Timer comparitor\n     * @param {Timer} a\n     * @param {Timer} b\n     * @returns {number}\n     */\n    function compareTimers(a, b) {\n        // Sort first by absolute timing\n        if (a.callAt < b.callAt) {\n            return -1;\n        }\n        if (a.callAt > b.callAt) {\n            return 1;\n        }\n\n        // Sort next by immediate, immediate timers take precedence\n        if (a.immediate && !b.immediate) {\n            return -1;\n        }\n        if (!a.immediate && b.immediate) {\n            return 1;\n        }\n\n        // Sort next by creation time, earlier-created timers take precedence\n        if (a.createdAt < b.createdAt) {\n            return -1;\n        }\n        if (a.createdAt > b.createdAt) {\n            return 1;\n        }\n\n        // Sort next by id, lower-id timers take precedence\n        if (a.id < b.id) {\n            return -1;\n        }\n        if (a.id > b.id) {\n            return 1;\n        }\n\n        // As timer ids are unique, no fallback `0` is necessary\n    }\n\n    /**\n     * @param {Clock} clock\n     * @param {number} from\n     * @param {number} to\n     * @returns {Timer}\n     */\n    function firstTimerInRange(clock, from, to) {\n        const timers = clock.timers;\n        let timer = null;\n        let id, isInRange;\n\n        for (id in timers) {\n            if (timers.hasOwnProperty(id)) {\n                isInRange = inRange(from, to, timers[id]);\n\n                if (\n                    isInRange &&\n                    (!timer || compareTimers(timer, timers[id]) === 1)\n                ) {\n                    timer = timers[id];\n                }\n            }\n        }\n\n        return timer;\n    }\n\n    /**\n     * @param {Clock} clock\n     * @returns {Timer}\n     */\n    function firstTimer(clock) {\n        const timers = clock.timers;\n        let timer = null;\n        let id;\n\n        for (id in timers) {\n            if (timers.hasOwnProperty(id)) {\n                if (!timer || compareTimers(timer, timers[id]) === 1) {\n                    timer = timers[id];\n                }\n            }\n        }\n\n        return timer;\n    }\n\n    /**\n     * @param {Clock} clock\n     * @returns {Timer}\n     */\n    function lastTimer(clock) {\n        const timers = clock.timers;\n        let timer = null;\n        let id;\n\n        for (id in timers) {\n            if (timers.hasOwnProperty(id)) {\n                if (!timer || compareTimers(timer, timers[id]) === -1) {\n                    timer = timers[id];\n                }\n            }\n        }\n\n        return timer;\n    }\n\n    /**\n     * @param {Clock} clock\n     * @param {Timer} timer\n     */\n    function callTimer(clock, timer) {\n        if (typeof timer.interval === \"number\") {\n            clock.timers[timer.id].callAt += timer.interval;\n        } else {\n            delete clock.timers[timer.id];\n        }\n\n        if (typeof timer.func === \"function\") {\n            timer.func.apply(null, timer.args);\n        } else {\n            /* eslint no-eval: \"off\" */\n            const eval2 = eval;\n            (function () {\n                eval2(timer.func);\n            })();\n        }\n    }\n\n    /**\n     * Gets clear handler name for a given timer type\n     * @param {string} ttype\n     */\n    function getClearHandler(ttype) {\n        if (ttype === \"IdleCallback\" || ttype === \"AnimationFrame\") {\n            return `cancel${ttype}`;\n        }\n        return `clear${ttype}`;\n    }\n\n    /**\n     * Gets schedule handler name for a given timer type\n     * @param {string} ttype\n     */\n    function getScheduleHandler(ttype) {\n        if (ttype === \"IdleCallback\" || ttype === \"AnimationFrame\") {\n            return `request${ttype}`;\n        }\n        return `set${ttype}`;\n    }\n\n    /**\n     * Creates an anonymous function to warn only once\n     */\n    function createWarnOnce() {\n        let calls = 0;\n        return function (msg) {\n            // eslint-disable-next-line\n            !calls++ && console.warn(msg);\n        };\n    }\n    const warnOnce = createWarnOnce();\n\n    /**\n     * @param {Clock} clock\n     * @param {number} timerId\n     * @param {string} ttype\n     */\n    function clearTimer(clock, timerId, ttype) {\n        if (!timerId) {\n            // null appears to be allowed in most browsers, and appears to be\n            // relied upon by some libraries, like Bootstrap carousel\n            return;\n        }\n\n        if (!clock.timers) {\n            clock.timers = {};\n        }\n\n        // in Node, the ID is stored as the primitive value for `Timeout` objects\n        // for `Immediate` objects, no ID exists, so it gets coerced to NaN\n        const id = Number(timerId);\n\n        if (Number.isNaN(id) || id < idCounterStart) {\n            const handlerName = getClearHandler(ttype);\n\n            if (clock.shouldClearNativeTimers === true) {\n                const nativeHandler = clock[`_${handlerName}`];\n                return typeof nativeHandler === \"function\"\n                    ? nativeHandler(timerId)\n                    : undefined;\n            }\n            warnOnce(\n                `FakeTimers: ${handlerName} was invoked to clear a native timer instead of one created by this library.` +\n                    \"\\nTo automatically clean-up native timers, use `shouldClearNativeTimers`.\",\n            );\n        }\n\n        if (clock.timers.hasOwnProperty(id)) {\n            // check that the ID matches a timer of the correct type\n            const timer = clock.timers[id];\n            if (\n                timer.type === ttype ||\n                (timer.type === \"Timeout\" && ttype === \"Interval\") ||\n                (timer.type === \"Interval\" && ttype === \"Timeout\")\n            ) {\n                delete clock.timers[id];\n            } else {\n                const clear = getClearHandler(ttype);\n                const schedule = getScheduleHandler(timer.type);\n                throw new Error(\n                    `Cannot clear timer: timer created with ${schedule}() but cleared with ${clear}()`,\n                );\n            }\n        }\n    }\n\n    /**\n     * @param {Clock} clock\n     * @param {Config} config\n     * @returns {Timer[]}\n     */\n    function uninstall(clock, config) {\n        let method, i, l;\n        const installedHrTime = \"_hrtime\";\n        const installedNextTick = \"_nextTick\";\n\n        for (i = 0, l = clock.methods.length; i < l; i++) {\n            method = clock.methods[i];\n            if (method === \"hrtime\" && _global.process) {\n                _global.process.hrtime = clock[installedHrTime];\n            } else if (method === \"nextTick\" && _global.process) {\n                _global.process.nextTick = clock[installedNextTick];\n            } else if (method === \"performance\") {\n                const originalPerfDescriptor = Object.getOwnPropertyDescriptor(\n                    clock,\n                    `_${method}`,\n                );\n                if (\n                    originalPerfDescriptor &&\n                    originalPerfDescriptor.get &&\n                    !originalPerfDescriptor.set\n                ) {\n                    Object.defineProperty(\n                        _global,\n                        method,\n                        originalPerfDescriptor,\n                    );\n                } else if (originalPerfDescriptor.configurable) {\n                    _global[method] = clock[`_${method}`];\n                }\n            } else {\n                if (_global[method] && _global[method].hadOwnProperty) {\n                    _global[method] = clock[`_${method}`];\n                } else {\n                    try {\n                        delete _global[method];\n                    } catch (ignore) {\n                        /* eslint no-empty: \"off\" */\n                    }\n                }\n            }\n            if (clock.timersModuleMethods !== undefined) {\n                for (let j = 0; j < clock.timersModuleMethods.length; j++) {\n                    const entry = clock.timersModuleMethods[j];\n                    timersModule[entry.methodName] = entry.original;\n                }\n            }\n            if (clock.timersPromisesModuleMethods !== undefined) {\n                for (\n                    let j = 0;\n                    j < clock.timersPromisesModuleMethods.length;\n                    j++\n                ) {\n                    const entry = clock.timersPromisesModuleMethods[j];\n                    timersPromisesModule[entry.methodName] = entry.original;\n                }\n            }\n        }\n\n        if (config.shouldAdvanceTime === true) {\n            _global.clearInterval(clock.attachedInterval);\n        }\n\n        // Prevent multiple executions which will completely remove these props\n        clock.methods = [];\n\n        for (const [listener, signal] of clock.abortListenerMap.entries()) {\n            signal.removeEventListener(\"abort\", listener);\n            clock.abortListenerMap.delete(listener);\n        }\n\n        // return pending timers, to enable checking what timers remained on uninstall\n        if (!clock.timers) {\n            return [];\n        }\n        return Object.keys(clock.timers).map(function mapper(key) {\n            return clock.timers[key];\n        });\n    }\n\n    /**\n     * @param {object} target the target containing the method to replace\n     * @param {string} method the keyname of the method on the target\n     * @param {Clock} clock\n     */\n    function hijackMethod(target, method, clock) {\n        clock[method].hadOwnProperty = Object.prototype.hasOwnProperty.call(\n            target,\n            method,\n        );\n        clock[`_${method}`] = target[method];\n\n        if (method === \"Date\") {\n            target[method] = clock[method];\n        } else if (method === \"Intl\") {\n            target[method] = clock[method];\n        } else if (method === \"performance\") {\n            const originalPerfDescriptor = Object.getOwnPropertyDescriptor(\n                target,\n                method,\n            );\n            // JSDOM has a read only performance field so we have to save/copy it differently\n            if (\n                originalPerfDescriptor &&\n                originalPerfDescriptor.get &&\n                !originalPerfDescriptor.set\n            ) {\n                Object.defineProperty(\n                    clock,\n                    `_${method}`,\n                    originalPerfDescriptor,\n                );\n\n                const perfDescriptor = Object.getOwnPropertyDescriptor(\n                    clock,\n                    method,\n                );\n                Object.defineProperty(target, method, perfDescriptor);\n            } else {\n                target[method] = clock[method];\n            }\n        } else {\n            target[method] = function () {\n                return clock[method].apply(clock, arguments);\n            };\n\n            Object.defineProperties(\n                target[method],\n                Object.getOwnPropertyDescriptors(clock[method]),\n            );\n        }\n\n        target[method].clock = clock;\n    }\n\n    /**\n     * @param {Clock} clock\n     * @param {number} advanceTimeDelta\n     */\n    function doIntervalTick(clock, advanceTimeDelta) {\n        clock.tick(advanceTimeDelta);\n    }\n\n    /**\n     * @typedef {object} Timers\n     * @property {setTimeout} setTimeout\n     * @property {clearTimeout} clearTimeout\n     * @property {setInterval} setInterval\n     * @property {clearInterval} clearInterval\n     * @property {Date} Date\n     * @property {Intl} Intl\n     * @property {SetImmediate=} setImmediate\n     * @property {function(NodeImmediate): void=} clearImmediate\n     * @property {function(number[]):number[]=} hrtime\n     * @property {NextTick=} nextTick\n     * @property {Performance=} performance\n     * @property {RequestAnimationFrame=} requestAnimationFrame\n     * @property {boolean=} queueMicrotask\n     * @property {function(number): void=} cancelAnimationFrame\n     * @property {RequestIdleCallback=} requestIdleCallback\n     * @property {function(number): void=} cancelIdleCallback\n     */\n\n    /** @type {Timers} */\n    const timers = {\n        setTimeout: _global.setTimeout,\n        clearTimeout: _global.clearTimeout,\n        setInterval: _global.setInterval,\n        clearInterval: _global.clearInterval,\n        Date: _global.Date,\n    };\n\n    if (isPresent.setImmediate) {\n        timers.setImmediate = _global.setImmediate;\n    }\n\n    if (isPresent.clearImmediate) {\n        timers.clearImmediate = _global.clearImmediate;\n    }\n\n    if (isPresent.hrtime) {\n        timers.hrtime = _global.process.hrtime;\n    }\n\n    if (isPresent.nextTick) {\n        timers.nextTick = _global.process.nextTick;\n    }\n\n    if (isPresent.performance) {\n        timers.performance = _global.performance;\n    }\n\n    if (isPresent.requestAnimationFrame) {\n        timers.requestAnimationFrame = _global.requestAnimationFrame;\n    }\n\n    if (isPresent.queueMicrotask) {\n        timers.queueMicrotask = _global.queueMicrotask;\n    }\n\n    if (isPresent.cancelAnimationFrame) {\n        timers.cancelAnimationFrame = _global.cancelAnimationFrame;\n    }\n\n    if (isPresent.requestIdleCallback) {\n        timers.requestIdleCallback = _global.requestIdleCallback;\n    }\n\n    if (isPresent.cancelIdleCallback) {\n        timers.cancelIdleCallback = _global.cancelIdleCallback;\n    }\n\n    if (isPresent.Intl) {\n        timers.Intl = NativeIntl;\n    }\n\n    const originalSetTimeout = _global.setImmediate || _global.setTimeout;\n\n    /**\n     * @param {Date|number} [start] the system time - non-integer values are floored\n     * @param {number} [loopLimit] maximum number of timers that will be run when calling runAll()\n     * @returns {Clock}\n     */\n    function createClock(start, loopLimit) {\n        // eslint-disable-next-line no-param-reassign\n        start = Math.floor(getEpoch(start));\n        // eslint-disable-next-line no-param-reassign\n        loopLimit = loopLimit || 1000;\n        let nanos = 0;\n        const adjustedSystemTime = [0, 0]; // [millis, nanoremainder]\n\n        const clock = {\n            now: start,\n            Date: createDate(),\n            loopLimit: loopLimit,\n        };\n\n        clock.Date.clock = clock;\n\n        //eslint-disable-next-line jsdoc/require-jsdoc\n        function getTimeToNextFrame() {\n            return 16 - ((clock.now - start) % 16);\n        }\n\n        //eslint-disable-next-line jsdoc/require-jsdoc\n        function hrtime(prev) {\n            const millisSinceStart = clock.now - adjustedSystemTime[0] - start;\n            const secsSinceStart = Math.floor(millisSinceStart / 1000);\n            const remainderInNanos =\n                (millisSinceStart - secsSinceStart * 1e3) * 1e6 +\n                nanos -\n                adjustedSystemTime[1];\n\n            if (Array.isArray(prev)) {\n                if (prev[1] > 1e9) {\n                    throw new TypeError(\n                        \"Number of nanoseconds can't exceed a billion\",\n                    );\n                }\n\n                const oldSecs = prev[0];\n                let nanoDiff = remainderInNanos - prev[1];\n                let secDiff = secsSinceStart - oldSecs;\n\n                if (nanoDiff < 0) {\n                    nanoDiff += 1e9;\n                    secDiff -= 1;\n                }\n\n                return [secDiff, nanoDiff];\n            }\n            return [secsSinceStart, remainderInNanos];\n        }\n\n        /**\n         * A high resolution timestamp in milliseconds.\n         * @typedef {number} DOMHighResTimeStamp\n         */\n\n        /**\n         * performance.now()\n         * @returns {DOMHighResTimeStamp}\n         */\n        function fakePerformanceNow() {\n            const hrt = hrtime();\n            const millis = hrt[0] * 1000 + hrt[1] / 1e6;\n            return millis;\n        }\n\n        if (isPresent.hrtimeBigint) {\n            hrtime.bigint = function () {\n                const parts = hrtime();\n                return BigInt(parts[0]) * BigInt(1e9) + BigInt(parts[1]); // eslint-disable-line\n            };\n        }\n\n        if (isPresent.Intl) {\n            clock.Intl = createIntl();\n            clock.Intl.clock = clock;\n        }\n\n        clock.requestIdleCallback = function requestIdleCallback(\n            func,\n            timeout,\n        ) {\n            let timeToNextIdlePeriod = 0;\n\n            if (clock.countTimers() > 0) {\n                timeToNextIdlePeriod = 50; // const for now\n            }\n\n            const result = addTimer(clock, {\n                func: func,\n                args: Array.prototype.slice.call(arguments, 2),\n                delay:\n                    typeof timeout === \"undefined\"\n                        ? timeToNextIdlePeriod\n                        : Math.min(timeout, timeToNextIdlePeriod),\n                idleCallback: true,\n            });\n\n            return Number(result);\n        };\n\n        clock.cancelIdleCallback = function cancelIdleCallback(timerId) {\n            return clearTimer(clock, timerId, \"IdleCallback\");\n        };\n\n        clock.setTimeout = function setTimeout(func, timeout) {\n            return addTimer(clock, {\n                func: func,\n                args: Array.prototype.slice.call(arguments, 2),\n                delay: timeout,\n            });\n        };\n        if (typeof _global.Promise !== \"undefined\" && utilPromisify) {\n            clock.setTimeout[utilPromisify.custom] =\n                function promisifiedSetTimeout(timeout, arg) {\n                    return new _global.Promise(function setTimeoutExecutor(\n                        resolve,\n                    ) {\n                        addTimer(clock, {\n                            func: resolve,\n                            args: [arg],\n                            delay: timeout,\n                        });\n                    });\n                };\n        }\n\n        clock.clearTimeout = function clearTimeout(timerId) {\n            return clearTimer(clock, timerId, \"Timeout\");\n        };\n\n        clock.nextTick = function nextTick(func) {\n            return enqueueJob(clock, {\n                func: func,\n                args: Array.prototype.slice.call(arguments, 1),\n                error: isNearInfiniteLimit ? new Error() : null,\n            });\n        };\n\n        clock.queueMicrotask = function queueMicrotask(func) {\n            return clock.nextTick(func); // explicitly drop additional arguments\n        };\n\n        clock.setInterval = function setInterval(func, timeout) {\n            // eslint-disable-next-line no-param-reassign\n            timeout = parseInt(timeout, 10);\n            return addTimer(clock, {\n                func: func,\n                args: Array.prototype.slice.call(arguments, 2),\n                delay: timeout,\n                interval: timeout,\n            });\n        };\n\n        clock.clearInterval = function clearInterval(timerId) {\n            return clearTimer(clock, timerId, \"Interval\");\n        };\n\n        if (isPresent.setImmediate) {\n            clock.setImmediate = function setImmediate(func) {\n                return addTimer(clock, {\n                    func: func,\n                    args: Array.prototype.slice.call(arguments, 1),\n                    immediate: true,\n                });\n            };\n\n            if (typeof _global.Promise !== \"undefined\" && utilPromisify) {\n                clock.setImmediate[utilPromisify.custom] =\n                    function promisifiedSetImmediate(arg) {\n                        return new _global.Promise(\n                            function setImmediateExecutor(resolve) {\n                                addTimer(clock, {\n                                    func: resolve,\n                                    args: [arg],\n                                    immediate: true,\n                                });\n                            },\n                        );\n                    };\n            }\n\n            clock.clearImmediate = function clearImmediate(timerId) {\n                return clearTimer(clock, timerId, \"Immediate\");\n            };\n        }\n\n        clock.countTimers = function countTimers() {\n            return (\n                Object.keys(clock.timers || {}).length +\n                (clock.jobs || []).length\n            );\n        };\n\n        clock.requestAnimationFrame = function requestAnimationFrame(func) {\n            const result = addTimer(clock, {\n                func: func,\n                delay: getTimeToNextFrame(),\n                get args() {\n                    return [fakePerformanceNow()];\n                },\n                animation: true,\n            });\n\n            return Number(result);\n        };\n\n        clock.cancelAnimationFrame = function cancelAnimationFrame(timerId) {\n            return clearTimer(clock, timerId, \"AnimationFrame\");\n        };\n\n        clock.runMicrotasks = function runMicrotasks() {\n            runJobs(clock);\n        };\n\n        /**\n         * @param {number|string} tickValue milliseconds or a string parseable by parseTime\n         * @param {boolean} isAsync\n         * @param {Function} resolve\n         * @param {Function} reject\n         * @returns {number|undefined} will return the new `now` value or nothing for async\n         */\n        function doTick(tickValue, isAsync, resolve, reject) {\n            const msFloat =\n                typeof tickValue === \"number\"\n                    ? tickValue\n                    : parseTime(tickValue);\n            const ms = Math.floor(msFloat);\n            const remainder = nanoRemainder(msFloat);\n            let nanosTotal = nanos + remainder;\n            let tickTo = clock.now + ms;\n\n            if (msFloat < 0) {\n                throw new TypeError(\"Negative ticks are not supported\");\n            }\n\n            // adjust for positive overflow\n            if (nanosTotal >= 1e6) {\n                tickTo += 1;\n                nanosTotal -= 1e6;\n            }\n\n            nanos = nanosTotal;\n            let tickFrom = clock.now;\n            let previous = clock.now;\n            // ESLint fails to detect this correctly\n            /* eslint-disable prefer-const */\n            let timer,\n                firstException,\n                oldNow,\n                nextPromiseTick,\n                compensationCheck,\n                postTimerCall;\n            /* eslint-enable prefer-const */\n\n            clock.duringTick = true;\n\n            // perform microtasks\n            oldNow = clock.now;\n            runJobs(clock);\n            if (oldNow !== clock.now) {\n                // compensate for any setSystemTime() call during microtask callback\n                tickFrom += clock.now - oldNow;\n                tickTo += clock.now - oldNow;\n            }\n\n            //eslint-disable-next-line jsdoc/require-jsdoc\n            function doTickInner() {\n                // perform each timer in the requested range\n                timer = firstTimerInRange(clock, tickFrom, tickTo);\n                // eslint-disable-next-line no-unmodified-loop-condition\n                while (timer && tickFrom <= tickTo) {\n                    if (clock.timers[timer.id]) {\n                        tickFrom = timer.callAt;\n                        clock.now = timer.callAt;\n                        oldNow = clock.now;\n                        try {\n                            runJobs(clock);\n                            callTimer(clock, timer);\n                        } catch (e) {\n                            firstException = firstException || e;\n                        }\n\n                        if (isAsync) {\n                            // finish up after native setImmediate callback to allow\n                            // all native es6 promises to process their callbacks after\n                            // each timer fires.\n                            originalSetTimeout(nextPromiseTick);\n                            return;\n                        }\n\n                        compensationCheck();\n                    }\n\n                    postTimerCall();\n                }\n\n                // perform process.nextTick()s again\n                oldNow = clock.now;\n                runJobs(clock);\n                if (oldNow !== clock.now) {\n                    // compensate for any setSystemTime() call during process.nextTick() callback\n                    tickFrom += clock.now - oldNow;\n                    tickTo += clock.now - oldNow;\n                }\n                clock.duringTick = false;\n\n                // corner case: during runJobs new timers were scheduled which could be in the range [clock.now, tickTo]\n                timer = firstTimerInRange(clock, tickFrom, tickTo);\n                if (timer) {\n                    try {\n                        clock.tick(tickTo - clock.now); // do it all again - for the remainder of the requested range\n                    } catch (e) {\n                        firstException = firstException || e;\n                    }\n                } else {\n                    // no timers remaining in the requested range: move the clock all the way to the end\n                    clock.now = tickTo;\n\n                    // update nanos\n                    nanos = nanosTotal;\n                }\n                if (firstException) {\n                    throw firstException;\n                }\n\n                if (isAsync) {\n                    resolve(clock.now);\n                } else {\n                    return clock.now;\n                }\n            }\n\n            nextPromiseTick =\n                isAsync &&\n                function () {\n                    try {\n                        compensationCheck();\n                        postTimerCall();\n                        doTickInner();\n                    } catch (e) {\n                        reject(e);\n                    }\n                };\n\n            compensationCheck = function () {\n                // compensate for any setSystemTime() call during timer callback\n                if (oldNow !== clock.now) {\n                    tickFrom += clock.now - oldNow;\n                    tickTo += clock.now - oldNow;\n                    previous += clock.now - oldNow;\n                }\n            };\n\n            postTimerCall = function () {\n                timer = firstTimerInRange(clock, previous, tickTo);\n                previous = tickFrom;\n            };\n\n            return doTickInner();\n        }\n\n        /**\n         * @param {string|number} tickValue number of milliseconds or a human-readable value like \"01:11:15\"\n         * @returns {number} will return the new `now` value\n         */\n        clock.tick = function tick(tickValue) {\n            return doTick(tickValue, false);\n        };\n\n        if (typeof _global.Promise !== \"undefined\") {\n            /**\n             * @param {string|number} tickValue number of milliseconds or a human-readable value like \"01:11:15\"\n             * @returns {Promise}\n             */\n            clock.tickAsync = function tickAsync(tickValue) {\n                return new _global.Promise(function (resolve, reject) {\n                    originalSetTimeout(function () {\n                        try {\n                            doTick(tickValue, true, resolve, reject);\n                        } catch (e) {\n                            reject(e);\n                        }\n                    });\n                });\n            };\n        }\n\n        clock.next = function next() {\n            runJobs(clock);\n            const timer = firstTimer(clock);\n            if (!timer) {\n                return clock.now;\n            }\n\n            clock.duringTick = true;\n            try {\n                clock.now = timer.callAt;\n                callTimer(clock, timer);\n                runJobs(clock);\n                return clock.now;\n            } finally {\n                clock.duringTick = false;\n            }\n        };\n\n        if (typeof _global.Promise !== \"undefined\") {\n            clock.nextAsync = function nextAsync() {\n                return new _global.Promise(function (resolve, reject) {\n                    originalSetTimeout(function () {\n                        try {\n                            const timer = firstTimer(clock);\n                            if (!timer) {\n                                resolve(clock.now);\n                                return;\n                            }\n\n                            let err;\n                            clock.duringTick = true;\n                            clock.now = timer.callAt;\n                            try {\n                                callTimer(clock, timer);\n                            } catch (e) {\n                                err = e;\n                            }\n                            clock.duringTick = false;\n\n                            originalSetTimeout(function () {\n                                if (err) {\n                                    reject(err);\n                                } else {\n                                    resolve(clock.now);\n                                }\n                            });\n                        } catch (e) {\n                            reject(e);\n                        }\n                    });\n                });\n            };\n        }\n\n        clock.runAll = function runAll() {\n            let numTimers, i;\n            runJobs(clock);\n            for (i = 0; i < clock.loopLimit; i++) {\n                if (!clock.timers) {\n                    resetIsNearInfiniteLimit();\n                    return clock.now;\n                }\n\n                numTimers = Object.keys(clock.timers).length;\n                if (numTimers === 0) {\n                    resetIsNearInfiniteLimit();\n                    return clock.now;\n                }\n\n                clock.next();\n                checkIsNearInfiniteLimit(clock, i);\n            }\n\n            const excessJob = firstTimer(clock);\n            throw getInfiniteLoopError(clock, excessJob);\n        };\n\n        clock.runToFrame = function runToFrame() {\n            return clock.tick(getTimeToNextFrame());\n        };\n\n        if (typeof _global.Promise !== \"undefined\") {\n            clock.runAllAsync = function runAllAsync() {\n                return new _global.Promise(function (resolve, reject) {\n                    let i = 0;\n                    /**\n                     *\n                     */\n                    function doRun() {\n                        originalSetTimeout(function () {\n                            try {\n                                runJobs(clock);\n\n                                let numTimers;\n                                if (i < clock.loopLimit) {\n                                    if (!clock.timers) {\n                                        resetIsNearInfiniteLimit();\n                                        resolve(clock.now);\n                                        return;\n                                    }\n\n                                    numTimers = Object.keys(\n                                        clock.timers,\n                                    ).length;\n                                    if (numTimers === 0) {\n                                        resetIsNearInfiniteLimit();\n                                        resolve(clock.now);\n                                        return;\n                                    }\n\n                                    clock.next();\n\n                                    i++;\n\n                                    doRun();\n                                    checkIsNearInfiniteLimit(clock, i);\n                                    return;\n                                }\n\n                                const excessJob = firstTimer(clock);\n                                reject(getInfiniteLoopError(clock, excessJob));\n                            } catch (e) {\n                                reject(e);\n                            }\n                        });\n                    }\n                    doRun();\n                });\n            };\n        }\n\n        clock.runToLast = function runToLast() {\n            const timer = lastTimer(clock);\n            if (!timer) {\n                runJobs(clock);\n                return clock.now;\n            }\n\n            return clock.tick(timer.callAt - clock.now);\n        };\n\n        if (typeof _global.Promise !== \"undefined\") {\n            clock.runToLastAsync = function runToLastAsync() {\n                return new _global.Promise(function (resolve, reject) {\n                    originalSetTimeout(function () {\n                        try {\n                            const timer = lastTimer(clock);\n                            if (!timer) {\n                                runJobs(clock);\n                                resolve(clock.now);\n                            }\n\n                            resolve(clock.tickAsync(timer.callAt - clock.now));\n                        } catch (e) {\n                            reject(e);\n                        }\n                    });\n                });\n            };\n        }\n\n        clock.reset = function reset() {\n            nanos = 0;\n            clock.timers = {};\n            clock.jobs = [];\n            clock.now = start;\n        };\n\n        clock.setSystemTime = function setSystemTime(systemTime) {\n            // determine time difference\n            const newNow = getEpoch(systemTime);\n            const difference = newNow - clock.now;\n            let id, timer;\n\n            adjustedSystemTime[0] = adjustedSystemTime[0] + difference;\n            adjustedSystemTime[1] = adjustedSystemTime[1] + nanos;\n            // update 'system clock'\n            clock.now = newNow;\n            nanos = 0;\n\n            // update timers and intervals to keep them stable\n            for (id in clock.timers) {\n                if (clock.timers.hasOwnProperty(id)) {\n                    timer = clock.timers[id];\n                    timer.createdAt += difference;\n                    timer.callAt += difference;\n                }\n            }\n        };\n\n        /**\n         * @param {string|number} tickValue number of milliseconds or a human-readable value like \"01:11:15\"\n         * @returns {number} will return the new `now` value\n         */\n        clock.jump = function jump(tickValue) {\n            const msFloat =\n                typeof tickValue === \"number\"\n                    ? tickValue\n                    : parseTime(tickValue);\n            const ms = Math.floor(msFloat);\n\n            for (const timer of Object.values(clock.timers)) {\n                if (clock.now + ms > timer.callAt) {\n                    timer.callAt = clock.now + ms;\n                }\n            }\n            clock.tick(ms);\n        };\n\n        if (isPresent.performance) {\n            clock.performance = Object.create(null);\n            clock.performance.now = fakePerformanceNow;\n        }\n\n        if (isPresent.hrtime) {\n            clock.hrtime = hrtime;\n        }\n\n        return clock;\n    }\n\n    /* eslint-disable complexity */\n\n    /**\n     * @param {Config=} [config] Optional config\n     * @returns {Clock}\n     */\n    function install(config) {\n        if (\n            arguments.length > 1 ||\n            config instanceof Date ||\n            Array.isArray(config) ||\n            typeof config === \"number\"\n        ) {\n            throw new TypeError(\n                `FakeTimers.install called with ${String(\n                    config,\n                )} install requires an object parameter`,\n            );\n        }\n\n        if (_global.Date.isFake === true) {\n            // Timers are already faked; this is a problem.\n            // Make the user reset timers before continuing.\n            throw new TypeError(\n                \"Can't install fake timers twice on the same global object.\",\n            );\n        }\n\n        // eslint-disable-next-line no-param-reassign\n        config = typeof config !== \"undefined\" ? config : {};\n        config.shouldAdvanceTime = config.shouldAdvanceTime || false;\n        config.advanceTimeDelta = config.advanceTimeDelta || 20;\n        config.shouldClearNativeTimers =\n            config.shouldClearNativeTimers || false;\n\n        if (config.target) {\n            throw new TypeError(\n                \"config.target is no longer supported. Use `withGlobal(target)` instead.\",\n            );\n        }\n\n        /**\n         * @param {string} timer/object the name of the thing that is not present\n         * @param timer\n         */\n        function handleMissingTimer(timer) {\n            if (config.ignoreMissingTimers) {\n                return;\n            }\n\n            throw new ReferenceError(\n                `non-existent timers and/or objects cannot be faked: '${timer}'`,\n            );\n        }\n\n        let i, l;\n        const clock = createClock(config.now, config.loopLimit);\n        clock.shouldClearNativeTimers = config.shouldClearNativeTimers;\n\n        clock.uninstall = function () {\n            return uninstall(clock, config);\n        };\n\n        clock.abortListenerMap = new Map();\n\n        clock.methods = config.toFake || [];\n\n        if (clock.methods.length === 0) {\n            clock.methods = Object.keys(timers);\n        }\n\n        if (config.shouldAdvanceTime === true) {\n            const intervalTick = doIntervalTick.bind(\n                null,\n                clock,\n                config.advanceTimeDelta,\n            );\n            const intervalId = _global.setInterval(\n                intervalTick,\n                config.advanceTimeDelta,\n            );\n            clock.attachedInterval = intervalId;\n        }\n\n        if (clock.methods.includes(\"performance\")) {\n            const proto = (() => {\n                if (hasPerformanceConstructorPrototype) {\n                    return _global.performance.constructor.prototype;\n                }\n                if (hasPerformancePrototype) {\n                    return _global.Performance.prototype;\n                }\n            })();\n            if (proto) {\n                Object.getOwnPropertyNames(proto).forEach(function (name) {\n                    if (name !== \"now\") {\n                        clock.performance[name] =\n                            name.indexOf(\"getEntries\") === 0\n                                ? NOOP_ARRAY\n                                : NOOP;\n                    }\n                });\n                // ensure `mark` returns a value that is valid\n                clock.performance.mark = (name) =>\n                    new FakePerformanceEntry(name, \"mark\", 0, 0);\n                clock.performance.measure = (name) =>\n                    new FakePerformanceEntry(name, \"measure\", 0, 100);\n                // `timeOrigin` should return the time of when the Window session started\n                // (or the Worker was installed)\n                clock.performance.timeOrigin = getEpoch(config.now);\n            } else if ((config.toFake || []).includes(\"performance\")) {\n                return handleMissingTimer(\"performance\");\n            }\n        }\n        if (_global === globalObject && timersModule) {\n            clock.timersModuleMethods = [];\n        }\n        if (_global === globalObject && timersPromisesModule) {\n            clock.timersPromisesModuleMethods = [];\n        }\n        for (i = 0, l = clock.methods.length; i < l; i++) {\n            const nameOfMethodToReplace = clock.methods[i];\n\n            if (!isPresent[nameOfMethodToReplace]) {\n                handleMissingTimer(nameOfMethodToReplace);\n                // eslint-disable-next-line\n                continue;\n            }\n\n            if (nameOfMethodToReplace === \"hrtime\") {\n                if (\n                    _global.process &&\n                    typeof _global.process.hrtime === \"function\"\n                ) {\n                    hijackMethod(_global.process, nameOfMethodToReplace, clock);\n                }\n            } else if (nameOfMethodToReplace === \"nextTick\") {\n                if (\n                    _global.process &&\n                    typeof _global.process.nextTick === \"function\"\n                ) {\n                    hijackMethod(_global.process, nameOfMethodToReplace, clock);\n                }\n            } else {\n                hijackMethod(_global, nameOfMethodToReplace, clock);\n            }\n            if (\n                clock.timersModuleMethods !== undefined &&\n                timersModule[nameOfMethodToReplace]\n            ) {\n                const original = timersModule[nameOfMethodToReplace];\n                clock.timersModuleMethods.push({\n                    methodName: nameOfMethodToReplace,\n                    original: original,\n                });\n                timersModule[nameOfMethodToReplace] =\n                    _global[nameOfMethodToReplace];\n            }\n            if (clock.timersPromisesModuleMethods !== undefined) {\n                if (nameOfMethodToReplace === \"setTimeout\") {\n                    clock.timersPromisesModuleMethods.push({\n                        methodName: \"setTimeout\",\n                        original: timersPromisesModule.setTimeout,\n                    });\n\n                    timersPromisesModule.setTimeout = (\n                        delay,\n                        value,\n                        options = {},\n                    ) =>\n                        new Promise((resolve, reject) => {\n                            const abort = () => {\n                                options.signal.removeEventListener(\n                                    \"abort\",\n                                    abort,\n                                );\n                                clock.abortListenerMap.delete(abort);\n\n                                // This is safe, there is no code path that leads to this function\n                                // being invoked before handle has been assigned.\n                                // eslint-disable-next-line no-use-before-define\n                                clock.clearTimeout(handle);\n                                reject(options.signal.reason);\n                            };\n\n                            const handle = clock.setTimeout(() => {\n                                if (options.signal) {\n                                    options.signal.removeEventListener(\n                                        \"abort\",\n                                        abort,\n                                    );\n                                    clock.abortListenerMap.delete(abort);\n                                }\n\n                                resolve(value);\n                            }, delay);\n\n                            if (options.signal) {\n                                if (options.signal.aborted) {\n                                    abort();\n                                } else {\n                                    options.signal.addEventListener(\n                                        \"abort\",\n                                        abort,\n                                    );\n                                    clock.abortListenerMap.set(\n                                        abort,\n                                        options.signal,\n                                    );\n                                }\n                            }\n                        });\n                } else if (nameOfMethodToReplace === \"setImmediate\") {\n                    clock.timersPromisesModuleMethods.push({\n                        methodName: \"setImmediate\",\n                        original: timersPromisesModule.setImmediate,\n                    });\n\n                    timersPromisesModule.setImmediate = (value, options = {}) =>\n                        new Promise((resolve, reject) => {\n                            const abort = () => {\n                                options.signal.removeEventListener(\n                                    \"abort\",\n                                    abort,\n                                );\n                                clock.abortListenerMap.delete(abort);\n\n                                // This is safe, there is no code path that leads to this function\n                                // being invoked before handle has been assigned.\n                                // eslint-disable-next-line no-use-before-define\n                                clock.clearImmediate(handle);\n                                reject(options.signal.reason);\n                            };\n\n                            const handle = clock.setImmediate(() => {\n                                if (options.signal) {\n                                    options.signal.removeEventListener(\n                                        \"abort\",\n                                        abort,\n                                    );\n                                    clock.abortListenerMap.delete(abort);\n                                }\n\n                                resolve(value);\n                            });\n\n                            if (options.signal) {\n                                if (options.signal.aborted) {\n                                    abort();\n                                } else {\n                                    options.signal.addEventListener(\n                                        \"abort\",\n                                        abort,\n                                    );\n                                    clock.abortListenerMap.set(\n                                        abort,\n                                        options.signal,\n                                    );\n                                }\n                            }\n                        });\n                } else if (nameOfMethodToReplace === \"setInterval\") {\n                    clock.timersPromisesModuleMethods.push({\n                        methodName: \"setInterval\",\n                        original: timersPromisesModule.setInterval,\n                    });\n\n                    timersPromisesModule.setInterval = (\n                        delay,\n                        value,\n                        options = {},\n                    ) => ({\n                        [Symbol.asyncIterator]: () => {\n                            const createResolvable = () => {\n                                let resolve, reject;\n                                const promise = new Promise((res, rej) => {\n                                    resolve = res;\n                                    reject = rej;\n                                });\n                                promise.resolve = resolve;\n                                promise.reject = reject;\n                                return promise;\n                            };\n\n                            let done = false;\n                            let hasThrown = false;\n                            let returnCall;\n                            let nextAvailable = 0;\n                            const nextQueue = [];\n\n                            const handle = clock.setInterval(() => {\n                                if (nextQueue.length > 0) {\n                                    nextQueue.shift().resolve();\n                                } else {\n                                    nextAvailable++;\n                                }\n                            }, delay);\n\n                            const abort = () => {\n                                options.signal.removeEventListener(\n                                    \"abort\",\n                                    abort,\n                                );\n                                clock.abortListenerMap.delete(abort);\n\n                                clock.clearInterval(handle);\n                                done = true;\n                                for (const resolvable of nextQueue) {\n                                    resolvable.resolve();\n                                }\n                            };\n\n                            if (options.signal) {\n                                if (options.signal.aborted) {\n                                    done = true;\n                                } else {\n                                    options.signal.addEventListener(\n                                        \"abort\",\n                                        abort,\n                                    );\n                                    clock.abortListenerMap.set(\n                                        abort,\n                                        options.signal,\n                                    );\n                                }\n                            }\n\n                            return {\n                                next: async () => {\n                                    if (options.signal?.aborted && !hasThrown) {\n                                        hasThrown = true;\n                                        throw options.signal.reason;\n                                    }\n\n                                    if (done) {\n                                        return { done: true, value: undefined };\n                                    }\n\n                                    if (nextAvailable > 0) {\n                                        nextAvailable--;\n                                        return { done: false, value: value };\n                                    }\n\n                                    const resolvable = createResolvable();\n                                    nextQueue.push(resolvable);\n\n                                    await resolvable;\n\n                                    if (returnCall && nextQueue.length === 0) {\n                                        returnCall.resolve();\n                                    }\n\n                                    if (options.signal?.aborted && !hasThrown) {\n                                        hasThrown = true;\n                                        throw options.signal.reason;\n                                    }\n\n                                    if (done) {\n                                        return { done: true, value: undefined };\n                                    }\n\n                                    return { done: false, value: value };\n                                },\n                                return: async () => {\n                                    if (done) {\n                                        return { done: true, value: undefined };\n                                    }\n\n                                    if (nextQueue.length > 0) {\n                                        returnCall = createResolvable();\n                                        await returnCall;\n                                    }\n\n                                    clock.clearInterval(handle);\n                                    done = true;\n\n                                    if (options.signal) {\n                                        options.signal.removeEventListener(\n                                            \"abort\",\n                                            abort,\n                                        );\n                                        clock.abortListenerMap.delete(abort);\n                                    }\n\n                                    return { done: true, value: undefined };\n                                },\n                            };\n                        },\n                    });\n                }\n            }\n        }\n\n        return clock;\n    }\n\n    /* eslint-enable complexity */\n\n    return {\n        timers: timers,\n        createClock: createClock,\n        install: install,\n        withGlobal: withGlobal,\n    };\n}\n\n/**\n * @typedef {object} FakeTimers\n * @property {Timers} timers\n * @property {createClock} createClock\n * @property {Function} install\n * @property {withGlobal} withGlobal\n */\n\n/* eslint-enable complexity */\n\n/** @type {FakeTimers} */\nconst defaultImplementation = withGlobal(globalObject);\n\nexports.timers = defaultImplementation.timers;\nexports.createClock = defaultImplementation.createClock;\nexports.install = defaultImplementation.install;\nexports.withGlobal = withGlobal;\n"],"names":["require$$0","require","require$$3"],"mappings":";;;;;;;;;;;;;;AAEA,EAAA,MAAM,YAAY,GAAGA,eAAA,EAA2B,CAAC,MAAM;EACvD,IAAI,YAAY,EAAE,oBAAoB;EACtC,IAAI,OAAOC,uCAAO,KAAK,UAAU,IAAI,QAAa,KAAK,QAAQ,EAAE;AACjE,MAAI,IAAI;AACR,UAAQ,YAAY,GAAG,OAAA,CAAQ,QAAQ,CAAC;MACxC,CAAK,CAAC,OAAO,CAAC,EAAE;AAChB;AACA,MAAA;AACA,MAAI,IAAI;AACR,UAAQ,oBAAoB,GAAG,OAAA,CAAQ,iBAAiB,CAAC;MACzD,CAAK,CAAC,OAAO,CAAC,EAAE;AAChB;AACA,MAAA;AACA,EAAA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;EACA,SAAS,UAAU,CAAC,OAAO,EAAE;AAC7B,MAAI,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;AAC3C,MAAI,MAAM,cAAc,GAAG,IAAI,CAAC;MAC5B,MAAM,IAAI,GAAG,YAAY;AAC7B,UAAQ,OAAO,SAAS;MACxB,CAAK;MACD,MAAM,UAAU,GAAG,YAAY;A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","x_google_ignoreList":[0]}