@assistant-ui/react
Version:
Typescript/React library for AI Chat
1 lines • 215 kB
Source Map (JSON)
{"version":3,"sources":["../../../../node_modules/.pnpm/vitest@3.1.1_@types+debug@4.1.12_@types+node@22.14.0_jiti@2.4.2_lightningcss@1.29.2_terser@5.39.0_tsx@4.19.3_yaml@2.7.1/node_modules/vitest/dist/chunks/vi.B-PuvDzu.js","../../../../node_modules/.pnpm/vitest@3.1.1_@types+debug@4.1.12_@types+node@22.14.0_jiti@2.4.2_lightningcss@1.29.2_terser@5.39.0_tsx@4.19.3_yaml@2.7.1/node_modules/vitest/dist/chunks/utils.CtocqOoE.js","../../../../node_modules/.pnpm/vitest@3.1.1_@types+debug@4.1.12_@types+node@22.14.0_jiti@2.4.2_lightningcss@1.29.2_terser@5.39.0_tsx@4.19.3_yaml@2.7.1/node_modules/vitest/dist/chunks/_commonjsHelpers.BFTU3MAI.js","../../../../node_modules/.pnpm/vitest@3.1.1_@types+debug@4.1.12_@types+node@22.14.0_jiti@2.4.2_lightningcss@1.29.2_terser@5.39.0_tsx@4.19.3_yaml@2.7.1/node_modules/vitest/dist/chunks/date.CDOsz-HY.js","../../../../node_modules/.pnpm/vitest@3.1.1_@types+debug@4.1.12_@types+node@22.14.0_jiti@2.4.2_lightningcss@1.29.2_terser@5.39.0_tsx@4.19.3_yaml@2.7.1/node_modules/vitest/dist/index.js","../../src/tests/setup.ts"],"sourcesContent":["import { equals, iterableEquality, subsetEquality, JestExtend, JestChaiExpect, JestAsymmetricMatchers, GLOBAL_EXPECT, ASYMMETRIC_MATCHERS_OBJECT, getState, setState, addCustomEqualityTesters, customMatchers } from '@vitest/expect';\nimport { getCurrentTest } from '@vitest/runner';\nimport { getNames, getTestName } from '@vitest/runner/utils';\nimport * as chai$1 from 'chai';\nimport { g as getWorkerState, a as getCurrentEnvironment, i as isChildProcess, w as waitForImportsToResolve, r as resetModules } from './utils.CtocqOoE.js';\nimport { getSafeTimers, assertTypes, createSimpleStackTrace } from '@vitest/utils';\nimport { g as getDefaultExportFromCjs, c as commonjsGlobal } from './_commonjsHelpers.BFTU3MAI.js';\nimport { stripSnapshotIndentation, addSerializer, SnapshotClient } from '@vitest/snapshot';\nimport '@vitest/utils/error';\nimport { fn, spyOn, mocks, isMockFunction } from '@vitest/spy';\nimport { parseSingleStack } from '@vitest/utils/source-map';\nimport { R as RealDate, r as resetDate, m as mockDate } from './date.CDOsz-HY.js';\n\nconst unsupported = [\n\t\"matchSnapshot\",\n\t\"toMatchSnapshot\",\n\t\"toMatchInlineSnapshot\",\n\t\"toThrowErrorMatchingSnapshot\",\n\t\"toThrowErrorMatchingInlineSnapshot\",\n\t\"throws\",\n\t\"Throw\",\n\t\"throw\",\n\t\"toThrow\",\n\t\"toThrowError\"\n];\nfunction createExpectPoll(expect) {\n\treturn function poll(fn, options = {}) {\n\t\tconst state = getWorkerState();\n\t\tconst defaults = state.config.expect?.poll ?? {};\n\t\tconst { interval = defaults.interval ?? 50, timeout = defaults.timeout ?? 1e3, message } = options;\n\t\tconst assertion = expect(null, message).withContext({ poll: true });\n\t\tfn = fn.bind(assertion);\n\t\tconst test = chai$1.util.flag(assertion, \"vitest-test\");\n\t\tif (!test) {\n\t\t\tthrow new Error(\"expect.poll() must be called inside a test\");\n\t\t}\n\t\tconst proxy = new Proxy(assertion, { get(target, key, receiver) {\n\t\t\tconst assertionFunction = Reflect.get(target, key, receiver);\n\t\t\tif (typeof assertionFunction !== \"function\") {\n\t\t\t\treturn assertionFunction instanceof chai$1.Assertion ? proxy : assertionFunction;\n\t\t\t}\n\t\t\tif (key === \"assert\") {\n\t\t\t\treturn assertionFunction;\n\t\t\t}\n\t\t\tif (typeof key === \"string\" && unsupported.includes(key)) {\n\t\t\t\tthrow new SyntaxError(`expect.poll() is not supported in combination with .${key}(). Use vi.waitFor() if your assertion condition is unstable.`);\n\t\t\t}\n\t\t\treturn function(...args) {\n\t\t\t\tconst STACK_TRACE_ERROR = new Error(\"STACK_TRACE_ERROR\");\n\t\t\t\tconst promise = () => new Promise((resolve, reject) => {\n\t\t\t\t\tlet intervalId;\n\t\t\t\t\tlet timeoutId;\n\t\t\t\t\tlet lastError;\n\t\t\t\t\tconst { setTimeout, clearTimeout } = getSafeTimers();\n\t\t\t\t\tconst check = async () => {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tchai$1.util.flag(assertion, \"_name\", key);\n\t\t\t\t\t\t\tconst obj = await fn();\n\t\t\t\t\t\t\tchai$1.util.flag(assertion, \"object\", obj);\n\t\t\t\t\t\t\tresolve(await assertionFunction.call(assertion, ...args));\n\t\t\t\t\t\t\tclearTimeout(intervalId);\n\t\t\t\t\t\t\tclearTimeout(timeoutId);\n\t\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\t\tlastError = err;\n\t\t\t\t\t\t\tif (!chai$1.util.flag(assertion, \"_isLastPollAttempt\")) {\n\t\t\t\t\t\t\t\tintervalId = setTimeout(check, interval);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\ttimeoutId = setTimeout(() => {\n\t\t\t\t\t\tclearTimeout(intervalId);\n\t\t\t\t\t\tchai$1.util.flag(assertion, \"_isLastPollAttempt\", true);\n\t\t\t\t\t\tconst rejectWithCause = (cause) => {\n\t\t\t\t\t\t\treject(copyStackTrace$1(new Error(\"Matcher did not succeed in time.\", { cause }), STACK_TRACE_ERROR));\n\t\t\t\t\t\t};\n\t\t\t\t\t\tcheck().then(() => rejectWithCause(lastError)).catch((e) => rejectWithCause(e));\n\t\t\t\t\t}, timeout);\n\t\t\t\t\tcheck();\n\t\t\t\t});\n\t\t\t\tlet awaited = false;\n\t\t\t\ttest.onFinished ??= [];\n\t\t\t\ttest.onFinished.push(() => {\n\t\t\t\t\tif (!awaited) {\n\t\t\t\t\t\tconst negated = chai$1.util.flag(assertion, \"negate\") ? \"not.\" : \"\";\n\t\t\t\t\t\tconst name = chai$1.util.flag(assertion, \"_poll.element\") ? \"element(locator)\" : \"poll(assertion)\";\n\t\t\t\t\t\tconst assertionString = `expect.${name}.${negated}${String(key)}()`;\n\t\t\t\t\t\tconst error = new Error(`${assertionString} was not awaited. This assertion is asynchronous and must be awaited; otherwise, it is not executed to avoid unhandled rejections:\\n\\nawait ${assertionString}\\n`);\n\t\t\t\t\t\tthrow copyStackTrace$1(error, STACK_TRACE_ERROR);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tlet resultPromise;\n\t\t\t\treturn {\n\t\t\t\t\tthen(onFulfilled, onRejected) {\n\t\t\t\t\t\tawaited = true;\n\t\t\t\t\t\treturn (resultPromise ||= promise()).then(onFulfilled, onRejected);\n\t\t\t\t\t},\n\t\t\t\t\tcatch(onRejected) {\n\t\t\t\t\t\treturn (resultPromise ||= promise()).catch(onRejected);\n\t\t\t\t\t},\n\t\t\t\t\tfinally(onFinally) {\n\t\t\t\t\t\treturn (resultPromise ||= promise()).finally(onFinally);\n\t\t\t\t\t},\n\t\t\t\t\t[Symbol.toStringTag]: \"Promise\"\n\t\t\t\t};\n\t\t\t};\n\t\t} });\n\t\treturn proxy;\n\t};\n}\nfunction copyStackTrace$1(target, source) {\n\tif (source.stack !== undefined) {\n\t\ttarget.stack = source.stack.replace(source.message, target.message);\n\t}\n\treturn target;\n}\n\nfunction commonjsRequire(path) {\n\tthrow new Error('Could not dynamically require \"' + path + '\". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.');\n}\n\nvar chaiSubset$1 = {exports: {}};\n\nvar chaiSubset = chaiSubset$1.exports;\n\nvar hasRequiredChaiSubset;\n\nfunction requireChaiSubset () {\n\tif (hasRequiredChaiSubset) return chaiSubset$1.exports;\n\thasRequiredChaiSubset = 1;\n\t(function (module, exports) {\n\t\t(function() {\n\t\t\t(function(chaiSubset) {\n\t\t\t\tif (typeof commonjsRequire === 'function' && 'object' === 'object' && 'object' === 'object') {\n\t\t\t\t\treturn module.exports = chaiSubset;\n\t\t\t\t} else {\n\t\t\t\t\treturn chai.use(chaiSubset);\n\t\t\t\t}\n\t\t\t})(function(chai, utils) {\n\t\t\t\tvar Assertion = chai.Assertion;\n\t\t\t\tvar assertionPrototype = Assertion.prototype;\n\n\t\t\t\tAssertion.addMethod('containSubset', function (expected) {\n\t\t\t\t\tvar actual = utils.flag(this, 'object');\n\t\t\t\t\tvar showDiff = chai.config.showDiff;\n\n\t\t\t\t\tassertionPrototype.assert.call(this,\n\t\t\t\t\t\tcompare(expected, actual),\n\t\t\t\t\t\t'expected #{act} to contain subset #{exp}',\n\t\t\t\t\t\t'expected #{act} to not contain subset #{exp}',\n\t\t\t\t\t\texpected,\n\t\t\t\t\t\tactual,\n\t\t\t\t\t\tshowDiff\n\t\t\t\t\t);\n\t\t\t\t});\n\n\t\t\t\tchai.assert.containSubset = function(val, exp, msg) {\n\t\t\t\t\tnew chai.Assertion(val, msg).to.be.containSubset(exp);\n\t\t\t\t};\n\n\t\t\t\tfunction compare(expected, actual) {\n\t\t\t\t\tif (expected === actual) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\tif (typeof(actual) !== typeof(expected)) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tif (typeof(expected) !== 'object' || expected === null) {\n\t\t\t\t\t\treturn expected === actual;\n\t\t\t\t\t}\n\t\t\t\t\tif (!!expected && !actual) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (Array.isArray(expected)) {\n\t\t\t\t\t\tif (typeof(actual.length) !== 'number') {\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvar aa = Array.prototype.slice.call(actual);\n\t\t\t\t\t\treturn expected.every(function (exp) {\n\t\t\t\t\t\t\treturn aa.some(function (act) {\n\t\t\t\t\t\t\t\treturn compare(exp, act);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tif (expected instanceof Date) {\n\t\t\t\t\t\tif (actual instanceof Date) {\n\t\t\t\t\t\t\treturn expected.getTime() === actual.getTime();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn Object.keys(expected).every(function (key) {\n\t\t\t\t\t\tvar eo = expected[key];\n\t\t\t\t\t\tvar ao = actual[key];\n\t\t\t\t\t\tif (typeof(eo) === 'object' && eo !== null && ao !== null) {\n\t\t\t\t\t\t\treturn compare(eo, ao);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (typeof(eo) === 'function') {\n\t\t\t\t\t\t\treturn eo(ao);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn ao === eo;\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\n\t\t}).call(chaiSubset); \n\t} (chaiSubset$1));\n\treturn chaiSubset$1.exports;\n}\n\nvar chaiSubsetExports = requireChaiSubset();\nvar Subset = /*@__PURE__*/getDefaultExportFromCjs(chaiSubsetExports);\n\nfunction createAssertionMessage(util, assertion, hasArgs) {\n\tconst not = util.flag(assertion, \"negate\") ? \"not.\" : \"\";\n\tconst name = `${util.flag(assertion, \"_name\")}(${\"expected\" })`;\n\tconst promiseName = util.flag(assertion, \"promise\");\n\tconst promise = promiseName ? `.${promiseName}` : \"\";\n\treturn `expect(actual)${promise}.${not}${name}`;\n}\nfunction recordAsyncExpect(_test, promise, assertion, error) {\n\tconst test = _test;\n\tif (test && promise instanceof Promise) {\n\t\tpromise = promise.finally(() => {\n\t\t\tif (!test.promises) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst index = test.promises.indexOf(promise);\n\t\t\tif (index !== -1) {\n\t\t\t\ttest.promises.splice(index, 1);\n\t\t\t}\n\t\t});\n\t\tif (!test.promises) {\n\t\t\ttest.promises = [];\n\t\t}\n\t\ttest.promises.push(promise);\n\t\tlet resolved = false;\n\t\ttest.onFinished ??= [];\n\t\ttest.onFinished.push(() => {\n\t\t\tif (!resolved) {\n\t\t\t\tconst processor = globalThis.__vitest_worker__?.onFilterStackTrace || ((s) => s || \"\");\n\t\t\t\tconst stack = processor(error.stack);\n\t\t\t\tconsole.warn([\n\t\t\t\t\t`Promise returned by \\`${assertion}\\` was not awaited. `,\n\t\t\t\t\t\"Vitest currently auto-awaits hanging assertions at the end of the test, but this will cause the test to fail in Vitest 3. \",\n\t\t\t\t\t\"Please remember to await the assertion.\\n\",\n\t\t\t\t\tstack\n\t\t\t\t].join(\"\"));\n\t\t\t}\n\t\t});\n\t\treturn {\n\t\t\tthen(onFulfilled, onRejected) {\n\t\t\t\tresolved = true;\n\t\t\t\treturn promise.then(onFulfilled, onRejected);\n\t\t\t},\n\t\t\tcatch(onRejected) {\n\t\t\t\treturn promise.catch(onRejected);\n\t\t\t},\n\t\t\tfinally(onFinally) {\n\t\t\t\treturn promise.finally(onFinally);\n\t\t\t},\n\t\t\t[Symbol.toStringTag]: \"Promise\"\n\t\t};\n\t}\n\treturn promise;\n}\n\nlet _client;\nfunction getSnapshotClient() {\n\tif (!_client) {\n\t\t_client = new SnapshotClient({ isEqual: (received, expected) => {\n\t\t\treturn equals(received, expected, [iterableEquality, subsetEquality]);\n\t\t} });\n\t}\n\treturn _client;\n}\nfunction getError(expected, promise) {\n\tif (typeof expected !== \"function\") {\n\t\tif (!promise) {\n\t\t\tthrow new Error(`expected must be a function, received ${typeof expected}`);\n\t\t}\n\t\treturn expected;\n\t}\n\ttry {\n\t\texpected();\n\t} catch (e) {\n\t\treturn e;\n\t}\n\tthrow new Error(\"snapshot function didn't throw\");\n}\nfunction getTestNames(test) {\n\treturn {\n\t\tfilepath: test.file.filepath,\n\t\tname: getNames(test).slice(1).join(\" > \"),\n\t\ttestId: test.id\n\t};\n}\nconst SnapshotPlugin = (chai, utils) => {\n\tfunction getTest(assertionName, obj) {\n\t\tconst test = utils.flag(obj, \"vitest-test\");\n\t\tif (!test) {\n\t\t\tthrow new Error(`'${assertionName}' cannot be used without test context`);\n\t\t}\n\t\treturn test;\n\t}\n\tfor (const key of [\"matchSnapshot\", \"toMatchSnapshot\"]) {\n\t\tutils.addMethod(chai.Assertion.prototype, key, function(properties, message) {\n\t\t\tutils.flag(this, \"_name\", key);\n\t\t\tconst isNot = utils.flag(this, \"negate\");\n\t\t\tif (isNot) {\n\t\t\t\tthrow new Error(`${key} cannot be used with \"not\"`);\n\t\t\t}\n\t\t\tconst expected = utils.flag(this, \"object\");\n\t\t\tconst test = getTest(key, this);\n\t\t\tif (typeof properties === \"string\" && typeof message === \"undefined\") {\n\t\t\t\tmessage = properties;\n\t\t\t\tproperties = undefined;\n\t\t\t}\n\t\t\tconst errorMessage = utils.flag(this, \"message\");\n\t\t\tgetSnapshotClient().assert({\n\t\t\t\treceived: expected,\n\t\t\t\tmessage,\n\t\t\t\tisInline: false,\n\t\t\t\tproperties,\n\t\t\t\terrorMessage,\n\t\t\t\t...getTestNames(test)\n\t\t\t});\n\t\t});\n\t}\n\tutils.addMethod(chai.Assertion.prototype, \"toMatchFileSnapshot\", function(file, message) {\n\t\tutils.flag(this, \"_name\", \"toMatchFileSnapshot\");\n\t\tconst isNot = utils.flag(this, \"negate\");\n\t\tif (isNot) {\n\t\t\tthrow new Error(\"toMatchFileSnapshot cannot be used with \\\"not\\\"\");\n\t\t}\n\t\tconst error = new Error(\"resolves\");\n\t\tconst expected = utils.flag(this, \"object\");\n\t\tconst test = getTest(\"toMatchFileSnapshot\", this);\n\t\tconst errorMessage = utils.flag(this, \"message\");\n\t\tconst promise = getSnapshotClient().assertRaw({\n\t\t\treceived: expected,\n\t\t\tmessage,\n\t\t\tisInline: false,\n\t\t\trawSnapshot: { file },\n\t\t\terrorMessage,\n\t\t\t...getTestNames(test)\n\t\t});\n\t\treturn recordAsyncExpect(test, promise, createAssertionMessage(utils, this), error);\n\t});\n\tutils.addMethod(chai.Assertion.prototype, \"toMatchInlineSnapshot\", function __INLINE_SNAPSHOT__(properties, inlineSnapshot, message) {\n\t\tutils.flag(this, \"_name\", \"toMatchInlineSnapshot\");\n\t\tconst isNot = utils.flag(this, \"negate\");\n\t\tif (isNot) {\n\t\t\tthrow new Error(\"toMatchInlineSnapshot cannot be used with \\\"not\\\"\");\n\t\t}\n\t\tconst test = getTest(\"toMatchInlineSnapshot\", this);\n\t\tconst isInsideEach = test.each || test.suite?.each;\n\t\tif (isInsideEach) {\n\t\t\tthrow new Error(\"InlineSnapshot cannot be used inside of test.each or describe.each\");\n\t\t}\n\t\tconst expected = utils.flag(this, \"object\");\n\t\tconst error = utils.flag(this, \"error\");\n\t\tif (typeof properties === \"string\") {\n\t\t\tmessage = inlineSnapshot;\n\t\t\tinlineSnapshot = properties;\n\t\t\tproperties = undefined;\n\t\t}\n\t\tif (inlineSnapshot) {\n\t\t\tinlineSnapshot = stripSnapshotIndentation(inlineSnapshot);\n\t\t}\n\t\tconst errorMessage = utils.flag(this, \"message\");\n\t\tgetSnapshotClient().assert({\n\t\t\treceived: expected,\n\t\t\tmessage,\n\t\t\tisInline: true,\n\t\t\tproperties,\n\t\t\tinlineSnapshot,\n\t\t\terror,\n\t\t\terrorMessage,\n\t\t\t...getTestNames(test)\n\t\t});\n\t});\n\tutils.addMethod(chai.Assertion.prototype, \"toThrowErrorMatchingSnapshot\", function(message) {\n\t\tutils.flag(this, \"_name\", \"toThrowErrorMatchingSnapshot\");\n\t\tconst isNot = utils.flag(this, \"negate\");\n\t\tif (isNot) {\n\t\t\tthrow new Error(\"toThrowErrorMatchingSnapshot cannot be used with \\\"not\\\"\");\n\t\t}\n\t\tconst expected = utils.flag(this, \"object\");\n\t\tconst test = getTest(\"toThrowErrorMatchingSnapshot\", this);\n\t\tconst promise = utils.flag(this, \"promise\");\n\t\tconst errorMessage = utils.flag(this, \"message\");\n\t\tgetSnapshotClient().assert({\n\t\t\treceived: getError(expected, promise),\n\t\t\tmessage,\n\t\t\terrorMessage,\n\t\t\t...getTestNames(test)\n\t\t});\n\t});\n\tutils.addMethod(chai.Assertion.prototype, \"toThrowErrorMatchingInlineSnapshot\", function __INLINE_SNAPSHOT__(inlineSnapshot, message) {\n\t\tconst isNot = utils.flag(this, \"negate\");\n\t\tif (isNot) {\n\t\t\tthrow new Error(\"toThrowErrorMatchingInlineSnapshot cannot be used with \\\"not\\\"\");\n\t\t}\n\t\tconst test = getTest(\"toThrowErrorMatchingInlineSnapshot\", this);\n\t\tconst isInsideEach = test.each || test.suite?.each;\n\t\tif (isInsideEach) {\n\t\t\tthrow new Error(\"InlineSnapshot cannot be used inside of test.each or describe.each\");\n\t\t}\n\t\tconst expected = utils.flag(this, \"object\");\n\t\tconst error = utils.flag(this, \"error\");\n\t\tconst promise = utils.flag(this, \"promise\");\n\t\tconst errorMessage = utils.flag(this, \"message\");\n\t\tif (inlineSnapshot) {\n\t\t\tinlineSnapshot = stripSnapshotIndentation(inlineSnapshot);\n\t\t}\n\t\tgetSnapshotClient().assert({\n\t\t\treceived: getError(expected, promise),\n\t\t\tmessage,\n\t\t\tinlineSnapshot,\n\t\t\tisInline: true,\n\t\t\terror,\n\t\t\terrorMessage,\n\t\t\t...getTestNames(test)\n\t\t});\n\t});\n\tutils.addMethod(chai.expect, \"addSnapshotSerializer\", addSerializer);\n};\n\nchai$1.use(JestExtend);\nchai$1.use(JestChaiExpect);\nchai$1.use(Subset);\nchai$1.use(SnapshotPlugin);\nchai$1.use(JestAsymmetricMatchers);\n\nfunction createExpect(test) {\n\tconst expect = (value, message) => {\n\t\tconst { assertionCalls } = getState(expect);\n\t\tsetState({ assertionCalls: assertionCalls + 1 }, expect);\n\t\tconst assert = chai$1.expect(value, message);\n\t\tconst _test = test || getCurrentTest();\n\t\tif (_test) {\n\t\t\treturn assert.withTest(_test);\n\t\t} else {\n\t\t\treturn assert;\n\t\t}\n\t};\n\tObject.assign(expect, chai$1.expect);\n\tObject.assign(expect, globalThis[ASYMMETRIC_MATCHERS_OBJECT]);\n\texpect.getState = () => getState(expect);\n\texpect.setState = (state) => setState(state, expect);\n\tconst globalState = getState(globalThis[GLOBAL_EXPECT]) || {};\n\tsetState({\n\t\t...globalState,\n\t\tassertionCalls: 0,\n\t\tisExpectingAssertions: false,\n\t\tisExpectingAssertionsError: null,\n\t\texpectedAssertionsNumber: null,\n\t\texpectedAssertionsNumberErrorGen: null,\n\t\tenvironment: getCurrentEnvironment(),\n\t\tget testPath() {\n\t\t\treturn getWorkerState().filepath;\n\t\t},\n\t\tcurrentTestName: test ? getTestName(test) : globalState.currentTestName\n\t}, expect);\n\texpect.extend = (matchers) => chai$1.expect.extend(expect, matchers);\n\texpect.addEqualityTesters = (customTesters) => addCustomEqualityTesters(customTesters);\n\texpect.soft = (...args) => {\n\t\treturn expect(...args).withContext({ soft: true });\n\t};\n\texpect.poll = createExpectPoll(expect);\n\texpect.unreachable = (message) => {\n\t\tchai$1.assert.fail(`expected${message ? ` \"${message}\" ` : \" \"}not to be reached`);\n\t};\n\tfunction assertions(expected) {\n\t\tconst errorGen = () => new Error(`expected number of assertions to be ${expected}, but got ${expect.getState().assertionCalls}`);\n\t\tif (Error.captureStackTrace) {\n\t\t\tError.captureStackTrace(errorGen(), assertions);\n\t\t}\n\t\texpect.setState({\n\t\t\texpectedAssertionsNumber: expected,\n\t\t\texpectedAssertionsNumberErrorGen: errorGen\n\t\t});\n\t}\n\tfunction hasAssertions() {\n\t\tconst error = new Error(\"expected any number of assertion, but got none\");\n\t\tif (Error.captureStackTrace) {\n\t\t\tError.captureStackTrace(error, hasAssertions);\n\t\t}\n\t\texpect.setState({\n\t\t\tisExpectingAssertions: true,\n\t\t\tisExpectingAssertionsError: error\n\t\t});\n\t}\n\tchai$1.util.addMethod(expect, \"assertions\", assertions);\n\tchai$1.util.addMethod(expect, \"hasAssertions\", hasAssertions);\n\texpect.extend(customMatchers);\n\treturn expect;\n}\nconst globalExpect = createExpect();\nObject.defineProperty(globalThis, GLOBAL_EXPECT, {\n\tvalue: globalExpect,\n\twritable: true,\n\tconfigurable: true\n});\n\n/**\n* Gives access to injected context provided from the main thread.\n* This usually returns a value provided by `globalSetup` or an external library.\n*/\nfunction inject(key) {\n\tconst workerState = getWorkerState();\n\treturn workerState.providedContext[key];\n}\n\nvar fakeTimersSrc = {};\n\nvar global;\nvar hasRequiredGlobal;\n\nfunction requireGlobal () {\n\tif (hasRequiredGlobal) return global;\n\thasRequiredGlobal = 1;\n\n\t/**\n\t * A reference to the global object\n\t * @type {object} globalObject\n\t */\n\tvar globalObject;\n\n\t/* istanbul ignore else */\n\tif (typeof commonjsGlobal !== \"undefined\") {\n\t // Node\n\t globalObject = commonjsGlobal;\n\t} else if (typeof window !== \"undefined\") {\n\t // Browser\n\t globalObject = window;\n\t} else {\n\t // WebWorker\n\t globalObject = self;\n\t}\n\n\tglobal = globalObject;\n\treturn global;\n}\n\nvar throwsOnProto_1;\nvar hasRequiredThrowsOnProto;\n\nfunction requireThrowsOnProto () {\n\tif (hasRequiredThrowsOnProto) return throwsOnProto_1;\n\thasRequiredThrowsOnProto = 1;\n\n\t/**\n\t * Is true when the environment causes an error to be thrown for accessing the\n\t * __proto__ property.\n\t * This is necessary in order to support `node --disable-proto=throw`.\n\t *\n\t * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/proto\n\t * @type {boolean}\n\t */\n\tlet throwsOnProto;\n\ttry {\n\t const object = {};\n\t // eslint-disable-next-line no-proto, no-unused-expressions\n\t object.__proto__;\n\t throwsOnProto = false;\n\t} catch (_) {\n\t // This branch is covered when tests are run with `--disable-proto=throw`,\n\t // however we can test both branches at the same time, so this is ignored\n\t /* istanbul ignore next */\n\t throwsOnProto = true;\n\t}\n\n\tthrowsOnProto_1 = throwsOnProto;\n\treturn throwsOnProto_1;\n}\n\nvar copyPrototypeMethods;\nvar hasRequiredCopyPrototypeMethods;\n\nfunction requireCopyPrototypeMethods () {\n\tif (hasRequiredCopyPrototypeMethods) return copyPrototypeMethods;\n\thasRequiredCopyPrototypeMethods = 1;\n\n\tvar call = Function.call;\n\tvar throwsOnProto = requireThrowsOnProto();\n\n\tvar disallowedProperties = [\n\t // ignore size because it throws from Map\n\t \"size\",\n\t \"caller\",\n\t \"callee\",\n\t \"arguments\",\n\t];\n\n\t// This branch is covered when tests are run with `--disable-proto=throw`,\n\t// however we can test both branches at the same time, so this is ignored\n\t/* istanbul ignore next */\n\tif (throwsOnProto) {\n\t disallowedProperties.push(\"__proto__\");\n\t}\n\n\tcopyPrototypeMethods = function copyPrototypeMethods(prototype) {\n\t // eslint-disable-next-line @sinonjs/no-prototype-methods/no-prototype-methods\n\t return Object.getOwnPropertyNames(prototype).reduce(function (\n\t result,\n\t name\n\t ) {\n\t if (disallowedProperties.includes(name)) {\n\t return result;\n\t }\n\n\t if (typeof prototype[name] !== \"function\") {\n\t return result;\n\t }\n\n\t result[name] = call.bind(prototype[name]);\n\n\t return result;\n\t },\n\t Object.create(null));\n\t};\n\treturn copyPrototypeMethods;\n}\n\nvar array;\nvar hasRequiredArray;\n\nfunction requireArray () {\n\tif (hasRequiredArray) return array;\n\thasRequiredArray = 1;\n\n\tvar copyPrototype = requireCopyPrototypeMethods();\n\n\tarray = copyPrototype(Array.prototype);\n\treturn array;\n}\n\nvar calledInOrder_1;\nvar hasRequiredCalledInOrder;\n\nfunction requireCalledInOrder () {\n\tif (hasRequiredCalledInOrder) return calledInOrder_1;\n\thasRequiredCalledInOrder = 1;\n\n\tvar every = requireArray().every;\n\n\t/**\n\t * @private\n\t */\n\tfunction hasCallsLeft(callMap, spy) {\n\t if (callMap[spy.id] === undefined) {\n\t callMap[spy.id] = 0;\n\t }\n\n\t return callMap[spy.id] < spy.callCount;\n\t}\n\n\t/**\n\t * @private\n\t */\n\tfunction checkAdjacentCalls(callMap, spy, index, spies) {\n\t var calledBeforeNext = true;\n\n\t if (index !== spies.length - 1) {\n\t calledBeforeNext = spy.calledBefore(spies[index + 1]);\n\t }\n\n\t if (hasCallsLeft(callMap, spy) && calledBeforeNext) {\n\t callMap[spy.id] += 1;\n\t return true;\n\t }\n\n\t return false;\n\t}\n\n\t/**\n\t * A Sinon proxy object (fake, spy, stub)\n\t * @typedef {object} SinonProxy\n\t * @property {Function} calledBefore - A method that determines if this proxy was called before another one\n\t * @property {string} id - Some id\n\t * @property {number} callCount - Number of times this proxy has been called\n\t */\n\n\t/**\n\t * Returns true when the spies have been called in the order they were supplied in\n\t * @param {SinonProxy[] | SinonProxy} spies An array of proxies, or several proxies as arguments\n\t * @returns {boolean} true when spies are called in order, false otherwise\n\t */\n\tfunction calledInOrder(spies) {\n\t var callMap = {};\n\t // eslint-disable-next-line no-underscore-dangle\n\t var _spies = arguments.length > 1 ? arguments : spies;\n\n\t return every(_spies, checkAdjacentCalls.bind(null, callMap));\n\t}\n\n\tcalledInOrder_1 = calledInOrder;\n\treturn calledInOrder_1;\n}\n\nvar className_1;\nvar hasRequiredClassName;\n\nfunction requireClassName () {\n\tif (hasRequiredClassName) return className_1;\n\thasRequiredClassName = 1;\n\n\t/**\n\t * Returns a display name for a value from a constructor\n\t * @param {object} value A value to examine\n\t * @returns {(string|null)} A string or null\n\t */\n\tfunction className(value) {\n\t const name = value.constructor && value.constructor.name;\n\t return name || null;\n\t}\n\n\tclassName_1 = className;\n\treturn className_1;\n}\n\nvar deprecated = {};\n\n/* eslint-disable no-console */\n\nvar hasRequiredDeprecated;\n\nfunction requireDeprecated () {\n\tif (hasRequiredDeprecated) return deprecated;\n\thasRequiredDeprecated = 1;\n\t(function (exports) {\n\n\t\t/**\n\t\t * Returns a function that will invoke the supplied function and print a\n\t\t * deprecation warning to the console each time it is called.\n\t\t * @param {Function} func\n\t\t * @param {string} msg\n\t\t * @returns {Function}\n\t\t */\n\t\texports.wrap = function (func, msg) {\n\t\t var wrapped = function () {\n\t\t exports.printWarning(msg);\n\t\t return func.apply(this, arguments);\n\t\t };\n\t\t if (func.prototype) {\n\t\t wrapped.prototype = func.prototype;\n\t\t }\n\t\t return wrapped;\n\t\t};\n\n\t\t/**\n\t\t * Returns a string which can be supplied to `wrap()` to notify the user that a\n\t\t * particular part of the sinon API has been deprecated.\n\t\t * @param {string} packageName\n\t\t * @param {string} funcName\n\t\t * @returns {string}\n\t\t */\n\t\texports.defaultMsg = function (packageName, funcName) {\n\t\t return `${packageName}.${funcName} is deprecated and will be removed from the public API in a future version of ${packageName}.`;\n\t\t};\n\n\t\t/**\n\t\t * Prints a warning on the console, when it exists\n\t\t * @param {string} msg\n\t\t * @returns {undefined}\n\t\t */\n\t\texports.printWarning = function (msg) {\n\t\t /* istanbul ignore next */\n\t\t if (typeof process === \"object\" && process.emitWarning) {\n\t\t // Emit Warnings in Node\n\t\t process.emitWarning(msg);\n\t\t } else if (console.info) {\n\t\t console.info(msg);\n\t\t } else {\n\t\t console.log(msg);\n\t\t }\n\t\t}; \n\t} (deprecated));\n\treturn deprecated;\n}\n\nvar every;\nvar hasRequiredEvery;\n\nfunction requireEvery () {\n\tif (hasRequiredEvery) return every;\n\thasRequiredEvery = 1;\n\n\t/**\n\t * Returns true when fn returns true for all members of obj.\n\t * This is an every implementation that works for all iterables\n\t * @param {object} obj\n\t * @param {Function} fn\n\t * @returns {boolean}\n\t */\n\tevery = function every(obj, fn) {\n\t var pass = true;\n\n\t try {\n\t // eslint-disable-next-line @sinonjs/no-prototype-methods/no-prototype-methods\n\t obj.forEach(function () {\n\t if (!fn.apply(this, arguments)) {\n\t // Throwing an error is the only way to break `forEach`\n\t throw new Error();\n\t }\n\t });\n\t } catch (e) {\n\t pass = false;\n\t }\n\n\t return pass;\n\t};\n\treturn every;\n}\n\nvar functionName;\nvar hasRequiredFunctionName;\n\nfunction requireFunctionName () {\n\tif (hasRequiredFunctionName) return functionName;\n\thasRequiredFunctionName = 1;\n\n\t/**\n\t * Returns a display name for a function\n\t * @param {Function} func\n\t * @returns {string}\n\t */\n\tfunctionName = function functionName(func) {\n\t if (!func) {\n\t return \"\";\n\t }\n\n\t try {\n\t return (\n\t func.displayName ||\n\t func.name ||\n\t // Use function decomposition as a last resort to get function\n\t // name. Does not rely on function decomposition to work - if it\n\t // doesn't debugging will be slightly less informative\n\t // (i.e. toString will say 'spy' rather than 'myFunc').\n\t (String(func).match(/function ([^\\s(]+)/) || [])[1]\n\t );\n\t } catch (e) {\n\t // Stringify may fail and we might get an exception, as a last-last\n\t // resort fall back to empty string.\n\t return \"\";\n\t }\n\t};\n\treturn functionName;\n}\n\nvar orderByFirstCall_1;\nvar hasRequiredOrderByFirstCall;\n\nfunction requireOrderByFirstCall () {\n\tif (hasRequiredOrderByFirstCall) return orderByFirstCall_1;\n\thasRequiredOrderByFirstCall = 1;\n\n\tvar sort = requireArray().sort;\n\tvar slice = requireArray().slice;\n\n\t/**\n\t * @private\n\t */\n\tfunction comparator(a, b) {\n\t // uuid, won't ever be equal\n\t var aCall = a.getCall(0);\n\t var bCall = b.getCall(0);\n\t var aId = (aCall && aCall.callId) || -1;\n\t var bId = (bCall && bCall.callId) || -1;\n\n\t return aId < bId ? -1 : 1;\n\t}\n\n\t/**\n\t * A Sinon proxy object (fake, spy, stub)\n\t * @typedef {object} SinonProxy\n\t * @property {Function} getCall - A method that can return the first call\n\t */\n\n\t/**\n\t * Sorts an array of SinonProxy instances (fake, spy, stub) by their first call\n\t * @param {SinonProxy[] | SinonProxy} spies\n\t * @returns {SinonProxy[]}\n\t */\n\tfunction orderByFirstCall(spies) {\n\t return sort(slice(spies), comparator);\n\t}\n\n\torderByFirstCall_1 = orderByFirstCall;\n\treturn orderByFirstCall_1;\n}\n\nvar _function;\nvar hasRequired_function;\n\nfunction require_function () {\n\tif (hasRequired_function) return _function;\n\thasRequired_function = 1;\n\n\tvar copyPrototype = requireCopyPrototypeMethods();\n\n\t_function = copyPrototype(Function.prototype);\n\treturn _function;\n}\n\nvar map;\nvar hasRequiredMap;\n\nfunction requireMap () {\n\tif (hasRequiredMap) return map;\n\thasRequiredMap = 1;\n\n\tvar copyPrototype = requireCopyPrototypeMethods();\n\n\tmap = copyPrototype(Map.prototype);\n\treturn map;\n}\n\nvar object;\nvar hasRequiredObject;\n\nfunction requireObject () {\n\tif (hasRequiredObject) return object;\n\thasRequiredObject = 1;\n\n\tvar copyPrototype = requireCopyPrototypeMethods();\n\n\tobject = copyPrototype(Object.prototype);\n\treturn object;\n}\n\nvar set;\nvar hasRequiredSet;\n\nfunction requireSet () {\n\tif (hasRequiredSet) return set;\n\thasRequiredSet = 1;\n\n\tvar copyPrototype = requireCopyPrototypeMethods();\n\n\tset = copyPrototype(Set.prototype);\n\treturn set;\n}\n\nvar string;\nvar hasRequiredString;\n\nfunction requireString () {\n\tif (hasRequiredString) return string;\n\thasRequiredString = 1;\n\n\tvar copyPrototype = requireCopyPrototypeMethods();\n\n\tstring = copyPrototype(String.prototype);\n\treturn string;\n}\n\nvar prototypes;\nvar hasRequiredPrototypes;\n\nfunction requirePrototypes () {\n\tif (hasRequiredPrototypes) return prototypes;\n\thasRequiredPrototypes = 1;\n\n\tprototypes = {\n\t array: requireArray(),\n\t function: require_function(),\n\t map: requireMap(),\n\t object: requireObject(),\n\t set: requireSet(),\n\t string: requireString(),\n\t};\n\treturn prototypes;\n}\n\nvar typeDetect$1 = {exports: {}};\n\nvar typeDetect = typeDetect$1.exports;\n\nvar hasRequiredTypeDetect;\n\nfunction requireTypeDetect () {\n\tif (hasRequiredTypeDetect) return typeDetect$1.exports;\n\thasRequiredTypeDetect = 1;\n\t(function (module, exports) {\n\t\t(function (global, factory) {\n\t\t\tmodule.exports = factory() ;\n\t\t}(typeDetect, (function () {\n\t\t/* !\n\t\t * type-detect\n\t\t * Copyright(c) 2013 jake luer <jake@alogicalparadox.com>\n\t\t * MIT Licensed\n\t\t */\n\t\tvar promiseExists = typeof Promise === 'function';\n\n\t\t/* eslint-disable no-undef */\n\t\tvar globalObject = typeof self === 'object' ? self : commonjsGlobal; // eslint-disable-line id-blacklist\n\n\t\tvar symbolExists = typeof Symbol !== 'undefined';\n\t\tvar mapExists = typeof Map !== 'undefined';\n\t\tvar setExists = typeof Set !== 'undefined';\n\t\tvar weakMapExists = typeof WeakMap !== 'undefined';\n\t\tvar weakSetExists = typeof WeakSet !== 'undefined';\n\t\tvar dataViewExists = typeof DataView !== 'undefined';\n\t\tvar symbolIteratorExists = symbolExists && typeof Symbol.iterator !== 'undefined';\n\t\tvar symbolToStringTagExists = symbolExists && typeof Symbol.toStringTag !== 'undefined';\n\t\tvar setEntriesExists = setExists && typeof Set.prototype.entries === 'function';\n\t\tvar mapEntriesExists = mapExists && typeof Map.prototype.entries === 'function';\n\t\tvar setIteratorPrototype = setEntriesExists && Object.getPrototypeOf(new Set().entries());\n\t\tvar mapIteratorPrototype = mapEntriesExists && Object.getPrototypeOf(new Map().entries());\n\t\tvar arrayIteratorExists = symbolIteratorExists && typeof Array.prototype[Symbol.iterator] === 'function';\n\t\tvar arrayIteratorPrototype = arrayIteratorExists && Object.getPrototypeOf([][Symbol.iterator]());\n\t\tvar stringIteratorExists = symbolIteratorExists && typeof String.prototype[Symbol.iterator] === 'function';\n\t\tvar stringIteratorPrototype = stringIteratorExists && Object.getPrototypeOf(''[Symbol.iterator]());\n\t\tvar toStringLeftSliceLength = 8;\n\t\tvar toStringRightSliceLength = -1;\n\t\t/**\n\t\t * ### typeOf (obj)\n\t\t *\n\t\t * Uses `Object.prototype.toString` to determine the type of an object,\n\t\t * normalising behaviour across engine versions & well optimised.\n\t\t *\n\t\t * @param {Mixed} object\n\t\t * @return {String} object type\n\t\t * @api public\n\t\t */\n\t\tfunction typeDetect(obj) {\n\t\t /* ! Speed optimisation\n\t\t * Pre:\n\t\t * string literal x 3,039,035 ops/sec ±1.62% (78 runs sampled)\n\t\t * boolean literal x 1,424,138 ops/sec ±4.54% (75 runs sampled)\n\t\t * number literal x 1,653,153 ops/sec ±1.91% (82 runs sampled)\n\t\t * undefined x 9,978,660 ops/sec ±1.92% (75 runs sampled)\n\t\t * function x 2,556,769 ops/sec ±1.73% (77 runs sampled)\n\t\t * Post:\n\t\t * string literal x 38,564,796 ops/sec ±1.15% (79 runs sampled)\n\t\t * boolean literal x 31,148,940 ops/sec ±1.10% (79 runs sampled)\n\t\t * number literal x 32,679,330 ops/sec ±1.90% (78 runs sampled)\n\t\t * undefined x 32,363,368 ops/sec ±1.07% (82 runs sampled)\n\t\t * function x 31,296,870 ops/sec ±0.96% (83 runs sampled)\n\t\t */\n\t\t var typeofObj = typeof obj;\n\t\t if (typeofObj !== 'object') {\n\t\t return typeofObj;\n\t\t }\n\n\t\t /* ! Speed optimisation\n\t\t * Pre:\n\t\t * null x 28,645,765 ops/sec ±1.17% (82 runs sampled)\n\t\t * Post:\n\t\t * null x 36,428,962 ops/sec ±1.37% (84 runs sampled)\n\t\t */\n\t\t if (obj === null) {\n\t\t return 'null';\n\t\t }\n\n\t\t /* ! Spec Conformance\n\t\t * Test: `Object.prototype.toString.call(window)``\n\t\t * - Node === \"[object global]\"\n\t\t * - Chrome === \"[object global]\"\n\t\t * - Firefox === \"[object Window]\"\n\t\t * - PhantomJS === \"[object Window]\"\n\t\t * - Safari === \"[object Window]\"\n\t\t * - IE 11 === \"[object Window]\"\n\t\t * - IE Edge === \"[object Window]\"\n\t\t * Test: `Object.prototype.toString.call(this)``\n\t\t * - Chrome Worker === \"[object global]\"\n\t\t * - Firefox Worker === \"[object DedicatedWorkerGlobalScope]\"\n\t\t * - Safari Worker === \"[object DedicatedWorkerGlobalScope]\"\n\t\t * - IE 11 Worker === \"[object WorkerGlobalScope]\"\n\t\t * - IE Edge Worker === \"[object WorkerGlobalScope]\"\n\t\t */\n\t\t if (obj === globalObject) {\n\t\t return 'global';\n\t\t }\n\n\t\t /* ! Speed optimisation\n\t\t * Pre:\n\t\t * array literal x 2,888,352 ops/sec ±0.67% (82 runs sampled)\n\t\t * Post:\n\t\t * array literal x 22,479,650 ops/sec ±0.96% (81 runs sampled)\n\t\t */\n\t\t if (\n\t\t Array.isArray(obj) &&\n\t\t (symbolToStringTagExists === false || !(Symbol.toStringTag in obj))\n\t\t ) {\n\t\t return 'Array';\n\t\t }\n\n\t\t // Not caching existence of `window` and related properties due to potential\n\t\t // for `window` to be unset before tests in quasi-browser environments.\n\t\t if (typeof window === 'object' && window !== null) {\n\t\t /* ! Spec Conformance\n\t\t * (https://html.spec.whatwg.org/multipage/browsers.html#location)\n\t\t * WhatWG HTML$7.7.3 - The `Location` interface\n\t\t * Test: `Object.prototype.toString.call(window.location)``\n\t\t * - IE <=11 === \"[object Object]\"\n\t\t * - IE Edge <=13 === \"[object Object]\"\n\t\t */\n\t\t if (typeof window.location === 'object' && obj === window.location) {\n\t\t return 'Location';\n\t\t }\n\n\t\t /* ! Spec Conformance\n\t\t * (https://html.spec.whatwg.org/#document)\n\t\t * WhatWG HTML$3.1.1 - The `Document` object\n\t\t * Note: Most browsers currently adher to the W3C DOM Level 2 spec\n\t\t * (https://www.w3.org/TR/DOM-Level-2-HTML/html.html#ID-26809268)\n\t\t * which suggests that browsers should use HTMLTableCellElement for\n\t\t * both TD and TH elements. WhatWG separates these.\n\t\t * WhatWG HTML states:\n\t\t * > For historical reasons, Window objects must also have a\n\t\t * > writable, configurable, non-enumerable property named\n\t\t * > HTMLDocument whose value is the Document interface object.\n\t\t * Test: `Object.prototype.toString.call(document)``\n\t\t * - Chrome === \"[object HTMLDocument]\"\n\t\t * - Firefox === \"[object HTMLDocument]\"\n\t\t * - Safari === \"[object HTMLDocument]\"\n\t\t * - IE <=10 === \"[object Document]\"\n\t\t * - IE 11 === \"[object HTMLDocument]\"\n\t\t * - IE Edge <=13 === \"[object HTMLDocument]\"\n\t\t */\n\t\t if (typeof window.document === 'object' && obj === window.document) {\n\t\t return 'Document';\n\t\t }\n\n\t\t if (typeof window.navigator === 'object') {\n\t\t /* ! Spec Conformance\n\t\t * (https://html.spec.whatwg.org/multipage/webappapis.html#mimetypearray)\n\t\t * WhatWG HTML$8.6.1.5 - Plugins - Interface MimeTypeArray\n\t\t * Test: `Object.prototype.toString.call(navigator.mimeTypes)``\n\t\t * - IE <=10 === \"[object MSMimeTypesCollection]\"\n\t\t */\n\t\t if (typeof window.navigator.mimeTypes === 'object' &&\n\t\t obj === window.navigator.mimeTypes) {\n\t\t return 'MimeTypeArray';\n\t\t }\n\n\t\t /* ! Spec Conformance\n\t\t * (https://html.spec.whatwg.org/multipage/webappapis.html#pluginarray)\n\t\t * WhatWG HTML$8.6.1.5 - Plugins - Interface PluginArray\n\t\t * Test: `Object.prototype.toString.call(navigator.plugins)``\n\t\t * - IE <=10 === \"[object MSPluginsCollection]\"\n\t\t */\n\t\t if (typeof window.navigator.plugins === 'object' &&\n\t\t obj === window.navigator.plugins) {\n\t\t return 'PluginArray';\n\t\t }\n\t\t }\n\n\t\t if ((typeof window.HTMLElement === 'function' ||\n\t\t typeof window.HTMLElement === 'object') &&\n\t\t obj instanceof window.HTMLElement) {\n\t\t /* ! Spec Conformance\n\t\t * (https://html.spec.whatwg.org/multipage/webappapis.html#pluginarray)\n\t\t * WhatWG HTML$4.4.4 - The `blockquote` element - Interface `HTMLQuoteElement`\n\t\t * Test: `Object.prototype.toString.call(document.createElement('blockquote'))``\n\t\t * - IE <=10 === \"[object HTMLBlockElement]\"\n\t\t */\n\t\t if (obj.tagName === 'BLOCKQUOTE') {\n\t\t return 'HTMLQuoteElement';\n\t\t }\n\n\t\t /* ! Spec Conformance\n\t\t * (https://html.spec.whatwg.org/#htmltabledatacellelement)\n\t\t * WhatWG HTML$4.9.9 - The `td` element - Interface `HTMLTableDataCellElement`\n\t\t * Note: Most browsers currently adher to the W3C DOM Level 2 spec\n\t\t * (https://www.w3.org/TR/DOM-Level-2-HTML/html.html#ID-82915075)\n\t\t * which suggests that browsers should use HTMLTableCellElement for\n\t\t * both TD and TH elements. WhatWG separates these.\n\t\t * Test: Object.prototype.toString.call(document.createElement('td'))\n\t\t * - Chrome === \"[object HTMLTableCellElement]\"\n\t\t * - Firefox === \"[object HTMLTableCellElement]\"\n\t\t * - Safari === \"[object HTMLTableCellElement]\"\n\t\t */\n\t\t if (obj.tagName === 'TD') {\n\t\t return 'HTMLTableDataCellElement';\n\t\t }\n\n\t\t /* ! Spec Conformance\n\t\t * (https://html.spec.whatwg.org/#htmltableheadercellelement)\n\t\t * WhatWG HTML$4.9.9 - The `td` element - Interface `HTMLTableHeaderCellElement`\n\t\t * Note: Most browsers currently adher to the W3C DOM Level 2 spec\n\t\t * (https://www.w3.org/TR/DOM-Level-2-HTML/html.html#ID-82915075)\n\t\t * which suggests that browsers should use HTMLTableCellElement for\n\t\t * both TD and TH elements. WhatWG separates these.\n\t\t * Test: Object.prototype.toString.call(document.createElement('th'))\n\t\t * - Chrome === \"[object HTMLTableCellElement]\"\n\t\t * - Firefox === \"[object HTMLTableCellElement]\"\n\t\t * - Safari === \"[object HTMLTableCellElement]\"\n\t\t */\n\t\t if (obj.tagName === 'TH') {\n\t\t return 'HTMLTableHeaderCellElement';\n\t\t }\n\t\t }\n\t\t }\n\n\t\t /* ! Speed optimisation\n\t\t * Pre:\n\t\t * Float64Array x 625,644 ops/sec ±1.58% (80 runs sampled)\n\t\t * Float32Array x 1,279,852 ops/sec ±2.91% (77 runs sampled)\n\t\t * Uint32Array x 1,178,185 ops/sec ±1.95% (83 runs sampled)\n\t\t * Uint16Array x 1,008,380 ops/sec ±2.25% (80 runs sampled)\n\t\t * Uint8Array x 1,128,040 ops/sec ±2.11% (81 runs sampled)\n\t\t * Int32Array x 1,170,119 ops/sec ±2.88% (80 runs sampled)\n\t\t * Int16Array x 1,176,348 ops/sec ±5.79% (86 runs sampled)\n\t\t * Int8Array x 1,058,707 ops/sec ±4.94% (77 runs sampled)\n\t\t * Uint8ClampedArray x 1,110,633 ops/sec ±4.20% (80 runs sampled)\n\t\t * Post:\n\t\t * Float64Array x 7,105,671 ops/sec ±13.47% (64 runs sampled)\n\t\t * Float32Array x 5,887,912 ops/sec ±1.46% (82 runs sampled)\n\t\t * Uint32Array x 6,491,661 ops/sec ±1.76% (79 runs sampled)\n\t\t * Uint16Array x 6,559,795 ops/sec ±1.67% (82 runs sampled)\n\t\t * Uint8Array x 6,463,966 ops/sec ±1.43% (85 runs sampled)\n\t\t * Int32Array x 5,641,841 ops/sec ±3.49% (81 runs sampled)\n\t\t * Int16Array x 6,583,511 ops/sec ±1.98% (80 runs sampled)\n\t\t * Int8Array x 6,606,078 ops/sec ±1.74% (81 runs sampled)\n\t\t * Uint8ClampedArray x 6,602,224 ops/sec ±1.77% (83 runs sampled)\n\t\t */\n\t\t var stringTag = (symbolToStringTagExists && obj[Symbol.toStringTag]);\n\t\t if (typeof stringTag === 'string') {\n\t\t return stringTag;\n\t\t }\n\n\t\t var objPrototype = Object.getPrototypeOf(obj);\n\t\t /* ! Speed optimisation\n\t\t * Pre:\n\t\t * regex literal x 1,772,385 ops/sec ±1.85% (77 runs sampled)\n\t\t * regex constructor x 2,143,634 ops/sec ±2.46% (78 runs sampled)\n\t\t * Post:\n\t\t * regex literal x 3,928,009 ops/sec ±0.65% (78 runs sampled)\n\t\t * regex constructor x 3,931,108 ops/sec ±0.58% (84 runs sampled)\n\t\t */\n\t\t if (objPrototype === RegExp.prototype) {\n\t\t return 'RegExp';\n\t\t }\n\n\t\t /* ! Speed optimisation\n\t\t * Pre:\n\t\t * date x 2,130,074 ops/sec ±4.42% (68 runs sampled)\n\t\t * Post:\n\t\t * date x 3,953,779 ops/sec ±1.35% (77 runs sampled)\n\t\t */\n\t\t if (objPrototype === Date.prototype) {\n\t\t return 'Date';\n\t\t }\n\n\t\t /* ! Spec Conformance\n\t\t * (http://www.ecma-international.org/ecma-262/6.0/index.html#sec-promise.prototype-@@tostringtag)\n\t\t * ES6$25.4.5.4 - Promise.prototype[@@toStringTag] should be \"Promise\":\n\t\t * Test: `Object.prototype.toString.call(Promise.resolve())``\n\t\t * - Chrome <=47 === \"[object Object]\"\n\t\t * - Edge <=20 === \"[object Object]\"\n\t\t * - Firefox 29-Latest === \"[object Promise]\"\n\t\t * - Safari 7.1-Latest === \"[object Promise]\"\n\t\t */\n\t\t if (promiseExists && objPrototype === Promise.prototype) {\n\t\t return 'Promise';\n\t\t }\n\n\t\t /* ! Speed optimisation\n\t\t * Pre:\n\t\t * set x 2,222,186 ops/sec ±1.31% (82 runs sampled)\n\t\t * Post:\n\t\t * set x 4,545,879 ops/sec ±1.13% (83 runs sampled)\n\t\t */\n\t\t if (setExists && objPrototype === Set.prototype) {\n\t\t return 'Set';\n\t\t }\n\n\t\t /* ! Speed optimisation\n\t\t * Pre:\n\t\t * map x 2,396,842 ops/sec ±1.59% (81 runs sampled)\n\t\t * Post:\n\t\t * map x 4,183,945 ops/sec ±6.59% (82 runs sampled)\n\t\t */\n\t\t if (mapExists && objPrototype === Map.prototype) {\n\t\t return 'Map';\n\t\t }\n\n\t\t /* ! Speed optimisation\n\t\t * Pre:\n\t\t * weakset x 1,323,220 ops/sec ±2.17% (76 runs sampled)\n\t\t * Post:\n\t\t * weakset x 4,237,510 ops/sec ±2.01% (77 runs sampled)\n\t\t */\n\t\t if (weakSetExists && objPrototype === WeakSet.prototype) {\n\t\t return 'WeakSet';\n\t\t }\n\n\t\t /* ! Speed optimisation\n\t\t * Pre:\n\t\t * weakmap x 1,500,260 ops/sec ±2.02% (78 runs sampled)\n\t\t * Post:\n\t\t * weakmap x 3,881,384 ops/sec ±1.45% (82 runs sampled)\n\t\t */\n\t\t if (weakMapExists && objPrototype === WeakMap.prototype) {\n\t\t return 'WeakMap';\n\t\t }\n\n\t\t /* ! Spec Conformance\n\t\t * (http://www.ecma-international.org/ecma-262/6.0/index.html#sec-dataview.prototype-@@tostringtag)\n\t\t * ES6$24.2.4.21 - DataView.prototype[@@toStringTag] should be \"DataView\":\n\t\t * Test: `Object.prototype.toString.call(new DataView(new ArrayBuffer(1)))``\n\t\t * - Edge <=13 === \"[object Object]\"\n\t\t */\n\t\t if (dataViewExists && objPrototype === DataView.prototype) {\n\t\t return 'DataView';\n\t\t }\n\n\t\t /* ! Spec Conformance\n\t\t * (http://www.ecma-international.org/ecma-262/6.0/index.html#sec-%mapiteratorprototype%-@@tostringtag)\n\t\t * ES6$23.1.5.2.2 - %MapIteratorPrototype%[@@toStringTag] should be \"Map Iterator\":\n\t\t * Test: `Object.prototype.toString.call(new Map().entries())``\n\t\t * - Edge <=13 === \"[object Object]\"\n\t\t */\n\t\t if (mapExists && objPrototype === mapIteratorPrototype) {\n\t\t return 'Map Iterator';\n\t\t }\n\n\t\t /* ! Spec Conformance\n\t\t * (http://www.ecma-international.org/ecma-262/6.0/index.html#sec-%setiteratorprototype%-@@tostringtag)\n\t\t * ES6$23.2.5.2.2 - %SetIteratorPrototype%[@@toStringTag] should be \"Set Iterator\":\n\t\t * Test: `Object.prototype.toString.call(new Set().entries())``\n\t\t * - Edge <=13 === \"[object Object]\"\n\t\t */\n\t\t if (setExists && objPrototype === setIteratorPrototype) {\n\t\t return 'Set Iterator';\n\t\t }\n\n\t\t /* ! Spec Conformance\n\t\t * (http://www.ecma-international.org/ecma-262/6.0/index.html#sec-%arrayiteratorprototype%-@@tostringtag)\n\t\t * ES6$22.1.5.2.2 - %ArrayIteratorPrototype%[@@toStringTag] should be \"Array Iterator\":\n\t\t * Test: `Object.prototype.toString.call([][Symbol.iterator]())``\n\t\t * - Edge <=13 === \"[object Object]\"\n\t\t */\n\t\t if (arrayIteratorExists && objPrototype === arrayIteratorPrototype) {\n\t\t return 'Array Iterator';\n\t\t }\n\n\t\t /* ! Spec Conformance\n\t\t * (http://www.ecma-international.org/ecma-262/6.0/index.html#sec-%stringiteratorprototype%-@@tostringtag)\n\t\t * ES6$21.1.5.2.2 - %StringIteratorPrototype%[@@toStringTag] should be \"String Iterator\":\n\t\t * Test: `Object.prototype.toString.call(''[Symbol.iterator]())``\n\t\t * - Edge <=13 === \"[object Object]\"\n\t\t */\n\t\t if (stringIteratorExists && objPrototype === stringIteratorPrototype) {\n\t\t return 'String Iterator';\n\t\t }\n\n\t\t /* ! Speed optimisation\n\t\t * Pre:\n\t\t * object from null x 2,424,320 ops/sec ±1.67% (76 runs sampled)\n\t\t * Post:\n\t\t * object from null x 5,838,000 ops/sec ±0.99% (84 runs sampled)\n\t\t */\n\t\t if (objPrototype === null) {\n\t\t return 'Object';\n\t\t }\n\n\t\t return Object\n\t\t .prototype\n\t\t .toString\n\t\t .call(obj)\n\t\t .slice(toStringLeftSliceLength, toStringRightSliceLength);\n\t\t}\n\n\t\treturn typeDetect;\n\n\t\t}))); \n\t} (typeDetect$1));\n\treturn typeDetect$1.exports;\n}\n\nvar typeOf;\nvar hasRequiredTypeOf;\n\nfunction requireTypeOf () {\n\tif (hasRequiredTypeOf) return typeOf;\n\thasRequiredTypeOf = 1;\n\n\tvar type = requireTypeDetect();\n\n\t/**\n\t * Returns the lower-case result of running type from type-detect on the value\n\t * @param {*} value\n\t * @returns {string}\n\t */\n\ttypeOf = function typeOf(value) {\n\t return type(value).toLowerCase();\n\t};\n\treturn typeOf;\n}\n\nvar valueToString_1;\nvar hasRequiredValueToString;\n\nfunction requireValueToString () {\n\tif (hasRequiredValueToString) return valueToString_1;\n\thasRequiredValueToString = 1;\n\n\t/**\n\t * Returns a string representation of the value\n\t * @param {*} value\n\t * @returns {string}\n\t */\n\tfunction valueToString(value) {\n\t if (value && value.toString) {\n\t // eslint-disable-next-line @sinonjs/no-prototype-methods/no-prototype-methods\n\t return value.toString();\n\t }\n\t return String(value);\n\t}\n\n\tvalueToString_1 = valueToString;\n\treturn valueToString_1;\n}\n\nvar lib;\nvar hasRequiredLib;\n\nfunction requireLib () {\n\tif (hasRequiredLib) return lib;\n\thasRequiredLib = 1;\n\n\tlib = {\n\t global: requireGlobal(),\n\t calledInOrder: requireCalledInOrder(),\n\t className: requireClassName(),\n\t deprecated: requireDeprecated(),\n\t every: requireEvery(),\n\t functionName: requireFunctionName(),\n\t orderByFirstCall: requireOrderByFirstCall(),\n\t prototypes: requirePrototypes(),\n\t typeOf: requireTypeOf(),\n\t valueToString: requireValueToString(),\n\t};\n\treturn lib;\n}\n\nvar hasRequiredFakeTimersSrc;\n\nfunction requireFakeTimersSrc () {\n\tif (hasRequiredFakeTimersSrc) return fakeTimersSrc;\n\thasRequiredFakeTimersSrc = 1;\n\n\tconst globalObject = requireLib().global;\n\tlet timersModule, timersPromisesModule;\n\tif (typeof __vitest_required__ !== 'undefined') {\n\t try {\n\t timersModule = __vitest_required__.timers;\n\t } catch (e) {\n\t // ignored\n\t }\n\t try {\n\t timersPromisesModule = __vitest_required__.timersPromises;\n\t } catch (e) {\n\t // ignored\n\t }\n\t}\n\n\t/**\n\t * @typedef {object} IdleDeadline\n\t * @property {boolean} didTimeout - whether or not the callback was called before reaching the optional timeout\n\t * @property {function():number} timeRemaining - a floating-point value providing an estimate of the number of milliseconds remaining in the current idle period\n\t */\n\n\t/**\n\t * Queues a function to be called during a browser's idle periods\n\t * @callback RequestIdleCallback\n\t * @param {function(IdleDeadline)} callback\n\t * @param {{timeout: number}} options - an options object\n\t * @returns {number} the id\n\t */\n\n\t/**\n\t * @callback NextTick\n\t * @param {VoidVarArgsFunc} callback - the callback to run\n\t * @param {...*} args - optional arguments to call the callback with\n\t * @returns {void}\n\t */\n\n\t/**\n\t * @callback SetImmediate\n\t * @param {VoidVarArgsFunc} callback - the callback to run\n\t * @param {...*} args - optional arguments to call the callback with\n\t * @returns {NodeImmediate}\n\t */\n\n\t/**\n\t * @callback VoidVarArgsFunc\n\t * @param {...*} callback - the callback to run\n\t * @returns {void}\n\t */\n\n\t/**\n\t * @typedef RequestAnimationFrame\n\t * @property {function(number):void} requestAnimationFrame\n\t * @returns {number} - the id\n\t */\n\n\t/**\n\t * @typedef Performance\n\t * @property {function(): number} now\n\t */\n\n\t/* eslint-disable jsdoc/require-property-description */\n\t/**\n\t * @typedef {object} Clock\n\t * @property {number} now - the current time\n\t * @property {Date} Date - the Date constructor\n\t * @property {number} loopLimit - the maximum number of timers before assuming an infinite loop\n\t * @property {RequestIdleCallback} requestIdleCallback\n\t * @property {function(number):void} cancelIdleCallback\n\t * @property {setTimeout} setTimeout\n\t * @property {clearTimeout} clearTimeout\n\t * @property {NextTick} nextTick\n\t * @property {queueMicrotask} queueMicrotask\n\t * @property {setInterval} setInterval\n\t * @property {clearInterval} clearInterval\n\t * @property {SetImmediate} setImmediate\n\t * @property {function(NodeImmediate):void} clearImmediate\n\t * @property {function():number} countTimers\n\t * @property {RequestAnimationFrame} requestAnimationFrame\n\t * @property {function(number):void} cancelAnimationFrame\n\t * @property {function():void} runMicrotasks\n\t * @property {function(string | number): number} tick\n\t * @property {function(string | number): Promise<number>} tickAsync\n\t * @property {function(): number} next\n\t * @property {function(): Promise<number>} nextAsync\n\t * @property {function(): number} runAll\n\t * @property {function(): number} runToFrame\n\t * @property {function(): Promise<number>} runAllAsync\n\t * @property {function(): number} runToLast\n\t * @property {function(): Promise<number>} runToLastAsync\n\t * @property {function(): void} reset\n\t * @property {function(number | Date): void} setSystemTime\n\t * @property {function(number): void} jump\n\t * @property {Performance} performance\n\t * @property {function(number[]): number[]} hrtime - process.hrtime (legacy)\n\t * @property {function(): void} uninstall Uninstall the clock.\n\t * @property {Function[]} methods - the methods that are faked\n\t * @property {boolean} [shouldClearNativeTimers] inherited from config\n\t * @property {{methodName:string, original:any}[] | undefined} timersModuleMethods\n\t * @property {{methodName:string, original:any}[] | undefined} timersPromisesModuleMethods\n\t * @property {Map<function(): void, AbortSignal>} abortListenerMap\n\t */\n\t/* eslint-enable jsdoc/require-property-description */\n\n\t/**\n\t * Configuration object for the `install` method.\n\t * @typedef {object} Config\n\t * @property {number|Date} [now] a number (in milliseconds) or a Date object (default epoch)\n\t * @property {string[]} [toFake] names of the methods that should be faked.\n\t * @property {number} [loopLimit] the maximum number of timers that will be run when calling runAll()\n\t * @property {boolean} [shouldAdvanceTime] tells FakeTimers to increment mocked time automatically (default false)\n\t * @property {number} [advanceTimeDelta] increment mocked time every <<advanceTimeDelta>> ms (default: 20ms)\n\t * @property {boolean} [shouldClearNativeTimers] forwards clear timer calls to native functions if they are not fakes (default: false)\n\t * @property {boolean} [ignoreMissingTimers] default is false, meaning asking to fake timers that are not present will throw an error\n\t */\n\n\t/* eslint-disable jsdoc/require-property-description */\n\t/**\n\t * The internal structure to describe a scheduled fake timer\n\t * @typedef {object} Timer\n\t * @property {Function} func\n\t * @property {*[]} args\n\t * @property {number} delay\n\t * @property {number} callAt\n\t * @property {number} createdAt\n\t * @property {boolean} immediate\n\t * @property {number} id\n\t * @property {Error} [error]\n\t */\n\n\t/**\n\t * A Node timer\n\t * @typedef {object} NodeImmediate\n\t * @property {function(): boolean} hasRef\n\t * @property {function(): NodeImmediate} ref\n\t * @property {function(): NodeImmediate} unref\n\t */\n\t/* eslint-enable jsdoc/require-property-description */\n\n\t/* eslint-disable complexity */\n\n\t/**\n\t * Mocks available features in the specified global namespace.\n\t * @param {*} _global Namespace to mock (e.g. `window`)\n\t * @returns {FakeTimers}\n\t */\n\tfunction withGlobal(_global) {\n\t const maxTimeout = Math.pow(2, 31) - 1; //see https://heycam.github.io/webidl/#abstract-opdef-converttoint\n\t const idCounterStart = 1e12; // arbitrarily large number to avoid collisions with native timer IDs\n\t const NOOP = function () {\n\t return undefined;\n\t };\n\t const NOOP_ARRAY = function () {\n\t return [];\n\t };\n\t const isPresent = {};\n\t let timeoutResult,\n\t addTimerReturnsObject = false;\n\n\t if (_global.setTimeout) {\n\t isPresent.setTimeout = true;\n\t timeoutResult = _global.setTimeout(NOOP, 0);\n\t addTimerReturnsObject = typeof timeoutResult === \"object\";\n\t }\n\t isPresent.clearTimeout = Boolean(_global.clearTimeout);\n\t isPresent.setInterval = Boolean(_global.setInterval);\n\t isPresent.clearInterval = Boolean(_global.clearInterval);\n\t isPresent.hrtime =\n\t _global.process && typeof _global.process.hrtime === \"function\";\n\t isPresent.hrtimeBigint =\n\t isPresent.hrtime && typeof _global.process.hrtime.bigint === \"function\";\n\t isPresent.nextTick =\n\t _global.process && typeof _global.process.nextTick === \"function\";\n\t const utilPromisify = _global.process && _global.__vitest_required__ && _global.__vitest_required__.util.promisify;\n\t isPresent.performance =\n\t _global.performance && typeof _global.performance.now === \"function\";\n\t const hasPerformancePrototype =\n\t _global.Performance &&\n\t (typeof _global.Performance).match(/^(function|object)$/);\n\t const hasPerformanceConstructorPrototype =\n\t _global.performance &&\n\t _global.performance.constructor &&\n\t _global.performance.constructor.prototype;\n\t isPresent.queueMicrotask = _global.hasOwnProperty(\"queueMicrotask\");\n\t isPresent.requestAnimationFrame =\n\t _global.requestAnimationFrame &&\n\t typeof _global.requestAnimationFrame === \"function\";\n\t isPresent.cancelAnimationFrame =\n\t _global.cancelAnimationFrame &&\n\t typeof _global.cancelAnimationFrame === \"function\";\n\t isPresent.requestIdleCallback =\n\t _global.requestIdleCallback &&\n\t typeof _global.requestIdleCallback === \"function\";\n\t isPresent.cancelIdleCallbackPresent =\n\t _global.cancelIdleCallback &&\n\t typeof _global.cancelIdleCallback === \"function\";\n\t isPresent.setImmediate =\n\t _global.setImmediate && typeof _global.setImmediate === \"function\";\n\t isPresent.clearImmediate =\n\t _global.clearImmediate && typeof _global.clearImmediate === \"function\";\n\t isPresent.Intl = _global.Intl && typeof _global.Intl === \"object\";\n\n\t if (_global.clearTimeout) {\n\t _global.clearTimeout(timeoutResult);\n\t }\n\n\t const NativeDate = _global.Date;\n\t const NativeIntl = isPresent.Intl\n\t ? Object.defineProperties(\n\t Object.create(null),\n\t Object.getOwnPropertyDescriptors(_global.Intl),\n\t )\n\t : undefined;\n\t let uniqueTimerId = idCounterStart;\n\n\t if (NativeDate === undefined) {\n\t throw new Error(\n\t \"The global scope doesn't have a `Date` object\" +\n\t \" (see https://github.com/sinonjs/sinon/issues/1852#issuecomment-419622780)\",\n\t );\n\t }\n\t isPresent.Date = true;\n\n\t /**\n\t * The PerformanceEntry object encapsulates a single performance metric\n\t * that is part of the browser's performance timeline.\n\t *\n\t * This is an object returned by the `mark` and `measure` methods on the Performance prototype\n\t */\n\t class FakePerformanceEntry {\n\t constructor(name, entryType, startTime, duration) {\n\t this.name = name;\n\t this.entryType = entryType;\n\t this.startTime = startTime;\n\t this.duration = duration;\n\t }\n\n\t toJSON() {\n\t return JSON.stringify({ ...this });\n\t }\n\t }\n\n\t /**\n\t * @param {number} num\n\t * @returns {boolean}\n\t */\n\t function isNumberFinite(num) {\n\t if (Number.isFinite) {\n\t return Number.isFinite(num);\n\t }\n\n\t return isFinite(num);\n\t }\n\n\t let isNearInfiniteLimit = false;\n\n\t /**\n\t * @param {Clock} clock\n\t * @param {number} i\n\t */\n\t function checkIsNearInfiniteLimit(clock, i) {\n\t if (clock.loopLimit && i === clock.loopLimit - 1) {\n\t isNearInfiniteLimit = true;\n\t }\n\t }\n\n\t /**\n\t *\n\t */\n\t function resetIsNearInfiniteLimit() {\n\t isNearInfiniteLimit = false;\n\t }\n\n\t /**\n\t * Parse strings like \"01:10:00\" (meaning 1 hour, 10 minutes, 0 seconds) into\n\t * number of milliseconds. This is used to support human-readable strings passed\n\t * to clock.tick()\n\t * @param {string} str\n\t * @returns {number}\n\t */\n\t function parseTime(str) {\n\t if (!str) {\n\t return 0;\n\t }\n\n\t const strings = str.split(\":\");\n\t const l = strings.length;\n\t let i = l;\n\t let ms = 0;\n\t let parsed;\n\n\t if (l > 3 || !/^(\\d\\d:){0,2}\\d\\d?$/.test(str)) {\n\t throw new Error(\n\t \"tick only understands numbers, 'm:s' and 'h:m:s'. Each part must be two digits\",\n\t );\n\t }\n\n\t while (i--) {\n\t parsed = parseInt(strings[i], 10);\n\n\t if (parsed >= 60) {\n\t throw new Error(`Invalid time ${str}`);\n\t }\n\n\t ms += parsed * Math.pow(60, l - i - 1);\n\t }\n\n\t return ms * 1000;\n\t }\n\n\t /**\n\t * Get the decimal part of the millisecond value as nanoseconds\n\t * @param {number} msFloat the number of milliseconds\n\t * @returns {number} an integer number of nanoseconds in the range [0,1e6)\n\t *\n\t * Example: nanoRemainer(123.456789) -> 456789\n\t */\n\t function nanoRemainder(msFloat) {\n\t const modulo = 1e6;\n\t const remainder = (msFloat * 1e6) % modulo;\n\t const positiveRemainder =\n\t remainder < 0 ? remainder + modulo : remainder;\n\n\t return Math.floor(positiveRemainder);\n\t }\n\n\t /**\n\t * Used to grok the `now` parameter to createClock.\n\t * @param {Date|number} epoch the system time\n\t * @returns {number}\n\t */\n\t function getEpoch(epoch) {\n\t if (!epoch) {\n\t return 0;\n\t }\n\t if (typeof epoch.getTime === \"function\") {\n\t return epoch.getTime();\n\t }\n\t if (typeof epoch === \"number\") {\n\t return epoch;\n\t }\n\t throw new TypeError(\"now should be milliseconds since UNIX epoch\");\n\t }\n\n\t /**\n\t * @param {number} from\n\t * @param {number} to\n\t * @param {Timer} timer\n\t * @returns {boolean}\n\t */\n\t function inRange(from, to, timer) {\n\t return timer && timer.callAt >= from && timer.callAt <= to;\n\t }\n\n\t /**\n\t * @param {Clock} clock\n\t * @param {Timer} job\n\t */\n\t function getInfiniteLoopError(clock, job) {\n\t const infiniteLoopError = new Error(\n\t `Aborting after running ${clock.loopLimit} timers, assuming an infinite loop!`,\n\t );\n\n\t if (!job.error) {\n\t return infiniteLoopError;\n\t }\n\n\t // pattern never matched in Node\n\t const computedTargetPattern = /target\\.*[<|(|[].*?[>|\\]|)]\\s*/;\n\t let clockMethodPattern = new RegExp(\n\t String(Object.keys(clock).join(\"|\")),\n\t );\n\n\t if (addTimerReturnsObject) {\n\t // node.js environment\n\t clockMethodPattern = new RegExp(\n\t `\\\\s+at (Object\\\\.)?(?:${Object.keys(clock).join(\"|\")})\\\\s+`,\n\t );\n\t }\n\n\t let matchedLineIndex = -1;\n\t job.error.stack.split(\"\\n\").some(function (line, i) {\n\t // If we've matched a computed target line (e.g. setTimeout) then we\n\t // don't need to look any further. Return true to stop iterating.\n\t const matchedComputedTarget = line.match(computedTargetPattern);\n\t /* istanbul ignore if */\n\t if (matchedComputedTarget) {\n\t matchedLineIndex = i;\n\t return true;\n\t }\n\n\t // If we've matched a clock method line, then there may still be\n\t // others further down the trace. Return false to keep iterating.\n\t const matchedClockMethod = line.match(clockMethodPattern);\n\t if (matchedClockMethod) {\n\t matchedLineIndex = i;\n\t return false;\n\t }\n\n\t // If we haven't matched anything on this line, but we matched\n\t // previously and set the matched line index, then we can stop.\n\t // If we haven't matched previously, then we should keep iterating.\n\t return matchedLineIndex >= 0;\n\t });\n\n\t const stack = `${infiniteLoopError}\\n${job.type || \"Microtask\"} - ${\n\t job.func.name || \"anonymous\"\n\t }\\n${job.error.stack\n\t .split(\"\\n\")\n\t .slice(matchedLineIndex + 1)\n\t .join(\"\\n\")}`;\n\n\t try {\n\t Object.defineProperty(infiniteLoopError, \"stack\", {\n\t value: stack,\n\t });\n\t } catch (e) {\n\t // noop\n\t }\n\n\t return infiniteLoopError;\n\t }\n\n\t //eslint-disable-next-line jsdoc/require-jsdoc\n\t function createDate() {\n\t class ClockDate extends NativeDate {\n\t /**\n\t * @param {number} year\n\t * @param {number} month\n\t * @param {number} date\n\t * @param {number} hour\n\t * @param {number} minute\n\t * @param {number} second\n\t * @param {number} ms\n\t * @returns void\n\t */\n\t // eslint-disable-next-line no-unused-vars\n\t constructor(year, month, date, hour, minute, second, ms) {\n\t // Defensive and verbose to avoid potential harm in passing\n\t // explicit undefined when user does not pass argument\n\t if (arguments.length === 0) {\n\t super(ClockDate.clock.now);\n\t } else {\n\t super(...arguments);\n\t }\n\n\t // ensures identity checks using the constructor prop still works\n\t // this should have no other functional effect\n\t Object.defineProperty(this, \"constructor\", {\n\t value: NativeDate,\n\t enumerable: false,\n\t });\n\t }\n\n\t static [Symbol.hasInstance](instance) {\n\t return instance instanceof NativeDate;\n\t }\n\t }\n\n\t ClockDate.isFake = true;\n\n\t if (NativeDate.now) {\n\t ClockDate.now = function now() {\n\t return ClockDate.clock.now;\n\t };\n\t }\n\n\t if (NativeDate.toSource) {\n\t ClockDate.toSource = function toSource() {\n\t return NativeDate.toSource();\n\t };\n\t }\n\n\t ClockDate.toString = function toString() {\n\t return NativeDate.toString();\n\t };\n\n\t // noinspection UnnecessaryLocalVariableJS\n\t /**\n\t * A normal Class constructor cannot be called without `new`, but Date can, so we need\n\t * to wrap it in a Proxy in order to ensure this functionality of Date is kept intact\n\t * @type {ClockDate}\n\t */\n\t const ClockDateProxy = new Proxy(ClockDate, {\n\t // handler for [[Call]] invocations (i.e. not using `new`)\n\t apply() {\n\t // the Date constructor called as a function, ref Ecma-262 Edition 5.1, section 15.9.2.\n\t // This remains so in the 10th edition of 2019 as well.\n\t if (this instanceof ClockDate) {\n\t throw new TypeError(\n\t \"A Proxy should only capture `new` calls with the `construct` handler. This is not supposed to be possible, so check the logic.\",\n\t );\n\t }\n\n\t return new NativeDate(ClockDate.clock.now).toString();\n\t },\n\t });\n\n\t return ClockDateProxy;\n\t }\n\n\t /**\n\t * Mirror Intl by default on our fake implementation\n\t *\n\t * Most of the properties are the original native ones,\n\t * but we need to take control of those that have a\n\t * dependency on the current clock.\n\t * @returns {object} the partly fake Intl implementation\n\t */\n\t function createIntl() {\n\t const ClockIntl = {};\n\t /*\n\t * All properties of Intl are non-enumerable, so we need\n\t * to do a bit of work to get them out.\n\t */\n\t Object.getOwnPropertyNames(NativeIntl).forEach(\n\t (property) => (ClockIntl[property] = NativeIntl[property]),\n\t );\n\n\t ClockIntl.DateTimeFormat = function (...args) {\n\t const realFormatter = new NativeIntl.DateTimeFormat(...args);\n\t const formatter = {};\n\n\t [\"formatRange\", \"formatRangeToParts\", \"resolvedOptions\"].forEach(\n\t (method) => {\n\t formatter[method] =\n\t realFormatter[method].bind(realFormatter);\n\t },\n\t );\n\n\t [\"format\", \"formatToParts\"].forEach((method) => {\n\t formatter[method] = function (date) {\n\t return realFormatter[method](date || ClockIntl.clock.now);\n\t };\n\t });\n\n\t return formatter;\n\t };\n\n\t ClockIntl.DateTimeFormat.prototype = Object.create(\n\t NativeIntl.DateTimeFormat.prototype,\n\t );\n\n\t ClockIntl.DateTimeFormat.supportedLocalesOf =\n\t NativeIntl.DateTimeFormat.supportedLocalesOf;\n\n\t return ClockIntl;\n\t }\n\n\t //eslint-disable-next-line jsdoc/require-jsdoc\n\t function enqueueJob(clock, job) {\n\t // enqueues a microtick-deferred task - ecma262/#sec-enqueuejob\n\t if (!clock.jobs) {\n\t clock.jobs = [];\n\t }\n\t clock.jobs.push(job);\n\t }\n\n\t //eslint-disable-next-line jsdoc/require-jsdoc\n\t function runJobs(clock) {\n\t // runs all microtick-deferred tasks - ecma262/#sec-runjobs\n\t if (!clock.jobs) {\n\t return;\n\t }\n\t for (let i = 0; i < clock.jobs.length; i++) {\n\t const job = clock.jobs[i];\n\t job.func.apply(null, job.args);\n\n\t checkIsNearInfiniteLimit(clock, i);\n\t if (clock.loopLimit && i > clock.loopLimit) {\n\t throw getInfiniteLoopError(clock, job);\n\t }\n\t }\n\t resetIsNearInfiniteLimit();\n\t clock.jobs = [];\n\t }\n\n\t /**\n\t * @param {Clock} clock\n\t * @param {Timer} timer\n\t * @returns {number} id of the created timer\n\t */\n\t function addTimer(clock, timer) {\n\t if (timer.func === undefined) {\n\t throw new Error(\"Callback must be provided to timer calls\");\n\t }\n\n\t if (addTimerReturnsObject) {\n\t // Node.js environment\n\t if (typeof timer.func !== \"function\") {\n\t throw new TypeError(\n\t `[ERR_INVALID_CALLBACK]: Callback must be a function. Received ${\n\t timer.func\n\t } of type ${typeof timer.func}`,\n\t );\n\t }\n\t }\n\n\t if (isNearInfiniteLimit) {\n\t timer.error = new Error();\n\t }\n\n\t timer.type = timer.immediate ? \"Immediate\" : \"Timeout\";\n\n\t if (timer.hasOwnProperty(\"delay\")) {\n\t if (typeof timer.delay !== \"number\") {\n\t timer.delay = parseInt(timer.delay, 10);\n\t }\n\n\t if (!isNumberFinite(timer.delay)) {\n\t timer.delay = 0;\n\t }\n\t timer.delay = timer.delay > maxTimeout ? 1 : timer.delay;\n\t timer.delay = Math.max(0, timer.delay);\n\t }\n\n\t if (timer.hasOwnProperty(\"interval\")) {\n\t timer.type = \"Interval\";\n\t timer.interval = timer.interval > maxTimeout ? 1 : timer.interval;\n\t }\n\n\t if (timer.hasOwnProperty(\"animation\")) {\n\t timer.type = \"AnimationFrame\";\n\t timer.animation = true;\n\t }\n\n\t if (timer.hasOwnProperty(\"idleCallback\")) {\n\t timer.type = \"IdleCallback\";\n\t timer.idleCallback = true;\n\t }\n\n\t if (!clock.timers) {\n\t clock.timers = {};\n\t }\n\n\t timer.id = uniqueTimerId++;\n\t timer.createdAt = clock.now;\n\t timer.callAt =\n\t clock.now + (parseInt(timer.delay) || (clock.duringTick ? 1 : 0));\n\n\t clock.timers[timer.id] = timer;\n\n\t if (addTimerReturnsObject) {\n\t const res = {\n\t refed: true,\n\t ref: function () {\n\t this.refed = true;\n\t return res;\n\t },\n\t unref: function () {\n\t this.refed = false;\n\t return res;\n\t },\n\t hasRef: function () {\n\t return this.refed;\n\t },\n\t refresh: function () {\n\t timer.callAt =\n\t clock.now +\n\t (parseInt(timer.delay) || (clock.duringTick ? 1 : 0));\n\n\t // it _might_ have been removed, but if not the assignment is perfectly fine\n\t clock.timers[timer.id] = timer;\n\n\t return res;\n\t },\n\t [Symbol.toPrimitive]: function () {\n\t return timer.id;\n\t },\n\t };\n\t return res;\n\t }\n\n\t return timer.id;\n\t }\n\n\t /* eslint consistent-return: \"off\" */\n\t /**\n\t * Timer comparitor\n\t * @param {Timer} a\n\t * @param {Timer} b\n\t * @returns {number}\n\t */\n\t function compareTimers(a, b) {\n\t // Sort first by absolute timing\n\t if (a.callAt < b.callAt) {\n\t return -1;\n\t }\n\t if (a.callAt > b.callAt) {\n\t return 1;\n\t }\n\n\t // Sort next by immediate, immediate timers take precedence\n\t if (a.immediate && !b.immediate) {\n\t return -1;\n\t }\n\t if (!a.immediate && b.immediate) {\n\t return 1;\n\t }\n\n\t // Sort next by creation time, earlier-created timers take precedence\n\t if (a.createdAt < b.createdAt) {\n\t return -1;\n\t }\n\t if (a.createdAt > b.createdAt) {\n\t return 1;\n\t }\n\n\t // Sort next by id, lower-id timers take precedence\n\t if (a.id < b.id) {\n\t return -1;\n\t }\n\t if (a.id > b.id) {\n\t return 1;\n\t }\n\n\t // As timer ids are unique, no fallback `0` is necessary\n\t }\n\n\t /**\n\t * @param {Clock} clock\n\t * @param {number} from\n\t * @param {number} to\n\t * @returns {Timer}\n\t */\n\t function firstTimerInRange(clock, from, to) {\n\t const timers = clock.timers;\n\t let timer = null;\n\t let id, isInRange;\n\n\t for (id in timers) {\n\t if (timers.hasOwnProperty(id)) {\n\t isInRange = inRange(from, to, timers[id]);\n\n\t if (\n\t isInRange &&\n\t (!timer || compareTimers(timer, timers[id]) === 1)\n\t ) {\n\t timer = timers[id];\n\t }\n\t }\n\t }\n\n\t return timer;\n\t }\n\n\t /**\n\t * @param {Clock} clock\n\t * @returns {Timer}\n\t */\n\t function firstTimer(clock) {\n\t const timers = clock.timers;\n\t let timer = null;\n\t let id;\n\n\t for (id in timers) {\n\t if (timers.hasOwnProperty(id)) {\n\t if (!timer || compareTimers(timer, timers[id]) === 1) {\n\t timer = timers[id];\n\t }\n\t }\n\t }\n\n\t return timer;\n\t }\n\n\t /**\n\t * @param {Clock} clock\n\t * @returns {Timer}\n\t */\n\t function lastTimer(clock) {\n\t const timers = clock.timers;\n\t let timer = null;\n\t let id;\n\n\t for (id in timers) {\n\t if (timers.hasOwnProperty(id)) {\n\t if (!timer || compareTimers(timer, timers[id]) === -1) {\n\t timer = timers[id];\n\t }\n\t }\n\t }\n\n\t return timer;\n\t }\n\n\t /**\n\t * @param {Clock} clock\n\t * @param {Timer} timer\n\t */\n\t function callTimer(clock, timer) {\n\t if (typeof timer.interval === \"number\") {\n\t clock.timers[timer.id].callAt += timer.interval;\n\t } else {\n\t delete clock.timers[timer.id];\n\t }\n\n\t if (typeof timer.func === \"function\") {\n\t timer.func.apply(null, timer.args);\n\t } else {\n\t /* eslint no-eval: \"off\" */\n\t const eval2 = eval;\n\t (function () {\n\t eval2(timer.func);\n\t })();\n\t }\n\t }\n\n\t /**\n\t * Gets clear handler name for a given timer type\n\t * @param {string} ttype\n\t */\n\t function getClearHandler(ttype) {\n\t if (ttype === \"IdleCallback\" || ttype === \"AnimationFrame\") {\n\t return `cancel${ttype}`;\n\t }\n\t return `clear${ttype}`;\n\t }\n\n\t /**\n\t * Gets schedule handler name for a given timer type\n\t * @param {string} ttype\n\t */\n\t function getScheduleHandler(ttype) {\n\t if (ttype === \"IdleCallback\" || ttype === \"AnimationFrame\") {\n\t return `request${ttype}`;\n\t }\n\t return `set${ttype}`;\n\t }\n\n\t /**\n\t * Creates an anonymous function to warn only once\n\t */\n\t function createWarnOnce() {\n\t let calls = 0;\n\t return function (msg) {\n\t // eslint-disable-next-line\n\t !calls++ && console.warn(msg);\n\t };\n\t }\n\t const warnOnce = createWarnOnce();\n\n\t /**\n\t * @param {Clock} clock\n\t * @param {number} timerId\n\t * @param {string} ttype\n\t */\n\t function clearTimer(clock, timerId, ttype) {\n\t if (!timerId) {\n\t // null appears to be allowed in most browsers, and appears to be\n\t // relied upon by some libraries, like Bootstrap carousel\n\t return;\n\t }\n\n\t if (!clock.timers) {\n\t clock.timers = {};\n\t }\n\n\t // in Node, the ID is stored as the primitive value for `Timeout` objects\n\t // for `Immediate` objects, no ID exists, so it gets coerced to NaN\n\t const id = Number(timerId);\n\n\t if (Number.isNaN(id) || id < idCounterStart) {\n\t const handlerName = getClearHandler(ttype);\n\n\t if (clock.shouldClearNativeTimers === true) {\n\t const nativeHandler = clock[`_${handlerName}`];\n\t return typeof nativeHandler === \"function\"\n\t ? nativeHandler(timerId)\n\t : undefined;\n\t }\n\t warnOnce(\n\t `FakeTimers: ${handlerName} was invoked to clear a native timer instead of one created by this library.` +\n\t \"\\nTo automatically clean-up native timers, use `shouldClearNativeTimers`.\",\n\t );\n\t }\n\n\t if (clock.timers.hasOwnProperty(id)) {\n\t // check that the ID matches a timer of the correct type\n\t const timer = clock.timers[id];\n\t if (\n\t timer.type === ttype ||\n\t (timer.type === \"Timeout\" && ttype === \"Interval\") ||\n\t (timer.type === \"Interval\" && ttype === \"Timeout\")\n\t ) {\n\t delete clock.timers[id];\n\t } else {\n\t const clear = getClearHandler(ttype);\n\t const schedule = getScheduleHandler(timer.type);\n\t throw new Error(\n\t `Cannot clear timer: timer created with ${schedule}() but cleared with ${clear}()`,\n\t );\n\t }\n\t }\n\t }\n\n\t /**\n\t * @param {Clock} clock\n\t * @param {Config} config\n\t * @returns {Timer[]}\n\t */\n\t function uninstall(clock, config) {\n\t let method, i, l;\n\t const installedHrTime = \"_hrtime\";\n\t const installedNextTick = \"_nextTick\";\n\n\t for (i = 0, l = clock.methods.length; i < l; i++) {\n\t method = clock.methods[i];\n\t if (method === \"hrtime\" && _global.process) {\n\t _global.process.hrtime = clock[installedHrTime];\n\t } else if (method === \"nextTick\" && _global.process) {\n\t _global.process.nextTick = clock[installedNextTick];\n\t } else if (method === \"performance\") {\n\t const originalPerfDescriptor = Object.getOwnPropertyDescriptor(\n\t clock,\n\t `_${method}`,\n\t );\n\t if (\n\t originalPerfDescriptor &&\n\t originalPerfDescriptor.get &&\n\t !originalPerfDescriptor.set\n\t ) {\n\t Object.defineProperty(\n\t _global,\n\t method,\n\t originalPerfDescriptor,\n\t );\n\t } else if (originalPerfDescriptor.configurable) {\n\t _global[method] = clock[`_${method}`];\n\t }\n\t } else {\n\t if (_global[method] && _global[method].hadOwnProperty) {\n\t _global[method] = clock[`_${method}`];\n\t } else {\n\t try {\n\t delete _global[method];\n\t } catch (ignore) {\n\t /* eslint no-empty: \"off\" */\n\t }\n\t }\n\t }\n\t if (clock.timersModuleMethods !== undefined) {\n\t for (let j = 0; j < clock.timersModuleMethods.length; j++) {\n\t const entry = clock.timersModuleMethods[j];\n\t timersModule[entry.methodName] = entry.original;\n\t }\n\t }\n\t if (clock.timersPromisesModuleMethods !== undefined) {\n\t for (\n\t let j = 0;\n\t j < clock.timersPromisesModuleMethods.length;\n\t j++\n\t ) {\n\t const entry = clock.timersPromisesModuleMethods[j];\n\t timersPromisesModule[entry.methodName] = entry.original;\n\t }\n\t }\n\t }\n\n\t if (config.shouldAdvanceTime === true) {\n\t _global.clearInterval(clock.attachedInterval);\n\t }\n\n\t // Prevent multiple executions which will completely remove these props\n\t clock.methods = [];\n\n\t for (const [listener, signal] of clock.abortListenerMap.entries()) {\n\t signal.removeEventListener(\"abort\", listener);\n\t clock.abortListenerMap.delete(listener);\n\t }\n\n\t // return pending timers, to enable checking what timers remained on uninstall\n\t if (!clock.timers) {\n\t return [];\n\t }\n\t return Object.keys(clock.timers).map(function mapper(key) {\n\t return clock.timers[key];\n\t });\n\t }\n\n\t /**\n\t * @param {object} target the target containing the method to replace\n\t * @param {string} method the keyname of the method on the target\n\t * @param {Clock} clock\n\t */\n\t function hijackMethod(target, method, clock) {\n\t clock[method].hadOwnProperty = Object.prototype.hasOwnProperty.call(\n\t target,\n\t method,\n\t );\n\t clock[`_${method}`] = target[method];\n\n\t if (method === \"Date\") {\n\t target[method] = clock[method];\n\t } else if (method === \"Intl\") {\n\t target[method] = clock[method];\n\t } else if (method === \"performance\") {\n\t const originalPerfDescriptor = Object.getOwnPropertyDescriptor(\n\t target,\n\t method,\n\t );\n\t // JSDOM has a read only performance field so we have to save/copy it differently\n\t if (\n\t originalPerfDescriptor &&\n\t originalPerfDescriptor.get &&\n\t !originalPerfDescriptor.set\n\t ) {\n\t Object.defineProperty(\n\t clock,\n\t `_${method}`,\n\t originalPerfDescriptor,\n\t );\n\n\t const perfDescriptor = Object.getOwnPropertyDescriptor(\n\t clock,\n\t method,\n\t );\n\t Object.defineProperty(target, method, perfDescriptor);\n\t } else {\n\t target[method] = clock[method];\n\t }\n\t } else {\n\t target[method] = function () {\n\t return clock[method].apply(clock, arguments);\n\t };\n\n\t Object.defineProperties(\n\t target[method],\n\t Object.getOwnPropertyDescriptors(clock[method]),\n\t );\n\t }\n\n\t target[method].clock = clock;\n\t }\n\n\t /**\n\t * @param {Clock} clock\n\t * @param {number} advanceTimeDelta\n\t */\n\t function doIntervalTick(clock, advanceTimeDelta) {\n\t clock.tick(advanceTimeDelta);\n\t }\n\n\t /**\n\t * @typedef {object} Timers\n\t * @property {setTimeout} setTimeout\n\t * @property {clearTimeout} clearTimeout\n\t * @property {setInterval} setInterval\n\t * @property {clearInterval} clearInterval\n\t * @property {Date} Date\n\t * @property {Intl} Intl\n\t * @property {SetImmediate=} setImmediate\n\t * @property {function(NodeImmediate): void=} clearImmediate\n\t * @property {function(number[]):number[]=} hrtime\n\t * @property {NextTick=} nextTick\n\t * @property {Performance=} performance\n\t * @property {RequestAnimationFrame=} requestAnimationFrame\n\t * @property {boolean=} queueMicrotask\n\t * @property {function(number): void=} cancelAnimationFrame\n\t * @property {RequestIdleCallback=} requestIdleCallback\n\t * @property {function(number): void=} cancelIdleCallback\n\t */\n\n\t /** @type {Timers} */\n\t const timers = {\n\t setTimeout: _global.setTimeout,\n\t clearTimeout: _global.clearTimeout,\n\t setInterval: _global.setInterval,\n\t clearInterval: _global.clearInterval,\n\t Date: _global.Date,\n\t };\n\n\t if (isPresent.setImmediate) {\n\t timers.setImmediate = _global.setImmediate;\n\t }\n\n\t if (isPresent.clearImmediate) {\n\t timers.clearImmediate = _global.clearImmediate;\n\t }\n\n\t if (isPresent.hrtime) {\n\t timers.hrtime = _global.process.hrtime;\n\t }\n\n\t if (isPresent.nextTick) {\n\t timers.nextTick = _global.process.nextTick;\n\t }\n\n\t if (isPresent.performance) {\n\t timers.performance = _global.performance;\n\t }\n\n\t if (isPresent.requestAnimationFrame) {\n\t timers.requestAnimationFrame = _global.requestAnimationFrame;\n\t }\n\n\t if (isPresent.queueMicrotask) {\n\t timers.queueMicrotask = _global.queueMicrotask;\n\t }\n\n\t if (isPresent.cancelAnimationFrame) {\n\t timers.cancelAnimationFrame = _global.cancelAnimationFrame;\n\t }\n\n\t if (isPresent.requestIdleCallback) {\n\t timers.requestIdleCallback = _global.requestIdleCallback;\n\t }\n\n\t if (isPresent.cancelIdleCallback) {\n\t timers.cancelIdleCallback = _global.cancelIdleCallback;\n\t }\n\n\t if (isPresent.Intl) {\n\t timers.Intl = NativeIntl;\n\t }\n\n\t const originalSetTimeout = _global.setImmediate || _global.setTimeout;\n\n\t /**\n\t * @param {Date|number} [start] the system time - non-integer values are floored\n\t * @param {number} [loopLimit] maximum number of timers that will be run when calling runAll()\n\t * @returns {Clock}\n\t */\n\t function createClock(start, loopLimit) {\n\t // eslint-disable-next-line no-param-reassign\n\t start = Math.floor(getEpoch(start));\n\t // eslint-disable-next-line no-param-reassign\n\t loopLimit = loopLimit || 1000;\n\t let nanos = 0;\n\t const adjustedSystemTime = [0, 0]; // [millis, nanoremainder]\n\n\t const clock = {\n\t now: start,\n\t Date: createDate(),\n\t loopLimit: loopLimit,\n\t };\n\n\t clock.Date.clock = clock;\n\n\t //eslint-disable-next-line jsdoc/require-jsdoc\n\t function getTimeToNextFrame() {\n\t return 16 - ((clock.now - start) % 16);\n\t }\n\n\t //eslint-disable-next-line jsdoc/require-jsdoc\n\t function hrtime(prev) {\n\t const millisSinceStart = clock.now - adjustedSystemTime[0] - start;\n\t const secsSinceStart = Math.floor(millisSinceStart / 1000);\n\t const remainderInNanos =\n\t (millisSinceStart - secsSinceStart * 1e3) * 1e6 +\n\t nanos -\n\t adjustedSystemTime[1];\n\n\t if (Array.isArray(prev)) {\n\t if (prev[1] > 1e9) {\n\t throw new TypeError(\n\t \"Number of nanoseconds can't exceed a billion\",\n\t );\n\t }\n\n\t const oldSecs = prev[0];\n\t let nanoDiff = remainderInNanos - prev[1];\n\t let secDiff = secsSinceStart - oldSecs;\n\n\t if (nanoDiff < 0) {\n\t nanoDiff += 1e9;\n\t secDiff -= 1;\n\t }\n\n\t return [secDiff, nanoDiff];\n\t }\n\t return [secsSinceStart, remainderInNanos];\n\t }\n\n\t /**\n\t * A high resolution timestamp in milliseconds.\n\t * @typedef {number} DOMHighResTimeStamp\n\t */\n\n\t /**\n\t * performance.now()\n\t * @returns {DOMHighResTimeStamp}\n\t */\n\t function fakePerformanceNow() {\n\t const hrt = hrtime();\n\t const millis = hrt[0] * 1000 + hrt[1] / 1e6;\n\t return millis;\n\t }\n\n\t if (isPresent.hrtimeBigint) {\n\t hrtime.bigint = function () {\n\t const parts = hrtime();\n\t return BigInt(parts[0]) * BigInt(1e9) + BigInt(parts[1]); // eslint-disable-line\n\t };\n\t }\n\n\t if (isPresent.Intl) {\n\t clock.Intl = createIntl();\n\t clock.Intl.clock = clock;\n\t }\n\n\t clock.requestIdleCallback = function requestIdleCallback(\n\t func,\n\t timeout,\n\t ) {\n\t let timeToNextIdlePeriod = 0;\n\n\t if (clock.countTimers() > 0) {\n\t timeToNextIdlePeriod = 50; // const for now\n\t }\n\n\t const result = addTimer(clock, {\n\t func: func,\n\t args: Array.prototype.slice.call(arguments, 2),\n\t delay:\n\t typeof timeout === \"undefined\"\n\t ? timeToNextIdlePeriod\n\t : Math.min(timeout, timeToNextIdlePeriod),\n\t idleCallback: true,\n\t });\n\n\t return Number(result);\n\t };\n\n\t clock.cancelIdleCallback = function cancelIdleCallback(timerId) {\n\t return clearTimer(clock, timerId, \"IdleCallback\");\n\t };\n\n\t clock.setTimeout = function setTimeout(func, timeout) {\n\t return addTimer(clock, {\n\t func: func,\n\t args: Array.prototype.slice.call(arguments, 2),\n\t delay: timeout,\n\t });\n\t };\n\t if (typeof _global.Promise !== \"undefined\" && utilPromisify) {\n\t clock.setTimeout[utilPromisify.custom] =\n\t function promisifiedSetTimeout(timeout, arg) {\n\t return new _global.Promise(function setTimeoutExecutor(\n\t resolve,\n\t ) {\n\t addTimer(clock, {\n\t func: resolve,\n\t args: [arg],\n\t delay: timeout,\n\t });\n\t });\n\t };\n\t }\n\n\t clock.clearTimeout = function clearTimeout(timerId) {\n\t return clearTimer(clock, timerId, \"Timeout\");\n\t };\n\n\t clock.nextTick = function nextTick(func) {\n\t return enqueueJob(clock, {\n\t func: func,\n\t args: Array.prototype.slice.call(arguments, 1),\n\t error: isNearInfiniteLimit ? new Error() : null,\n\t });\n\t };\n\n\t clock.queueMicrotask = function queueMicrotask(func) {\n\t return clock.nextTick(func); // explicitly drop additional arguments\n\t };\n\n\t clock.setInterval = function setInterval(func, timeout) {\n\t // eslint-disable-next-line no-param-reassign\n\t timeout = parseInt(timeout, 10);\n\t return addTimer(clock, {\n\t func: func,\n\t args: Array.prototype.slice.call(arguments, 2),\n\t delay: timeout,\n\t interval: timeout,\n\t });\n\t };\n\n\t clock.clearInterval = function clearInterval(timerId) {\n\t return clearTimer(clock, timerId, \"Interval\");\n\t };\n\n\t if (isPresent.setImmediate) {\n\t clock.setImmediate = function setImmediate(func) {\n\t return addTimer(clock, {\n\t func: func,\n\t args: Array.prototype.slice.call(arguments, 1),\n\t immediate: true,\n\t });\n\t };\n\n\t if (typeof _global.Promise !== \"undefined\" && utilPromisify) {\n\t clock.setImmediate[utilPromisify.custom] =\n\t function promisifiedSetImmediate(arg) {\n\t return new _global.Promise(\n\t function setImmediateExecutor(resolve) {\n\t addTimer(clock, {\n\t func: resolve,\n\t args: [arg],\n\t immediate: true,\n\t });\n\t },\n\t );\n\t };\n\t }\n\n\t clock.clearImmediate = function clearImmediate(timerId) {\n\t return clearTimer(clock, timerId, \"Immediate\");\n\t };\n\t }\n\n\t clock.countTimers = function countTimers() {\n\t return (\n\t Object.keys(clock.timers || {}).length +\n\t (clock.jobs || []).length\n\t );\n\t };\n\n\t clock.requestAnimationFrame = function requestAnimationFrame(func) {\n\t const result = addTimer(clock, {\n\t func: func,\n\t delay: getTimeToNextFrame(),\n\t get args() {\n\t return [fakePerformanceNow()];\n\t },\n\t animation: true,\n\t });\n\n\t return Number(result);\n\t };\n\n\t clock.cancelAnimationFrame = function cancelAnimationFrame(timerId) {\n\t return clearTimer(clock, timerId, \"AnimationFrame\");\n\t };\n\n\t clock.runMicrotasks = function runMicrotasks() {\n\t runJobs(clock);\n\t };\n\n\t /**\n\t * @param {number|string} tickValue milliseconds or a string parseable by parseTime\n\t * @param {boolean} isAsync\n\t * @param {Function} resolve\n\t * @param {Function} reject\n\t * @returns {number|undefined} will return the new `now` value or nothing for async\n\t */\n\t function doTick(tickValue, isAsync, resolve, reject) {\n\t const msFloat =\n\t typeof tickValue === \"number\"\n\t ? tickValue\n\t : parseTime(tickValue);\n\t const ms = Math.floor(msFloat);\n\t const remainder = nanoRemainder(msFloat);\n\t let nanosTotal = nanos + remainder;\n\t let tickTo = clock.now + ms;\n\n\t if (msFloat < 0) {\n\t throw new TypeError(\"Negative ticks are not supported\");\n\t }\n\n\t // adjust for positive overflow\n\t if (nanosTotal >= 1e6) {\n\t tickTo += 1;\n\t nanosTotal -= 1e6;\n\t }\n\n\t nanos = nanosTotal;\n\t let tickFrom = clock.now;\n\t let previous = clock.now;\n\t // ESLint fails to detect this correctly\n\t /* eslint-disable prefer-const */\n\t let timer,\n\t firstException,\n\t oldNow,\n\t nextPromiseTick,\n\t compensationCheck,\n\t postTimerCall;\n\t /* eslint-enable prefer-const */\n\n\t clock.duringTick = true;\n\n\t // perform microtasks\n\t oldNow = clock.now;\n\t runJobs(clock);\n\t if (oldNow !== clock.now) {\n\t // compensate for any setSystemTime() call during microtask callback\n\t tickFrom += clock.now - oldNow;\n\t tickTo += clock.now - oldNow;\n\t }\n\n\t //eslint-disable-next-line jsdoc/require-jsdoc\n\t function doTickInner() {\n\t // perform each timer in the requested range\n\t timer = firstTimerInRange(clock, tickFrom, tickTo);\n\t // eslint-disable-next-line no-unmodified-loop-condition\n\t while (timer && tickFrom <= tickTo) {\n\t if (clock.timers[timer.id]) {\n\t tickFrom = timer.callAt;\n\t clock.now = timer.callAt;\n\t oldNow = clock.now;\n\t try {\n\t runJobs(clock);\n\t callTimer(clock, timer);\n\t } catch (e) {\n\t firstException = firstException || e;\n\t }\n\n\t if (isAsync) {\n\t // finish up after native setImmediate callback to allow\n\t // all native es6 promises to process their callbacks after\n\t // each timer fires.\n\t originalSetTimeout(nextPromiseTick);\n\t return;\n\t }\n\n\t compensationCheck();\n\t }\n\n\t postTimerCall();\n\t }\n\n\t // perform process.nextTick()s again\n\t oldNow = clock.now;\n\t runJobs(clock);\n\t if (oldNow !== clock.now) {\n\t // compensate for any setSystemTime() call during process.nextTick() callback\n\t tickFrom += clock.now - oldNow;\n\t tickTo += clock.now - oldNow;\n\t }\n\t clock.duringTick = false;\n\n\t // corner case: during runJobs new timers were scheduled which could be in the range [clock.now, tickTo]\n\t timer = firstTimerInRange(clock, tickFrom, tickTo);\n\t if (timer) {\n\t try {\n\t clock.tick(tickTo - clock.now); // do it all again - for the remainder of the requested range\n\t } catch (e) {\n\t firstException = firstException || e;\n\t }\n\t } else {\n\t // no timers remaining in the requested range: move the clock all the way to the end\n\t clock.now = tickTo;\n\n\t // update nanos\n\t nanos = nanosTotal;\n\t }\n\t if (firstException) {\n\t throw firstException;\n\t }\n\n\t if (isAsync) {\n\t resolve(clock.now);\n\t } else {\n\t return clock.now;\n\t }\n\t }\n\n\t nextPromiseTick =\n\t isAsync &&\n\t function () {\n\t try {\n\t compensationCheck();\n\t postTimerCall();\n\t doTickInner();\n\t } catch (e) {\n\t reject(e);\n\t }\n\t };\n\n\t compensationCheck = function () {\n\t // compensate for any setSystemTime() call during timer callback\n\t if (oldNow !== clock.now) {\n\t tickFrom += clock.now - oldNow;\n\t tickTo += clock.now - oldNow;\n\t previous += clock.now - oldNow;\n\t }\n\t };\n\n\t postTimerCall = function () {\n\t timer = firstTimerInRange(clock, previous, tickTo);\n\t previous = tickFrom;\n\t };\n\n\t return doTickInner();\n\t }\n\n\t /**\n\t * @param {string|number} tickValue number of milliseconds or a human-readable value like \"01:11:15\"\n\t * @returns {number} will return the new `now` value\n\t */\n\t clock.tick = function tick(tickValue) {\n\t return doTick(tickValue, false);\n\t };\n\n\t if (typeof _global.Promise !== \"undefined\") {\n\t /**\n\t * @param {string|number} tickValue number of milliseconds or a human-readable value like \"01:11:15\"\n\t * @returns {Promise}\n\t */\n\t clock.tickAsync = function tickAsync(tickValue) {\n\t return new _global.Promise(function (resolve, reject) {\n\t originalSetTimeout(function () {\n\t try {\n\t doTick(tickValue, true, resolve, reject);\n\t } catch (e) {\n\t reject(e);\n\t }\n\t });\n\t });\n\t };\n\t }\n\n\t clock.next = function next() {\n\t runJobs(clock);\n\t const timer = firstTimer(clock);\n\t if (!timer) {\n\t return clock.now;\n\t }\n\n\t clock.duringTick = true;\n\t try {\n\t clock.now = timer.callAt;\n\t callTimer(clock, timer);\n\t runJobs(clock);\n\t return clock.now;\n\t } finally {\n\t clock.duringTick = false;\n\t }\n\t };\n\n\t if (typeof _global.Promise !== \"undefined\") {\n\t clock.nextAsync = function nextAsync() {\n\t return new _global.Promise(function (resolve, reject) {\n\t originalSetTimeout(function () {\n\t try {\n\t const timer = firstTimer(clock);\n\t if (!timer) {\n\t resolve(clock.now);\n\t return;\n\t }\n\n\t let err;\n\t clock.duringTick = true;\n\t clock.now = timer.callAt;\n\t try {\n\t callTimer(clock, timer);\n\t } catch (e) {\n\t err = e;\n\t }\n\t clock.duringTick = false;\n\n\t originalSetTimeout(function () {\n\t if (err) {\n\t reject(err);\n\t } else {\n\t resolve(clock.now);\n\t }\n\t });\n\t } catch (e) {\n\t reject(e);\n\t }\n\t });\n\t });\n\t };\n\t }\n\n\t clock.runAll = function runAll() {\n\t let numTimers, i;\n\t runJobs(clock);\n\t for (i = 0; i < clock.loopLimit; i++) {\n\t if (!clock.timers) {\n\t resetIsNearInfiniteLimit();\n\t return clock.now;\n\t }\n\n\t numTimers = Object.keys(clock.timers).length;\n\t if (numTimers === 0) {\n\t resetIsNearInfiniteLimit();\n\t return clock.now;\n\t }\n\n\t clock.next();\n\t checkIsNearInfiniteLimit(clock, i);\n\t }\n\n\t const excessJob = firstTimer(clock);\n\t throw getInfiniteLoopError(clock, excessJob);\n\t };\n\n\t clock.runToFrame = function runToFrame() {\n\t return clock.tick(getTimeToNextFrame());\n\t };\n\n\t if (typeof _global.Promise !== \"undefined\") {\n\t clock.runAllAsync = function runAllAsync() {\n\t return new _global.Promise(function (resolve, reject) {\n\t let i = 0;\n\t /**\n\t *\n\t */\n\t function doRun() {\n\t originalSetTimeout(function () {\n\t try {\n\t runJobs(clock);\n\n\t let numTimers;\n\t if (i < clock.loopLimit) {\n\t if (!clock.timers) {\n\t resetIsNearInfiniteLimit();\n\t resolve(clock.now);\n\t return;\n\t }\n\n\t numTimers = Object.keys(\n\t clock.timers,\n\t ).length;\n\t if (numTimers === 0) {\n\t resetIsNearInfiniteLimit();\n\t resolve(clock.now);\n\t return;\n\t }\n\n\t clock.next();\n\n\t i++;\n\n\t doRun();\n\t checkIsNearInfiniteLimit(clock, i);\n\t return;\n\t }\n\n\t const excessJob = firstTimer(clock);\n\t reject(getInfiniteLoopError(clock, excessJob));\n\t } catch (e) {\n\t reject(e);\n\t }\n\t });\n\t }\n\t doRun();\n\t });\n\t };\n\t }\n\n\t clock.runToLast = function runToLast() {\n\t const timer = lastTimer(clock);\n\t if (!timer) {\n\t runJobs(clock);\n\t return clock.now;\n\t }\n\n\t return clock.tick(timer.callAt - clock.now);\n\t };\n\n\t if (typeof _global.Promise !== \"undefined\") {\n\t clock.runToLastAsync = function runToLastAsync() {\n\t return new _global.Promise(function (resolve, reject) {\n\t originalSetTimeout(function () {\n\t try {\n\t const timer = lastTimer(clock);\n\t if (!timer) {\n\t runJobs(clock);\n\t resolve(clock.now);\n\t }\n\n\t resolve(clock.tickAsync(timer.callAt - clock.now));\n\t } catch (e) {\n\t reject(e);\n\t }\n\t });\n\t });\n\t };\n\t }\n\n\t clock.reset = function reset() {\n\t nanos = 0;\n\t clock.timers = {};\n\t clock.jobs = [];\n\t clock.now = start;\n\t };\n\n\t clock.setSystemTime = function setSystemTime(systemTime) {\n\t // determine time difference\n\t const newNow = getEpoch(systemTime);\n\t const difference = newNow - clock.now;\n\t let id, timer;\n\n\t adjustedSystemTime[0] = adjustedSystemTime[0] + difference;\n\t adjustedSystemTime[1] = adjustedSystemTime[1] + nanos;\n\t // update 'system clock'\n\t clock.now = newNow;\n\t nanos = 0;\n\n\t // update timers and intervals to keep them stable\n\t for (id in clock.timers) {\n\t if (clock.timers.hasOwnProperty(id)) {\n\t timer = clock.timers[id];\n\t timer.createdAt += difference;\n\t timer.callAt += difference;\n\t }\n\t }\n\t };\n\n\t /**\n\t * @param {string|number} tickValue number of milliseconds or a human-readable value like \"01:11:15\"\n\t * @returns {number} will return the new `now` value\n\t */\n\t clock.jump = function jump(tickValue) {\n\t const msFloat =\n\t typeof tickValue === \"number\"\n\t ? tickValue\n\t : parseTime(tickValue);\n\t const ms = Math.floor(msFloat);\n\n\t for (const timer of Object.values(clock.timers)) {\n\t if (clock.now + ms > timer.callAt) {\n\t timer.callAt = clock.now + ms;\n\t }\n\t }\n\t clock.tick(ms);\n\t };\n\n\t if (isPresent.performance) {\n\t clock.performance = Object.create(null);\n\t clock.performance.now = fakePerformanceNow;\n\t }\n\n\t if (isPresent.hrtime) {\n\t clock.hrtime = hrtime;\n\t }\n\n\t return clock;\n\t }\n\n\t /* eslint-disable complexity */\n\n\t /**\n\t * @param {Config=} [config] Optional config\n\t * @returns {Clock}\n\t */\n\t function install(config) {\n\t if (\n\t arguments.length > 1 ||\n\t config instanceof Date ||\n\t Array.isArray(config) ||\n\t typeof config === \"number\"\n\t ) {\n\t throw new TypeError(\n\t `FakeTimers.install called with ${String(\n\t config,\n\t )} install requires an object parameter`,\n\t );\n\t }\n\n\t if (_global.Date.isFake === true) {\n\t // Timers are already faked; this is a problem.\n\t // Make the user reset timers before continuing.\n\t throw new TypeError(\n\t \"Can't install fake timers twice on the same global object.\",\n\t );\n\t }\n\n\t // eslint-disable-next-line no-param-reassign\n\t config = typeof config !== \"undefined\" ? config : {};\n\t config.shouldAdvanceTime = config.shouldAdvanceTime || false;\n\t config.advanceTimeDelta = config.advanceTimeDelta || 20;\n\t config.shouldClearNativeTimers =\n\t config.shouldClearNativeTimers || false;\n\n\t if (config.target) {\n\t throw new TypeError(\n\t \"config.target is no longer supported. Use `withGlobal(target)` instead.\",\n\t );\n\t }\n\n\t /**\n\t * @param {string} timer/object the name of the thing that is not present\n\t * @param timer\n\t */\n\t function handleMissingTimer(timer) {\n\t if (config.ignoreMissingTimers) {\n\t return;\n\t }\n\n\t throw new ReferenceError(\n\t `non-existent timers and/or objects cannot be faked: '${timer}'`,\n\t );\n\t }\n\n\t let i, l;\n\t const clock = createClock(config.now, config.loopLimit);\n\t clock.shouldClearNativeTimers = config.shouldClearNativeTimers;\n\n\t clock.uninstall = function () {\n\t return uninstall(clock, config);\n\t };\n\n\t clock.abortListenerMap = new Map();\n\n\t clock.methods = config.toFake || [];\n\n\t if (clock.methods.length === 0) {\n\t clock.methods = Object.keys(timers);\n\t }\n\n\t if (config.shouldAdvanceTime === true) {\n\t const intervalTick = doIntervalTick.bind(\n\t null,\n\t clock,\n\t config.advanceTimeDelta,\n\t );\n\t const intervalId = _global.setInterval(\n\t intervalTick,\n\t config.advanceTimeDelta,\n\t );\n\t clock.attachedInterval = intervalId;\n\t }\n\n\t if (clock.methods.includes(\"performance\")) {\n\t const proto = (() => {\n\t if (hasPerformanceConstructorPrototype) {\n\t return _global.performance.constructor.prototype;\n\t }\n\t if (hasPerformancePrototype) {\n\t return _global.Performance.prototype;\n\t }\n\t })();\n\t if (proto) {\n\t Object.getOwnPropertyNames(proto).forEach(function (name) {\n\t if (name !== \"now\") {\n\t clock.performance[name] =\n\t name.indexOf(\"getEntries\") === 0\n\t ? NOOP_ARRAY\n\t : NOOP;\n\t }\n\t });\n\t // ensure `mark` returns a value that is valid\n\t clock.performance.mark = (name) =>\n\t new FakePerformanceEntry(name, \"mark\", 0, 0);\n\t clock.performance.measure = (name) =>\n\t new FakePerformanceEntry(name, \"measure\", 0, 100);\n\t // `timeOrigin` should return the time of when the Window session started\n\t // (or the Worker was installed)\n\t clock.performance.timeOrigin = getEpoch(config.now);\n\t } else if ((config.toFake || []).includes(\"performance\")) {\n\t return handleMissingTimer(\"performance\");\n\t }\n\t }\n\t if (_global === globalObject && timersModule) {\n\t clock.timersModuleMethods = [];\n\t }\n\t if (_global === globalObject && timersPromisesModule) {\n\t clock.timersPromisesModuleMethods = [];\n\t }\n\t for (i = 0, l = clock.methods.length; i < l; i++) {\n\t const nameOfMethodToReplace = clock.methods[i];\n\n\t if (!isPresent[nameOfMethodToReplace]) {\n\t handleMissingTimer(nameOfMethodToReplace);\n\t // eslint-disable-next-line\n\t continue;\n\t }\n\n\t if (nameOfMethodToReplace === \"hrtime\") {\n\t if (\n\t _global.process &&\n\t typeof _global.process.hrtime === \"function\"\n\t ) {\n\t hijackMethod(_global.process, nameOfMethodToReplace, clock);\n\t }\n\t } else if (nameOfMethodToReplace === \"nextTick\") {\n\t if (\n\t _global.process &&\n\t typeof _global.process.nextTick === \"function\"\n\t ) {\n\t hijackMethod(_global.process, nameOfMethodToReplace, clock);\n\t }\n\t } else {\n\t hijackMethod(_global, nameOfMethodToReplace, clock);\n\t }\n\t if (\n\t clock.timersModuleMethods !== undefined &&\n\t timersModule[nameOfMethodToReplace]\n\t ) {\n\t const original = timersModule[nameOfMethodToReplace];\n\t clock.timersModuleMethods.push({\n\t methodName: nameOfMethodToReplace,\n\t original: original,\n\t });\n\t timersModule[nameOfMethodToReplace] =\n\t _global[nameOfMethodToReplace];\n\t }\n\t if (clock.timersPromisesModuleMethods !== undefined) {\n\t if (nameOfMethodToReplace === \"setTimeout\") {\n\t clock.timersPromisesModuleMethods.push({\n\t methodName: \"setTimeout\",\n\t original: timersPromisesModule.setTimeout,\n\t });\n\n\t timersPromisesModule.setTimeout = (\n\t delay,\n\t value,\n\t options = {},\n\t ) =>\n\t new Promise((resolve, reject) => {\n\t const abort = () => {\n\t options.signal.removeEventListener(\n\t \"abort\",\n\t abort,\n\t );\n\t clock.abortListenerMap.delete(abort);\n\n\t // This is safe, there is no code path that leads to this function\n\t // being invoked before handle has been assigned.\n\t // eslint-disable-next-line no-use-before-define\n\t clock.clearTimeout(handle);\n\t reject(options.signal.reason);\n\t };\n\n\t const handle = clock.setTimeout(() => {\n\t if (options.signal) {\n\t options.signal.removeEventListener(\n\t \"abort\",\n\t abort,\n\t );\n\t clock.abortListenerMap.delete(abort);\n\t }\n\n\t resolve(value);\n\t }, delay);\n\n\t if (options.signal) {\n\t if (options.signal.aborted) {\n\t abort();\n\t } else {\n\t options.signal.addEventListener(\n\t \"abort\",\n\t abort,\n\t );\n\t clock.abortListenerMap.set(\n\t abort,\n\t options.signal,\n\t );\n\t }\n\t }\n\t });\n\t } else if (nameOfMethodToReplace === \"setImmediate\") {\n\t clock.timersPromisesModuleMethods.push({\n\t methodName: \"setImmediate\",\n\t original: timersPromisesModule.setImmediate,\n\t });\n\n\t timersPromisesModule.setImmediate = (value, options = {}) =>\n\t new Promise((resolve, reject) => {\n\t const abort = () => {\n\t options.signal.removeEventListener(\n\t \"abort\",\n\t abort,\n\t );\n\t clock.abortListenerMap.delete(abort);\n\n\t // This is safe, there is no code path that leads to this function\n\t // being invoked before handle has been assigned.\n\t // eslint-disable-next-line no-use-before-define\n\t clock.clearImmediate(handle);\n\t reject(options.signal.reason);\n\t };\n\n\t const handle = clock.setImmediate(() => {\n\t if (options.signal) {\n\t options.signal.removeEventListener(\n\t \"abort\",\n\t abort,\n\t );\n\t clock.abortListenerMap.delete(abort);\n\t }\n\n\t resolve(value);\n\t });\n\n\t if (options.signal) {\n\t if (options.signal.aborted) {\n\t abort();\n\t } else {\n\t options.signal.addEventListener(\n\t \"abort\",\n\t abort,\n\t );\n\t clock.abortListenerMap.set(\n\t abort,\n\t options.signal,\n\t );\n\t }\n\t }\n\t });\n\t } else if (nameOfMethodToReplace === \"setInterval\") {\n\t clock.timersPromisesModuleMethods.push({\n\t methodName: \"setInterval\",\n\t original: timersPromisesModule.setInterval,\n\t });\n\n\t timersPromisesModule.setInterval = (\n\t delay,\n\t value,\n\t options = {},\n\t ) => ({\n\t [Symbol.asyncIterator]: () => {\n\t const createResolvable = () => {\n\t let resolve, reject;\n\t const promise = new Promise((res, rej) => {\n\t resolve = res;\n\t reject = rej;\n\t });\n\t promise.resolve = resolve;\n\t promise.reject = reject;\n\t return promise;\n\t };\n\n\t let done = false;\n\t let hasThrown = false;\n\t let returnCall;\n\t let nextAvailable = 0;\n\t const nextQueue = [];\n\n\t const handle = clock.setInterval(() => {\n\t if (nextQueue.length > 0) {\n\t nextQueue.shift().resolve();\n\t } else {\n\t nextAvailable++;\n\t }\n\t }, delay);\n\n\t const abort = () => {\n\t options.signal.removeEventListener(\n\t \"abort\",\n\t abort,\n\t );\n\t clock.abortListenerMap.delete(abort);\n\n\t clock.clearInterval(handle);\n\t done = true;\n\t for (const resolvable of nextQueue) {\n\t resolvable.resolve();\n\t }\n\t };\n\n\t if (options.signal) {\n\t if (options.signal.aborted) {\n\t done = true;\n\t } else {\n\t options.signal.addEventListener(\n\t \"abort\",\n\t abort,\n\t );\n\t clock.abortListenerMap.set(\n\t abort,\n\t options.signal,\n\t );\n\t }\n\t }\n\n\t return {\n\t next: async () => {\n\t if (options.signal?.aborted && !hasThrown) {\n\t hasThrown = true;\n\t throw options.signal.reason;\n\t }\n\n\t if (done) {\n\t return { done: true, value: undefined };\n\t }\n\n\t if (nextAvailable > 0) {\n\t nextAvailable--;\n\t return { done: false, value: value };\n\t }\n\n\t const resolvable = createResolvable();\n\t nextQueue.push(resolvable);\n\n\t await resolvable;\n\n\t if (returnCall && nextQueue.length === 0) {\n\t returnCall.resolve();\n\t }\n\n\t if (options.signal?.aborted && !hasThrown) {\n\t hasThrown = true;\n\t throw options.signal.reason;\n\t }\n\n\t if (done) {\n\t return { done: true, value: undefined };\n\t }\n\n\t return { done: false, value: value };\n\t },\n\t return: async () => {\n\t if (done) {\n\t return { done: true, value: undefined };\n\t }\n\n\t if (nextQueue.length > 0) {\n\t returnCall = createResolvable();\n\t await returnCall;\n\t }\n\n\t clock.clearInterval(handle);\n\t done = true;\n\n\t if (options.signal) {\n\t options.signal.removeEventListener(\n\t \"abort\",\n\t abort,\n\t );\n\t clock.abortListenerMap.delete(abort);\n\t }\n\n\t return { done: true, value: undefined };\n\t },\n\t };\n\t },\n\t });\n\t }\n\t }\n\t }\n\n\t return clock;\n\t }\n\n\t /* eslint-enable complexity */\n\n\t return {\n\t timers: timers,\n\t createClock: createClock,\n\t install: install,\n\t withGlobal: withGlobal,\n\t };\n\t}\n\n\t/**\n\t * @typedef {object} FakeTimers\n\t * @property {Timers} timers\n\t * @property {createClock} createClock\n\t * @property {Function} install\n\t * @property {withGlobal} withGlobal\n\t */\n\n\t/* eslint-enable complexity */\n\n\t/** @type {FakeTimers} */\n\tconst defaultImplementation = withGlobal(globalObject);\n\n\tfakeTimersSrc.timers = defaultImplementation.timers;\n\tfakeTimersSrc.createClock = defaultImplementation.createClock;\n\tfakeTimersSrc.install = defaultImplementation.install;\n\tfakeTimersSrc.withGlobal = withGlobal;\n\treturn fakeTimersSrc;\n}\n\nvar fakeTimersSrcExports = requireFakeTimersSrc();\n\nclass FakeTimers {\n\t_global;\n\t_clock;\n\t_fakingTime;\n\t_fakingDate;\n\t_fakeTimers;\n\t_userConfig;\n\t_now = RealDate.now;\n\tconstructor({ global, config }) {\n\t\tthis._userConfig = config;\n\t\tthis._fakingDate = null;\n\t\tthis._fakingTime = false;\n\t\tthis._fakeTimers = fakeTimersSrcExports.withGlobal(global);\n\t\tthis._global = global;\n\t}\n\tclearAllTimers() {\n\t\tif (this._fakingTime) {\n\t\t\tthis._clock.reset();\n\t\t}\n\t}\n\tdispose() {\n\t\tthis.useRealTimers();\n\t}\n\trunAllTimers() {\n\t\tif (this._checkFakeTimers()) {\n\t\t\tthis._clock.runAll();\n\t\t}\n\t}\n\tasync runAllTimersAsync() {\n\t\tif (this._checkFakeTimers()) {\n\t\t\tawait this._clock.runAllAsync();\n\t\t}\n\t}\n\trunOnlyPendingTimers() {\n\t\tif (this._checkFakeTimers()) {\n\t\t\tthis._clock.runToLast();\n\t\t}\n\t}\n\tasync runOnlyPendingTimersAsync() {\n\t\tif (this._checkFakeTimers()) {\n\t\t\tawait this._clock.runToLastAsync();\n\t\t}\n\t}\n\tadvanceTimersToNextTimer(steps = 1) {\n\t\tif (this._checkFakeTimers()) {\n\t\t\tfor (let i = steps; i > 0; i--) {\n\t\t\t\tthis._clock.next();\n\t\t\t\tthis._clock.tick(0);\n\t\t\t\tif (this._clock.countTimers() === 0) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tasync advanceTimersToNextTimerAsync(steps = 1) {\n\t\tif (this._checkFakeTimers()) {\n\t\t\tfor (let i = steps; i > 0; i--) {\n\t\t\t\tawait this._clock.nextAsync();\n\t\t\t\tthis._clock.tick(0);\n\t\t\t\tif (this._clock.countTimers() === 0) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tadvanceTimersByTime(msToRun) {\n\t\tif (this._checkFakeTimers()) {\n\t\t\tthis._clock.tick(msToRun);\n\t\t}\n\t}\n\tasync advanceTimersByTimeAsync(msToRun) {\n\t\tif (this._checkFakeTimers()) {\n\t\t\tawait this._clock.tickAsync(msToRun);\n\t\t}\n\t}\n\tadvanceTimersToNextFrame() {\n\t\tif (this._checkFakeTimers()) {\n\t\t\tthis._clock.runToFrame();\n\t\t}\n\t}\n\trunAllTicks() {\n\t\tif (this._checkFakeTimers()) {\n\t\t\tthis._clock.runMicrotasks();\n\t\t}\n\t}\n\tuseRealTimers() {\n\t\tif (this._fakingDate) {\n\t\t\tresetDate();\n\t\t\tthis._fakingDate = null;\n\t\t}\n\t\tif (this._fakingTime) {\n\t\t\tthis._clock.uninstall();\n\t\t\tthis._fakingTime = false;\n\t\t}\n\t}\n\tuseFakeTimers() {\n\t\tif (this._fakingDate) {\n\t\t\tthrow new Error(\"\\\"setSystemTime\\\" was called already and date was mocked. Reset timers using `vi.useRealTimers()` if you want to use fake timers again.\");\n\t\t}\n\t\tif (!this._fakingTime) {\n\t\t\tconst toFake = Object.keys(this._fakeTimers.timers).filter((timer) => timer !== \"nextTick\" && timer !== \"queueMicrotask\");\n\t\t\tif (this._userConfig?.toFake?.includes(\"nextTick\") && isChildProcess()) {\n\t\t\t\tthrow new Error(\"process.nextTick cannot be mocked inside child_process\");\n\t\t\t}\n\t\t\tthis._clock = this._fakeTimers.install({\n\t\t\t\tnow: Date.now(),\n\t\t\t\t...this._userConfig,\n\t\t\t\ttoFake: this._userConfig?.toFake || toFake,\n\t\t\t\tignoreMissingTimers: true\n\t\t\t});\n\t\t\tthis._fakingTime = true;\n\t\t}\n\t}\n\treset() {\n\t\tif (this._checkFakeTimers()) {\n\t\t\tconst { now } = this._clock;\n\t\t\tthis._clock.reset();\n\t\t\tthis._clock.setSystemTime(now);\n\t\t}\n\t}\n\tsetSystemTime(now) {\n\t\tconst date = typeof now === \"undefined\" || now instanceof Date ? now : new Date(now);\n\t\tif (this._fakingTime) {\n\t\t\tthis._clock.setSystemTime(date);\n\t\t} else {\n\t\t\tthis._fakingDate = date ?? new Date(this.getRealSystemTime());\n\t\t\tmockDate(this._fakingDate);\n\t\t}\n\t}\n\tgetMockedSystemTime() {\n\t\treturn this._fakingTime ? new Date(this._clock.now) : this._fakingDate;\n\t}\n\tgetRealSystemTime() {\n\t\treturn this._now();\n\t}\n\tgetTimerCount() {\n\t\tif (this._checkFakeTimers()) {\n\t\t\treturn this._clock.countTimers();\n\t\t}\n\t\treturn 0;\n\t}\n\tconfigure(config) {\n\t\tthis._userConfig = config;\n\t}\n\tisFakeTimers() {\n\t\treturn this._fakingTime;\n\t}\n\t_checkFakeTimers() {\n\t\tif (!this._fakingTime) {\n\t\t\tthrow new Error(\"Timers are not mocked. Try calling \\\"vi.useFakeTimers()\\\" first.\");\n\t\t}\n\t\treturn this._fakingTime;\n\t}\n}\n\nfunction copyStackTrace(target, source) {\n\tif (source.stack !== undefined) {\n\t\ttarget.stack = source.stack.replace(source.message, target.message);\n\t}\n\treturn target;\n}\nfunction waitFor(callback, options = {}) {\n\tconst { setTimeout, setInterval, clearTimeout, clearInterval } = getSafeTimers();\n\tconst { interval = 50, timeout = 1e3 } = typeof options === \"number\" ? { timeout: options } : options;\n\tconst STACK_TRACE_ERROR = new Error(\"STACK_TRACE_ERROR\");\n\treturn new Promise((resolve, reject) => {\n\t\tlet lastError;\n\t\tlet promiseStatus = \"idle\";\n\t\tlet timeoutId;\n\t\tlet intervalId;\n\t\tconst onResolve = (result) => {\n\t\t\tif (timeoutId) {\n\t\t\t\tclearTimeout(timeoutId);\n\t\t\t}\n\t\t\tif (intervalId) {\n\t\t\t\tclearInterval(intervalId);\n\t\t\t}\n\t\t\tresolve(result);\n\t\t};\n\t\tconst handleTimeout = () => {\n\t\t\tif (intervalId) {\n\t\t\t\tclearInterval(intervalId);\n\t\t\t}\n\t\t\tlet error = lastError;\n\t\t\tif (!error) {\n\t\t\t\terror = copyStackTrace(new Error(\"Timed out in waitFor!\"), STACK_TRACE_ERROR);\n\t\t\t}\n\t\t\treject(error);\n\t\t};\n\t\tconst checkCallback = () => {\n\t\t\tif (vi.isFakeTimers()) {\n\t\t\t\tvi.advanceTimersByTime(interval);\n\t\t\t}\n\t\t\tif (promiseStatus === \"pending\") {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tconst result = callback();\n\t\t\t\tif (result !== null && typeof result === \"object\" && typeof result.then === \"function\") {\n\t\t\t\t\tconst thenable = result;\n\t\t\t\t\tpromiseStatus = \"pending\";\n\t\t\t\t\tthenable.then((resolvedValue) => {\n\t\t\t\t\t\tpromiseStatus = \"resolved\";\n\t\t\t\t\t\tonResolve(resolvedValue);\n\t\t\t\t\t}, (rejectedValue) => {\n\t\t\t\t\t\tpromiseStatus = \"rejected\";\n\t\t\t\t\t\tlastError = rejectedValue;\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tonResolve(result);\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tlastError = error;\n\t\t\t}\n\t\t};\n\t\tif (checkCallback() === true) {\n\t\t\treturn;\n\t\t}\n\t\ttimeoutId = setTimeout(handleTimeout, timeout);\n\t\tintervalId = setInterval(checkCallback, interval);\n\t});\n}\nfunction waitUntil(callback, options = {}) {\n\tconst { setTimeout, setInterval, clearTimeout, clearInterval } = getSafeTimers();\n\tconst { interval = 50, timeout = 1e3 } = typeof options === \"number\" ? { timeout: options } : options;\n\tconst STACK_TRACE_ERROR = new Error(\"STACK_TRACE_ERROR\");\n\treturn new Promise((resolve, reject) => {\n\t\tlet promiseStatus = \"idle\";\n\t\tlet timeoutId;\n\t\tlet intervalId;\n\t\tconst onReject = (error) => {\n\t\t\tif (intervalId) {\n\t\t\t\tclearInterval(intervalId);\n\t\t\t}\n\t\t\tif (!error) {\n\t\t\t\terror = copyStackTrace(new Error(\"Timed out in waitUntil!\"), STACK_TRACE_ERROR);\n\t\t\t}\n\t\t\treject(error);\n\t\t};\n\t\tconst onResolve = (result) => {\n\t\t\tif (!result) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (timeoutId) {\n\t\t\t\tclearTimeout(timeoutId);\n\t\t\t}\n\t\t\tif (intervalId) {\n\t\t\t\tclearInterval(intervalId);\n\t\t\t}\n\t\t\tresolve(result);\n\t\t\treturn true;\n\t\t};\n\t\tconst checkCallback = () => {\n\t\t\tif (vi.isFakeTimers()) {\n\t\t\t\tvi.advanceTimersByTime(interval);\n\t\t\t}\n\t\t\tif (promiseStatus === \"pending\") {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tconst result = callback();\n\t\t\t\tif (result !== null && typeof result === \"object\" && typeof result.then === \"function\") {\n\t\t\t\t\tconst thenable = result;\n\t\t\t\t\tpromiseStatus = \"pending\";\n\t\t\t\t\tthenable.then((resolvedValue) => {\n\t\t\t\t\t\tpromiseStatus = \"resolved\";\n\t\t\t\t\t\tonResolve(resolvedValue);\n\t\t\t\t\t}, (rejectedValue) => {\n\t\t\t\t\t\tpromiseStatus = \"rejected\";\n\t\t\t\t\t\tonReject(rejectedValue);\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\treturn onResolve(result);\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tonReject(error);\n\t\t\t}\n\t\t};\n\t\tif (checkCallback() === true) {\n\t\t\treturn;\n\t\t}\n\t\ttimeoutId = setTimeout(onReject, timeout);\n\t\tintervalId = setInterval(checkCallback, interval);\n\t});\n}\n\nfunction createVitest() {\n\tlet _config = null;\n\tconst workerState = getWorkerState();\n\tlet _timers;\n\tconst timers = () => _timers ||= new FakeTimers({\n\t\tglobal: globalThis,\n\t\tconfig: workerState.config.fakeTimers\n\t});\n\tconst _stubsGlobal = new Map();\n\tconst _stubsEnv = new Map();\n\tconst _envBooleans = [\n\t\t\"PROD\",\n\t\t\"DEV\",\n\t\t\"SSR\"\n\t];\n\tconst utils = {\n\t\tuseFakeTimers(config) {\n\t\t\tif (isChildProcess()) {\n\t\t\t\tif (config?.toFake?.includes(\"nextTick\") || workerState.config?.fakeTimers?.toFake?.includes(\"nextTick\")) {\n\t\t\t\t\tthrow new Error(\"vi.useFakeTimers({ toFake: [\\\"nextTick\\\"] }) is not supported in node:child_process. Use --pool=threads if mocking nextTick is required.\");\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (config) {\n\t\t\t\ttimers().configure({\n\t\t\t\t\t...workerState.config.fakeTimers,\n\t\t\t\t\t...config\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\ttimers().configure(workerState.config.fakeTimers);\n\t\t\t}\n\t\t\ttimers().useFakeTimers();\n\t\t\treturn utils;\n\t\t},\n\t\tisFakeTimers() {\n\t\t\treturn timers().isFakeTimers();\n\t\t},\n\t\tuseRealTimers() {\n\t\t\ttimers().useRealTimers();\n\t\t\treturn utils;\n\t\t},\n\t\trunOnlyPendingTimers() {\n\t\t\ttimers().runOnlyPendingTimers();\n\t\t\treturn utils;\n\t\t},\n\t\tasync runOnlyPendingTimersAsync() {\n\t\t\tawait timers().runOnlyPendingTimersAsync();\n\t\t\treturn utils;\n\t\t},\n\t\trunAllTimers() {\n\t\t\ttimers().runAllTimers();\n\t\t\treturn utils;\n\t\t},\n\t\tasync runAllTimersAsync() {\n\t\t\tawait timers().runAllTimersAsync();\n\t\t\treturn utils;\n\t\t},\n\t\trunAllTicks() {\n\t\t\ttimers().runAllTicks();\n\t\t\treturn utils;\n\t\t},\n\t\tadvanceTimersByTime(ms) {\n\t\t\ttimers().advanceTimersByTime(ms);\n\t\t\treturn utils;\n\t\t},\n\t\tasync advanceTimersByTimeAsync(ms) {\n\t\t\tawait timers().advanceTimersByTimeAsync(ms);\n\t\t\treturn utils;\n\t\t},\n\t\tadvanceTimersToNextTimer() {\n\t\t\ttimers().advanceTimersToNextTimer();\n\t\t\treturn utils;\n\t\t},\n\t\tasync advanceTimersToNextTimerAsync() {\n\t\t\tawait timers().advanceTimersToNextTimerAsync();\n\t\t\treturn utils;\n\t\t},\n\t\tadvanceTimersToNextFrame() {\n\t\t\ttimers().advanceTimersToNextFrame();\n\t\t\treturn utils;\n\t\t},\n\t\tgetTimerCount() {\n\t\t\treturn timers().getTimerCount();\n\t\t},\n\t\tsetSystemTime(time) {\n\t\t\ttimers().setSystemTime(time);\n\t\t\treturn utils;\n\t\t},\n\t\tgetMockedSystemTime() {\n\t\t\treturn timers().getMockedSystemTime();\n\t\t},\n\t\tgetRealSystemTime() {\n\t\t\treturn timers().getRealSystemTime();\n\t\t},\n\t\tclearAllTimers() {\n\t\t\ttimers().clearAllTimers();\n\t\t\treturn utils;\n\t\t},\n\t\tspyOn,\n\t\tfn,\n\t\twaitFor,\n\t\twaitUntil,\n\t\thoisted(factory) {\n\t\t\tassertTypes(factory, \"\\\"vi.hoisted\\\" factory\", [\"function\"]);\n\t\t\treturn factory();\n\t\t},\n\t\tmock(path, factory) {\n\t\t\tif (typeof path !== \"string\") {\n\t\t\t\tthrow new TypeError(`vi.mock() expects a string path, but received a ${typeof path}`);\n\t\t\t}\n\t\t\tconst importer = getImporter(\"mock\");\n\t\t\t_mocker().queueMock(path, importer, typeof factory === \"function\" ? () => factory(() => _mocker().importActual(path, importer, _mocker().getMockContext().callstack)) : factory);\n\t\t},\n\t\tunmock(path) {\n\t\t\tif (typeof path !== \"string\") {\n\t\t\t\tthrow new TypeError(`vi.unmock() expects a string path, but received a ${typeof path}`);\n\t\t\t}\n\t\t\t_mocker().queueUnmock(path, getImporter(\"unmock\"));\n\t\t},\n\t\tdoMock(path, factory) {\n\t\t\tif (typeof path !== \"string\") {\n\t\t\t\tthrow new TypeError(`vi.doMock() expects a string path, but received a ${typeof path}`);\n\t\t\t}\n\t\t\tconst importer = getImporter(\"doMock\");\n\t\t\t_mocker().queueMock(path, importer, typeof factory === \"function\" ? () => factory(() => _mocker().importActual(path, importer, _mocker().getMockContext().callstack)) : factory);\n\t\t},\n\t\tdoUnmock(path) {\n\t\t\tif (typeof path !== \"string\") {\n\t\t\t\tthrow new TypeError(`vi.doUnmock() expects a string path, but received a ${typeof path}`);\n\t\t\t}\n\t\t\t_mocker().queueUnmock(path, getImporter(\"doUnmock\"));\n\t\t},\n\t\tasync importActual(path) {\n\t\t\treturn _mocker().importActual(path, getImporter(\"importActual\"), _mocker().getMockContext().callstack);\n\t\t},\n\t\tasync importMock(path) {\n\t\t\treturn _mocker().importMock(path, getImporter(\"importMock\"));\n\t\t},\n\t\tmocked(item, _options = {}) {\n\t\t\treturn item;\n\t\t},\n\t\tisMockFunction(fn) {\n\t\t\treturn isMockFunction(fn);\n\t\t},\n\t\tclearAllMocks() {\n\t\t\t[...mocks].reverse().forEach((spy) => spy.mockClear());\n\t\t\treturn utils;\n\t\t},\n\t\tresetAllMocks() {\n\t\t\t[...mocks].reverse().forEach((spy) => spy.mockReset());\n\t\t\treturn utils;\n\t\t},\n\t\trestoreAllMocks() {\n\t\t\t[...mocks].reverse().forEach((spy) => spy.mockRestore());\n\t\t\treturn utils;\n\t\t},\n\t\tstubGlobal(name, value) {\n\t\t\tif (!_stubsGlobal.has(name)) {\n\t\t\t\t_stubsGlobal.set(name, Object.getOwnPropertyDescriptor(globalThis, name));\n\t\t\t}\n\t\t\tObject.defineProperty(globalThis, name, {\n\t\t\t\tvalue,\n\t\t\t\twritable: true,\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true\n\t\t\t});\n\t\t\treturn utils;\n\t\t},\n\t\tstubEnv(name, value) {\n\t\t\tif (!_stubsEnv.has(name)) {\n\t\t\t\t_stubsEnv.set(name, process.env[name]);\n\t\t\t}\n\t\t\tif (_envBooleans.includes(name)) {\n\t\t\t\tprocess.env[name] = value ? \"1\" : \"\";\n\t\t\t} else if (value === undefined) {\n\t\t\t\tdelete process.env[name];\n\t\t\t} else {\n\t\t\t\tprocess.env[name] = String(value);\n\t\t\t}\n\t\t\treturn utils;\n\t\t},\n\t\tunstubAllGlobals() {\n\t\t\t_stubsGlobal.forEach((original, name) => {\n\t\t\t\tif (!original) {\n\t\t\t\t\tReflect.deleteProperty(globalThis, name);\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty(globalThis, name, original);\n\t\t\t\t}\n\t\t\t});\n\t\t\t_stubsGlobal.clear();\n\t\t\treturn utils;\n\t\t},\n\t\tunstubAllEnvs() {\n\t\t\t_stubsEnv.forEach((original, name) => {\n\t\t\t\tif (original === undefined) {\n\t\t\t\t\tdelete process.env[name];\n\t\t\t\t} else {\n\t\t\t\t\tprocess.env[name] = original;\n\t\t\t\t}\n\t\t\t});\n\t\t\t_stubsEnv.clear();\n\t\t\treturn utils;\n\t\t},\n\t\tresetModules() {\n\t\t\tresetModules(workerState.moduleCache);\n\t\t\treturn utils;\n\t\t},\n\t\tasync dynamicImportSettled() {\n\t\t\treturn waitForImportsToResolve();\n\t\t},\n\t\tsetConfig(config) {\n\t\t\tif (!_config) {\n\t\t\t\t_config = { ...workerState.config };\n\t\t\t}\n\t\t\tObject.assign(workerState.config, config);\n\t\t},\n\t\tresetConfig() {\n\t\t\tif (_config) {\n\t\t\t\tObject.assign(workerState.config, _config);\n\t\t\t}\n\t\t}\n\t};\n\treturn utils;\n}\nconst vitest = createVitest();\nconst vi = vitest;\nfunction _mocker() {\n\treturn typeof __vitest_mocker__ !== \"undefined\" ? __vitest_mocker__ : new Proxy({}, { get(_, name) {\n\t\tthrow new Error(\"Vitest mocker was not initialized in this environment. \" + `vi.${String(name)}() is forbidden.`);\n\t} });\n}\nfunction getImporter(name) {\n\tconst stackTrace = createSimpleStackTrace({ stackTraceLimit: 5 });\n\tconst stackArray = stackTrace.split(\"\\n\");\n\tconst importerStackIndex = stackArray.findIndex((stack) => {\n\t\treturn stack.includes(` at Object.${name}`) || stack.includes(`${name}@`);\n\t});\n\tconst stack = parseSingleStack(stackArray[importerStackIndex + 1]);\n\treturn stack?.file || \"\";\n}\n\nexport { globalExpect as a, vitest as b, createExpect as c, getSnapshotClient as g, inject as i, vi as v };\n","import { getSafeTimers } from '@vitest/utils';\n\nconst NAME_WORKER_STATE = \"__vitest_worker__\";\nfunction getWorkerState() {\n\tconst workerState = globalThis[NAME_WORKER_STATE];\n\tif (!workerState) {\n\t\tconst errorMsg = \"Vitest failed to access its internal state.\" + \"\\n\\nOne of the following is possible:\" + \"\\n- \\\"vitest\\\" is imported directly without running \\\"vitest\\\" command\" + \"\\n- \\\"vitest\\\" is imported inside \\\"globalSetup\\\" (to fix this, use \\\"setupFiles\\\" instead, because \\\"globalSetup\\\" runs in a different context)\" + \"\\n- Otherwise, it might be a Vitest bug. Please report it to https://github.com/vitest-dev/vitest/issues\\n\";\n\t\tthrow new Error(errorMsg);\n\t}\n\treturn workerState;\n}\nfunction provideWorkerState(context, state) {\n\tObject.defineProperty(context, NAME_WORKER_STATE, {\n\t\tvalue: state,\n\t\tconfigurable: true,\n\t\twritable: true,\n\t\tenumerable: false\n\t});\n\treturn state;\n}\nfunction getCurrentEnvironment() {\n\tconst state = getWorkerState();\n\treturn state?.environment.name;\n}\nfunction isChildProcess() {\n\treturn typeof process !== \"undefined\" && !!process.send;\n}\nfunction setProcessTitle(title) {\n\ttry {\n\t\tprocess.title = `node (${title})`;\n\t} catch {}\n}\nfunction resetModules(modules, resetMocks = false) {\n\tconst skipPaths = [\n\t\t/\\/vitest\\/dist\\//,\n\t\t/\\/vite-node\\/dist\\//,\n\t\t/vitest-virtual-\\w+\\/dist/,\n\t\t/@vitest\\/dist/,\n\t\t...!resetMocks ? [/^mock:/] : []\n\t];\n\tmodules.forEach((mod, path) => {\n\t\tif (skipPaths.some((re) => re.test(path))) {\n\t\t\treturn;\n\t\t}\n\t\tmodules.invalidateModule(mod);\n\t});\n}\nfunction waitNextTick() {\n\tconst { setTimeout } = getSafeTimers();\n\treturn new Promise((resolve) => setTimeout(resolve, 0));\n}\nasync function waitForImportsToResolve() {\n\tawait waitNextTick();\n\tconst state = getWorkerState();\n\tconst promises = [];\n\tlet resolvingCount = 0;\n\tfor (const mod of state.moduleCache.values()) {\n\t\tif (mod.promise && !mod.evaluated) {\n\t\t\tpromises.push(mod.promise);\n\t\t}\n\t\tif (mod.resolving) {\n\t\t\tresolvingCount++;\n\t\t}\n\t}\n\tif (!promises.length && !resolvingCount) {\n\t\treturn;\n\t}\n\tawait Promise.allSettled(promises);\n\tawait waitForImportsToResolve();\n}\n\nexport { getCurrentEnvironment as a, getWorkerState as g, isChildProcess as i, provideWorkerState as p, resetModules as r, setProcessTitle as s, waitForImportsToResolve as w };\n","var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nfunction getDefaultExportFromCjs (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\n\nexport { commonjsGlobal as c, getDefaultExportFromCjs as g };\n","const RealDate = Date;\nlet now = null;\nclass MockDate extends RealDate {\n\tconstructor(y, m, d, h, M, s, ms) {\n\t\tsuper();\n\t\tlet date;\n\t\tswitch (arguments.length) {\n\t\t\tcase 0:\n\t\t\t\tif (now !== null) {\n\t\t\t\t\tdate = new RealDate(now.valueOf());\n\t\t\t\t} else {\n\t\t\t\t\tdate = new RealDate();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 1:\n\t\t\t\tdate = new RealDate(y);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\td = typeof d === \"undefined\" ? 1 : d;\n\t\t\t\th = h || 0;\n\t\t\t\tM = M || 0;\n\t\t\t\ts = s || 0;\n\t\t\t\tms = ms || 0;\n\t\t\t\tdate = new RealDate(y, m, d, h, M, s, ms);\n\t\t\t\tbreak;\n\t\t}\n\t\tObject.setPrototypeOf(date, MockDate.prototype);\n\t\treturn date;\n\t}\n}\nMockDate.UTC = RealDate.UTC;\nMockDate.now = function() {\n\treturn new MockDate().valueOf();\n};\nMockDate.parse = function(dateString) {\n\treturn RealDate.parse(dateString);\n};\nMockDate.toString = function() {\n\treturn RealDate.toString();\n};\nfunction mockDate(date) {\n\tconst dateObj = new RealDate(date.valueOf());\n\tif (Number.isNaN(dateObj.getTime())) {\n\t\tthrow new TypeError(`mockdate: The time set is an invalid date: ${date}`);\n\t}\n\tglobalThis.Date = MockDate;\n\tnow = dateObj.valueOf();\n}\nfunction resetDate() {\n\tglobalThis.Date = RealDate;\n}\n\nexport { RealDate as R, mockDate as m, resetDate as r };\n","export { c as createExpect, a as expect, i as inject, v as vi, b as vitest } from './chunks/vi.B-PuvDzu.js';\nexport { i as isFirstRun, a as runOnce } from './chunks/run-once.I7PpBOk1.js';\nexport { a as assertType, g as getRunningMode, i as isWatchMode } from './chunks/index.BDobFbcz.js';\nexport { b as bench } from './chunks/benchmark.BKUatJGy.js';\nexport { expectTypeOf } from 'expect-type';\nexport { afterAll, afterEach, beforeAll, beforeEach, describe, it, onTestFailed, onTestFinished, suite, test } from '@vitest/runner';\nimport * as chai from 'chai';\nexport { chai };\nexport { assert, should } from 'chai';\nimport '@vitest/expect';\nimport '@vitest/runner/utils';\nimport './chunks/utils.CtocqOoE.js';\nimport '@vitest/utils';\nimport './chunks/_commonjsHelpers.BFTU3MAI.js';\nimport '@vitest/snapshot';\nimport '@vitest/utils/error';\nimport '@vitest/spy';\nimport '@vitest/utils/source-map';\nimport './chunks/date.CDOsz-HY.js';\n","// This file contains setup code for tests\nimport { vi } from \"vitest\";\n\n// Set up global mocks if needed\n// Using a fixed date to avoid recursive calls\nconst OriginalDate = global.Date;\nconst fixedDate = new OriginalDate(\"2023-01-01\");\nglobal.Date = vi.fn(() => fixedDate) as any;\nglobal.Date.now = vi.fn(() => fixedDate.getTime());\n\n// Add any other global setup needed for tests\n"],"mappings":"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","names":["getSafeTimers","expect","fn","test","getSafeTimers","chaiSubset","chai","Assertion","util","assert","global","object","copyPrototypeMethods","every","fn","functionName","typeDetect","typeOf","now","timers","getSafeTimers","stack","chai","assert"]}