@accelint/design-system 1.1.5 → 1.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/button/button.css.d.ts +1 -0
- package/dist/components/button/index.d.ts +9 -40
- package/dist/components/button/index.js +23 -17
- package/dist/components/button/index.js.map +1 -1
- package/dist/components/button/types.d.ts +3 -2
- package/dist/components/collection/index.d.ts +2 -2
- package/dist/components/collection/index.js.map +1 -1
- package/dist/components/date-input/index.js +4 -1
- package/dist/components/date-input/index.js.map +1 -1
- package/dist/components/dialog/dialog.css.d.ts +1 -0
- package/dist/components/dialog/index.d.ts +1 -0
- package/dist/components/dialog/types.d.ts +1 -0
- package/dist/components/drawer/drawer.css.d.ts +1 -1
- package/dist/components/drawer/index.d.ts +1 -1
- package/dist/components/drawer/types.d.ts +1 -1
- package/dist/components/index.d.ts +2 -2
- package/dist/components/menu/index.d.ts +2 -2
- package/dist/components/menu/index.js +1 -1
- package/dist/components/menu/index.js.map +1 -1
- package/dist/components/merge-provider/index.js +15 -7
- package/dist/components/merge-provider/index.js.map +1 -1
- package/dist/components/number-field/index.d.ts +1 -1
- package/dist/components/number-field/number-field.css.d.ts +1 -1
- package/dist/components/number-field/types.d.ts +1 -1
- package/dist/components/options/index.js +1 -1
- package/dist/components/options/index.js.map +1 -1
- package/dist/components/picker/index.js.map +1 -1
- package/dist/components/text-field/index.d.ts +3 -128
- package/dist/components/text-field/index.js +3 -3
- package/dist/components/text-field/index.js.map +1 -1
- package/dist/components/tree/index.js +5 -2
- package/dist/components/tree/index.js.map +1 -1
- package/dist/hooks/index.d.ts +11 -11
- package/dist/hooks/use-collection-render/index.d.ts +1 -1
- package/dist/hooks/use-collection-render/index.js +2 -3
- package/dist/hooks/use-collection-render/index.js.map +1 -1
- package/dist/hooks/use-context-props/index.js.map +1 -1
- package/dist/hooks/use-defaults/index.d.ts +32 -80
- package/dist/hooks/use-defaults/index.js +1 -4
- package/dist/hooks/use-defaults/index.js.map +1 -1
- package/dist/hooks/use-defaults/types.d.ts +1 -1
- package/dist/hooks/use-theme/index.d.ts +1 -1
- package/dist/hooks/use-theme/types.d.ts +1 -1
- package/dist/hooks/use-tree/index.js +3 -2
- package/dist/hooks/use-tree/index.js.map +1 -1
- package/dist/hooks/use-tree/utils.js +6 -9
- package/dist/hooks/use-tree/utils.js.map +1 -1
- package/dist/hooks/use-update-effect/index.js.map +1 -1
- package/dist/index.css +32 -32
- package/dist/index.d.ts +5 -5
- package/dist/ladle/actions.js.map +1 -1
- package/dist/test/setup.js +634 -1254
- package/dist/test/setup.js.map +1 -1
- package/dist/utils/props/index.d.ts +1 -2
- package/dist/utils/props/index.js.map +1 -1
- package/package.json +39 -39
package/dist/test/setup.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../node_modules/.pnpm/@testing-library+jest-dom@6.9.1/node_modules/@testing-library/jest-dom/dist/matchers.mjs","../../../node_modules/.pnpm/@testing-library+jest-dom@6.9.1/node_modules/@testing-library/jest-dom/dist/matchers-35e4d3bd.mjs","../../../node_modules/.pnpm/@testing-library+dom@10.4.1/node_modules/@testing-library/dom/dist/@testing-library/dom.esm.js","../../../node_modules/.pnpm/@testing-library+react@16.3.0_@testing-library+dom@10.4.1_@types+react-dom@19.0.0_@type_2cdadb9aaf9a026f45fcc74be32c5467/node_modules/@testing-library/react/dist/@testing-library/react.esm.js","../../../node_modules/.pnpm/vitest@2.1.9_@types+node@24.10.1_jsdom@25.0.1_msw@2.12.4_@types+node@24.10.1_typescript@5.9.3_/node_modules/vitest/dist/chunks/utils.C8RiOc4B.js","../../../node_modules/.pnpm/vitest@2.1.9_@types+node@24.10.1_jsdom@25.0.1_msw@2.12.4_@types+node@24.10.1_typescript@5.9.3_/node_modules/vitest/dist/chunks/_commonjsHelpers.BFTU3MAI.js","../../../node_modules/.pnpm/vitest@2.1.9_@types+node@24.10.1_jsdom@25.0.1_msw@2.12.4_@types+node@24.10.1_typescript@5.9.3_/node_modules/vitest/dist/chunks/date.W2xKR2qe.js","../../../node_modules/.pnpm/vitest@2.1.9_@types+node@24.10.1_jsdom@25.0.1_msw@2.12.4_@types+node@24.10.1_typescript@5.9.3_/node_modules/vitest/dist/chunks/vi.DgezovHB.js","../../src/test/setup.ts"],"names":["window","array","roles","document","display","config","isCustomElement","object","matches","elementRoleList","buildElementRoleList","elementRoles","getImplicitAriaRoles","computeAccessibleName","computeAccessibleDescription","normalize","string","getMultipleError","getMissingError","initialValue","fn","act","jestFakeTimersAreEnabled","setTimeout","expect","test","clearTimeout","getSafeTimers","module","exports","chaiSubset","chai","Assertion","util","assert2","global","copyPrototypeMethods","every","functionName","typeDetect","typeOf","now","timers","setInterval","clearInterval","copyStackTrace","waitFor","afterEach"],"mappings":"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","file":"setup.js","sourcesContent":["export { H as toAppearAfter, G as toAppearBefore, z as toBeChecked, r as toBeDisabled, b as toBeEmpty, c as toBeEmptyDOMElement, s as toBeEnabled, t as toBeInTheDOM, a as toBeInTheDocument, v as toBeInvalid, A as toBePartiallyChecked, F as toBePartiallyPressed, E as toBePressed, u as toBeRequired, w as toBeValid, q as toBeVisible, d as toContainElement, f as toContainHTML, h as toHaveAccessibleDescription, i as toHaveAccessibleErrorMessage, k as toHaveAccessibleName, l as toHaveAttribute, m as toHaveClass, B as toHaveDescription, y as toHaveDisplayValue, C as toHaveErrorMessage, o as toHaveFocus, p as toHaveFormValues, j as toHaveRole, D as toHaveSelection, n as toHaveStyle, g as toHaveTextContent, x as toHaveValue } from './matchers-35e4d3bd.mjs';\nimport 'redent';\nimport '@adobe/css-tools';\nimport 'dom-accessibility-api';\nimport 'aria-query';\nimport 'picocolors';\nimport 'css.escape';\n","import redent from 'redent';\nimport { parse } from '@adobe/css-tools';\nimport { computeAccessibleDescription, computeAccessibleName } from 'dom-accessibility-api';\nimport { elementRoles, roles } from 'aria-query';\nimport pico from 'picocolors';\nimport escape from 'css.escape';\n\nclass GenericTypeError extends Error {\n constructor(expectedString, received, matcherFn, context) {\n super();\n\n /* istanbul ignore next */\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, matcherFn);\n }\n let withType = '';\n try {\n withType = context.utils.printWithType(\n 'Received',\n received,\n context.utils.printReceived,\n );\n } catch (e) {\n // Can throw for Document:\n // https://github.com/jsdom/jsdom/issues/2304\n }\n this.message = [\n context.utils.matcherHint(\n `${context.isNot ? '.not' : ''}.${matcherFn.name}`,\n 'received',\n '',\n ),\n '',\n // eslint-disable-next-line new-cap\n `${context.utils.RECEIVED_COLOR(\n 'received',\n )} value must ${expectedString}.`,\n withType,\n ].join('\\n');\n }\n}\n\nclass HtmlElementTypeError extends GenericTypeError {\n constructor(...args) {\n super('be an HTMLElement or an SVGElement', ...args);\n }\n}\n\nclass NodeTypeError extends GenericTypeError {\n constructor(...args) {\n super('be a Node', ...args);\n }\n}\n\nfunction checkHasWindow(htmlElement, ErrorClass, ...args) {\n if (\n !htmlElement ||\n !htmlElement.ownerDocument ||\n !htmlElement.ownerDocument.defaultView\n ) {\n throw new ErrorClass(htmlElement, ...args)\n }\n}\n\nfunction checkNode(node, ...args) {\n checkHasWindow(node, NodeTypeError, ...args);\n const window = node.ownerDocument.defaultView;\n\n if (!(node instanceof window.Node)) {\n throw new NodeTypeError(node, ...args)\n }\n}\n\nfunction checkHtmlElement(htmlElement, ...args) {\n checkHasWindow(htmlElement, HtmlElementTypeError, ...args);\n const window = htmlElement.ownerDocument.defaultView;\n\n if (\n !(htmlElement instanceof window.HTMLElement) &&\n !(htmlElement instanceof window.SVGElement)\n ) {\n throw new HtmlElementTypeError(htmlElement, ...args)\n }\n}\n\nclass InvalidCSSError extends Error {\n constructor(received, matcherFn, context) {\n super();\n\n /* istanbul ignore next */\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, matcherFn);\n }\n this.message = [\n received.message,\n '',\n // eslint-disable-next-line new-cap\n context.utils.RECEIVED_COLOR(`Failing css:`),\n // eslint-disable-next-line new-cap\n context.utils.RECEIVED_COLOR(`${received.css}`),\n ].join('\\n');\n }\n}\n\nfunction parseCSS(css, ...args) {\n const ast = parse(`selector { ${css} }`, {silent: true}).stylesheet;\n\n if (ast.parsingErrors && ast.parsingErrors.length > 0) {\n const {reason, line} = ast.parsingErrors[0];\n\n throw new InvalidCSSError(\n {\n css,\n message: `Syntax error parsing expected css: ${reason} on line: ${line}`,\n },\n ...args,\n )\n }\n\n const parsedRules = ast.rules[0].declarations\n .filter(d => d.type === 'declaration')\n .reduce(\n (obj, {property, value}) => Object.assign(obj, {[property]: value}),\n {},\n );\n return parsedRules\n}\n\nfunction display(context, value) {\n return typeof value === 'string' ? value : context.utils.stringify(value)\n}\n\nfunction getMessage(\n context,\n matcher,\n expectedLabel,\n expectedValue,\n receivedLabel,\n receivedValue,\n) {\n return [\n `${matcher}\\n`,\n // eslint-disable-next-line new-cap\n `${expectedLabel}:\\n${context.utils.EXPECTED_COLOR(\n redent(display(context, expectedValue), 2),\n )}`,\n // eslint-disable-next-line new-cap\n `${receivedLabel}:\\n${context.utils.RECEIVED_COLOR(\n redent(display(context, receivedValue), 2),\n )}`,\n ].join('\\n')\n}\n\nfunction matches(textToMatch, matcher) {\n if (matcher instanceof RegExp) {\n return matcher.test(textToMatch)\n } else {\n return textToMatch.includes(String(matcher))\n }\n}\n\nfunction deprecate(name, replacementText) {\n // Notify user that they are using deprecated functionality.\n // eslint-disable-next-line no-console\n console.warn(\n `Warning: ${name} has been deprecated and will be removed in future updates.`,\n replacementText,\n );\n}\n\nfunction normalize(text) {\n return text.replace(/\\s+/g, ' ').trim()\n}\n\nfunction getTag(element) {\n return element.tagName && element.tagName.toLowerCase()\n}\n\nfunction getSelectValue({multiple, options}) {\n const selectedOptions = [...options].filter(option => option.selected);\n\n if (multiple) {\n return [...selectedOptions].map(opt => opt.value)\n }\n /* istanbul ignore if */\n if (selectedOptions.length === 0) {\n return undefined // Couldn't make this happen, but just in case\n }\n return selectedOptions[0].value\n}\n\nfunction getInputValue(inputElement) {\n switch (inputElement.type) {\n case 'number':\n return inputElement.value === '' ? null : Number(inputElement.value)\n case 'checkbox':\n return inputElement.checked\n default:\n return inputElement.value\n }\n}\n\nconst rolesSupportingValues = ['meter', 'progressbar', 'slider', 'spinbutton'];\nfunction getAccessibleValue(element) {\n if (!rolesSupportingValues.includes(element.getAttribute('role'))) {\n return undefined\n }\n return Number(element.getAttribute('aria-valuenow'))\n}\n\nfunction getSingleElementValue(element) {\n /* istanbul ignore if */\n if (!element) {\n return undefined\n }\n\n switch (element.tagName.toLowerCase()) {\n case 'input':\n return getInputValue(element)\n case 'select':\n return getSelectValue(element)\n default: {\n return element.value ?? getAccessibleValue(element)\n }\n }\n}\n\nfunction toSentence(\n array,\n {wordConnector = ', ', lastWordConnector = ' and '} = {},\n) {\n return [array.slice(0, -1).join(wordConnector), array[array.length - 1]].join(\n array.length > 1 ? lastWordConnector : '',\n )\n}\n\nfunction compareAsSet(val1, val2) {\n if (Array.isArray(val1) && Array.isArray(val2)) {\n return [...new Set(val1)].every(v => new Set(val2).has(v))\n }\n return val1 === val2\n}\n\nfunction toBeInTheDOM(element, container) {\n deprecate(\n 'toBeInTheDOM',\n 'Please use toBeInTheDocument for searching the entire document and toContainElement for searching a specific container.',\n );\n\n if (element) {\n checkHtmlElement(element, toBeInTheDOM, this);\n }\n\n if (container) {\n checkHtmlElement(container, toBeInTheDOM, this);\n }\n\n return {\n pass: container ? container.contains(element) : !!element,\n message: () => {\n return [\n this.utils.matcherHint(\n `${this.isNot ? '.not' : ''}.toBeInTheDOM`,\n 'element',\n '',\n ),\n '',\n 'Received:',\n ` ${this.utils.printReceived(\n element ? element.cloneNode(false) : element,\n )}`,\n ].join('\\n')\n },\n }\n}\n\nfunction toBeInTheDocument(element) {\n if (element !== null || !this.isNot) {\n checkHtmlElement(element, toBeInTheDocument, this);\n }\n\n const pass =\n element === null\n ? false\n : element.ownerDocument === element.getRootNode({composed: true});\n\n const errorFound = () => {\n return `expected document not to contain element, found ${this.utils.stringify(\n element.cloneNode(true),\n )} instead`\n };\n const errorNotFound = () => {\n return `element could not be found in the document`\n };\n\n return {\n pass,\n message: () => {\n return [\n this.utils.matcherHint(\n `${this.isNot ? '.not' : ''}.toBeInTheDocument`,\n 'element',\n '',\n ),\n '',\n // eslint-disable-next-line new-cap\n this.utils.RECEIVED_COLOR(this.isNot ? errorFound() : errorNotFound()),\n ].join('\\n')\n },\n }\n}\n\nfunction toBeEmpty(element) {\n deprecate(\n 'toBeEmpty',\n 'Please use instead toBeEmptyDOMElement for finding empty nodes in the DOM.',\n );\n checkHtmlElement(element, toBeEmpty, this);\n\n return {\n pass: element.innerHTML === '',\n message: () => {\n return [\n this.utils.matcherHint(\n `${this.isNot ? '.not' : ''}.toBeEmpty`,\n 'element',\n '',\n ),\n '',\n 'Received:',\n ` ${this.utils.printReceived(element.innerHTML)}`,\n ].join('\\n')\n },\n }\n}\n\nfunction toBeEmptyDOMElement(element) {\n checkHtmlElement(element, toBeEmptyDOMElement, this);\n\n return {\n pass: isEmptyElement(element),\n message: () => {\n return [\n this.utils.matcherHint(\n `${this.isNot ? '.not' : ''}.toBeEmptyDOMElement`,\n 'element',\n '',\n ),\n '',\n 'Received:',\n ` ${this.utils.printReceived(element.innerHTML)}`,\n ].join('\\n')\n },\n }\n}\n\n/**\n * Identifies if an element doesn't contain child nodes (excluding comments)\n * ℹ Node.COMMENT_NODE can't be used because of the following issue \n * https://github.com/jsdom/jsdom/issues/2220\n *\n * @param {*} element an HtmlElement or SVGElement\n * @return {*} true if the element only contains comments or none\n */\nfunction isEmptyElement(element){\n const nonCommentChildNodes = [...element.childNodes].filter(node => node.nodeType !== 8);\n return nonCommentChildNodes.length === 0;\n}\n\nfunction toContainElement(container, element) {\n checkHtmlElement(container, toContainElement, this);\n\n if (element !== null) {\n checkHtmlElement(element, toContainElement, this);\n }\n\n return {\n pass: container.contains(element),\n message: () => {\n return [\n this.utils.matcherHint(\n `${this.isNot ? '.not' : ''}.toContainElement`,\n 'element',\n 'element',\n ),\n '',\n // eslint-disable-next-line new-cap\n this.utils.RECEIVED_COLOR(`${this.utils.stringify(\n container.cloneNode(false),\n )} ${\n this.isNot ? 'contains:' : 'does not contain:'\n } ${this.utils.stringify(element ? element.cloneNode(false) : element)}\n `),\n ].join('\\n')\n },\n }\n}\n\nfunction getNormalizedHtml(container, htmlText) {\n const div = container.ownerDocument.createElement('div');\n div.innerHTML = htmlText;\n return div.innerHTML\n}\n\nfunction toContainHTML(container, htmlText) {\n checkHtmlElement(container, toContainHTML, this);\n\n if (typeof htmlText !== 'string') {\n throw new Error(`.toContainHTML() expects a string value, got ${htmlText}`)\n }\n\n return {\n pass: container.outerHTML.includes(getNormalizedHtml(container, htmlText)),\n message: () => {\n return [\n this.utils.matcherHint(\n `${this.isNot ? '.not' : ''}.toContainHTML`,\n 'element',\n '',\n ),\n 'Expected:',\n // eslint-disable-next-line new-cap\n ` ${this.utils.EXPECTED_COLOR(htmlText)}`,\n 'Received:',\n ` ${this.utils.printReceived(container.cloneNode(true))}`,\n ].join('\\n')\n },\n }\n}\n\nfunction toHaveTextContent(\n node,\n checkWith,\n options = {normalizeWhitespace: true},\n) {\n checkNode(node, toHaveTextContent, this);\n\n const textContent = options.normalizeWhitespace\n ? normalize(node.textContent)\n : node.textContent.replace(/\\u00a0/g, ' '); // Replace with normal spaces\n\n const checkingWithEmptyString = textContent !== '' && checkWith === '';\n\n return {\n pass: !checkingWithEmptyString && matches(textContent, checkWith),\n message: () => {\n const to = this.isNot ? 'not to' : 'to';\n return getMessage(\n this,\n this.utils.matcherHint(\n `${this.isNot ? '.not' : ''}.toHaveTextContent`,\n 'element',\n '',\n ),\n checkingWithEmptyString\n ? `Checking with empty string will always match, use .toBeEmptyDOMElement() instead`\n : `Expected element ${to} have text content`,\n checkWith,\n 'Received',\n textContent,\n )\n },\n }\n}\n\nfunction toHaveAccessibleDescription(\n htmlElement,\n expectedAccessibleDescription,\n) {\n checkHtmlElement(htmlElement, toHaveAccessibleDescription, this);\n const actualAccessibleDescription = computeAccessibleDescription(htmlElement);\n const missingExpectedValue = arguments.length === 1;\n\n let pass = false;\n if (missingExpectedValue) {\n // When called without an expected value we only want to validate that the element has an\n // accessible description, whatever it may be.\n pass = actualAccessibleDescription !== '';\n } else {\n pass =\n expectedAccessibleDescription instanceof RegExp\n ? expectedAccessibleDescription.test(actualAccessibleDescription)\n : this.equals(\n actualAccessibleDescription,\n expectedAccessibleDescription,\n );\n }\n\n return {\n pass,\n\n message: () => {\n const to = this.isNot ? 'not to' : 'to';\n return getMessage(\n this,\n this.utils.matcherHint(\n `${this.isNot ? '.not' : ''}.${toHaveAccessibleDescription.name}`,\n 'element',\n '',\n ),\n `Expected element ${to} have accessible description`,\n expectedAccessibleDescription,\n 'Received',\n actualAccessibleDescription,\n )\n },\n }\n}\n\nconst ariaInvalidName = 'aria-invalid';\nconst validStates = ['false'];\n\n// See `aria-errormessage` spec at https://www.w3.org/TR/wai-aria-1.2/#aria-errormessage\nfunction toHaveAccessibleErrorMessage(\n htmlElement,\n expectedAccessibleErrorMessage,\n) {\n checkHtmlElement(htmlElement, toHaveAccessibleErrorMessage, this);\n const to = this.isNot ? 'not to' : 'to';\n const method = this.isNot\n ? '.not.toHaveAccessibleErrorMessage'\n : '.toHaveAccessibleErrorMessage';\n\n // Enforce Valid Id\n const errormessageId = htmlElement.getAttribute('aria-errormessage');\n const errormessageIdInvalid = !!errormessageId && /\\s+/.test(errormessageId);\n\n if (errormessageIdInvalid) {\n return {\n pass: false,\n message: () => {\n return getMessage(\n this,\n this.utils.matcherHint(method, 'element'),\n \"Expected element's `aria-errormessage` attribute to be empty or a single, valid ID\",\n '',\n 'Received',\n `aria-errormessage=\"${errormessageId}\"`,\n )\n },\n }\n }\n\n // See `aria-invalid` spec at https://www.w3.org/TR/wai-aria-1.2/#aria-invalid\n const ariaInvalidVal = htmlElement.getAttribute(ariaInvalidName);\n const fieldValid =\n !htmlElement.hasAttribute(ariaInvalidName) ||\n validStates.includes(ariaInvalidVal);\n\n // Enforce Valid `aria-invalid` Attribute\n if (fieldValid) {\n return {\n pass: false,\n message: () => {\n return getMessage(\n this,\n this.utils.matcherHint(method, 'element'),\n 'Expected element to be marked as invalid with attribute',\n `${ariaInvalidName}=\"${String(true)}\"`,\n 'Received',\n htmlElement.hasAttribute('aria-invalid')\n ? `${ariaInvalidName}=\"${htmlElement.getAttribute(ariaInvalidName)}`\n : null,\n )\n },\n }\n }\n\n const error = normalize(\n htmlElement.ownerDocument.getElementById(errormessageId)?.textContent ?? '',\n );\n\n return {\n pass:\n expectedAccessibleErrorMessage === undefined\n ? Boolean(error)\n : expectedAccessibleErrorMessage instanceof RegExp\n ? expectedAccessibleErrorMessage.test(error)\n : this.equals(error, expectedAccessibleErrorMessage),\n\n message: () => {\n return getMessage(\n this,\n this.utils.matcherHint(method, 'element'),\n `Expected element ${to} have accessible error message`,\n expectedAccessibleErrorMessage ?? '',\n 'Received',\n error,\n )\n },\n }\n}\n\nconst elementRoleList = buildElementRoleList(elementRoles);\n\nfunction toHaveRole(htmlElement, expectedRole) {\n checkHtmlElement(htmlElement, toHaveRole, this);\n\n const actualRoles = getExplicitOrImplicitRoles(htmlElement);\n const pass = actualRoles.some(el => el === expectedRole);\n\n return {\n pass,\n\n message: () => {\n const to = this.isNot ? 'not to' : 'to';\n return getMessage(\n this,\n this.utils.matcherHint(\n `${this.isNot ? '.not' : ''}.${toHaveRole.name}`,\n 'element',\n '',\n ),\n `Expected element ${to} have role`,\n expectedRole,\n 'Received',\n actualRoles.join(', '),\n )\n },\n }\n}\n\nfunction getExplicitOrImplicitRoles(htmlElement) {\n const hasExplicitRole = htmlElement.hasAttribute('role');\n\n if (hasExplicitRole) {\n const roleValue = htmlElement.getAttribute('role');\n\n // Handle fallback roles, such as role=\"switch button\"\n // testing-library gates this behind the `queryFallbacks` flag; it is\n // unclear why, but it makes sense to support this pattern out of the box\n // https://testing-library.com/docs/queries/byrole/#queryfallbacks\n return roleValue.split(' ').filter(Boolean)\n }\n\n const implicitRoles = getImplicitAriaRoles(htmlElement);\n\n return implicitRoles\n}\n\nfunction getImplicitAriaRoles(currentNode) {\n for (const {match, roles} of elementRoleList) {\n if (match(currentNode)) {\n return [...roles]\n }\n }\n\n /* istanbul ignore next */\n return [] // this does not get reached in practice, since elements have at least a 'generic' role\n}\n\n/**\n * Transform the roles map (with required attributes and constraints) to a list\n * of roles. Each item in the list has functions to match an element against it.\n *\n * Essentially copied over from [dom-testing-library's\n * helpers](https://github.com/testing-library/dom-testing-library/blob/bd04cf95a1ed85a2238f7dfc1a77d5d16b4f59dc/src/role-helpers.js#L80)\n *\n * TODO: If we are truly just copying over stuff, would it make sense to move\n * this to a separate package?\n *\n * TODO: This technique relies on CSS selectors; are those consistently\n * available in all jest-dom environments? Why do other matchers in this package\n * not use them like this?\n */\nfunction buildElementRoleList(elementRolesMap) {\n function makeElementSelector({name, attributes}) {\n return `${name}${attributes\n .map(({name: attributeName, value, constraints = []}) => {\n const shouldNotExist = constraints.indexOf('undefined') !== -1;\n if (shouldNotExist) {\n return `:not([${attributeName}])`\n } else if (value) {\n return `[${attributeName}=\"${value}\"]`\n } else {\n return `[${attributeName}]`\n }\n })\n .join('')}`\n }\n\n function getSelectorSpecificity({attributes = []}) {\n return attributes.length\n }\n\n function bySelectorSpecificity(\n {specificity: leftSpecificity},\n {specificity: rightSpecificity},\n ) {\n return rightSpecificity - leftSpecificity\n }\n\n function match(element) {\n let {attributes = []} = element;\n\n // https://github.com/testing-library/dom-testing-library/issues/814\n const typeTextIndex = attributes.findIndex(\n attribute =>\n attribute.value &&\n attribute.name === 'type' &&\n attribute.value === 'text',\n );\n\n if (typeTextIndex >= 0) {\n // not using splice to not mutate the attributes array\n attributes = [\n ...attributes.slice(0, typeTextIndex),\n ...attributes.slice(typeTextIndex + 1),\n ];\n }\n\n const selector = makeElementSelector({...element, attributes});\n\n return node => {\n if (typeTextIndex >= 0 && node.type !== 'text') {\n return false\n }\n\n return node.matches(selector)\n }\n }\n\n let result = [];\n\n for (const [element, roles] of elementRolesMap.entries()) {\n result = [\n ...result,\n {\n match: match(element),\n roles: Array.from(roles),\n specificity: getSelectorSpecificity(element),\n },\n ];\n }\n\n return result.sort(bySelectorSpecificity)\n}\n\nfunction toHaveAccessibleName(htmlElement, expectedAccessibleName) {\n checkHtmlElement(htmlElement, toHaveAccessibleName, this);\n const actualAccessibleName = computeAccessibleName(htmlElement);\n const missingExpectedValue = arguments.length === 1;\n\n let pass = false;\n if (missingExpectedValue) {\n // When called without an expected value we only want to validate that the element has an\n // accessible name, whatever it may be.\n pass = actualAccessibleName !== '';\n } else {\n pass =\n expectedAccessibleName instanceof RegExp\n ? expectedAccessibleName.test(actualAccessibleName)\n : this.equals(actualAccessibleName, expectedAccessibleName);\n }\n\n return {\n pass,\n\n message: () => {\n const to = this.isNot ? 'not to' : 'to';\n return getMessage(\n this,\n this.utils.matcherHint(\n `${this.isNot ? '.not' : ''}.${toHaveAccessibleName.name}`,\n 'element',\n '',\n ),\n `Expected element ${to} have accessible name`,\n expectedAccessibleName,\n 'Received',\n actualAccessibleName,\n )\n },\n }\n}\n\nfunction printAttribute(stringify, name, value) {\n return value === undefined ? name : `${name}=${stringify(value)}`\n}\n\nfunction getAttributeComment(stringify, name, value) {\n return value === undefined\n ? `element.hasAttribute(${stringify(name)})`\n : `element.getAttribute(${stringify(name)}) === ${stringify(value)}`\n}\n\nfunction toHaveAttribute(htmlElement, name, expectedValue) {\n checkHtmlElement(htmlElement, toHaveAttribute, this);\n const isExpectedValuePresent = expectedValue !== undefined;\n const hasAttribute = htmlElement.hasAttribute(name);\n const receivedValue = htmlElement.getAttribute(name);\n return {\n pass: isExpectedValuePresent\n ? hasAttribute && this.equals(receivedValue, expectedValue)\n : hasAttribute,\n message: () => {\n const to = this.isNot ? 'not to' : 'to';\n const receivedAttribute = hasAttribute\n ? printAttribute(this.utils.stringify, name, receivedValue)\n : null;\n const matcher = this.utils.matcherHint(\n `${this.isNot ? '.not' : ''}.toHaveAttribute`,\n 'element',\n this.utils.printExpected(name),\n {\n secondArgument: isExpectedValuePresent\n ? this.utils.printExpected(expectedValue)\n : undefined,\n comment: getAttributeComment(\n this.utils.stringify,\n name,\n expectedValue,\n ),\n },\n );\n return getMessage(\n this,\n matcher,\n `Expected the element ${to} have attribute`,\n printAttribute(this.utils.stringify, name, expectedValue),\n 'Received',\n receivedAttribute,\n )\n },\n }\n}\n\nfunction getExpectedClassNamesAndOptions(params) {\n const lastParam = params.pop();\n let expectedClassNames, options;\n\n if (typeof lastParam === 'object' && !(lastParam instanceof RegExp)) {\n expectedClassNames = params;\n options = lastParam;\n } else {\n expectedClassNames = params.concat(lastParam);\n options = {exact: false};\n }\n return {expectedClassNames, options}\n}\n\nfunction splitClassNames(str) {\n if (!str) return []\n return str.split(/\\s+/).filter(s => s.length > 0)\n}\n\nfunction isSubset$1(subset, superset) {\n return subset.every(strOrRegexp =>\n typeof strOrRegexp === 'string'\n ? superset.includes(strOrRegexp)\n : superset.some(className => strOrRegexp.test(className)),\n )\n}\n\nfunction toHaveClass(htmlElement, ...params) {\n checkHtmlElement(htmlElement, toHaveClass, this);\n const {expectedClassNames, options} = getExpectedClassNamesAndOptions(params);\n\n const received = splitClassNames(htmlElement.getAttribute('class'));\n const expected = expectedClassNames.reduce(\n (acc, className) =>\n acc.concat(\n typeof className === 'string' || !className\n ? splitClassNames(className)\n : className,\n ),\n [],\n );\n\n const hasRegExp = expected.some(className => className instanceof RegExp);\n if (options.exact && hasRegExp) {\n throw new Error('Exact option does not support RegExp expected class names')\n }\n\n if (options.exact) {\n return {\n pass: isSubset$1(expected, received) && expected.length === received.length,\n message: () => {\n const to = this.isNot ? 'not to' : 'to';\n return getMessage(\n this,\n this.utils.matcherHint(\n `${this.isNot ? '.not' : ''}.toHaveClass`,\n 'element',\n this.utils.printExpected(expected.join(' ')),\n ),\n `Expected the element ${to} have EXACTLY defined classes`,\n expected.join(' '),\n 'Received',\n received.join(' '),\n )\n },\n }\n }\n\n return expected.length > 0\n ? {\n pass: isSubset$1(expected, received),\n message: () => {\n const to = this.isNot ? 'not to' : 'to';\n return getMessage(\n this,\n this.utils.matcherHint(\n `${this.isNot ? '.not' : ''}.toHaveClass`,\n 'element',\n this.utils.printExpected(expected.join(' ')),\n ),\n `Expected the element ${to} have class`,\n expected.join(' '),\n 'Received',\n received.join(' '),\n )\n },\n }\n : {\n pass: this.isNot ? received.length > 0 : false,\n message: () =>\n this.isNot\n ? getMessage(\n this,\n this.utils.matcherHint('.not.toHaveClass', 'element', ''),\n 'Expected the element to have classes',\n '(none)',\n 'Received',\n received.join(' '),\n )\n : [\n this.utils.matcherHint(`.toHaveClass`, 'element'),\n 'At least one expected class must be provided.',\n ].join('\\n'),\n }\n}\n\nfunction getStyleDeclaration(document, css) {\n const styles = {};\n\n // The next block is necessary to normalize colors\n const copy = document.createElement('div');\n Object.keys(css).forEach(property => {\n copy.style[property] = css[property];\n styles[property] = copy.style[property];\n });\n\n return styles\n}\n\nfunction isSubset(styles, computedStyle) {\n return (\n !!Object.keys(styles).length &&\n Object.entries(styles).every(([prop, value]) => {\n const isCustomProperty = prop.startsWith('--');\n const spellingVariants = [prop];\n if (!isCustomProperty) spellingVariants.push(prop.toLowerCase());\n\n return spellingVariants.some(\n name =>\n computedStyle[name] === value ||\n computedStyle.getPropertyValue(name) === value,\n )\n })\n )\n}\n\nfunction printoutStyles(styles) {\n return Object.keys(styles)\n .sort()\n .map(prop => `${prop}: ${styles[prop]};`)\n .join('\\n')\n}\n\n// Highlights only style rules that were expected but were not found in the\n// received computed styles\nfunction expectedDiff(diffFn, expected, computedStyles) {\n const received = Array.from(computedStyles)\n .filter(prop => expected[prop] !== undefined)\n .reduce(\n (obj, prop) =>\n Object.assign(obj, {[prop]: computedStyles.getPropertyValue(prop)}),\n {},\n );\n const diffOutput = diffFn(printoutStyles(expected), printoutStyles(received));\n // Remove the \"+ Received\" annotation because this is a one-way diff\n return diffOutput.replace(`${pico.red('+ Received')}\\n`, '')\n}\n\nfunction toHaveStyle(htmlElement, css) {\n checkHtmlElement(htmlElement, toHaveStyle, this);\n const parsedCSS =\n typeof css === 'object' ? css : parseCSS(css, toHaveStyle, this);\n const {getComputedStyle} = htmlElement.ownerDocument.defaultView;\n\n const expected = getStyleDeclaration(htmlElement.ownerDocument, parsedCSS);\n const received = getComputedStyle(htmlElement);\n\n return {\n pass: isSubset(expected, received),\n message: () => {\n const matcher = `${this.isNot ? '.not' : ''}.toHaveStyle`;\n return [\n this.utils.matcherHint(matcher, 'element', ''),\n expectedDiff(this.utils.diff, expected, received),\n ].join('\\n\\n')\n },\n }\n}\n\nfunction toHaveFocus(element) {\n checkHtmlElement(element, toHaveFocus, this);\n\n return {\n pass: element.ownerDocument.activeElement === element,\n message: () => {\n return [\n this.utils.matcherHint(\n `${this.isNot ? '.not' : ''}.toHaveFocus`,\n 'element',\n '',\n ),\n '',\n ...(this.isNot\n ? [\n 'Received element is focused:',\n ` ${this.utils.printReceived(element)}`,\n ]\n : [\n 'Expected element with focus:',\n ` ${this.utils.printExpected(element)}`,\n 'Received element with focus:',\n ` ${this.utils.printReceived(\n element.ownerDocument.activeElement,\n )}`,\n ]),\n ].join('\\n')\n },\n }\n}\n\n// Returns the combined value of several elements that have the same name\n// e.g. radio buttons or groups of checkboxes\nfunction getMultiElementValue(elements) {\n const types = [...new Set(elements.map(element => element.type))];\n if (types.length !== 1) {\n throw new Error(\n 'Multiple form elements with the same name must be of the same type',\n )\n }\n switch (types[0]) {\n case 'radio': {\n const theChosenOne = elements.find(radio => radio.checked);\n return theChosenOne ? theChosenOne.value : undefined\n }\n case 'checkbox':\n return elements\n .filter(checkbox => checkbox.checked)\n .map(checkbox => checkbox.value)\n default:\n // NOTE: Not even sure this is a valid use case, but just in case...\n return elements.map(element => element.value)\n }\n}\n\nfunction getFormValue(container, name) {\n const elements = [...container.querySelectorAll(`[name=\"${escape(name)}\"]`)];\n /* istanbul ignore if */\n if (elements.length === 0) {\n return undefined // shouldn't happen, but just in case\n }\n switch (elements.length) {\n case 1:\n return getSingleElementValue(elements[0])\n default:\n return getMultiElementValue(elements)\n }\n}\n\n// Strips the `[]` suffix off a form value name\nfunction getPureName(name) {\n return /\\[\\]$/.test(name) ? name.slice(0, -2) : name\n}\n\nfunction getAllFormValues(container) {\n const names = Array.from(container.elements).map(element => element.name);\n return names.reduce(\n (obj, name) => ({\n ...obj,\n [getPureName(name)]: getFormValue(container, name),\n }),\n {},\n )\n}\n\nfunction toHaveFormValues(formElement, expectedValues) {\n checkHtmlElement(formElement, toHaveFormValues, this);\n if (!formElement.elements) {\n // TODO: Change condition to use instanceof against the appropriate element classes instead\n throw new Error('toHaveFormValues must be called on a form or a fieldset')\n }\n const formValues = getAllFormValues(formElement);\n return {\n pass: Object.entries(expectedValues).every(([name, expectedValue]) =>\n compareAsSet(formValues[name], expectedValue),\n ),\n message: () => {\n const to = this.isNot ? 'not to' : 'to';\n const matcher = `${this.isNot ? '.not' : ''}.toHaveFormValues`;\n const commonKeyValues = Object.keys(formValues)\n .filter(key => expectedValues.hasOwnProperty(key))\n .reduce((obj, key) => ({...obj, [key]: formValues[key]}), {});\n return [\n this.utils.matcherHint(matcher, 'element', ''),\n `Expected the element ${to} have form values`,\n this.utils.diff(expectedValues, commonKeyValues),\n ].join('\\n\\n')\n },\n }\n}\n\nfunction isStyleVisible(element) {\n const {getComputedStyle} = element.ownerDocument.defaultView;\n\n const {display, visibility, opacity} = getComputedStyle(element);\n return (\n display !== 'none' &&\n visibility !== 'hidden' &&\n visibility !== 'collapse' &&\n opacity !== '0' &&\n opacity !== 0\n )\n}\n\nfunction isAttributeVisible(element, previousElement) {\n let detailsVisibility;\n\n if (previousElement) {\n detailsVisibility =\n element.nodeName === 'DETAILS' && previousElement.nodeName !== 'SUMMARY'\n ? element.hasAttribute('open')\n : true;\n } else {\n detailsVisibility =\n element.nodeName === 'DETAILS' ? element.hasAttribute('open') : true;\n }\n\n return !element.hasAttribute('hidden') && detailsVisibility\n}\n\nfunction isElementVisible(element, previousElement) {\n return (\n isStyleVisible(element) &&\n isAttributeVisible(element, previousElement) &&\n (!element.parentElement || isElementVisible(element.parentElement, element))\n )\n}\n\nfunction toBeVisible(element) {\n checkHtmlElement(element, toBeVisible, this);\n const isInDocument =\n element.ownerDocument === element.getRootNode({composed: true});\n const isVisible = isInDocument && isElementVisible(element);\n return {\n pass: isVisible,\n message: () => {\n const is = isVisible ? 'is' : 'is not';\n return [\n this.utils.matcherHint(\n `${this.isNot ? '.not' : ''}.toBeVisible`,\n 'element',\n '',\n ),\n '',\n `Received element ${is} visible${\n isInDocument ? '' : ' (element is not in the document)'\n }:`,\n ` ${this.utils.printReceived(element.cloneNode(false))}`,\n ].join('\\n')\n },\n }\n}\n\n// form elements that support 'disabled'\nconst FORM_TAGS$2 = [\n 'fieldset',\n 'input',\n 'select',\n 'optgroup',\n 'option',\n 'button',\n 'textarea',\n];\n\n/*\n * According to specification:\n * If <fieldset> is disabled, the form controls that are its descendants,\n * except descendants of its first optional <legend> element, are disabled\n *\n * https://html.spec.whatwg.org/multipage/form-elements.html#concept-fieldset-disabled\n *\n * This method tests whether element is first legend child of fieldset parent\n */\nfunction isFirstLegendChildOfFieldset(element, parent) {\n return (\n getTag(element) === 'legend' &&\n getTag(parent) === 'fieldset' &&\n element.isSameNode(\n Array.from(parent.children).find(child => getTag(child) === 'legend'),\n )\n )\n}\n\nfunction isElementDisabledByParent(element, parent) {\n return (\n isElementDisabled(parent) && !isFirstLegendChildOfFieldset(element, parent)\n )\n}\n\nfunction isCustomElement(tag) {\n return tag.includes('-')\n}\n\n/*\n * Only certain form elements and custom elements can actually be disabled:\n * https://html.spec.whatwg.org/multipage/semantics-other.html#disabled-elements\n */\nfunction canElementBeDisabled(element) {\n const tag = getTag(element);\n return FORM_TAGS$2.includes(tag) || isCustomElement(tag)\n}\n\nfunction isElementDisabled(element) {\n return canElementBeDisabled(element) && element.hasAttribute('disabled')\n}\n\nfunction isAncestorDisabled(element) {\n const parent = element.parentElement;\n return (\n Boolean(parent) &&\n (isElementDisabledByParent(element, parent) || isAncestorDisabled(parent))\n )\n}\n\nfunction isElementOrAncestorDisabled(element) {\n return (\n canElementBeDisabled(element) &&\n (isElementDisabled(element) || isAncestorDisabled(element))\n )\n}\n\nfunction toBeDisabled(element) {\n checkHtmlElement(element, toBeDisabled, this);\n\n const isDisabled = isElementOrAncestorDisabled(element);\n\n return {\n pass: isDisabled,\n message: () => {\n const is = isDisabled ? 'is' : 'is not';\n return [\n this.utils.matcherHint(\n `${this.isNot ? '.not' : ''}.toBeDisabled`,\n 'element',\n '',\n ),\n '',\n `Received element ${is} disabled:`,\n ` ${this.utils.printReceived(element.cloneNode(false))}`,\n ].join('\\n')\n },\n }\n}\n\nfunction toBeEnabled(element) {\n checkHtmlElement(element, toBeEnabled, this);\n\n const isEnabled = !isElementOrAncestorDisabled(element);\n\n return {\n pass: isEnabled,\n message: () => {\n const is = isEnabled ? 'is' : 'is not';\n return [\n this.utils.matcherHint(\n `${this.isNot ? '.not' : ''}.toBeEnabled`,\n 'element',\n '',\n ),\n '',\n `Received element ${is} enabled:`,\n ` ${this.utils.printReceived(element.cloneNode(false))}`,\n ].join('\\n')\n },\n }\n}\n\n// form elements that support 'required'\nconst FORM_TAGS$1 = ['select', 'textarea'];\n\nconst ARIA_FORM_TAGS = ['input', 'select', 'textarea'];\n\nconst UNSUPPORTED_INPUT_TYPES = [\n 'color',\n 'hidden',\n 'range',\n 'submit',\n 'image',\n 'reset',\n];\n\nconst SUPPORTED_ARIA_ROLES = [\n 'checkbox',\n 'combobox',\n 'gridcell',\n 'listbox',\n 'radiogroup',\n 'spinbutton',\n 'textbox',\n 'tree',\n];\n\nfunction isRequiredOnFormTagsExceptInput(element) {\n return FORM_TAGS$1.includes(getTag(element)) && element.hasAttribute('required')\n}\n\nfunction isRequiredOnSupportedInput(element) {\n return (\n getTag(element) === 'input' &&\n element.hasAttribute('required') &&\n ((element.hasAttribute('type') &&\n !UNSUPPORTED_INPUT_TYPES.includes(element.getAttribute('type'))) ||\n !element.hasAttribute('type'))\n )\n}\n\nfunction isElementRequiredByARIA(element) {\n return (\n element.hasAttribute('aria-required') &&\n element.getAttribute('aria-required') === 'true' &&\n (ARIA_FORM_TAGS.includes(getTag(element)) ||\n (element.hasAttribute('role') &&\n SUPPORTED_ARIA_ROLES.includes(element.getAttribute('role'))))\n )\n}\n\nfunction toBeRequired(element) {\n checkHtmlElement(element, toBeRequired, this);\n\n const isRequired =\n isRequiredOnFormTagsExceptInput(element) ||\n isRequiredOnSupportedInput(element) ||\n isElementRequiredByARIA(element);\n\n return {\n pass: isRequired,\n message: () => {\n const is = isRequired ? 'is' : 'is not';\n return [\n this.utils.matcherHint(\n `${this.isNot ? '.not' : ''}.toBeRequired`,\n 'element',\n '',\n ),\n '',\n `Received element ${is} required:`,\n ` ${this.utils.printReceived(element.cloneNode(false))}`,\n ].join('\\n')\n },\n }\n}\n\nconst FORM_TAGS = ['form', 'input', 'select', 'textarea'];\n\nfunction isElementHavingAriaInvalid(element) {\n return (\n element.hasAttribute('aria-invalid') &&\n element.getAttribute('aria-invalid') !== 'false'\n )\n}\n\nfunction isSupportsValidityMethod(element) {\n return FORM_TAGS.includes(getTag(element))\n}\n\nfunction isElementInvalid(element) {\n const isHaveAriaInvalid = isElementHavingAriaInvalid(element);\n if (isSupportsValidityMethod(element)) {\n return isHaveAriaInvalid || !element.checkValidity()\n } else {\n return isHaveAriaInvalid\n }\n}\n\nfunction toBeInvalid(element) {\n checkHtmlElement(element, toBeInvalid, this);\n\n const isInvalid = isElementInvalid(element);\n\n return {\n pass: isInvalid,\n message: () => {\n const is = isInvalid ? 'is' : 'is not';\n return [\n this.utils.matcherHint(\n `${this.isNot ? '.not' : ''}.toBeInvalid`,\n 'element',\n '',\n ),\n '',\n `Received element ${is} currently invalid:`,\n ` ${this.utils.printReceived(element.cloneNode(false))}`,\n ].join('\\n')\n },\n }\n}\n\nfunction toBeValid(element) {\n checkHtmlElement(element, toBeValid, this);\n\n const isValid = !isElementInvalid(element);\n\n return {\n pass: isValid,\n message: () => {\n const is = isValid ? 'is' : 'is not';\n return [\n this.utils.matcherHint(\n `${this.isNot ? '.not' : ''}.toBeValid`,\n 'element',\n '',\n ),\n '',\n `Received element ${is} currently valid:`,\n ` ${this.utils.printReceived(element.cloneNode(false))}`,\n ].join('\\n')\n },\n }\n}\n\nfunction toHaveValue(htmlElement, expectedValue) {\n checkHtmlElement(htmlElement, toHaveValue, this);\n\n if (\n htmlElement.tagName.toLowerCase() === 'input' &&\n ['checkbox', 'radio'].includes(htmlElement.type)\n ) {\n throw new Error(\n 'input with type=checkbox or type=radio cannot be used with .toHaveValue(). Use .toBeChecked() for type=checkbox or .toHaveFormValues() instead',\n )\n }\n\n const receivedValue = getSingleElementValue(htmlElement);\n const expectsValue = expectedValue !== undefined;\n\n let expectedTypedValue = expectedValue;\n let receivedTypedValue = receivedValue;\n if (expectedValue == receivedValue && expectedValue !== receivedValue) {\n expectedTypedValue = `${expectedValue} (${typeof expectedValue})`;\n receivedTypedValue = `${receivedValue} (${typeof receivedValue})`;\n }\n\n return {\n pass: expectsValue\n ? compareAsSet(receivedValue, expectedValue)\n : Boolean(receivedValue),\n message: () => {\n const to = this.isNot ? 'not to' : 'to';\n const matcher = this.utils.matcherHint(\n `${this.isNot ? '.not' : ''}.toHaveValue`,\n 'element',\n expectedValue,\n );\n return getMessage(\n this,\n matcher,\n `Expected the element ${to} have value`,\n expectsValue ? expectedTypedValue : '(any)',\n 'Received',\n receivedTypedValue,\n )\n },\n }\n}\n\nfunction toHaveDisplayValue(htmlElement, expectedValue) {\n checkHtmlElement(htmlElement, toHaveDisplayValue, this);\n const tagName = htmlElement.tagName.toLowerCase();\n\n if (!['select', 'input', 'textarea'].includes(tagName)) {\n throw new Error(\n '.toHaveDisplayValue() currently supports only input, textarea or select elements, try with another matcher instead.',\n )\n }\n\n if (tagName === 'input' && ['radio', 'checkbox'].includes(htmlElement.type)) {\n throw new Error(\n `.toHaveDisplayValue() currently does not support input[type=\"${htmlElement.type}\"], try with another matcher instead.`,\n )\n }\n\n const values = getValues(tagName, htmlElement);\n const expectedValues = getExpectedValues(expectedValue);\n const numberOfMatchesWithValues = expectedValues.filter(expected =>\n values.some(value =>\n expected instanceof RegExp\n ? expected.test(value)\n : this.equals(value, String(expected)),\n ),\n ).length;\n\n const matchedWithAllValues = numberOfMatchesWithValues === values.length;\n const matchedWithAllExpectedValues =\n numberOfMatchesWithValues === expectedValues.length;\n\n return {\n pass: matchedWithAllValues && matchedWithAllExpectedValues,\n message: () =>\n getMessage(\n this,\n this.utils.matcherHint(\n `${this.isNot ? '.not' : ''}.toHaveDisplayValue`,\n 'element',\n '',\n ),\n `Expected element ${this.isNot ? 'not ' : ''}to have display value`,\n expectedValue,\n 'Received',\n values,\n ),\n }\n}\n\nfunction getValues(tagName, htmlElement) {\n return tagName === 'select'\n ? Array.from(htmlElement)\n .filter(option => option.selected)\n .map(option => option.textContent)\n : [htmlElement.value]\n}\n\nfunction getExpectedValues(expectedValue) {\n return expectedValue instanceof Array ? expectedValue : [expectedValue]\n}\n\nfunction toBeChecked(element) {\n checkHtmlElement(element, toBeChecked, this);\n\n const isValidInput = () => {\n return (\n element.tagName.toLowerCase() === 'input' &&\n ['checkbox', 'radio'].includes(element.type)\n )\n };\n\n const isValidAriaElement = () => {\n return (\n roleSupportsChecked(element.getAttribute('role')) &&\n ['true', 'false'].includes(element.getAttribute('aria-checked'))\n )\n };\n\n if (!isValidInput() && !isValidAriaElement()) {\n return {\n pass: false,\n message: () =>\n `only inputs with type=\"checkbox\" or type=\"radio\" or elements with ${supportedRolesSentence()} and a valid aria-checked attribute can be used with .toBeChecked(). Use .toHaveValue() instead`,\n }\n }\n\n const isChecked = () => {\n if (isValidInput()) return element.checked\n return element.getAttribute('aria-checked') === 'true'\n };\n\n return {\n pass: isChecked(),\n message: () => {\n const is = isChecked() ? 'is' : 'is not';\n return [\n this.utils.matcherHint(\n `${this.isNot ? '.not' : ''}.toBeChecked`,\n 'element',\n '',\n ),\n '',\n `Received element ${is} checked:`,\n ` ${this.utils.printReceived(element.cloneNode(false))}`,\n ].join('\\n')\n },\n }\n}\n\nfunction supportedRolesSentence() {\n return toSentence(\n supportedRoles().map(role => `role=\"${role}\"`),\n {lastWordConnector: ' or '},\n )\n}\n\nfunction supportedRoles() {\n return roles.keys().filter(roleSupportsChecked)\n}\n\nfunction roleSupportsChecked(role) {\n return roles.get(role)?.props['aria-checked'] !== undefined\n}\n\nfunction toBePartiallyChecked(element) {\n checkHtmlElement(element, toBePartiallyChecked, this);\n\n const isValidInput = () => {\n return (\n element.tagName.toLowerCase() === 'input' && element.type === 'checkbox'\n )\n };\n\n const isValidAriaElement = () => {\n return element.getAttribute('role') === 'checkbox'\n };\n\n if (!isValidInput() && !isValidAriaElement()) {\n return {\n pass: false,\n message: () =>\n 'only inputs with type=\"checkbox\" or elements with role=\"checkbox\" and a valid aria-checked attribute can be used with .toBePartiallyChecked(). Use .toHaveValue() instead',\n }\n }\n\n const isPartiallyChecked = () => {\n const isAriaMixed = element.getAttribute('aria-checked') === 'mixed';\n\n if (isValidInput()) {\n return element.indeterminate || isAriaMixed\n }\n\n return isAriaMixed\n };\n\n return {\n pass: isPartiallyChecked(),\n message: () => {\n const is = isPartiallyChecked() ? 'is' : 'is not';\n return [\n this.utils.matcherHint(\n `${this.isNot ? '.not' : ''}.toBePartiallyChecked`,\n 'element',\n '',\n ),\n '',\n `Received element ${is} partially checked:`,\n ` ${this.utils.printReceived(element.cloneNode(false))}`,\n ].join('\\n')\n },\n }\n}\n\n// See algoritm: https://www.w3.org/TR/accname-1.1/#mapping_additional_nd_description\nfunction toHaveDescription(htmlElement, checkWith) {\n deprecate(\n 'toHaveDescription',\n 'Please use toHaveAccessibleDescription.',\n );\n\n checkHtmlElement(htmlElement, toHaveDescription, this);\n\n const expectsDescription = checkWith !== undefined;\n\n const descriptionIDRaw = htmlElement.getAttribute('aria-describedby') || '';\n const descriptionIDs = descriptionIDRaw.split(/\\s+/).filter(Boolean);\n let description = '';\n if (descriptionIDs.length > 0) {\n const document = htmlElement.ownerDocument;\n const descriptionEls = descriptionIDs\n .map(descriptionID => document.getElementById(descriptionID))\n .filter(Boolean);\n description = normalize(descriptionEls.map(el => el.textContent).join(' '));\n }\n\n return {\n pass: expectsDescription\n ? checkWith instanceof RegExp\n ? checkWith.test(description)\n : this.equals(description, checkWith)\n : Boolean(description),\n message: () => {\n const to = this.isNot ? 'not to' : 'to';\n return getMessage(\n this,\n this.utils.matcherHint(\n `${this.isNot ? '.not' : ''}.toHaveDescription`,\n 'element',\n '',\n ),\n `Expected the element ${to} have description`,\n this.utils.printExpected(checkWith),\n 'Received',\n this.utils.printReceived(description),\n )\n },\n }\n}\n\n// See aria-errormessage spec https://www.w3.org/TR/wai-aria-1.2/#aria-errormessage\nfunction toHaveErrorMessage(htmlElement, checkWith) {\n deprecate('toHaveErrorMessage', 'Please use toHaveAccessibleErrorMessage.');\n checkHtmlElement(htmlElement, toHaveErrorMessage, this);\n\n if (\n !htmlElement.hasAttribute('aria-invalid') ||\n htmlElement.getAttribute('aria-invalid') === 'false'\n ) {\n const not = this.isNot ? '.not' : '';\n\n return {\n pass: false,\n message: () => {\n return getMessage(\n this,\n this.utils.matcherHint(`${not}.toHaveErrorMessage`, 'element', ''),\n `Expected the element to have invalid state indicated by`,\n 'aria-invalid=\"true\"',\n 'Received',\n htmlElement.hasAttribute('aria-invalid')\n ? `aria-invalid=\"${htmlElement.getAttribute('aria-invalid')}\"`\n : this.utils.printReceived(''),\n )\n },\n }\n }\n\n const expectsErrorMessage = checkWith !== undefined;\n\n const errormessageIDRaw = htmlElement.getAttribute('aria-errormessage') || '';\n const errormessageIDs = errormessageIDRaw.split(/\\s+/).filter(Boolean);\n\n let errormessage = '';\n if (errormessageIDs.length > 0) {\n const document = htmlElement.ownerDocument;\n\n const errormessageEls = errormessageIDs\n .map(errormessageID => document.getElementById(errormessageID))\n .filter(Boolean);\n\n errormessage = normalize(\n errormessageEls.map(el => el.textContent).join(' '),\n );\n }\n\n return {\n pass: expectsErrorMessage\n ? checkWith instanceof RegExp\n ? checkWith.test(errormessage)\n : this.equals(errormessage, checkWith)\n : Boolean(errormessage),\n message: () => {\n const to = this.isNot ? 'not to' : 'to';\n return getMessage(\n this,\n this.utils.matcherHint(\n `${this.isNot ? '.not' : ''}.toHaveErrorMessage`,\n 'element',\n '',\n ),\n `Expected the element ${to} have error message`,\n this.utils.printExpected(checkWith),\n 'Received',\n this.utils.printReceived(errormessage),\n )\n },\n }\n}\n\n/**\n * Returns the selection from the element.\n *\n * @param element {HTMLElement} The element to get the selection from.\n * @returns {String} The selection.\n */\nfunction getSelection(element) {\n const selection = element.ownerDocument.getSelection();\n\n if (['input', 'textarea'].includes(element.tagName.toLowerCase())) {\n if (['radio', 'checkbox'].includes(element.type)) return ''\n return element.value\n .toString()\n .substring(element.selectionStart, element.selectionEnd)\n }\n\n if (selection.anchorNode === null || selection.focusNode === null) {\n // No selection\n return ''\n }\n\n const originalRange = selection.getRangeAt(0);\n const temporaryRange = element.ownerDocument.createRange();\n\n if (selection.containsNode(element, false)) {\n // Whole element is inside selection\n temporaryRange.selectNodeContents(element);\n selection.removeAllRanges();\n selection.addRange(temporaryRange);\n } else if (\n element.contains(selection.anchorNode) &&\n element.contains(selection.focusNode)\n ) ; else {\n // Element is partially selected\n const selectionStartsWithinElement =\n element === originalRange.startContainer ||\n element.contains(originalRange.startContainer);\n const selectionEndsWithinElement =\n element === originalRange.endContainer ||\n element.contains(originalRange.endContainer);\n selection.removeAllRanges();\n\n if (selectionStartsWithinElement || selectionEndsWithinElement) {\n temporaryRange.selectNodeContents(element);\n\n if (selectionStartsWithinElement) {\n temporaryRange.setStart(\n originalRange.startContainer,\n originalRange.startOffset,\n );\n }\n if (selectionEndsWithinElement) {\n temporaryRange.setEnd(\n originalRange.endContainer,\n originalRange.endOffset,\n );\n }\n\n selection.addRange(temporaryRange);\n }\n }\n\n const result = selection.toString();\n\n selection.removeAllRanges();\n selection.addRange(originalRange);\n\n return result\n}\n\n/**\n * Checks if the element has the string selected.\n *\n * @param htmlElement {HTMLElement} The html element to check the selection for.\n * @param expectedSelection {String} The selection as a string.\n */\nfunction toHaveSelection(htmlElement, expectedSelection) {\n checkHtmlElement(htmlElement, toHaveSelection, this);\n\n const expectsSelection = expectedSelection !== undefined;\n\n if (expectsSelection && typeof expectedSelection !== 'string') {\n throw new Error(`expected selection must be a string or undefined`)\n }\n\n const receivedSelection = getSelection(htmlElement);\n\n return {\n pass: expectsSelection\n ? compareAsSet(receivedSelection, expectedSelection)\n : Boolean(receivedSelection),\n message: () => {\n const to = this.isNot ? 'not to' : 'to';\n const matcher = this.utils.matcherHint(\n `${this.isNot ? '.not' : ''}.toHaveSelection`,\n 'element',\n expectedSelection,\n );\n return getMessage(\n this,\n matcher,\n `Expected the element ${to} have selection`,\n expectsSelection ? expectedSelection : '(any)',\n 'Received',\n receivedSelection,\n )\n },\n }\n}\n\nfunction toBePressed(element) {\n checkHtmlElement(element, toBePressed, this);\n\n const roles = (element.getAttribute('role') || '')\n .split(' ')\n .map(role => role.trim());\n\n const isButton =\n element.tagName.toLowerCase() === 'button' ||\n (element.tagName.toLowerCase() === 'input' && element.type === 'button') ||\n roles.includes('button');\n\n const pressedAttribute = element.getAttribute('aria-pressed');\n\n const isValidAriaElement =\n pressedAttribute === 'true' || pressedAttribute === 'false';\n\n if (!isButton || !isValidAriaElement) {\n return {\n pass: false,\n message: () =>\n `Only button or input with type=\"button\" or element with role=\"button\" and a valid aria-pressed attribute can be used with .toBePressed()`,\n }\n }\n\n const isPressed = pressedAttribute === 'true';\n\n return {\n pass: isButton && isPressed,\n\n message: () => {\n const matcher = this.utils.matcherHint(\n `${this.isNot ? '.not' : ''}.toBePressed`,\n 'element',\n '',\n );\n\n return getMessage(\n this,\n matcher,\n `Expected element to have`,\n `aria-pressed=\"${this.isNot ? 'false' : 'true'}\"`,\n `Received`,\n `aria-pressed=\"${pressedAttribute}\"`,\n )\n },\n }\n}\n\nfunction toBePartiallyPressed(element) {\n checkHtmlElement(element, toBePartiallyPressed, this);\n\n const roles = (element.getAttribute('role') || '')\n .split(' ')\n .map(role => role.trim());\n\n const isButton =\n element.tagName.toLowerCase() === 'button' ||\n (element.tagName.toLowerCase() === 'input' && element.type === 'button') ||\n roles.includes('button');\n\n const pressedAttribute = element.getAttribute('aria-pressed');\n\n const isValidAriaElement =\n pressedAttribute === 'true' ||\n pressedAttribute === 'false' ||\n pressedAttribute === 'mixed';\n\n if (!isButton || !isValidAriaElement) {\n return {\n pass: false,\n message: () =>\n `Only button or input with type=\"button\" or element with role=\"button\" and a valid aria-pressed attribute can be used with .toBePartiallyPressed()`,\n }\n }\n\n const isPartiallyPressed = pressedAttribute === 'mixed';\n\n return {\n pass: isButton && isPartiallyPressed,\n\n message: () => {\n const to = this.isNot ? 'not to' : 'to';\n\n const matcher = this.utils.matcherHint(\n `${this.isNot ? '.not' : ''}.toBePartiallyPressed`,\n 'element',\n '',\n );\n\n return getMessage(\n this,\n matcher,\n `Expected element ${to} have`,\n `aria-pressed=\"mixed\"`,\n `Received`,\n `aria-pressed=\"${pressedAttribute}\"`,\n )\n },\n }\n}\n\n// ref: https://dom.spec.whatwg.org/#dom-node-document_position_disconnected\nconst DOCUMENT_POSITION_DISCONNECTED = 0x01;\nconst DOCUMENT_POSITION_PRECEDING = 0x02;\nconst DOCUMENT_POSITION_FOLLOWING = 0x04;\nconst DOCUMENT_POSITION_CONTAINS = 0x08;\nconst DOCUMENT_POSITION_CONTAINED_BY = 0x10;\nconst DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC = 0x20;\n\n// ref: https://developer.mozilla.org/en-US/docs/Web/API/Node/compareDocumentPosition\nconst DOCUMENT_POSITIONS_STRINGS = {\n [DOCUMENT_POSITION_DISCONNECTED]: 'Node.DOCUMENT_POSITION_DISCONNECTED',\n [DOCUMENT_POSITION_PRECEDING]: 'Node.DOCUMENT_POSITION_PRECEDING',\n [DOCUMENT_POSITION_FOLLOWING]: 'Node.DOCUMENT_POSITION_FOLLOWING',\n [DOCUMENT_POSITION_CONTAINS]: 'Node.DOCUMENT_POSITION_CONTAINS',\n [DOCUMENT_POSITION_CONTAINED_BY]: 'Node.DOCUMENT_POSITION_CONTAINED_BY',\n [DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC]:\n 'Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC',\n};\n\nfunction makeDocumentPositionErrorString(documentPosition) {\n if (documentPosition in DOCUMENT_POSITIONS_STRINGS) {\n return `${DOCUMENT_POSITIONS_STRINGS[documentPosition]} (${documentPosition})`\n }\n\n return `Unknown document position (${documentPosition})`\n}\n\nfunction checkToAppear(methodName, targetDocumentPosition) {\n // eslint-disable-next-line func-names\n return function (element, secondElement) {\n checkHtmlElement(element, toAppearBefore, this);\n checkHtmlElement(secondElement, toAppearBefore, this);\n\n const documentPosition = element.compareDocumentPosition(secondElement);\n const pass = documentPosition === targetDocumentPosition;\n\n return {\n pass,\n message: () => {\n return [\n this.utils.matcherHint(\n `${this.isNot ? '.not' : ''}.${methodName}`,\n 'element',\n 'secondElement',\n ),\n '',\n `Received: ${makeDocumentPositionErrorString(documentPosition)}`,\n ].join('\\n')\n },\n }\n }\n}\n\nfunction toAppearBefore(element, secondElement) {\n return checkToAppear('toAppearBefore', DOCUMENT_POSITION_FOLLOWING).apply(\n this,\n [element, secondElement],\n )\n}\n\nfunction toAppearAfter(element, secondElement) {\n return checkToAppear('toAppearAfter', DOCUMENT_POSITION_PRECEDING).apply(\n this,\n [element, secondElement],\n )\n}\n\nvar extensions = /*#__PURE__*/Object.freeze({\n __proto__: null,\n toAppearAfter: toAppearAfter,\n toAppearBefore: toAppearBefore,\n toBeChecked: toBeChecked,\n toBeDisabled: toBeDisabled,\n toBeEmpty: toBeEmpty,\n toBeEmptyDOMElement: toBeEmptyDOMElement,\n toBeEnabled: toBeEnabled,\n toBeInTheDOM: toBeInTheDOM,\n toBeInTheDocument: toBeInTheDocument,\n toBeInvalid: toBeInvalid,\n toBePartiallyChecked: toBePartiallyChecked,\n toBePartiallyPressed: toBePartiallyPressed,\n toBePressed: toBePressed,\n toBeRequired: toBeRequired,\n toBeValid: toBeValid,\n toBeVisible: toBeVisible,\n toContainElement: toContainElement,\n toContainHTML: toContainHTML,\n toHaveAccessibleDescription: toHaveAccessibleDescription,\n toHaveAccessibleErrorMessage: toHaveAccessibleErrorMessage,\n toHaveAccessibleName: toHaveAccessibleName,\n toHaveAttribute: toHaveAttribute,\n toHaveClass: toHaveClass,\n toHaveDescription: toHaveDescription,\n toHaveDisplayValue: toHaveDisplayValue,\n toHaveErrorMessage: toHaveErrorMessage,\n toHaveFocus: toHaveFocus,\n toHaveFormValues: toHaveFormValues,\n toHaveRole: toHaveRole,\n toHaveSelection: toHaveSelection,\n toHaveStyle: toHaveStyle,\n toHaveTextContent: toHaveTextContent,\n toHaveValue: toHaveValue\n});\n\nexport { toBePartiallyChecked as A, toHaveDescription as B, toHaveErrorMessage as C, toHaveSelection as D, toBePressed as E, toBePartiallyPressed as F, toAppearBefore as G, toAppearAfter as H, toBeInTheDocument as a, toBeEmpty as b, toBeEmptyDOMElement as c, toContainElement as d, extensions as e, toContainHTML as f, toHaveTextContent as g, toHaveAccessibleDescription as h, toHaveAccessibleErrorMessage as i, toHaveRole as j, toHaveAccessibleName as k, toHaveAttribute as l, toHaveClass as m, toHaveStyle as n, toHaveFocus as o, toHaveFormValues as p, toBeVisible as q, toBeDisabled as r, toBeEnabled as s, toBeInTheDOM as t, toBeRequired as u, toBeInvalid as v, toBeValid as w, toHaveValue as x, toHaveDisplayValue as y, toBeChecked as z };\n","import * as prettyFormat from 'pretty-format';\nexport { prettyFormat };\nimport { computeAccessibleName, computeAccessibleDescription } from 'dom-accessibility-api';\nimport { elementRoles, roles, roleElements } from 'aria-query';\nimport lzString from 'lz-string';\n\n/**\n * Source: https://github.com/facebook/jest/blob/e7bb6a1e26ffab90611b2593912df15b69315611/packages/pretty-format/src/plugins/DOMElement.ts\n */\n/* eslint-disable -- trying to stay as close to the original as possible */\n/* istanbul ignore file */\n\nfunction escapeHTML(str) {\n return str.replace(/</g, '<').replace(/>/g, '>');\n}\n// Return empty string if keys is empty.\nconst printProps = (keys, props, config, indentation, depth, refs, printer) => {\n const indentationNext = indentation + config.indent;\n const colors = config.colors;\n return keys.map(key => {\n const value = props[key];\n let printed = printer(value, config, indentationNext, depth, refs);\n if (typeof value !== 'string') {\n if (printed.indexOf('\\n') !== -1) {\n printed = config.spacingOuter + indentationNext + printed + config.spacingOuter + indentation;\n }\n printed = '{' + printed + '}';\n }\n return config.spacingInner + indentation + colors.prop.open + key + colors.prop.close + '=' + colors.value.open + printed + colors.value.close;\n }).join('');\n};\n\n// https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType#node_type_constants\nconst NodeTypeTextNode = 3;\n\n// Return empty string if children is empty.\nconst printChildren = (children, config, indentation, depth, refs, printer) => children.map(child => {\n const printedChild = typeof child === 'string' ? printText(child, config) : printer(child, config, indentation, depth, refs);\n if (printedChild === '' && typeof child === 'object' && child !== null && child.nodeType !== NodeTypeTextNode) {\n // A plugin serialized this Node to '' meaning we should ignore it.\n return '';\n }\n return config.spacingOuter + indentation + printedChild;\n}).join('');\nconst printText = (text, config) => {\n const contentColor = config.colors.content;\n return contentColor.open + escapeHTML(text) + contentColor.close;\n};\nconst printComment = (comment, config) => {\n const commentColor = config.colors.comment;\n return commentColor.open + '<!--' + escapeHTML(comment) + '-->' + commentColor.close;\n};\n\n// Separate the functions to format props, children, and element,\n// so a plugin could override a particular function, if needed.\n// Too bad, so sad: the traditional (but unnecessary) space\n// in a self-closing tagColor requires a second test of printedProps.\nconst printElement = (type, printedProps, printedChildren, config, indentation) => {\n const tagColor = config.colors.tag;\n return tagColor.open + '<' + type + (printedProps && tagColor.close + printedProps + config.spacingOuter + indentation + tagColor.open) + (printedChildren ? '>' + tagColor.close + printedChildren + config.spacingOuter + indentation + tagColor.open + '</' + type : (printedProps && !config.min ? '' : ' ') + '/') + '>' + tagColor.close;\n};\nconst printElementAsLeaf = (type, config) => {\n const tagColor = config.colors.tag;\n return tagColor.open + '<' + type + tagColor.close + ' …' + tagColor.open + ' />' + tagColor.close;\n};\nconst ELEMENT_NODE$1 = 1;\nconst TEXT_NODE$1 = 3;\nconst COMMENT_NODE$1 = 8;\nconst FRAGMENT_NODE = 11;\nconst ELEMENT_REGEXP = /^((HTML|SVG)\\w*)?Element$/;\nconst isCustomElement = val => {\n const {\n tagName\n } = val;\n return Boolean(typeof tagName === 'string' && tagName.includes('-') || typeof val.hasAttribute === 'function' && val.hasAttribute('is'));\n};\nconst testNode = val => {\n const constructorName = val.constructor.name;\n const {\n nodeType\n } = val;\n return nodeType === ELEMENT_NODE$1 && (ELEMENT_REGEXP.test(constructorName) || isCustomElement(val)) || nodeType === TEXT_NODE$1 && constructorName === 'Text' || nodeType === COMMENT_NODE$1 && constructorName === 'Comment' || nodeType === FRAGMENT_NODE && constructorName === 'DocumentFragment';\n};\nfunction nodeIsText(node) {\n return node.nodeType === TEXT_NODE$1;\n}\nfunction nodeIsComment(node) {\n return node.nodeType === COMMENT_NODE$1;\n}\nfunction nodeIsFragment(node) {\n return node.nodeType === FRAGMENT_NODE;\n}\nfunction createDOMElementFilter(filterNode) {\n return {\n test: val => {\n var _val$constructor2;\n return ((val == null || (_val$constructor2 = val.constructor) == null ? void 0 : _val$constructor2.name) || isCustomElement(val)) && testNode(val);\n },\n serialize: (node, config, indentation, depth, refs, printer) => {\n if (nodeIsText(node)) {\n return printText(node.data, config);\n }\n if (nodeIsComment(node)) {\n return printComment(node.data, config);\n }\n const type = nodeIsFragment(node) ? \"DocumentFragment\" : node.tagName.toLowerCase();\n if (++depth > config.maxDepth) {\n return printElementAsLeaf(type, config);\n }\n return printElement(type, printProps(nodeIsFragment(node) ? [] : Array.from(node.attributes).map(attr => attr.name).sort(), nodeIsFragment(node) ? {} : Array.from(node.attributes).reduce((props, attribute) => {\n props[attribute.name] = attribute.value;\n return props;\n }, {}), config, indentation + config.indent, depth, refs, printer), printChildren(Array.prototype.slice.call(node.childNodes || node.children).filter(filterNode), config, indentation + config.indent, depth, refs, printer), config, indentation);\n }\n };\n}\n\n// We try to load node dependencies\nlet picocolors = null;\nlet readFileSync = null;\nlet codeFrameColumns = null;\ntry {\n const nodeRequire = module && module.require;\n readFileSync = nodeRequire.call(module, 'fs').readFileSync;\n codeFrameColumns = nodeRequire.call(module, '@babel/code-frame').codeFrameColumns;\n picocolors = nodeRequire.call(module, 'picocolors');\n} catch {\n // We're in a browser environment\n}\n\n// frame has the form \"at myMethod (location/to/my/file.js:10:2)\"\nfunction getCodeFrame(frame) {\n const locationStart = frame.indexOf('(') + 1;\n const locationEnd = frame.indexOf(')');\n const frameLocation = frame.slice(locationStart, locationEnd);\n const frameLocationElements = frameLocation.split(':');\n const [filename, line, column] = [frameLocationElements[0], parseInt(frameLocationElements[1], 10), parseInt(frameLocationElements[2], 10)];\n let rawFileContents = '';\n try {\n rawFileContents = readFileSync(filename, 'utf-8');\n } catch {\n return '';\n }\n const codeFrame = codeFrameColumns(rawFileContents, {\n start: {\n line,\n column\n }\n }, {\n highlightCode: true,\n linesBelow: 0\n });\n return picocolors.dim(frameLocation) + \"\\n\" + codeFrame + \"\\n\";\n}\nfunction getUserCodeFrame() {\n // If we couldn't load dependencies, we can't generate the user trace\n /* istanbul ignore next */\n if (!readFileSync || !codeFrameColumns) {\n return '';\n }\n const err = new Error();\n const firstClientCodeFrame = err.stack.split('\\n').slice(1) // Remove first line which has the form \"Error: TypeError\"\n .find(frame => !frame.includes('node_modules/')); // Ignore frames from 3rd party libraries\n\n return getCodeFrame(firstClientCodeFrame);\n}\n\n// Constant node.nodeType for text nodes, see:\n// https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType#Node_type_constants\nconst TEXT_NODE = 3;\nfunction jestFakeTimersAreEnabled() {\n /* istanbul ignore else */\n // eslint-disable-next-line\n if (typeof jest !== 'undefined' && jest !== null) {\n return (\n // legacy timers\n setTimeout._isMockFunction === true ||\n // modern timers\n // eslint-disable-next-line prefer-object-has-own -- not supported by our support matrix\n Object.prototype.hasOwnProperty.call(setTimeout, 'clock')\n );\n }\n // istanbul ignore next\n return false;\n}\nfunction getDocument() {\n /* istanbul ignore if */\n if (typeof window === 'undefined') {\n throw new Error('Could not find default container');\n }\n return window.document;\n}\nfunction getWindowFromNode(node) {\n if (node.defaultView) {\n // node is document\n return node.defaultView;\n } else if (node.ownerDocument && node.ownerDocument.defaultView) {\n // node is a DOM node\n return node.ownerDocument.defaultView;\n } else if (node.window) {\n // node is window\n return node.window;\n } else if (node.ownerDocument && node.ownerDocument.defaultView === null) {\n throw new Error(\"It looks like the window object is not available for the provided node.\");\n } else if (node.then instanceof Function) {\n throw new Error(\"It looks like you passed a Promise object instead of a DOM node. Did you do something like `fireEvent.click(screen.findBy...` when you meant to use a `getBy` query `fireEvent.click(screen.getBy...`, or await the findBy query `fireEvent.click(await screen.findBy...`?\");\n } else if (Array.isArray(node)) {\n throw new Error(\"It looks like you passed an Array instead of a DOM node. Did you do something like `fireEvent.click(screen.getAllBy...` when you meant to use a `getBy` query `fireEvent.click(screen.getBy...`?\");\n } else if (typeof node.debug === 'function' && typeof node.logTestingPlaygroundURL === 'function') {\n throw new Error(\"It looks like you passed a `screen` object. Did you do something like `fireEvent.click(screen, ...` when you meant to use a query, e.g. `fireEvent.click(screen.getBy..., `?\");\n } else {\n // The user passed something unusual to a calling function\n throw new Error(\"The given node is not an Element, the node type is: \" + typeof node + \".\");\n }\n}\nfunction checkContainerType(container) {\n if (!container || !(typeof container.querySelector === 'function') || !(typeof container.querySelectorAll === 'function')) {\n throw new TypeError(\"Expected container to be an Element, a Document or a DocumentFragment but got \" + getTypeName(container) + \".\");\n }\n function getTypeName(object) {\n if (typeof object === 'object') {\n return object === null ? 'null' : object.constructor.name;\n }\n return typeof object;\n }\n}\n\nconst shouldHighlight = () => {\n if (typeof process === 'undefined') {\n // Don't colorize in non-node environments (e.g. Browsers)\n return false;\n }\n let colors;\n // Try to safely parse env COLORS: We will default behavior if any step fails.\n try {\n var _process$env;\n const colorsJSON = (_process$env = process.env) == null ? void 0 : _process$env.COLORS;\n if (colorsJSON) {\n colors = JSON.parse(colorsJSON);\n }\n } catch {\n // If this throws, process.env?.COLORS wasn't parsable. Since we only\n // care about `true` or `false`, we can safely ignore the error.\n }\n if (typeof colors === 'boolean') {\n // If `colors` is set explicitly (both `true` and `false`), use that value.\n return colors;\n } else {\n // If `colors` is not set, colorize if we're in node.\n return process.versions !== undefined && process.versions.node !== undefined;\n }\n};\nconst {\n DOMCollection\n} = prettyFormat.plugins;\n\n// https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType#node_type_constants\nconst ELEMENT_NODE = 1;\nconst COMMENT_NODE = 8;\n\n// https://github.com/facebook/jest/blob/615084195ae1ae61ddd56162c62bbdda17587569/packages/pretty-format/src/plugins/DOMElement.ts#L50\nfunction filterCommentsAndDefaultIgnoreTagsTags(value) {\n return value.nodeType !== COMMENT_NODE && (value.nodeType !== ELEMENT_NODE || !value.matches(getConfig().defaultIgnore));\n}\nfunction prettyDOM(dom, maxLength, options) {\n if (options === void 0) {\n options = {};\n }\n if (!dom) {\n dom = getDocument().body;\n }\n if (typeof maxLength !== 'number') {\n maxLength = typeof process !== 'undefined' && typeof process.env !== 'undefined' && process.env.DEBUG_PRINT_LIMIT || 7000;\n }\n if (maxLength === 0) {\n return '';\n }\n if (dom.documentElement) {\n dom = dom.documentElement;\n }\n let domTypeName = typeof dom;\n if (domTypeName === 'object') {\n domTypeName = dom.constructor.name;\n } else {\n // To don't fall with `in` operator\n dom = {};\n }\n if (!('outerHTML' in dom)) {\n throw new TypeError(\"Expected an element or document but got \" + domTypeName);\n }\n const {\n filterNode = filterCommentsAndDefaultIgnoreTagsTags,\n ...prettyFormatOptions\n } = options;\n const debugContent = prettyFormat.format(dom, {\n plugins: [createDOMElementFilter(filterNode), DOMCollection],\n printFunctionName: false,\n highlight: shouldHighlight(),\n ...prettyFormatOptions\n });\n return maxLength !== undefined && dom.outerHTML.length > maxLength ? debugContent.slice(0, maxLength) + \"...\" : debugContent;\n}\nconst logDOM = function () {\n const userCodeFrame = getUserCodeFrame();\n if (userCodeFrame) {\n console.log(prettyDOM(...arguments) + \"\\n\\n\" + userCodeFrame);\n } else {\n console.log(prettyDOM(...arguments));\n }\n};\n\n// It would be cleaner for this to live inside './queries', but\n// other parts of the code assume that all exports from\n// './queries' are query functions.\nlet config = {\n testIdAttribute: 'data-testid',\n asyncUtilTimeout: 1000,\n // asyncWrapper and advanceTimersWrapper is to support React's async `act` function.\n // forcing react-testing-library to wrap all async functions would've been\n // a total nightmare (consider wrapping every findBy* query and then also\n // updating `within` so those would be wrapped too. Total nightmare).\n // so we have this config option that's really only intended for\n // react-testing-library to use. For that reason, this feature will remain\n // undocumented.\n asyncWrapper: cb => cb(),\n unstable_advanceTimersWrapper: cb => cb(),\n eventWrapper: cb => cb(),\n // default value for the `hidden` option in `ByRole` queries\n defaultHidden: false,\n // default value for the `ignore` option in `ByText` queries\n defaultIgnore: 'script, style',\n // showOriginalStackTrace flag to show the full error stack traces for async errors\n showOriginalStackTrace: false,\n // throw errors w/ suggestions for better queries. Opt in so off by default.\n throwSuggestions: false,\n // called when getBy* queries fail. (message, container) => Error\n getElementError(message, container) {\n const prettifiedDOM = prettyDOM(container);\n const error = new Error([message, \"Ignored nodes: comments, \" + config.defaultIgnore + \"\\n\" + prettifiedDOM].filter(Boolean).join('\\n\\n'));\n error.name = 'TestingLibraryElementError';\n return error;\n },\n _disableExpensiveErrorDiagnostics: false,\n computedStyleSupportsPseudoElements: false\n};\nfunction runWithExpensiveErrorDiagnosticsDisabled(callback) {\n try {\n config._disableExpensiveErrorDiagnostics = true;\n return callback();\n } finally {\n config._disableExpensiveErrorDiagnostics = false;\n }\n}\nfunction configure(newConfig) {\n if (typeof newConfig === 'function') {\n // Pass the existing config out to the provided function\n // and accept a delta in return\n newConfig = newConfig(config);\n }\n\n // Merge the incoming config delta\n config = {\n ...config,\n ...newConfig\n };\n}\nfunction getConfig() {\n return config;\n}\n\nconst labelledNodeNames = ['button', 'meter', 'output', 'progress', 'select', 'textarea', 'input'];\nfunction getTextContent(node) {\n if (labelledNodeNames.includes(node.nodeName.toLowerCase())) {\n return '';\n }\n if (node.nodeType === TEXT_NODE) return node.textContent;\n return Array.from(node.childNodes).map(childNode => getTextContent(childNode)).join('');\n}\nfunction getLabelContent(element) {\n let textContent;\n if (element.tagName.toLowerCase() === 'label') {\n textContent = getTextContent(element);\n } else {\n textContent = element.value || element.textContent;\n }\n return textContent;\n}\n\n// Based on https://github.com/eps1lon/dom-accessibility-api/pull/352\nfunction getRealLabels(element) {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- types are not aware of older browsers that don't implement `labels`\n if (element.labels !== undefined) {\n var _labels;\n return (_labels = element.labels) != null ? _labels : [];\n }\n if (!isLabelable(element)) return [];\n const labels = element.ownerDocument.querySelectorAll('label');\n return Array.from(labels).filter(label => label.control === element);\n}\nfunction isLabelable(element) {\n return /BUTTON|METER|OUTPUT|PROGRESS|SELECT|TEXTAREA/.test(element.tagName) || element.tagName === 'INPUT' && element.getAttribute('type') !== 'hidden';\n}\nfunction getLabels(container, element, _temp) {\n let {\n selector = '*'\n } = _temp === void 0 ? {} : _temp;\n const ariaLabelledBy = element.getAttribute('aria-labelledby');\n const labelsId = ariaLabelledBy ? ariaLabelledBy.split(' ') : [];\n return labelsId.length ? labelsId.map(labelId => {\n const labellingElement = container.querySelector(\"[id=\\\"\" + labelId + \"\\\"]\");\n return labellingElement ? {\n content: getLabelContent(labellingElement),\n formControl: null\n } : {\n content: '',\n formControl: null\n };\n }) : Array.from(getRealLabels(element)).map(label => {\n const textToMatch = getLabelContent(label);\n const formControlSelector = 'button, input, meter, output, progress, select, textarea';\n const labelledFormControl = Array.from(label.querySelectorAll(formControlSelector)).filter(formControlElement => formControlElement.matches(selector))[0];\n return {\n content: textToMatch,\n formControl: labelledFormControl\n };\n });\n}\n\nfunction assertNotNullOrUndefined(matcher) {\n if (matcher === null || matcher === undefined) {\n throw new Error(// eslint-disable-next-line @typescript-eslint/restrict-template-expressions -- implicitly converting `T` to `string`\n \"It looks like \" + matcher + \" was passed instead of a matcher. Did you do something like getByText(\" + matcher + \")?\");\n }\n}\nfunction fuzzyMatches(textToMatch, node, matcher, normalizer) {\n if (typeof textToMatch !== 'string') {\n return false;\n }\n assertNotNullOrUndefined(matcher);\n const normalizedText = normalizer(textToMatch);\n if (typeof matcher === 'string' || typeof matcher === 'number') {\n return normalizedText.toLowerCase().includes(matcher.toString().toLowerCase());\n } else if (typeof matcher === 'function') {\n return matcher(normalizedText, node);\n } else {\n return matchRegExp(matcher, normalizedText);\n }\n}\nfunction matches(textToMatch, node, matcher, normalizer) {\n if (typeof textToMatch !== 'string') {\n return false;\n }\n assertNotNullOrUndefined(matcher);\n const normalizedText = normalizer(textToMatch);\n if (matcher instanceof Function) {\n return matcher(normalizedText, node);\n } else if (matcher instanceof RegExp) {\n return matchRegExp(matcher, normalizedText);\n } else {\n return normalizedText === String(matcher);\n }\n}\nfunction getDefaultNormalizer(_temp) {\n let {\n trim = true,\n collapseWhitespace = true\n } = _temp === void 0 ? {} : _temp;\n return text => {\n let normalizedText = text;\n normalizedText = trim ? normalizedText.trim() : normalizedText;\n normalizedText = collapseWhitespace ? normalizedText.replace(/\\s+/g, ' ') : normalizedText;\n return normalizedText;\n };\n}\n\n/**\n * Constructs a normalizer to pass to functions in matches.js\n * @param {boolean|undefined} trim The user-specified value for `trim`, without\n * any defaulting having been applied\n * @param {boolean|undefined} collapseWhitespace The user-specified value for\n * `collapseWhitespace`, without any defaulting having been applied\n * @param {Function|undefined} normalizer The user-specified normalizer\n * @returns {Function} A normalizer\n */\n\nfunction makeNormalizer(_ref) {\n let {\n trim,\n collapseWhitespace,\n normalizer\n } = _ref;\n if (!normalizer) {\n // No custom normalizer specified. Just use default.\n return getDefaultNormalizer({\n trim,\n collapseWhitespace\n });\n }\n if (typeof trim !== 'undefined' || typeof collapseWhitespace !== 'undefined') {\n // They've also specified a value for trim or collapseWhitespace\n throw new Error('trim and collapseWhitespace are not supported with a normalizer. ' + 'If you want to use the default trim and collapseWhitespace logic in your normalizer, ' + 'use \"getDefaultNormalizer({trim, collapseWhitespace})\" and compose that into your normalizer');\n }\n return normalizer;\n}\nfunction matchRegExp(matcher, text) {\n const match = matcher.test(text);\n if (matcher.global && matcher.lastIndex !== 0) {\n console.warn(\"To match all elements we had to reset the lastIndex of the RegExp because the global flag is enabled. We encourage to remove the global flag from the RegExp.\");\n matcher.lastIndex = 0;\n }\n return match;\n}\n\nfunction getNodeText(node) {\n if (node.matches('input[type=submit], input[type=button], input[type=reset]')) {\n return node.value;\n }\n return Array.from(node.childNodes).filter(child => child.nodeType === TEXT_NODE && Boolean(child.textContent)).map(c => c.textContent).join('');\n}\n\nconst elementRoleList = buildElementRoleList(elementRoles);\n\n/**\n * @param {Element} element -\n * @returns {boolean} - `true` if `element` and its subtree are inaccessible\n */\nfunction isSubtreeInaccessible(element) {\n if (element.hidden === true) {\n return true;\n }\n if (element.getAttribute('aria-hidden') === 'true') {\n return true;\n }\n const window = element.ownerDocument.defaultView;\n if (window.getComputedStyle(element).display === 'none') {\n return true;\n }\n return false;\n}\n\n/**\n * Partial implementation https://www.w3.org/TR/wai-aria-1.2/#tree_exclusion\n * which should only be used for elements with a non-presentational role i.e.\n * `role=\"none\"` and `role=\"presentation\"` will not be excluded.\n *\n * Implements aria-hidden semantics (i.e. parent overrides child)\n * Ignores \"Child Presentational: True\" characteristics\n *\n * @param {Element} element -\n * @param {object} [options] -\n * @param {function (element: Element): boolean} options.isSubtreeInaccessible -\n * can be used to return cached results from previous isSubtreeInaccessible calls\n * @returns {boolean} true if excluded, otherwise false\n */\nfunction isInaccessible(element, options) {\n if (options === void 0) {\n options = {};\n }\n const {\n isSubtreeInaccessible: isSubtreeInaccessibleImpl = isSubtreeInaccessible\n } = options;\n const window = element.ownerDocument.defaultView;\n // since visibility is inherited we can exit early\n if (window.getComputedStyle(element).visibility === 'hidden') {\n return true;\n }\n let currentElement = element;\n while (currentElement) {\n if (isSubtreeInaccessibleImpl(currentElement)) {\n return true;\n }\n currentElement = currentElement.parentElement;\n }\n return false;\n}\nfunction getImplicitAriaRoles(currentNode) {\n // eslint bug here:\n // eslint-disable-next-line no-unused-vars\n for (const {\n match,\n roles\n } of elementRoleList) {\n if (match(currentNode)) {\n return [...roles];\n }\n }\n return [];\n}\nfunction buildElementRoleList(elementRolesMap) {\n function makeElementSelector(_ref) {\n let {\n name,\n attributes\n } = _ref;\n return \"\" + name + attributes.map(_ref2 => {\n let {\n name: attributeName,\n value,\n constraints = []\n } = _ref2;\n const shouldNotExist = constraints.indexOf('undefined') !== -1;\n const shouldBeNonEmpty = constraints.indexOf('set') !== -1;\n const hasExplicitValue = typeof value !== 'undefined';\n if (hasExplicitValue) {\n return \"[\" + attributeName + \"=\\\"\" + value + \"\\\"]\";\n } else if (shouldNotExist) {\n return \":not([\" + attributeName + \"])\";\n } else if (shouldBeNonEmpty) {\n return \"[\" + attributeName + \"]:not([\" + attributeName + \"=\\\"\\\"])\";\n }\n return \"[\" + attributeName + \"]\";\n }).join('');\n }\n function getSelectorSpecificity(_ref3) {\n let {\n attributes = []\n } = _ref3;\n return attributes.length;\n }\n function bySelectorSpecificity(_ref4, _ref5) {\n let {\n specificity: leftSpecificity\n } = _ref4;\n let {\n specificity: rightSpecificity\n } = _ref5;\n return rightSpecificity - leftSpecificity;\n }\n function match(element) {\n let {\n attributes = []\n } = element;\n\n // https://github.com/testing-library/dom-testing-library/issues/814\n const typeTextIndex = attributes.findIndex(attribute => attribute.value && attribute.name === 'type' && attribute.value === 'text');\n if (typeTextIndex >= 0) {\n // not using splice to not mutate the attributes array\n attributes = [...attributes.slice(0, typeTextIndex), ...attributes.slice(typeTextIndex + 1)];\n }\n const selector = makeElementSelector({\n ...element,\n attributes\n });\n return node => {\n if (typeTextIndex >= 0 && node.type !== 'text') {\n return false;\n }\n return node.matches(selector);\n };\n }\n let result = [];\n\n // eslint bug here:\n // eslint-disable-next-line no-unused-vars\n for (const [element, roles] of elementRolesMap.entries()) {\n result = [...result, {\n match: match(element),\n roles: Array.from(roles),\n specificity: getSelectorSpecificity(element)\n }];\n }\n return result.sort(bySelectorSpecificity);\n}\nfunction getRoles(container, _temp) {\n let {\n hidden = false\n } = _temp === void 0 ? {} : _temp;\n function flattenDOM(node) {\n return [node, ...Array.from(node.children).reduce((acc, child) => [...acc, ...flattenDOM(child)], [])];\n }\n return flattenDOM(container).filter(element => {\n return hidden === false ? isInaccessible(element) === false : true;\n }).reduce((acc, node) => {\n let roles = [];\n // TODO: This violates html-aria which does not allow any role on every element\n if (node.hasAttribute('role')) {\n roles = node.getAttribute('role').split(' ').slice(0, 1);\n } else {\n roles = getImplicitAriaRoles(node);\n }\n return roles.reduce((rolesAcc, role) => Array.isArray(rolesAcc[role]) ? {\n ...rolesAcc,\n [role]: [...rolesAcc[role], node]\n } : {\n ...rolesAcc,\n [role]: [node]\n }, acc);\n }, {});\n}\nfunction prettyRoles(dom, _ref6) {\n let {\n hidden,\n includeDescription\n } = _ref6;\n const roles = getRoles(dom, {\n hidden\n });\n // We prefer to skip generic role, we don't recommend it\n return Object.entries(roles).filter(_ref7 => {\n let [role] = _ref7;\n return role !== 'generic';\n }).map(_ref8 => {\n let [role, elements] = _ref8;\n const delimiterBar = '-'.repeat(50);\n const elementsString = elements.map(el => {\n const nameString = \"Name \\\"\" + computeAccessibleName(el, {\n computedStyleSupportsPseudoElements: getConfig().computedStyleSupportsPseudoElements\n }) + \"\\\":\\n\";\n const domString = prettyDOM(el.cloneNode(false));\n if (includeDescription) {\n const descriptionString = \"Description \\\"\" + computeAccessibleDescription(el, {\n computedStyleSupportsPseudoElements: getConfig().computedStyleSupportsPseudoElements\n }) + \"\\\":\\n\";\n return \"\" + nameString + descriptionString + domString;\n }\n return \"\" + nameString + domString;\n }).join('\\n\\n');\n return role + \":\\n\\n\" + elementsString + \"\\n\\n\" + delimiterBar;\n }).join('\\n');\n}\nconst logRoles = function (dom, _temp2) {\n let {\n hidden = false\n } = _temp2 === void 0 ? {} : _temp2;\n return console.log(prettyRoles(dom, {\n hidden\n }));\n};\n\n/**\n * @param {Element} element -\n * @returns {boolean | undefined} - false/true if (not)selected, undefined if not selectable\n */\nfunction computeAriaSelected(element) {\n // implicit value from html-aam mappings: https://www.w3.org/TR/html-aam-1.0/#html-attribute-state-and-property-mappings\n // https://www.w3.org/TR/html-aam-1.0/#details-id-97\n if (element.tagName === 'OPTION') {\n return element.selected;\n }\n\n // explicit value\n return checkBooleanAttribute(element, 'aria-selected');\n}\n\n/**\n * @param {Element} element -\n * @returns {boolean} -\n */\nfunction computeAriaBusy(element) {\n // https://www.w3.org/TR/wai-aria-1.1/#aria-busy\n return element.getAttribute('aria-busy') === 'true';\n}\n\n/**\n * @param {Element} element -\n * @returns {boolean | undefined} - false/true if (not)checked, undefined if not checked-able\n */\nfunction computeAriaChecked(element) {\n // implicit value from html-aam mappings: https://www.w3.org/TR/html-aam-1.0/#html-attribute-state-and-property-mappings\n // https://www.w3.org/TR/html-aam-1.0/#details-id-56\n // https://www.w3.org/TR/html-aam-1.0/#details-id-67\n if ('indeterminate' in element && element.indeterminate) {\n return undefined;\n }\n if ('checked' in element) {\n return element.checked;\n }\n\n // explicit value\n return checkBooleanAttribute(element, 'aria-checked');\n}\n\n/**\n * @param {Element} element -\n * @returns {boolean | undefined} - false/true if (not)pressed, undefined if not press-able\n */\nfunction computeAriaPressed(element) {\n // https://www.w3.org/TR/wai-aria-1.1/#aria-pressed\n return checkBooleanAttribute(element, 'aria-pressed');\n}\n\n/**\n * @param {Element} element -\n * @returns {boolean | string | null} -\n */\nfunction computeAriaCurrent(element) {\n var _ref9, _checkBooleanAttribut;\n // https://www.w3.org/TR/wai-aria-1.1/#aria-current\n return (_ref9 = (_checkBooleanAttribut = checkBooleanAttribute(element, 'aria-current')) != null ? _checkBooleanAttribut : element.getAttribute('aria-current')) != null ? _ref9 : false;\n}\n\n/**\n * @param {Element} element -\n * @returns {boolean | undefined} - false/true if (not)expanded, undefined if not expand-able\n */\nfunction computeAriaExpanded(element) {\n // https://www.w3.org/TR/wai-aria-1.1/#aria-expanded\n return checkBooleanAttribute(element, 'aria-expanded');\n}\nfunction checkBooleanAttribute(element, attribute) {\n const attributeValue = element.getAttribute(attribute);\n if (attributeValue === 'true') {\n return true;\n }\n if (attributeValue === 'false') {\n return false;\n }\n return undefined;\n}\n\n/**\n * @param {Element} element -\n * @returns {number | undefined} - number if implicit heading or aria-level present, otherwise undefined\n */\nfunction computeHeadingLevel(element) {\n // https://w3c.github.io/html-aam/#el-h1-h6\n // https://w3c.github.io/html-aam/#el-h1-h6\n const implicitHeadingLevels = {\n H1: 1,\n H2: 2,\n H3: 3,\n H4: 4,\n H5: 5,\n H6: 6\n };\n // explicit aria-level value\n // https://www.w3.org/TR/wai-aria-1.2/#aria-level\n const ariaLevelAttribute = element.getAttribute('aria-level') && Number(element.getAttribute('aria-level'));\n return ariaLevelAttribute || implicitHeadingLevels[element.tagName];\n}\n\n/**\n * @param {Element} element -\n * @returns {number | undefined} -\n */\nfunction computeAriaValueNow(element) {\n const valueNow = element.getAttribute('aria-valuenow');\n return valueNow === null ? undefined : +valueNow;\n}\n\n/**\n * @param {Element} element -\n * @returns {number | undefined} -\n */\nfunction computeAriaValueMax(element) {\n const valueMax = element.getAttribute('aria-valuemax');\n return valueMax === null ? undefined : +valueMax;\n}\n\n/**\n * @param {Element} element -\n * @returns {number | undefined} -\n */\nfunction computeAriaValueMin(element) {\n const valueMin = element.getAttribute('aria-valuemin');\n return valueMin === null ? undefined : +valueMin;\n}\n\n/**\n * @param {Element} element -\n * @returns {string | undefined} -\n */\nfunction computeAriaValueText(element) {\n const valueText = element.getAttribute('aria-valuetext');\n return valueText === null ? undefined : valueText;\n}\n\nconst normalize = getDefaultNormalizer();\nfunction escapeRegExp(string) {\n return string.replace(/[.*+\\-?^${}()|[\\]\\\\]/g, '\\\\$&'); // $& means the whole matched string\n}\nfunction getRegExpMatcher(string) {\n return new RegExp(escapeRegExp(string.toLowerCase()), 'i');\n}\nfunction makeSuggestion(queryName, element, content, _ref) {\n let {\n variant,\n name\n } = _ref;\n let warning = '';\n const queryOptions = {};\n const queryArgs = [['Role', 'TestId'].includes(queryName) ? content : getRegExpMatcher(content)];\n if (name) {\n queryOptions.name = getRegExpMatcher(name);\n }\n if (queryName === 'Role' && isInaccessible(element)) {\n queryOptions.hidden = true;\n warning = \"Element is inaccessible. This means that the element and all its children are invisible to screen readers.\\n If you are using the aria-hidden prop, make sure this is the right choice for your case.\\n \";\n }\n if (Object.keys(queryOptions).length > 0) {\n queryArgs.push(queryOptions);\n }\n const queryMethod = variant + \"By\" + queryName;\n return {\n queryName,\n queryMethod,\n queryArgs,\n variant,\n warning,\n toString() {\n if (warning) {\n console.warn(warning);\n }\n let [text, options] = queryArgs;\n text = typeof text === 'string' ? \"'\" + text + \"'\" : text;\n options = options ? \", { \" + Object.entries(options).map(_ref2 => {\n let [k, v] = _ref2;\n return k + \": \" + v;\n }).join(', ') + \" }\" : '';\n return queryMethod + \"(\" + text + options + \")\";\n }\n };\n}\nfunction canSuggest(currentMethod, requestedMethod, data) {\n return data && (!requestedMethod || requestedMethod.toLowerCase() === currentMethod.toLowerCase());\n}\nfunction getSuggestedQuery(element, variant, method) {\n var _element$getAttribute, _getImplicitAriaRoles;\n if (variant === void 0) {\n variant = 'get';\n }\n // don't create suggestions for script and style elements\n if (element.matches(getConfig().defaultIgnore)) {\n return undefined;\n }\n\n //We prefer to suggest something else if the role is generic\n const role = (_element$getAttribute = element.getAttribute('role')) != null ? _element$getAttribute : (_getImplicitAriaRoles = getImplicitAriaRoles(element)) == null ? void 0 : _getImplicitAriaRoles[0];\n if (role !== 'generic' && canSuggest('Role', method, role)) {\n return makeSuggestion('Role', element, role, {\n variant,\n name: computeAccessibleName(element, {\n computedStyleSupportsPseudoElements: getConfig().computedStyleSupportsPseudoElements\n })\n });\n }\n const labelText = getLabels(document, element).map(label => label.content).join(' ');\n if (canSuggest('LabelText', method, labelText)) {\n return makeSuggestion('LabelText', element, labelText, {\n variant\n });\n }\n const placeholderText = element.getAttribute('placeholder');\n if (canSuggest('PlaceholderText', method, placeholderText)) {\n return makeSuggestion('PlaceholderText', element, placeholderText, {\n variant\n });\n }\n const textContent = normalize(getNodeText(element));\n if (canSuggest('Text', method, textContent)) {\n return makeSuggestion('Text', element, textContent, {\n variant\n });\n }\n if (canSuggest('DisplayValue', method, element.value)) {\n return makeSuggestion('DisplayValue', element, normalize(element.value), {\n variant\n });\n }\n const alt = element.getAttribute('alt');\n if (canSuggest('AltText', method, alt)) {\n return makeSuggestion('AltText', element, alt, {\n variant\n });\n }\n const title = element.getAttribute('title');\n if (canSuggest('Title', method, title)) {\n return makeSuggestion('Title', element, title, {\n variant\n });\n }\n const testId = element.getAttribute(getConfig().testIdAttribute);\n if (canSuggest('TestId', method, testId)) {\n return makeSuggestion('TestId', element, testId, {\n variant\n });\n }\n return undefined;\n}\n\n// This is so the stack trace the developer sees is one that's\n// closer to their code (because async stack traces are hard to follow).\nfunction copyStackTrace(target, source) {\n target.stack = source.stack.replace(source.message, target.message);\n}\nfunction waitFor(callback, _ref) {\n let {\n container = getDocument(),\n timeout = getConfig().asyncUtilTimeout,\n showOriginalStackTrace = getConfig().showOriginalStackTrace,\n stackTraceError,\n interval = 50,\n onTimeout = error => {\n Object.defineProperty(error, 'message', {\n value: getConfig().getElementError(error.message, container).message\n });\n return error;\n },\n mutationObserverOptions = {\n subtree: true,\n childList: true,\n attributes: true,\n characterData: true\n }\n } = _ref;\n if (typeof callback !== 'function') {\n throw new TypeError('Received `callback` arg must be a function');\n }\n return new Promise(async (resolve, reject) => {\n let lastError, intervalId, observer;\n let finished = false;\n let promiseStatus = 'idle';\n const overallTimeoutTimer = setTimeout(handleTimeout, timeout);\n const usingJestFakeTimers = jestFakeTimersAreEnabled();\n if (usingJestFakeTimers) {\n const {\n unstable_advanceTimersWrapper: advanceTimersWrapper\n } = getConfig();\n checkCallback();\n // this is a dangerous rule to disable because it could lead to an\n // infinite loop. However, eslint isn't smart enough to know that we're\n // setting finished inside `onDone` which will be called when we're done\n // waiting or when we've timed out.\n // eslint-disable-next-line no-unmodified-loop-condition\n while (!finished) {\n if (!jestFakeTimersAreEnabled()) {\n const error = new Error(\"Changed from using fake timers to real timers while using waitFor. This is not allowed and will result in very strange behavior. Please ensure you're awaiting all async things your test is doing before changing to real timers. For more info, please go to https://github.com/testing-library/dom-testing-library/issues/830\");\n if (!showOriginalStackTrace) copyStackTrace(error, stackTraceError);\n reject(error);\n return;\n }\n\n // In this rare case, we *need* to wait for in-flight promises\n // to resolve before continuing. We don't need to take advantage\n // of parallelization so we're fine.\n // https://stackoverflow.com/a/59243586/971592\n // eslint-disable-next-line no-await-in-loop\n await advanceTimersWrapper(async () => {\n // we *could* (maybe should?) use `advanceTimersToNextTimer` but it's\n // possible that could make this loop go on forever if someone is using\n // third party code that's setting up recursive timers so rapidly that\n // the user's timer's don't get a chance to resolve. So we'll advance\n // by an interval instead. (We have a test for this case).\n jest.advanceTimersByTime(interval);\n });\n\n // Could have timed-out\n if (finished) {\n break;\n }\n // It's really important that checkCallback is run *before* we flush\n // in-flight promises. To be honest, I'm not sure why, and I can't quite\n // think of a way to reproduce the problem in a test, but I spent\n // an entire day banging my head against a wall on this.\n checkCallback();\n }\n } else {\n try {\n checkContainerType(container);\n } catch (e) {\n reject(e);\n return;\n }\n intervalId = setInterval(checkRealTimersCallback, interval);\n const {\n MutationObserver\n } = getWindowFromNode(container);\n observer = new MutationObserver(checkRealTimersCallback);\n observer.observe(container, mutationObserverOptions);\n checkCallback();\n }\n function onDone(error, result) {\n finished = true;\n clearTimeout(overallTimeoutTimer);\n if (!usingJestFakeTimers) {\n clearInterval(intervalId);\n observer.disconnect();\n }\n if (error) {\n reject(error);\n } else {\n resolve(result);\n }\n }\n function checkRealTimersCallback() {\n if (jestFakeTimersAreEnabled()) {\n const error = new Error(\"Changed from using real timers to fake timers while using waitFor. This is not allowed and will result in very strange behavior. Please ensure you're awaiting all async things your test is doing before changing to fake timers. For more info, please go to https://github.com/testing-library/dom-testing-library/issues/830\");\n if (!showOriginalStackTrace) copyStackTrace(error, stackTraceError);\n return reject(error);\n } else {\n return checkCallback();\n }\n }\n function checkCallback() {\n if (promiseStatus === 'pending') return;\n try {\n const result = runWithExpensiveErrorDiagnosticsDisabled(callback);\n if (typeof (result == null ? void 0 : result.then) === 'function') {\n promiseStatus = 'pending';\n result.then(resolvedValue => {\n promiseStatus = 'resolved';\n onDone(null, resolvedValue);\n }, rejectedValue => {\n promiseStatus = 'rejected';\n lastError = rejectedValue;\n });\n } else {\n onDone(null, result);\n }\n // If `callback` throws, wait for the next mutation, interval, or timeout.\n } catch (error) {\n // Save the most recent callback error to reject the promise with it in the event of a timeout\n lastError = error;\n }\n }\n function handleTimeout() {\n let error;\n if (lastError) {\n error = lastError;\n if (!showOriginalStackTrace && error.name === 'TestingLibraryElementError') {\n copyStackTrace(error, stackTraceError);\n }\n } else {\n error = new Error('Timed out in waitFor.');\n if (!showOriginalStackTrace) {\n copyStackTrace(error, stackTraceError);\n }\n }\n onDone(onTimeout(error), null);\n }\n });\n}\nfunction waitForWrapper(callback, options) {\n // create the error here so its stack trace is as close to the\n // calling code as possible\n const stackTraceError = new Error('STACK_TRACE_MESSAGE');\n return getConfig().asyncWrapper(() => waitFor(callback, {\n stackTraceError,\n ...options\n }));\n}\n\n/*\neslint\n max-lines-per-function: [\"error\", {\"max\": 200}],\n*/\n\nfunction getElementError(message, container) {\n return getConfig().getElementError(message, container);\n}\nfunction getMultipleElementsFoundError(message, container) {\n return getElementError(message + \"\\n\\n(If this is intentional, then use the `*AllBy*` variant of the query (like `queryAllByText`, `getAllByText`, or `findAllByText`)).\", container);\n}\nfunction queryAllByAttribute(attribute, container, text, _temp) {\n let {\n exact = true,\n collapseWhitespace,\n trim,\n normalizer\n } = _temp === void 0 ? {} : _temp;\n const matcher = exact ? matches : fuzzyMatches;\n const matchNormalizer = makeNormalizer({\n collapseWhitespace,\n trim,\n normalizer\n });\n return Array.from(container.querySelectorAll(\"[\" + attribute + \"]\")).filter(node => matcher(node.getAttribute(attribute), node, text, matchNormalizer));\n}\nfunction queryByAttribute(attribute, container, text, options) {\n const els = queryAllByAttribute(attribute, container, text, options);\n if (els.length > 1) {\n throw getMultipleElementsFoundError(\"Found multiple elements by [\" + attribute + \"=\" + text + \"]\", container);\n }\n return els[0] || null;\n}\n\n// this accepts a query function and returns a function which throws an error\n// if more than one elements is returned, otherwise it returns the first\n// element or null\nfunction makeSingleQuery(allQuery, getMultipleError) {\n return function (container) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n const els = allQuery(container, ...args);\n if (els.length > 1) {\n const elementStrings = els.map(element => getElementError(null, element).message).join('\\n\\n');\n throw getMultipleElementsFoundError(getMultipleError(container, ...args) + \"\\n\\nHere are the matching elements:\\n\\n\" + elementStrings, container);\n }\n return els[0] || null;\n };\n}\nfunction getSuggestionError(suggestion, container) {\n return getConfig().getElementError(\"A better query is available, try this:\\n\" + suggestion.toString() + \"\\n\", container);\n}\n\n// this accepts a query function and returns a function which throws an error\n// if an empty list of elements is returned\nfunction makeGetAllQuery(allQuery, getMissingError) {\n return function (container) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n const els = allQuery(container, ...args);\n if (!els.length) {\n throw getConfig().getElementError(getMissingError(container, ...args), container);\n }\n return els;\n };\n}\n\n// this accepts a getter query function and returns a function which calls\n// waitFor and passing a function which invokes the getter.\nfunction makeFindQuery(getter) {\n return (container, text, options, waitForOptions) => {\n return waitForWrapper(() => {\n return getter(container, text, options);\n }, {\n container,\n ...waitForOptions\n });\n };\n}\nconst wrapSingleQueryWithSuggestion = (query, queryAllByName, variant) => function (container) {\n for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n args[_key3 - 1] = arguments[_key3];\n }\n const element = query(container, ...args);\n const [{\n suggest = getConfig().throwSuggestions\n } = {}] = args.slice(-1);\n if (element && suggest) {\n const suggestion = getSuggestedQuery(element, variant);\n if (suggestion && !queryAllByName.endsWith(suggestion.queryName)) {\n throw getSuggestionError(suggestion.toString(), container);\n }\n }\n return element;\n};\nconst wrapAllByQueryWithSuggestion = (query, queryAllByName, variant) => function (container) {\n for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n args[_key4 - 1] = arguments[_key4];\n }\n const els = query(container, ...args);\n const [{\n suggest = getConfig().throwSuggestions\n } = {}] = args.slice(-1);\n if (els.length && suggest) {\n // get a unique list of all suggestion messages. We are only going to make a suggestion if\n // all the suggestions are the same\n const uniqueSuggestionMessages = [...new Set(els.map(element => {\n var _getSuggestedQuery;\n return (_getSuggestedQuery = getSuggestedQuery(element, variant)) == null ? void 0 : _getSuggestedQuery.toString();\n }))];\n if (\n // only want to suggest if all the els have the same suggestion.\n uniqueSuggestionMessages.length === 1 && !queryAllByName.endsWith(\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- TODO: Can this be null at runtime?\n getSuggestedQuery(els[0], variant).queryName)) {\n throw getSuggestionError(uniqueSuggestionMessages[0], container);\n }\n }\n return els;\n};\n\n// TODO: This deviates from the published declarations\n// However, the implementation always required a dyadic (after `container`) not variadic `queryAllBy` considering the implementation of `makeFindQuery`\n// This is at least statically true and can be verified by accepting `QueryMethod<Arguments, HTMLElement[]>`\nfunction buildQueries(queryAllBy, getMultipleError, getMissingError) {\n const queryBy = wrapSingleQueryWithSuggestion(makeSingleQuery(queryAllBy, getMultipleError), queryAllBy.name, 'query');\n const getAllBy = makeGetAllQuery(queryAllBy, getMissingError);\n const getBy = makeSingleQuery(getAllBy, getMultipleError);\n const getByWithSuggestions = wrapSingleQueryWithSuggestion(getBy, queryAllBy.name, 'get');\n const getAllWithSuggestions = wrapAllByQueryWithSuggestion(getAllBy, queryAllBy.name.replace('query', 'get'), 'getAll');\n const findAllBy = makeFindQuery(wrapAllByQueryWithSuggestion(getAllBy, queryAllBy.name, 'findAll'));\n const findBy = makeFindQuery(wrapSingleQueryWithSuggestion(getBy, queryAllBy.name, 'find'));\n return [queryBy, getAllWithSuggestions, getByWithSuggestions, findAllBy, findBy];\n}\n\nvar queryHelpers = /*#__PURE__*/Object.freeze({\n __proto__: null,\n getElementError: getElementError,\n wrapAllByQueryWithSuggestion: wrapAllByQueryWithSuggestion,\n wrapSingleQueryWithSuggestion: wrapSingleQueryWithSuggestion,\n getMultipleElementsFoundError: getMultipleElementsFoundError,\n queryAllByAttribute: queryAllByAttribute,\n queryByAttribute: queryByAttribute,\n makeSingleQuery: makeSingleQuery,\n makeGetAllQuery: makeGetAllQuery,\n makeFindQuery: makeFindQuery,\n buildQueries: buildQueries\n});\n\nfunction queryAllLabels(container) {\n return Array.from(container.querySelectorAll('label,input')).map(node => {\n return {\n node,\n textToMatch: getLabelContent(node)\n };\n }).filter(_ref => {\n let {\n textToMatch\n } = _ref;\n return textToMatch !== null;\n });\n}\nconst queryAllLabelsByText = function (container, text, _temp) {\n let {\n exact = true,\n trim,\n collapseWhitespace,\n normalizer\n } = _temp === void 0 ? {} : _temp;\n const matcher = exact ? matches : fuzzyMatches;\n const matchNormalizer = makeNormalizer({\n collapseWhitespace,\n trim,\n normalizer\n });\n const textToMatchByLabels = queryAllLabels(container);\n return textToMatchByLabels.filter(_ref2 => {\n let {\n node,\n textToMatch\n } = _ref2;\n return matcher(textToMatch, node, text, matchNormalizer);\n }).map(_ref3 => {\n let {\n node\n } = _ref3;\n return node;\n });\n};\nconst queryAllByLabelText = function (container, text, _temp2) {\n let {\n selector = '*',\n exact = true,\n collapseWhitespace,\n trim,\n normalizer\n } = _temp2 === void 0 ? {} : _temp2;\n checkContainerType(container);\n const matcher = exact ? matches : fuzzyMatches;\n const matchNormalizer = makeNormalizer({\n collapseWhitespace,\n trim,\n normalizer\n });\n const matchingLabelledElements = Array.from(container.querySelectorAll('*')).filter(element => {\n return getRealLabels(element).length || element.hasAttribute('aria-labelledby');\n }).reduce((labelledElements, labelledElement) => {\n const labelList = getLabels(container, labelledElement, {\n selector\n });\n labelList.filter(label => Boolean(label.formControl)).forEach(label => {\n if (matcher(label.content, label.formControl, text, matchNormalizer) && label.formControl) {\n labelledElements.push(label.formControl);\n }\n });\n const labelsValue = labelList.filter(label => Boolean(label.content)).map(label => label.content);\n if (matcher(labelsValue.join(' '), labelledElement, text, matchNormalizer)) {\n labelledElements.push(labelledElement);\n }\n if (labelsValue.length > 1) {\n labelsValue.forEach((labelValue, index) => {\n if (matcher(labelValue, labelledElement, text, matchNormalizer)) {\n labelledElements.push(labelledElement);\n }\n const labelsFiltered = [...labelsValue];\n labelsFiltered.splice(index, 1);\n if (labelsFiltered.length > 1) {\n if (matcher(labelsFiltered.join(' '), labelledElement, text, matchNormalizer)) {\n labelledElements.push(labelledElement);\n }\n }\n });\n }\n return labelledElements;\n }, []).concat(queryAllByAttribute('aria-label', container, text, {\n exact,\n normalizer: matchNormalizer\n }));\n return Array.from(new Set(matchingLabelledElements)).filter(element => element.matches(selector));\n};\n\n// the getAll* query would normally look like this:\n// const getAllByLabelText = makeGetAllQuery(\n// queryAllByLabelText,\n// (c, text) => `Unable to find a label with the text of: ${text}`,\n// )\n// however, we can give a more helpful error message than the generic one,\n// so we're writing this one out by hand.\nconst getAllByLabelText = function (container, text) {\n for (var _len = arguments.length, rest = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n rest[_key - 2] = arguments[_key];\n }\n const els = queryAllByLabelText(container, text, ...rest);\n if (!els.length) {\n const labels = queryAllLabelsByText(container, text, ...rest);\n if (labels.length) {\n const tagNames = labels.map(label => getTagNameOfElementAssociatedWithLabelViaFor(container, label)).filter(tagName => !!tagName);\n if (tagNames.length) {\n throw getConfig().getElementError(tagNames.map(tagName => \"Found a label with the text of: \" + text + \", however the element associated with this label (<\" + tagName + \" />) is non-labellable [https://html.spec.whatwg.org/multipage/forms.html#category-label]. If you really need to label a <\" + tagName + \" />, you can use aria-label or aria-labelledby instead.\").join('\\n\\n'), container);\n } else {\n throw getConfig().getElementError(\"Found a label with the text of: \" + text + \", however no form control was found associated to that label. Make sure you're using the \\\"for\\\" attribute or \\\"aria-labelledby\\\" attribute correctly.\", container);\n }\n } else {\n throw getConfig().getElementError(\"Unable to find a label with the text of: \" + text, container);\n }\n }\n return els;\n};\nfunction getTagNameOfElementAssociatedWithLabelViaFor(container, label) {\n const htmlFor = label.getAttribute('for');\n if (!htmlFor) {\n return null;\n }\n const element = container.querySelector(\"[id=\\\"\" + htmlFor + \"\\\"]\");\n return element ? element.tagName.toLowerCase() : null;\n}\n\n// the reason mentioned above is the same reason we're not using buildQueries\nconst getMultipleError$7 = (c, text) => \"Found multiple elements with the text of: \" + text;\nconst queryByLabelText = wrapSingleQueryWithSuggestion(makeSingleQuery(queryAllByLabelText, getMultipleError$7), queryAllByLabelText.name, 'query');\nconst getByLabelText = makeSingleQuery(getAllByLabelText, getMultipleError$7);\nconst findAllByLabelText = makeFindQuery(wrapAllByQueryWithSuggestion(getAllByLabelText, getAllByLabelText.name, 'findAll'));\nconst findByLabelText = makeFindQuery(wrapSingleQueryWithSuggestion(getByLabelText, getAllByLabelText.name, 'find'));\nconst getAllByLabelTextWithSuggestions = wrapAllByQueryWithSuggestion(getAllByLabelText, getAllByLabelText.name, 'getAll');\nconst getByLabelTextWithSuggestions = wrapSingleQueryWithSuggestion(getByLabelText, getAllByLabelText.name, 'get');\nconst queryAllByLabelTextWithSuggestions = wrapAllByQueryWithSuggestion(queryAllByLabelText, queryAllByLabelText.name, 'queryAll');\n\nconst queryAllByPlaceholderText = function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n checkContainerType(args[0]);\n return queryAllByAttribute('placeholder', ...args);\n};\nconst getMultipleError$6 = (c, text) => \"Found multiple elements with the placeholder text of: \" + text;\nconst getMissingError$6 = (c, text) => \"Unable to find an element with the placeholder text of: \" + text;\nconst queryAllByPlaceholderTextWithSuggestions = wrapAllByQueryWithSuggestion(queryAllByPlaceholderText, queryAllByPlaceholderText.name, 'queryAll');\nconst [queryByPlaceholderText, getAllByPlaceholderText, getByPlaceholderText, findAllByPlaceholderText, findByPlaceholderText] = buildQueries(queryAllByPlaceholderText, getMultipleError$6, getMissingError$6);\n\nconst queryAllByText = function (container, text, _temp) {\n let {\n selector = '*',\n exact = true,\n collapseWhitespace,\n trim,\n ignore = getConfig().defaultIgnore,\n normalizer\n } = _temp === void 0 ? {} : _temp;\n checkContainerType(container);\n const matcher = exact ? matches : fuzzyMatches;\n const matchNormalizer = makeNormalizer({\n collapseWhitespace,\n trim,\n normalizer\n });\n let baseArray = [];\n if (typeof container.matches === 'function' && container.matches(selector)) {\n baseArray = [container];\n }\n return [...baseArray, ...Array.from(container.querySelectorAll(selector))]\n // TODO: `matches` according lib.dom.d.ts can get only `string` but according our code it can handle also boolean :)\n .filter(node => !ignore || !node.matches(ignore)).filter(node => matcher(getNodeText(node), node, text, matchNormalizer));\n};\nconst getMultipleError$5 = (c, text) => \"Found multiple elements with the text: \" + text;\nconst getMissingError$5 = function (c, text, options) {\n if (options === void 0) {\n options = {};\n }\n const {\n collapseWhitespace,\n trim,\n normalizer,\n selector\n } = options;\n const matchNormalizer = makeNormalizer({\n collapseWhitespace,\n trim,\n normalizer\n });\n const normalizedText = matchNormalizer(text.toString());\n const isNormalizedDifferent = normalizedText !== text.toString();\n const isCustomSelector = (selector != null ? selector : '*') !== '*';\n return \"Unable to find an element with the text: \" + (isNormalizedDifferent ? normalizedText + \" (normalized from '\" + text + \"')\" : text) + (isCustomSelector ? \", which matches selector '\" + selector + \"'\" : '') + \". This could be because the text is broken up by multiple elements. In this case, you can provide a function for your text matcher to make your matcher more flexible.\";\n};\nconst queryAllByTextWithSuggestions = wrapAllByQueryWithSuggestion(queryAllByText, queryAllByText.name, 'queryAll');\nconst [queryByText, getAllByText, getByText, findAllByText, findByText] = buildQueries(queryAllByText, getMultipleError$5, getMissingError$5);\n\nconst queryAllByDisplayValue = function (container, value, _temp) {\n let {\n exact = true,\n collapseWhitespace,\n trim,\n normalizer\n } = _temp === void 0 ? {} : _temp;\n checkContainerType(container);\n const matcher = exact ? matches : fuzzyMatches;\n const matchNormalizer = makeNormalizer({\n collapseWhitespace,\n trim,\n normalizer\n });\n return Array.from(container.querySelectorAll(\"input,textarea,select\")).filter(node => {\n if (node.tagName === 'SELECT') {\n const selectedOptions = Array.from(node.options).filter(option => option.selected);\n return selectedOptions.some(optionNode => matcher(getNodeText(optionNode), optionNode, value, matchNormalizer));\n } else {\n return matcher(node.value, node, value, matchNormalizer);\n }\n });\n};\nconst getMultipleError$4 = (c, value) => \"Found multiple elements with the display value: \" + value + \".\";\nconst getMissingError$4 = (c, value) => \"Unable to find an element with the display value: \" + value + \".\";\nconst queryAllByDisplayValueWithSuggestions = wrapAllByQueryWithSuggestion(queryAllByDisplayValue, queryAllByDisplayValue.name, 'queryAll');\nconst [queryByDisplayValue, getAllByDisplayValue, getByDisplayValue, findAllByDisplayValue, findByDisplayValue] = buildQueries(queryAllByDisplayValue, getMultipleError$4, getMissingError$4);\n\n// Valid tags are img, input, area and custom elements\nconst VALID_TAG_REGEXP = /^(img|input|area|.+-.+)$/i;\nconst queryAllByAltText = function (container, alt, options) {\n if (options === void 0) {\n options = {};\n }\n checkContainerType(container);\n return queryAllByAttribute('alt', container, alt, options).filter(node => VALID_TAG_REGEXP.test(node.tagName));\n};\nconst getMultipleError$3 = (c, alt) => \"Found multiple elements with the alt text: \" + alt;\nconst getMissingError$3 = (c, alt) => \"Unable to find an element with the alt text: \" + alt;\nconst queryAllByAltTextWithSuggestions = wrapAllByQueryWithSuggestion(queryAllByAltText, queryAllByAltText.name, 'queryAll');\nconst [queryByAltText, getAllByAltText, getByAltText, findAllByAltText, findByAltText] = buildQueries(queryAllByAltText, getMultipleError$3, getMissingError$3);\n\nconst isSvgTitle = node => {\n var _node$parentElement;\n return node.tagName.toLowerCase() === 'title' && ((_node$parentElement = node.parentElement) == null ? void 0 : _node$parentElement.tagName.toLowerCase()) === 'svg';\n};\nconst queryAllByTitle = function (container, text, _temp) {\n let {\n exact = true,\n collapseWhitespace,\n trim,\n normalizer\n } = _temp === void 0 ? {} : _temp;\n checkContainerType(container);\n const matcher = exact ? matches : fuzzyMatches;\n const matchNormalizer = makeNormalizer({\n collapseWhitespace,\n trim,\n normalizer\n });\n return Array.from(container.querySelectorAll('[title], svg > title')).filter(node => matcher(node.getAttribute('title'), node, text, matchNormalizer) || isSvgTitle(node) && matcher(getNodeText(node), node, text, matchNormalizer));\n};\nconst getMultipleError$2 = (c, title) => \"Found multiple elements with the title: \" + title + \".\";\nconst getMissingError$2 = (c, title) => \"Unable to find an element with the title: \" + title + \".\";\nconst queryAllByTitleWithSuggestions = wrapAllByQueryWithSuggestion(queryAllByTitle, queryAllByTitle.name, 'queryAll');\nconst [queryByTitle, getAllByTitle, getByTitle, findAllByTitle, findByTitle] = buildQueries(queryAllByTitle, getMultipleError$2, getMissingError$2);\n\n/* eslint-disable complexity */\nconst queryAllByRole = function (container, role, _temp) {\n let {\n hidden = getConfig().defaultHidden,\n name,\n description,\n queryFallbacks = false,\n selected,\n busy,\n checked,\n pressed,\n current,\n level,\n expanded,\n value: {\n now: valueNow,\n min: valueMin,\n max: valueMax,\n text: valueText\n } = {}\n } = _temp === void 0 ? {} : _temp;\n checkContainerType(container);\n if (selected !== undefined) {\n var _allRoles$get;\n // guard against unknown roles\n if (((_allRoles$get = roles.get(role)) == null ? void 0 : _allRoles$get.props['aria-selected']) === undefined) {\n throw new Error(\"\\\"aria-selected\\\" is not supported on role \\\"\" + role + \"\\\".\");\n }\n }\n if (busy !== undefined) {\n var _allRoles$get2;\n // guard against unknown roles\n if (((_allRoles$get2 = roles.get(role)) == null ? void 0 : _allRoles$get2.props['aria-busy']) === undefined) {\n throw new Error(\"\\\"aria-busy\\\" is not supported on role \\\"\" + role + \"\\\".\");\n }\n }\n if (checked !== undefined) {\n var _allRoles$get3;\n // guard against unknown roles\n if (((_allRoles$get3 = roles.get(role)) == null ? void 0 : _allRoles$get3.props['aria-checked']) === undefined) {\n throw new Error(\"\\\"aria-checked\\\" is not supported on role \\\"\" + role + \"\\\".\");\n }\n }\n if (pressed !== undefined) {\n var _allRoles$get4;\n // guard against unknown roles\n if (((_allRoles$get4 = roles.get(role)) == null ? void 0 : _allRoles$get4.props['aria-pressed']) === undefined) {\n throw new Error(\"\\\"aria-pressed\\\" is not supported on role \\\"\" + role + \"\\\".\");\n }\n }\n if (current !== undefined) {\n var _allRoles$get5;\n /* istanbul ignore next */\n // guard against unknown roles\n // All currently released ARIA versions support `aria-current` on all roles.\n // Leaving this for symmetry and forward compatibility\n if (((_allRoles$get5 = roles.get(role)) == null ? void 0 : _allRoles$get5.props['aria-current']) === undefined) {\n throw new Error(\"\\\"aria-current\\\" is not supported on role \\\"\" + role + \"\\\".\");\n }\n }\n if (level !== undefined) {\n // guard against using `level` option with any role other than `heading`\n if (role !== 'heading') {\n throw new Error(\"Role \\\"\" + role + \"\\\" cannot have \\\"level\\\" property.\");\n }\n }\n if (valueNow !== undefined) {\n var _allRoles$get6;\n // guard against unknown roles\n if (((_allRoles$get6 = roles.get(role)) == null ? void 0 : _allRoles$get6.props['aria-valuenow']) === undefined) {\n throw new Error(\"\\\"aria-valuenow\\\" is not supported on role \\\"\" + role + \"\\\".\");\n }\n }\n if (valueMax !== undefined) {\n var _allRoles$get7;\n // guard against unknown roles\n if (((_allRoles$get7 = roles.get(role)) == null ? void 0 : _allRoles$get7.props['aria-valuemax']) === undefined) {\n throw new Error(\"\\\"aria-valuemax\\\" is not supported on role \\\"\" + role + \"\\\".\");\n }\n }\n if (valueMin !== undefined) {\n var _allRoles$get8;\n // guard against unknown roles\n if (((_allRoles$get8 = roles.get(role)) == null ? void 0 : _allRoles$get8.props['aria-valuemin']) === undefined) {\n throw new Error(\"\\\"aria-valuemin\\\" is not supported on role \\\"\" + role + \"\\\".\");\n }\n }\n if (valueText !== undefined) {\n var _allRoles$get9;\n // guard against unknown roles\n if (((_allRoles$get9 = roles.get(role)) == null ? void 0 : _allRoles$get9.props['aria-valuetext']) === undefined) {\n throw new Error(\"\\\"aria-valuetext\\\" is not supported on role \\\"\" + role + \"\\\".\");\n }\n }\n if (expanded !== undefined) {\n var _allRoles$get0;\n // guard against unknown roles\n if (((_allRoles$get0 = roles.get(role)) == null ? void 0 : _allRoles$get0.props['aria-expanded']) === undefined) {\n throw new Error(\"\\\"aria-expanded\\\" is not supported on role \\\"\" + role + \"\\\".\");\n }\n }\n const subtreeIsInaccessibleCache = new WeakMap();\n function cachedIsSubtreeInaccessible(element) {\n if (!subtreeIsInaccessibleCache.has(element)) {\n subtreeIsInaccessibleCache.set(element, isSubtreeInaccessible(element));\n }\n return subtreeIsInaccessibleCache.get(element);\n }\n return Array.from(container.querySelectorAll(\n // Only query elements that can be matched by the following filters\n makeRoleSelector(role))).filter(node => {\n const isRoleSpecifiedExplicitly = node.hasAttribute('role');\n if (isRoleSpecifiedExplicitly) {\n const roleValue = node.getAttribute('role');\n if (queryFallbacks) {\n return roleValue.split(' ').filter(Boolean).some(roleAttributeToken => roleAttributeToken === role);\n }\n // other wise only send the first token to match\n const [firstRoleAttributeToken] = roleValue.split(' ');\n return firstRoleAttributeToken === role;\n }\n const implicitRoles = getImplicitAriaRoles(node);\n return implicitRoles.some(implicitRole => {\n return implicitRole === role;\n });\n }).filter(element => {\n if (selected !== undefined) {\n return selected === computeAriaSelected(element);\n }\n if (busy !== undefined) {\n return busy === computeAriaBusy(element);\n }\n if (checked !== undefined) {\n return checked === computeAriaChecked(element);\n }\n if (pressed !== undefined) {\n return pressed === computeAriaPressed(element);\n }\n if (current !== undefined) {\n return current === computeAriaCurrent(element);\n }\n if (expanded !== undefined) {\n return expanded === computeAriaExpanded(element);\n }\n if (level !== undefined) {\n return level === computeHeadingLevel(element);\n }\n if (valueNow !== undefined || valueMax !== undefined || valueMin !== undefined || valueText !== undefined) {\n let valueMatches = true;\n if (valueNow !== undefined) {\n valueMatches && (valueMatches = valueNow === computeAriaValueNow(element));\n }\n if (valueMax !== undefined) {\n valueMatches && (valueMatches = valueMax === computeAriaValueMax(element));\n }\n if (valueMin !== undefined) {\n valueMatches && (valueMatches = valueMin === computeAriaValueMin(element));\n }\n if (valueText !== undefined) {\n var _computeAriaValueText;\n valueMatches && (valueMatches = matches((_computeAriaValueText = computeAriaValueText(element)) != null ? _computeAriaValueText : null, element, valueText, text => text));\n }\n return valueMatches;\n }\n // don't care if aria attributes are unspecified\n return true;\n }).filter(element => {\n if (name === undefined) {\n // Don't care\n return true;\n }\n return matches(computeAccessibleName(element, {\n computedStyleSupportsPseudoElements: getConfig().computedStyleSupportsPseudoElements\n }), element, name, text => text);\n }).filter(element => {\n if (description === undefined) {\n // Don't care\n return true;\n }\n return matches(computeAccessibleDescription(element, {\n computedStyleSupportsPseudoElements: getConfig().computedStyleSupportsPseudoElements\n }), element, description, text => text);\n }).filter(element => {\n return hidden === false ? isInaccessible(element, {\n isSubtreeInaccessible: cachedIsSubtreeInaccessible\n }) === false : true;\n });\n};\nfunction makeRoleSelector(role) {\n var _roleElements$get;\n const explicitRoleSelector = \"*[role~=\\\"\" + role + \"\\\"]\";\n const roleRelations = (_roleElements$get = roleElements.get(role)) != null ? _roleElements$get : new Set();\n const implicitRoleSelectors = new Set(Array.from(roleRelations).map(_ref => {\n let {\n name\n } = _ref;\n return name;\n }));\n\n // Current transpilation config sometimes assumes `...` is always applied to arrays.\n // `...` is equivalent to `Array.prototype.concat` for arrays.\n // If you replace this code with `[explicitRoleSelector, ...implicitRoleSelectors]`, make sure every transpilation target retains the `...` in favor of `Array.prototype.concat`.\n return [explicitRoleSelector].concat(Array.from(implicitRoleSelectors)).join(',');\n}\nconst getNameHint = name => {\n let nameHint = '';\n if (name === undefined) {\n nameHint = '';\n } else if (typeof name === 'string') {\n nameHint = \" and name \\\"\" + name + \"\\\"\";\n } else {\n nameHint = \" and name `\" + name + \"`\";\n }\n return nameHint;\n};\nconst getMultipleError$1 = function (c, role, _temp2) {\n let {\n name\n } = _temp2 === void 0 ? {} : _temp2;\n return \"Found multiple elements with the role \\\"\" + role + \"\\\"\" + getNameHint(name);\n};\nconst getMissingError$1 = function (container, role, _temp3) {\n let {\n hidden = getConfig().defaultHidden,\n name,\n description\n } = _temp3 === void 0 ? {} : _temp3;\n if (getConfig()._disableExpensiveErrorDiagnostics) {\n return \"Unable to find role=\\\"\" + role + \"\\\"\" + getNameHint(name);\n }\n let roles = '';\n Array.from(container.children).forEach(childElement => {\n roles += prettyRoles(childElement, {\n hidden,\n includeDescription: description !== undefined\n });\n });\n let roleMessage;\n if (roles.length === 0) {\n if (hidden === false) {\n roleMessage = 'There are no accessible roles. But there might be some inaccessible roles. ' + 'If you wish to access them, then set the `hidden` option to `true`. ' + 'Learn more about this here: https://testing-library.com/docs/dom-testing-library/api-queries#byrole';\n } else {\n roleMessage = 'There are no available roles.';\n }\n } else {\n roleMessage = (\"\\nHere are the \" + (hidden === false ? 'accessible' : 'available') + \" roles:\\n\\n \" + roles.replace(/\\n/g, '\\n ').replace(/\\n\\s\\s\\n/g, '\\n\\n') + \"\\n\").trim();\n }\n let nameHint = '';\n if (name === undefined) {\n nameHint = '';\n } else if (typeof name === 'string') {\n nameHint = \" and name \\\"\" + name + \"\\\"\";\n } else {\n nameHint = \" and name `\" + name + \"`\";\n }\n let descriptionHint = '';\n if (description === undefined) {\n descriptionHint = '';\n } else if (typeof description === 'string') {\n descriptionHint = \" and description \\\"\" + description + \"\\\"\";\n } else {\n descriptionHint = \" and description `\" + description + \"`\";\n }\n return (\"\\nUnable to find an \" + (hidden === false ? 'accessible ' : '') + \"element with the role \\\"\" + role + \"\\\"\" + nameHint + descriptionHint + \"\\n\\n\" + roleMessage).trim();\n};\nconst queryAllByRoleWithSuggestions = wrapAllByQueryWithSuggestion(queryAllByRole, queryAllByRole.name, 'queryAll');\nconst [queryByRole, getAllByRole, getByRole, findAllByRole, findByRole] = buildQueries(queryAllByRole, getMultipleError$1, getMissingError$1);\n\nconst getTestIdAttribute = () => getConfig().testIdAttribute;\nconst queryAllByTestId = function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n checkContainerType(args[0]);\n return queryAllByAttribute(getTestIdAttribute(), ...args);\n};\nconst getMultipleError = (c, id) => \"Found multiple elements by: [\" + getTestIdAttribute() + \"=\\\"\" + id + \"\\\"]\";\nconst getMissingError = (c, id) => \"Unable to find an element by: [\" + getTestIdAttribute() + \"=\\\"\" + id + \"\\\"]\";\nconst queryAllByTestIdWithSuggestions = wrapAllByQueryWithSuggestion(queryAllByTestId, queryAllByTestId.name, 'queryAll');\nconst [queryByTestId, getAllByTestId, getByTestId, findAllByTestId, findByTestId] = buildQueries(queryAllByTestId, getMultipleError, getMissingError);\n\nvar queries = /*#__PURE__*/Object.freeze({\n __proto__: null,\n queryAllByLabelText: queryAllByLabelTextWithSuggestions,\n queryByLabelText: queryByLabelText,\n getAllByLabelText: getAllByLabelTextWithSuggestions,\n getByLabelText: getByLabelTextWithSuggestions,\n findAllByLabelText: findAllByLabelText,\n findByLabelText: findByLabelText,\n queryByPlaceholderText: queryByPlaceholderText,\n queryAllByPlaceholderText: queryAllByPlaceholderTextWithSuggestions,\n getByPlaceholderText: getByPlaceholderText,\n getAllByPlaceholderText: getAllByPlaceholderText,\n findAllByPlaceholderText: findAllByPlaceholderText,\n findByPlaceholderText: findByPlaceholderText,\n queryByText: queryByText,\n queryAllByText: queryAllByTextWithSuggestions,\n getByText: getByText,\n getAllByText: getAllByText,\n findAllByText: findAllByText,\n findByText: findByText,\n queryByDisplayValue: queryByDisplayValue,\n queryAllByDisplayValue: queryAllByDisplayValueWithSuggestions,\n getByDisplayValue: getByDisplayValue,\n getAllByDisplayValue: getAllByDisplayValue,\n findAllByDisplayValue: findAllByDisplayValue,\n findByDisplayValue: findByDisplayValue,\n queryByAltText: queryByAltText,\n queryAllByAltText: queryAllByAltTextWithSuggestions,\n getByAltText: getByAltText,\n getAllByAltText: getAllByAltText,\n findAllByAltText: findAllByAltText,\n findByAltText: findByAltText,\n queryByTitle: queryByTitle,\n queryAllByTitle: queryAllByTitleWithSuggestions,\n getByTitle: getByTitle,\n getAllByTitle: getAllByTitle,\n findAllByTitle: findAllByTitle,\n findByTitle: findByTitle,\n queryByRole: queryByRole,\n queryAllByRole: queryAllByRoleWithSuggestions,\n getAllByRole: getAllByRole,\n getByRole: getByRole,\n findAllByRole: findAllByRole,\n findByRole: findByRole,\n queryByTestId: queryByTestId,\n queryAllByTestId: queryAllByTestIdWithSuggestions,\n getByTestId: getByTestId,\n getAllByTestId: getAllByTestId,\n findAllByTestId: findAllByTestId,\n findByTestId: findByTestId\n});\n\n/**\n * @typedef {{[key: string]: Function}} FuncMap\n */\n\n/**\n * @param {HTMLElement} element container\n * @param {FuncMap} queries object of functions\n * @param {Object} initialValue for reducer\n * @returns {FuncMap} returns object of functions bound to container\n */\nfunction getQueriesForElement(element, queries$1, initialValue) {\n if (queries$1 === void 0) {\n queries$1 = queries;\n }\n if (initialValue === void 0) {\n initialValue = {};\n }\n return Object.keys(queries$1).reduce((helpers, key) => {\n const fn = queries$1[key];\n helpers[key] = fn.bind(null, element);\n return helpers;\n }, initialValue);\n}\n\nconst isRemoved = result => !result || Array.isArray(result) && !result.length;\n\n// Check if the element is not present.\n// As the name implies, waitForElementToBeRemoved should check `present` --> `removed`\nfunction initialCheck(elements) {\n if (isRemoved(elements)) {\n throw new Error('The element(s) given to waitForElementToBeRemoved are already removed. waitForElementToBeRemoved requires that the element(s) exist(s) before waiting for removal.');\n }\n}\nasync function waitForElementToBeRemoved(callback, options) {\n // created here so we get a nice stacktrace\n const timeoutError = new Error('Timed out in waitForElementToBeRemoved.');\n if (typeof callback !== 'function') {\n initialCheck(callback);\n const elements = Array.isArray(callback) ? callback : [callback];\n const getRemainingElements = elements.map(element => {\n let parent = element.parentElement;\n if (parent === null) return () => null;\n while (parent.parentElement) parent = parent.parentElement;\n return () => parent.contains(element) ? element : null;\n });\n callback = () => getRemainingElements.map(c => c()).filter(Boolean);\n }\n initialCheck(callback());\n return waitForWrapper(() => {\n let result;\n try {\n result = callback();\n } catch (error) {\n if (error.name === 'TestingLibraryElementError') {\n return undefined;\n }\n throw error;\n }\n if (!isRemoved(result)) {\n throw timeoutError;\n }\n return undefined;\n }, options);\n}\n\n/*\neslint\n require-await: \"off\"\n*/\n\nconst eventMap = {\n // Clipboard Events\n copy: {\n EventType: 'ClipboardEvent',\n defaultInit: {\n bubbles: true,\n cancelable: true,\n composed: true\n }\n },\n cut: {\n EventType: 'ClipboardEvent',\n defaultInit: {\n bubbles: true,\n cancelable: true,\n composed: true\n }\n },\n paste: {\n EventType: 'ClipboardEvent',\n defaultInit: {\n bubbles: true,\n cancelable: true,\n composed: true\n }\n },\n // Composition Events\n compositionEnd: {\n EventType: 'CompositionEvent',\n defaultInit: {\n bubbles: true,\n cancelable: true,\n composed: true\n }\n },\n compositionStart: {\n EventType: 'CompositionEvent',\n defaultInit: {\n bubbles: true,\n cancelable: true,\n composed: true\n }\n },\n compositionUpdate: {\n EventType: 'CompositionEvent',\n defaultInit: {\n bubbles: true,\n cancelable: true,\n composed: true\n }\n },\n // Keyboard Events\n keyDown: {\n EventType: 'KeyboardEvent',\n defaultInit: {\n bubbles: true,\n cancelable: true,\n charCode: 0,\n composed: true\n }\n },\n keyPress: {\n EventType: 'KeyboardEvent',\n defaultInit: {\n bubbles: true,\n cancelable: true,\n charCode: 0,\n composed: true\n }\n },\n keyUp: {\n EventType: 'KeyboardEvent',\n defaultInit: {\n bubbles: true,\n cancelable: true,\n charCode: 0,\n composed: true\n }\n },\n // Focus Events\n focus: {\n EventType: 'FocusEvent',\n defaultInit: {\n bubbles: false,\n cancelable: false,\n composed: true\n }\n },\n blur: {\n EventType: 'FocusEvent',\n defaultInit: {\n bubbles: false,\n cancelable: false,\n composed: true\n }\n },\n focusIn: {\n EventType: 'FocusEvent',\n defaultInit: {\n bubbles: true,\n cancelable: false,\n composed: true\n }\n },\n focusOut: {\n EventType: 'FocusEvent',\n defaultInit: {\n bubbles: true,\n cancelable: false,\n composed: true\n }\n },\n // Form Events\n change: {\n EventType: 'Event',\n defaultInit: {\n bubbles: true,\n cancelable: false\n }\n },\n input: {\n EventType: 'InputEvent',\n defaultInit: {\n bubbles: true,\n cancelable: false,\n composed: true\n }\n },\n invalid: {\n EventType: 'Event',\n defaultInit: {\n bubbles: false,\n cancelable: true\n }\n },\n submit: {\n EventType: 'Event',\n defaultInit: {\n bubbles: true,\n cancelable: true\n }\n },\n reset: {\n EventType: 'Event',\n defaultInit: {\n bubbles: true,\n cancelable: true\n }\n },\n // Mouse Events\n click: {\n EventType: 'MouseEvent',\n defaultInit: {\n bubbles: true,\n cancelable: true,\n button: 0,\n composed: true\n }\n },\n contextMenu: {\n EventType: 'MouseEvent',\n defaultInit: {\n bubbles: true,\n cancelable: true,\n composed: true\n }\n },\n dblClick: {\n EventType: 'MouseEvent',\n defaultInit: {\n bubbles: true,\n cancelable: true,\n composed: true\n }\n },\n drag: {\n EventType: 'DragEvent',\n defaultInit: {\n bubbles: true,\n cancelable: true,\n composed: true\n }\n },\n dragEnd: {\n EventType: 'DragEvent',\n defaultInit: {\n bubbles: true,\n cancelable: false,\n composed: true\n }\n },\n dragEnter: {\n EventType: 'DragEvent',\n defaultInit: {\n bubbles: true,\n cancelable: true,\n composed: true\n }\n },\n dragExit: {\n EventType: 'DragEvent',\n defaultInit: {\n bubbles: true,\n cancelable: false,\n composed: true\n }\n },\n dragLeave: {\n EventType: 'DragEvent',\n defaultInit: {\n bubbles: true,\n cancelable: false,\n composed: true\n }\n },\n dragOver: {\n EventType: 'DragEvent',\n defaultInit: {\n bubbles: true,\n cancelable: true,\n composed: true\n }\n },\n dragStart: {\n EventType: 'DragEvent',\n defaultInit: {\n bubbles: true,\n cancelable: true,\n composed: true\n }\n },\n drop: {\n EventType: 'DragEvent',\n defaultInit: {\n bubbles: true,\n cancelable: true,\n composed: true\n }\n },\n mouseDown: {\n EventType: 'MouseEvent',\n defaultInit: {\n bubbles: true,\n cancelable: true,\n composed: true\n }\n },\n mouseEnter: {\n EventType: 'MouseEvent',\n defaultInit: {\n bubbles: false,\n cancelable: false,\n composed: true\n }\n },\n mouseLeave: {\n EventType: 'MouseEvent',\n defaultInit: {\n bubbles: false,\n cancelable: false,\n composed: true\n }\n },\n mouseMove: {\n EventType: 'MouseEvent',\n defaultInit: {\n bubbles: true,\n cancelable: true,\n composed: true\n }\n },\n mouseOut: {\n EventType: 'MouseEvent',\n defaultInit: {\n bubbles: true,\n cancelable: true,\n composed: true\n }\n },\n mouseOver: {\n EventType: 'MouseEvent',\n defaultInit: {\n bubbles: true,\n cancelable: true,\n composed: true\n }\n },\n mouseUp: {\n EventType: 'MouseEvent',\n defaultInit: {\n bubbles: true,\n cancelable: true,\n composed: true\n }\n },\n // Selection Events\n select: {\n EventType: 'Event',\n defaultInit: {\n bubbles: true,\n cancelable: false\n }\n },\n // Touch Events\n touchCancel: {\n EventType: 'TouchEvent',\n defaultInit: {\n bubbles: true,\n cancelable: false,\n composed: true\n }\n },\n touchEnd: {\n EventType: 'TouchEvent',\n defaultInit: {\n bubbles: true,\n cancelable: true,\n composed: true\n }\n },\n touchMove: {\n EventType: 'TouchEvent',\n defaultInit: {\n bubbles: true,\n cancelable: true,\n composed: true\n }\n },\n touchStart: {\n EventType: 'TouchEvent',\n defaultInit: {\n bubbles: true,\n cancelable: true,\n composed: true\n }\n },\n // UI Events\n resize: {\n EventType: 'UIEvent',\n defaultInit: {\n bubbles: false,\n cancelable: false\n }\n },\n scroll: {\n EventType: 'UIEvent',\n defaultInit: {\n bubbles: false,\n cancelable: false\n }\n },\n // Wheel Events\n wheel: {\n EventType: 'WheelEvent',\n defaultInit: {\n bubbles: true,\n cancelable: true,\n composed: true\n }\n },\n // Media Events\n abort: {\n EventType: 'Event',\n defaultInit: {\n bubbles: false,\n cancelable: false\n }\n },\n canPlay: {\n EventType: 'Event',\n defaultInit: {\n bubbles: false,\n cancelable: false\n }\n },\n canPlayThrough: {\n EventType: 'Event',\n defaultInit: {\n bubbles: false,\n cancelable: false\n }\n },\n durationChange: {\n EventType: 'Event',\n defaultInit: {\n bubbles: false,\n cancelable: false\n }\n },\n emptied: {\n EventType: 'Event',\n defaultInit: {\n bubbles: false,\n cancelable: false\n }\n },\n encrypted: {\n EventType: 'Event',\n defaultInit: {\n bubbles: false,\n cancelable: false\n }\n },\n ended: {\n EventType: 'Event',\n defaultInit: {\n bubbles: false,\n cancelable: false\n }\n },\n loadedData: {\n EventType: 'Event',\n defaultInit: {\n bubbles: false,\n cancelable: false\n }\n },\n loadedMetadata: {\n EventType: 'Event',\n defaultInit: {\n bubbles: false,\n cancelable: false\n }\n },\n loadStart: {\n EventType: 'ProgressEvent',\n defaultInit: {\n bubbles: false,\n cancelable: false\n }\n },\n pause: {\n EventType: 'Event',\n defaultInit: {\n bubbles: false,\n cancelable: false\n }\n },\n play: {\n EventType: 'Event',\n defaultInit: {\n bubbles: false,\n cancelable: false\n }\n },\n playing: {\n EventType: 'Event',\n defaultInit: {\n bubbles: false,\n cancelable: false\n }\n },\n progress: {\n EventType: 'ProgressEvent',\n defaultInit: {\n bubbles: false,\n cancelable: false\n }\n },\n rateChange: {\n EventType: 'Event',\n defaultInit: {\n bubbles: false,\n cancelable: false\n }\n },\n seeked: {\n EventType: 'Event',\n defaultInit: {\n bubbles: false,\n cancelable: false\n }\n },\n seeking: {\n EventType: 'Event',\n defaultInit: {\n bubbles: false,\n cancelable: false\n }\n },\n stalled: {\n EventType: 'Event',\n defaultInit: {\n bubbles: false,\n cancelable: false\n }\n },\n suspend: {\n EventType: 'Event',\n defaultInit: {\n bubbles: false,\n cancelable: false\n }\n },\n timeUpdate: {\n EventType: 'Event',\n defaultInit: {\n bubbles: false,\n cancelable: false\n }\n },\n volumeChange: {\n EventType: 'Event',\n defaultInit: {\n bubbles: false,\n cancelable: false\n }\n },\n waiting: {\n EventType: 'Event',\n defaultInit: {\n bubbles: false,\n cancelable: false\n }\n },\n // Events\n load: {\n // TODO: load events can be UIEvent or Event depending on what generated them\n // This is where this abstraction breaks down.\n // But the common targets are <img />, <script /> and window.\n // Neither of these targets receive a UIEvent\n EventType: 'Event',\n defaultInit: {\n bubbles: false,\n cancelable: false\n }\n },\n error: {\n EventType: 'Event',\n defaultInit: {\n bubbles: false,\n cancelable: false\n }\n },\n // Animation Events\n animationStart: {\n EventType: 'AnimationEvent',\n defaultInit: {\n bubbles: true,\n cancelable: false\n }\n },\n animationEnd: {\n EventType: 'AnimationEvent',\n defaultInit: {\n bubbles: true,\n cancelable: false\n }\n },\n animationIteration: {\n EventType: 'AnimationEvent',\n defaultInit: {\n bubbles: true,\n cancelable: false\n }\n },\n // Transition Events\n transitionCancel: {\n EventType: 'TransitionEvent',\n defaultInit: {\n bubbles: true,\n cancelable: false\n }\n },\n transitionEnd: {\n EventType: 'TransitionEvent',\n defaultInit: {\n bubbles: true,\n cancelable: true\n }\n },\n transitionRun: {\n EventType: 'TransitionEvent',\n defaultInit: {\n bubbles: true,\n cancelable: false\n }\n },\n transitionStart: {\n EventType: 'TransitionEvent',\n defaultInit: {\n bubbles: true,\n cancelable: false\n }\n },\n // pointer events\n pointerOver: {\n EventType: 'PointerEvent',\n defaultInit: {\n bubbles: true,\n cancelable: true,\n composed: true\n }\n },\n pointerEnter: {\n EventType: 'PointerEvent',\n defaultInit: {\n bubbles: false,\n cancelable: false\n }\n },\n pointerDown: {\n EventType: 'PointerEvent',\n defaultInit: {\n bubbles: true,\n cancelable: true,\n composed: true\n }\n },\n pointerMove: {\n EventType: 'PointerEvent',\n defaultInit: {\n bubbles: true,\n cancelable: true,\n composed: true\n }\n },\n pointerUp: {\n EventType: 'PointerEvent',\n defaultInit: {\n bubbles: true,\n cancelable: true,\n composed: true\n }\n },\n pointerCancel: {\n EventType: 'PointerEvent',\n defaultInit: {\n bubbles: true,\n cancelable: false,\n composed: true\n }\n },\n pointerOut: {\n EventType: 'PointerEvent',\n defaultInit: {\n bubbles: true,\n cancelable: true,\n composed: true\n }\n },\n pointerLeave: {\n EventType: 'PointerEvent',\n defaultInit: {\n bubbles: false,\n cancelable: false\n }\n },\n gotPointerCapture: {\n EventType: 'PointerEvent',\n defaultInit: {\n bubbles: true,\n cancelable: false,\n composed: true\n }\n },\n lostPointerCapture: {\n EventType: 'PointerEvent',\n defaultInit: {\n bubbles: true,\n cancelable: false,\n composed: true\n }\n },\n // history events\n popState: {\n EventType: 'PopStateEvent',\n defaultInit: {\n bubbles: true,\n cancelable: false\n }\n },\n // window events\n offline: {\n EventType: 'Event',\n defaultInit: {\n bubbles: false,\n cancelable: false\n }\n },\n online: {\n EventType: 'Event',\n defaultInit: {\n bubbles: false,\n cancelable: false\n }\n },\n pageHide: {\n EventType: 'PageTransitionEvent',\n defaultInit: {\n bubbles: true,\n cancelable: true\n }\n },\n pageShow: {\n EventType: 'PageTransitionEvent',\n defaultInit: {\n bubbles: true,\n cancelable: true\n }\n }\n};\nconst eventAliasMap = {\n doubleClick: 'dblClick'\n};\n\nfunction fireEvent(element, event) {\n return getConfig().eventWrapper(() => {\n if (!event) {\n throw new Error(\"Unable to fire an event - please provide an event object.\");\n }\n if (!element) {\n throw new Error(\"Unable to fire a \\\"\" + event.type + \"\\\" event - please provide a DOM element.\");\n }\n return element.dispatchEvent(event);\n });\n}\nfunction createEvent(eventName, node, init, _temp) {\n let {\n EventType = 'Event',\n defaultInit = {}\n } = _temp === void 0 ? {} : _temp;\n if (!node) {\n throw new Error(\"Unable to fire a \\\"\" + eventName + \"\\\" event - please provide a DOM element.\");\n }\n const eventInit = {\n ...defaultInit,\n ...init\n };\n const {\n target: {\n value,\n files,\n ...targetProperties\n } = {}\n } = eventInit;\n if (value !== undefined) {\n setNativeValue(node, value);\n }\n if (files !== undefined) {\n // input.files is a read-only property so this is not allowed:\n // input.files = [file]\n // so we have to use this workaround to set the property\n Object.defineProperty(node, 'files', {\n configurable: true,\n enumerable: true,\n writable: true,\n value: files\n });\n }\n Object.assign(node, targetProperties);\n const window = getWindowFromNode(node);\n const EventConstructor = window[EventType] || window.Event;\n let event;\n /* istanbul ignore else */\n if (typeof EventConstructor === 'function') {\n event = new EventConstructor(eventName, eventInit);\n } else {\n // IE11 polyfill from https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent/CustomEvent#Polyfill\n event = window.document.createEvent(EventType);\n const {\n bubbles,\n cancelable,\n detail,\n ...otherInit\n } = eventInit;\n event.initEvent(eventName, bubbles, cancelable, detail);\n Object.keys(otherInit).forEach(eventKey => {\n event[eventKey] = otherInit[eventKey];\n });\n }\n\n // DataTransfer is not supported in jsdom: https://github.com/jsdom/jsdom/issues/1568\n const dataTransferProperties = ['dataTransfer', 'clipboardData'];\n dataTransferProperties.forEach(dataTransferKey => {\n const dataTransferValue = eventInit[dataTransferKey];\n if (typeof dataTransferValue === 'object') {\n /* istanbul ignore if */\n if (typeof window.DataTransfer === 'function') {\n Object.defineProperty(event, dataTransferKey, {\n value: Object.getOwnPropertyNames(dataTransferValue).reduce((acc, propName) => {\n Object.defineProperty(acc, propName, {\n value: dataTransferValue[propName]\n });\n return acc;\n }, new window.DataTransfer())\n });\n } else {\n Object.defineProperty(event, dataTransferKey, {\n value: dataTransferValue\n });\n }\n }\n });\n return event;\n}\nObject.keys(eventMap).forEach(key => {\n const {\n EventType,\n defaultInit\n } = eventMap[key];\n const eventName = key.toLowerCase();\n createEvent[key] = (node, init) => createEvent(eventName, node, init, {\n EventType,\n defaultInit\n });\n fireEvent[key] = (node, init) => fireEvent(node, createEvent[key](node, init));\n});\n\n// function written after some investigation here:\n// https://github.com/facebook/react/issues/10135#issuecomment-401496776\nfunction setNativeValue(element, value) {\n const {\n set: valueSetter\n } = Object.getOwnPropertyDescriptor(element, 'value') || {};\n const prototype = Object.getPrototypeOf(element);\n const {\n set: prototypeValueSetter\n } = Object.getOwnPropertyDescriptor(prototype, 'value') || {};\n if (prototypeValueSetter && valueSetter !== prototypeValueSetter) {\n prototypeValueSetter.call(element, value);\n } else {\n /* istanbul ignore if */\n // eslint-disable-next-line no-lonely-if -- Can't be ignored by istanbul otherwise\n if (valueSetter) {\n valueSetter.call(element, value);\n } else {\n throw new Error('The given element does not have a value setter');\n }\n }\n}\nObject.keys(eventAliasMap).forEach(aliasKey => {\n const key = eventAliasMap[aliasKey];\n fireEvent[aliasKey] = function () {\n return fireEvent[key](...arguments);\n };\n});\n\n/* eslint complexity:[\"error\", 9] */\n\n// WARNING: `lz-string` only has a default export but statically we assume named exports are allowed\nfunction unindent(string) {\n // remove white spaces first, to save a few bytes.\n // testing-playground will reformat on load any ways.\n return string.replace(/[ \\t]*[\\n][ \\t]*/g, '\\n');\n}\nfunction encode(value) {\n return lzString.compressToEncodedURIComponent(unindent(value));\n}\nfunction getPlaygroundUrl(markup) {\n return \"https://testing-playground.com/#markup=\" + encode(markup);\n}\nconst debug = (element, maxLength, options) => Array.isArray(element) ? element.forEach(el => logDOM(el, maxLength, options)) : logDOM(element, maxLength, options);\nconst logTestingPlaygroundURL = function (element) {\n if (element === void 0) {\n element = getDocument().body;\n }\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (!element || !('innerHTML' in element)) {\n console.log(\"The element you're providing isn't a valid DOM element.\");\n return;\n }\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (!element.innerHTML) {\n console.log(\"The provided element doesn't have any children.\");\n return;\n }\n const playgroundUrl = getPlaygroundUrl(element.innerHTML);\n console.log(\"Open this URL in your browser\\n\\n\" + playgroundUrl);\n return playgroundUrl;\n};\nconst initialValue = {\n debug,\n logTestingPlaygroundURL\n};\nconst screen = typeof document !== 'undefined' && document.body // eslint-disable-line @typescript-eslint/no-unnecessary-condition\n? getQueriesForElement(document.body, queries, initialValue) : Object.keys(queries).reduce((helpers, key) => {\n // `key` is for all intents and purposes the type of keyof `helpers`, which itself is the type of `initialValue` plus incoming properties from `queries`\n // if `Object.keys(something)` returned Array<keyof typeof something> this explicit type assertion would not be necessary\n // see https://stackoverflow.com/questions/55012174/why-doesnt-object-keys-return-a-keyof-type-in-typescript\n helpers[key] = () => {\n throw new TypeError('For queries bound to document.body a global document has to be available... Learn more: https://testing-library.com/s/screen-global-error');\n };\n return helpers;\n}, initialValue);\n\nexport { buildQueries, configure, createEvent, findAllByAltText, findAllByDisplayValue, findAllByLabelText, findAllByPlaceholderText, findAllByRole, findAllByTestId, findAllByText, findAllByTitle, findByAltText, findByDisplayValue, findByLabelText, findByPlaceholderText, findByRole, findByTestId, findByText, findByTitle, fireEvent, getAllByAltText, getAllByDisplayValue, getAllByLabelTextWithSuggestions as getAllByLabelText, getAllByPlaceholderText, getAllByRole, getAllByTestId, getAllByText, getAllByTitle, getByAltText, getByDisplayValue, getByLabelTextWithSuggestions as getByLabelText, getByPlaceholderText, getByRole, getByTestId, getByText, getByTitle, getConfig, getDefaultNormalizer, getElementError, getMultipleElementsFoundError, getNodeText, getQueriesForElement, getRoles, getSuggestedQuery, isInaccessible, logDOM, logRoles, makeFindQuery, makeGetAllQuery, makeSingleQuery, prettyDOM, queries, queryAllByAltTextWithSuggestions as queryAllByAltText, queryAllByAttribute, queryAllByDisplayValueWithSuggestions as queryAllByDisplayValue, queryAllByLabelTextWithSuggestions as queryAllByLabelText, queryAllByPlaceholderTextWithSuggestions as queryAllByPlaceholderText, queryAllByRoleWithSuggestions as queryAllByRole, queryAllByTestIdWithSuggestions as queryAllByTestId, queryAllByTextWithSuggestions as queryAllByText, queryAllByTitleWithSuggestions as queryAllByTitle, queryByAltText, queryByAttribute, queryByDisplayValue, queryByLabelText, queryByPlaceholderText, queryByRole, queryByTestId, queryByText, queryByTitle, queryHelpers, screen, waitForWrapper as waitFor, waitForElementToBeRemoved, getQueriesForElement as within, wrapAllByQueryWithSuggestion, wrapSingleQueryWithSuggestion };\n","import * as React from 'react';\nimport * as DeprecatedReactTestUtils from 'react-dom/test-utils';\nimport ReactDOM from 'react-dom';\nimport * as ReactDOMClient from 'react-dom/client';\nimport { fireEvent as fireEvent$1, getConfig as getConfig$1, configure as configure$1, prettyDOM, getQueriesForElement } from '@testing-library/dom';\nexport * from '@testing-library/dom';\n\nconst reactAct = typeof React.act === 'function' ? React.act : DeprecatedReactTestUtils.act;\nfunction getGlobalThis() {\n /* istanbul ignore else */\n if (typeof globalThis !== 'undefined') {\n return globalThis;\n }\n /* istanbul ignore next */\n if (typeof self !== 'undefined') {\n return self;\n }\n /* istanbul ignore next */\n if (typeof window !== 'undefined') {\n return window;\n }\n /* istanbul ignore next */\n if (typeof global !== 'undefined') {\n return global;\n }\n /* istanbul ignore next */\n throw new Error('unable to locate global object');\n}\nfunction setIsReactActEnvironment(isReactActEnvironment) {\n getGlobalThis().IS_REACT_ACT_ENVIRONMENT = isReactActEnvironment;\n}\nfunction getIsReactActEnvironment() {\n return getGlobalThis().IS_REACT_ACT_ENVIRONMENT;\n}\nfunction withGlobalActEnvironment(actImplementation) {\n return callback => {\n const previousActEnvironment = getIsReactActEnvironment();\n setIsReactActEnvironment(true);\n try {\n // The return value of `act` is always a thenable.\n let callbackNeedsToBeAwaited = false;\n const actResult = actImplementation(() => {\n const result = callback();\n if (result !== null && typeof result === 'object' && typeof result.then === 'function') {\n callbackNeedsToBeAwaited = true;\n }\n return result;\n });\n if (callbackNeedsToBeAwaited) {\n const thenable = actResult;\n return {\n then: (resolve, reject) => {\n thenable.then(returnValue => {\n setIsReactActEnvironment(previousActEnvironment);\n resolve(returnValue);\n }, error => {\n setIsReactActEnvironment(previousActEnvironment);\n reject(error);\n });\n }\n };\n } else {\n setIsReactActEnvironment(previousActEnvironment);\n return actResult;\n }\n } catch (error) {\n // Can't be a `finally {}` block since we don't know if we have to immediately restore IS_REACT_ACT_ENVIRONMENT\n // or if we have to await the callback first.\n setIsReactActEnvironment(previousActEnvironment);\n throw error;\n }\n };\n}\nconst act = withGlobalActEnvironment(reactAct);\n\n/* eslint no-console:0 */\n\n// react-testing-library's version of fireEvent will call\n// dom-testing-library's version of fireEvent. The reason\n// we make this distinction however is because we have\n// a few extra events that work a bit differently\nconst fireEvent = function () {\n return fireEvent$1(...arguments);\n};\nObject.keys(fireEvent$1).forEach(key => {\n fireEvent[key] = function () {\n return fireEvent$1[key](...arguments);\n };\n});\n\n// React event system tracks native mouseOver/mouseOut events for\n// running onMouseEnter/onMouseLeave handlers\n// @link https://github.com/facebook/react/blob/b87aabdfe1b7461e7331abb3601d9e6bb27544bc/packages/react-dom/src/events/EnterLeaveEventPlugin.js#L24-L31\nconst mouseEnter = fireEvent.mouseEnter;\nconst mouseLeave = fireEvent.mouseLeave;\nfireEvent.mouseEnter = function () {\n mouseEnter(...arguments);\n return fireEvent.mouseOver(...arguments);\n};\nfireEvent.mouseLeave = function () {\n mouseLeave(...arguments);\n return fireEvent.mouseOut(...arguments);\n};\nconst pointerEnter = fireEvent.pointerEnter;\nconst pointerLeave = fireEvent.pointerLeave;\nfireEvent.pointerEnter = function () {\n pointerEnter(...arguments);\n return fireEvent.pointerOver(...arguments);\n};\nfireEvent.pointerLeave = function () {\n pointerLeave(...arguments);\n return fireEvent.pointerOut(...arguments);\n};\nconst select = fireEvent.select;\nfireEvent.select = (node, init) => {\n select(node, init);\n // React tracks this event only on focused inputs\n node.focus();\n\n // React creates this event when one of the following native events happens\n // - contextMenu\n // - mouseUp\n // - dragEnd\n // - keyUp\n // - keyDown\n // so we can use any here\n // @link https://github.com/facebook/react/blob/b87aabdfe1b7461e7331abb3601d9e6bb27544bc/packages/react-dom/src/events/SelectEventPlugin.js#L203-L224\n fireEvent.keyUp(node, init);\n};\n\n// React event system tracks native focusout/focusin events for\n// running blur/focus handlers\n// @link https://github.com/facebook/react/pull/19186\nconst blur = fireEvent.blur;\nconst focus = fireEvent.focus;\nfireEvent.blur = function () {\n fireEvent.focusOut(...arguments);\n return blur(...arguments);\n};\nfireEvent.focus = function () {\n fireEvent.focusIn(...arguments);\n return focus(...arguments);\n};\n\nlet configForRTL = {\n reactStrictMode: false\n};\nfunction getConfig() {\n return {\n ...getConfig$1(),\n ...configForRTL\n };\n}\nfunction configure(newConfig) {\n if (typeof newConfig === 'function') {\n // Pass the existing config out to the provided function\n // and accept a delta in return\n newConfig = newConfig(getConfig());\n }\n const {\n reactStrictMode,\n ...configForDTL\n } = newConfig;\n configure$1(configForDTL);\n configForRTL = {\n ...configForRTL,\n reactStrictMode\n };\n}\n\nfunction jestFakeTimersAreEnabled() {\n /* istanbul ignore else */\n if (typeof jest !== 'undefined' && jest !== null) {\n return (\n // legacy timers\n setTimeout._isMockFunction === true ||\n // modern timers\n // eslint-disable-next-line prefer-object-has-own -- No Object.hasOwn in all target environments we support.\n Object.prototype.hasOwnProperty.call(setTimeout, 'clock')\n );\n } // istanbul ignore next\n\n return false;\n}\nconfigure$1({\n unstable_advanceTimersWrapper: cb => {\n return act(cb);\n },\n // We just want to run `waitFor` without IS_REACT_ACT_ENVIRONMENT\n // But that's not necessarily how `asyncWrapper` is used since it's a public method.\n // Let's just hope nobody else is using it.\n asyncWrapper: async cb => {\n const previousActEnvironment = getIsReactActEnvironment();\n setIsReactActEnvironment(false);\n try {\n const result = await cb();\n // Drain microtask queue.\n // Otherwise we'll restore the previous act() environment, before we resolve the `waitFor` call.\n // The caller would have no chance to wrap the in-flight Promises in `act()`\n await new Promise(resolve => {\n setTimeout(() => {\n resolve();\n }, 0);\n if (jestFakeTimersAreEnabled()) {\n jest.advanceTimersByTime(0);\n }\n });\n return result;\n } finally {\n setIsReactActEnvironment(previousActEnvironment);\n }\n },\n eventWrapper: cb => {\n let result;\n act(() => {\n result = cb();\n });\n return result;\n }\n});\n\n// Ideally we'd just use a WeakMap where containers are keys and roots are values.\n// We use two variables so that we can bail out in constant time when we render with a new container (most common use case)\n/**\n * @type {Set<import('react-dom').Container>}\n */\nconst mountedContainers = new Set();\n/**\n * @type Array<{container: import('react-dom').Container, root: ReturnType<typeof createConcurrentRoot>}>\n */\nconst mountedRootEntries = [];\nfunction strictModeIfNeeded(innerElement, reactStrictMode) {\n return reactStrictMode ?? getConfig().reactStrictMode ? /*#__PURE__*/React.createElement(React.StrictMode, null, innerElement) : innerElement;\n}\nfunction wrapUiIfNeeded(innerElement, wrapperComponent) {\n return wrapperComponent ? /*#__PURE__*/React.createElement(wrapperComponent, null, innerElement) : innerElement;\n}\nfunction createConcurrentRoot(container, _ref) {\n let {\n hydrate,\n onCaughtError,\n onRecoverableError,\n ui,\n wrapper: WrapperComponent,\n reactStrictMode\n } = _ref;\n let root;\n if (hydrate) {\n act(() => {\n root = ReactDOMClient.hydrateRoot(container, strictModeIfNeeded(wrapUiIfNeeded(ui, WrapperComponent), reactStrictMode), {\n onCaughtError,\n onRecoverableError\n });\n });\n } else {\n root = ReactDOMClient.createRoot(container, {\n onCaughtError,\n onRecoverableError\n });\n }\n return {\n hydrate() {\n /* istanbul ignore if */\n if (!hydrate) {\n throw new Error('Attempted to hydrate a non-hydrateable root. This is a bug in `@testing-library/react`.');\n }\n // Nothing to do since hydration happens when creating the root object.\n },\n render(element) {\n root.render(element);\n },\n unmount() {\n root.unmount();\n }\n };\n}\nfunction createLegacyRoot(container) {\n return {\n hydrate(element) {\n ReactDOM.hydrate(element, container);\n },\n render(element) {\n ReactDOM.render(element, container);\n },\n unmount() {\n ReactDOM.unmountComponentAtNode(container);\n }\n };\n}\nfunction renderRoot(ui, _ref2) {\n let {\n baseElement,\n container,\n hydrate,\n queries,\n root,\n wrapper: WrapperComponent,\n reactStrictMode\n } = _ref2;\n act(() => {\n if (hydrate) {\n root.hydrate(strictModeIfNeeded(wrapUiIfNeeded(ui, WrapperComponent), reactStrictMode), container);\n } else {\n root.render(strictModeIfNeeded(wrapUiIfNeeded(ui, WrapperComponent), reactStrictMode), container);\n }\n });\n return {\n container,\n baseElement,\n debug: function (el, maxLength, options) {\n if (el === void 0) {\n el = baseElement;\n }\n return Array.isArray(el) ?\n // eslint-disable-next-line no-console\n el.forEach(e => console.log(prettyDOM(e, maxLength, options))) :\n // eslint-disable-next-line no-console,\n console.log(prettyDOM(el, maxLength, options));\n },\n unmount: () => {\n act(() => {\n root.unmount();\n });\n },\n rerender: rerenderUi => {\n renderRoot(rerenderUi, {\n container,\n baseElement,\n root,\n wrapper: WrapperComponent,\n reactStrictMode\n });\n // Intentionally do not return anything to avoid unnecessarily complicating the API.\n // folks can use all the same utilities we return in the first place that are bound to the container\n },\n asFragment: () => {\n /* istanbul ignore else (old jsdom limitation) */\n if (typeof document.createRange === 'function') {\n return document.createRange().createContextualFragment(container.innerHTML);\n } else {\n const template = document.createElement('template');\n template.innerHTML = container.innerHTML;\n return template.content;\n }\n },\n ...getQueriesForElement(baseElement, queries)\n };\n}\nfunction render(ui, _temp) {\n let {\n container,\n baseElement = container,\n legacyRoot = false,\n onCaughtError,\n onUncaughtError,\n onRecoverableError,\n queries,\n hydrate = false,\n wrapper,\n reactStrictMode\n } = _temp === void 0 ? {} : _temp;\n if (onUncaughtError !== undefined) {\n throw new Error('onUncaughtError is not supported. The `render` call will already throw on uncaught errors.');\n }\n if (legacyRoot && typeof ReactDOM.render !== 'function') {\n const error = new Error('`legacyRoot: true` is not supported in this version of React. ' + 'If your app runs React 19 or later, you should remove this flag. ' + 'If your app runs React 18 or earlier, visit https://react.dev/blog/2022/03/08/react-18-upgrade-guide for upgrade instructions.');\n Error.captureStackTrace(error, render);\n throw error;\n }\n if (!baseElement) {\n // default to document.body instead of documentElement to avoid output of potentially-large\n // head elements (such as JSS style blocks) in debug output\n baseElement = document.body;\n }\n if (!container) {\n container = baseElement.appendChild(document.createElement('div'));\n }\n let root;\n // eslint-disable-next-line no-negated-condition -- we want to map the evolution of this over time. The root is created first. Only later is it re-used so we don't want to read the case that happens later first.\n if (!mountedContainers.has(container)) {\n const createRootImpl = legacyRoot ? createLegacyRoot : createConcurrentRoot;\n root = createRootImpl(container, {\n hydrate,\n onCaughtError,\n onRecoverableError,\n ui,\n wrapper,\n reactStrictMode\n });\n mountedRootEntries.push({\n container,\n root\n });\n // we'll add it to the mounted containers regardless of whether it's actually\n // added to document.body so the cleanup method works regardless of whether\n // they're passing us a custom container or not.\n mountedContainers.add(container);\n } else {\n mountedRootEntries.forEach(rootEntry => {\n // Else is unreachable since `mountedContainers` has the `container`.\n // Only reachable if one would accidentally add the container to `mountedContainers` but not the root to `mountedRootEntries`\n /* istanbul ignore else */\n if (rootEntry.container === container) {\n root = rootEntry.root;\n }\n });\n }\n return renderRoot(ui, {\n container,\n baseElement,\n queries,\n hydrate,\n wrapper,\n root,\n reactStrictMode\n });\n}\nfunction cleanup() {\n mountedRootEntries.forEach(_ref3 => {\n let {\n root,\n container\n } = _ref3;\n act(() => {\n root.unmount();\n });\n if (container.parentNode === document.body) {\n document.body.removeChild(container);\n }\n });\n mountedRootEntries.length = 0;\n mountedContainers.clear();\n}\nfunction renderHook(renderCallback, options) {\n if (options === void 0) {\n options = {};\n }\n const {\n initialProps,\n ...renderOptions\n } = options;\n if (renderOptions.legacyRoot && typeof ReactDOM.render !== 'function') {\n const error = new Error('`legacyRoot: true` is not supported in this version of React. ' + 'If your app runs React 19 or later, you should remove this flag. ' + 'If your app runs React 18 or earlier, visit https://react.dev/blog/2022/03/08/react-18-upgrade-guide for upgrade instructions.');\n Error.captureStackTrace(error, renderHook);\n throw error;\n }\n const result = /*#__PURE__*/React.createRef();\n function TestComponent(_ref4) {\n let {\n renderCallbackProps\n } = _ref4;\n const pendingResult = renderCallback(renderCallbackProps);\n React.useEffect(() => {\n result.current = pendingResult;\n });\n return null;\n }\n const {\n rerender: baseRerender,\n unmount\n } = render(/*#__PURE__*/React.createElement(TestComponent, {\n renderCallbackProps: initialProps\n }), renderOptions);\n function rerender(rerenderCallbackProps) {\n return baseRerender(/*#__PURE__*/React.createElement(TestComponent, {\n renderCallbackProps: rerenderCallbackProps\n }));\n }\n return {\n result,\n rerender,\n unmount\n };\n}\n\n/* eslint func-name-matching:0 */\n\n// if we're running in a test runner that supports afterEach\n// or teardown then we'll automatically run cleanup afterEach test\n// this ensures that tests run in isolation from each other\n// if you don't like this then either import the `pure` module\n// or set the RTL_SKIP_AUTO_CLEANUP env variable to 'true'.\nif (typeof process === 'undefined' || !process.env?.RTL_SKIP_AUTO_CLEANUP) {\n // ignore teardown() in code coverage because Jest does not support it\n /* istanbul ignore else */\n if (typeof afterEach === 'function') {\n afterEach(() => {\n cleanup();\n });\n } else if (typeof teardown === 'function') {\n // Block is guarded by `typeof` check.\n // eslint does not support `typeof` guards.\n // eslint-disable-next-line no-undef\n teardown(() => {\n cleanup();\n });\n }\n\n // No test setup with other test runners available\n /* istanbul ignore else */\n if (typeof beforeAll === 'function' && typeof afterAll === 'function') {\n // This matches the behavior of React < 18.\n let previousIsReactActEnvironment = getIsReactActEnvironment();\n beforeAll(() => {\n previousIsReactActEnvironment = getIsReactActEnvironment();\n setIsReactActEnvironment(true);\n });\n afterAll(() => {\n setIsReactActEnvironment(previousIsReactActEnvironment);\n });\n }\n}\n\nexport { act, cleanup, configure, fireEvent, getConfig, render, renderHook };\n","import { getSafeTimers } from '@vitest/utils';\n\nconst NAME_WORKER_STATE = \"__vitest_worker__\";\nfunction getWorkerState() {\n const workerState = globalThis[NAME_WORKER_STATE];\n if (!workerState) {\n const 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 throw new Error(errorMsg);\n }\n return workerState;\n}\nfunction provideWorkerState(context, state) {\n Object.defineProperty(context, NAME_WORKER_STATE, {\n value: state,\n configurable: true,\n writable: true,\n enumerable: false\n });\n return state;\n}\nfunction getCurrentEnvironment() {\n const state = getWorkerState();\n return state?.environment.name;\n}\nfunction isChildProcess() {\n return typeof process !== \"undefined\" && !!process.send;\n}\nfunction setProcessTitle(title) {\n try {\n process.title = `node (${title})`;\n } catch {\n }\n}\nfunction resetModules(modules, resetMocks = false) {\n const skipPaths = [\n // Vitest\n /\\/vitest\\/dist\\//,\n /\\/vite-node\\/dist\\//,\n // yarn's .store folder\n /vitest-virtual-\\w+\\/dist/,\n // cnpm\n /@vitest\\/dist/,\n // don't clear mocks\n ...!resetMocks ? [/^mock:/] : []\n ];\n modules.forEach((mod, path) => {\n if (skipPaths.some((re) => re.test(path))) {\n return;\n }\n modules.invalidateModule(mod);\n });\n}\nfunction waitNextTick() {\n const { setTimeout } = getSafeTimers();\n return new Promise((resolve) => setTimeout(resolve, 0));\n}\nasync function waitForImportsToResolve() {\n await waitNextTick();\n const state = getWorkerState();\n const promises = [];\n let resolvingCount = 0;\n for (const mod of state.moduleCache.values()) {\n if (mod.promise && !mod.evaluated) {\n promises.push(mod.promise);\n }\n if (mod.resolving) {\n resolvingCount++;\n }\n }\n if (!promises.length && !resolvingCount) {\n return;\n }\n await Promise.allSettled(promises);\n await 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 constructor(y, m, d, h, M, s, ms) {\n super();\n let date;\n switch (arguments.length) {\n case 0:\n if (now !== null) {\n date = new RealDate(now.valueOf());\n } else {\n date = new RealDate();\n }\n break;\n case 1:\n date = new RealDate(y);\n break;\n default:\n d = typeof d === \"undefined\" ? 1 : d;\n h = h || 0;\n M = M || 0;\n s = s || 0;\n ms = ms || 0;\n date = new RealDate(y, m, d, h, M, s, ms);\n break;\n }\n Object.setPrototypeOf(date, MockDate.prototype);\n return date;\n }\n}\nMockDate.UTC = RealDate.UTC;\nMockDate.now = function() {\n return new MockDate().valueOf();\n};\nMockDate.parse = function(dateString) {\n return RealDate.parse(dateString);\n};\nMockDate.toString = function() {\n return RealDate.toString();\n};\nfunction mockDate(date) {\n const dateObj = new RealDate(date.valueOf());\n if (Number.isNaN(dateObj.getTime())) {\n throw new TypeError(`mockdate: The time set is an invalid date: ${date}`);\n }\n globalThis.Date = MockDate;\n now = dateObj.valueOf();\n}\nfunction resetDate() {\n globalThis.Date = RealDate;\n}\n\nexport { RealDate as R, mockDate as m, resetDate as r };\n","import { equals, iterableEquality, subsetEquality, JestExtend, JestChaiExpect, JestAsymmetricMatchers, GLOBAL_EXPECT, ASYMMETRIC_MATCHERS_OBJECT, getState, setState, addCustomEqualityTesters } 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, r as resetModules, w as waitForImportsToResolve } from './utils.C8RiOc4B.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 { parseSingleStack } from '@vitest/utils/source-map';\nimport { R as RealDate, r as resetDate, m as mockDate } from './date.W2xKR2qe.js';\nimport { spyOn, fn, isMockFunction, mocks } from '@vitest/spy';\n\nconst unsupported = [\n // .poll is meant to retry matchers until they succeed, and\n // snapshots will always succeed as long as the poll method doesn't thow an error\n // in this case using the `vi.waitFor` method is more appropriate\n \"matchSnapshot\",\n \"toMatchSnapshot\",\n \"toMatchInlineSnapshot\",\n \"toThrowErrorMatchingSnapshot\",\n \"toThrowErrorMatchingInlineSnapshot\",\n // toThrow will never succeed because we call the poll callback until it doesn't throw\n \"throws\",\n \"Throw\",\n \"throw\",\n \"toThrow\",\n \"toThrowError\"\n // these are not supported because you can call them without `.poll`,\n // we throw an error inside the rejects/resolves methods to prevent this\n // rejects,\n // resolves\n];\nfunction createExpectPoll(expect) {\n return function poll(fn, options = {}) {\n const state = getWorkerState();\n const defaults = state.config.expect?.poll ?? {};\n const {\n interval = defaults.interval ?? 50,\n timeout = defaults.timeout ?? 1e3,\n message\n } = options;\n const assertion = expect(null, message).withContext({\n poll: true\n });\n fn = fn.bind(assertion);\n const test = chai$1.util.flag(assertion, \"vitest-test\");\n if (!test) {\n throw new Error(\"expect.poll() must be called inside a test\");\n }\n const proxy = new Proxy(assertion, {\n get(target, key, receiver) {\n const assertionFunction = Reflect.get(target, key, receiver);\n if (typeof assertionFunction !== \"function\") {\n return assertionFunction instanceof chai$1.Assertion ? proxy : assertionFunction;\n }\n if (key === \"assert\") {\n return assertionFunction;\n }\n if (typeof key === \"string\" && unsupported.includes(key)) {\n throw new SyntaxError(\n `expect.poll() is not supported in combination with .${key}(). Use vi.waitFor() if your assertion condition is unstable.`\n );\n }\n return function(...args) {\n const STACK_TRACE_ERROR = new Error(\"STACK_TRACE_ERROR\");\n const promise = () => new Promise((resolve, reject) => {\n let intervalId;\n let lastError;\n const { setTimeout, clearTimeout } = getSafeTimers();\n const timeoutId = setTimeout(() => {\n clearTimeout(intervalId);\n reject(\n copyStackTrace$1(\n new Error(`Matcher did not succeed in ${timeout}ms`, {\n cause: lastError\n }),\n STACK_TRACE_ERROR\n )\n );\n }, timeout);\n const check = async () => {\n try {\n chai$1.util.flag(assertion, \"_name\", key);\n const obj = await fn();\n chai$1.util.flag(assertion, \"object\", obj);\n resolve(await assertionFunction.call(assertion, ...args));\n clearTimeout(intervalId);\n clearTimeout(timeoutId);\n } catch (err) {\n lastError = err;\n intervalId = setTimeout(check, interval);\n }\n };\n check();\n });\n let awaited = false;\n test.onFinished ??= [];\n test.onFinished.push(() => {\n if (!awaited) {\n const negated = chai$1.util.flag(assertion, \"negate\") ? \"not.\" : \"\";\n const name = chai$1.util.flag(assertion, \"_poll.element\") ? \"element(locator)\" : \"poll(assertion)\";\n const assertionString = `expect.${name}.${negated}${String(key)}()`;\n const error = new Error(\n `${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 );\n throw copyStackTrace$1(error, STACK_TRACE_ERROR);\n }\n });\n let resultPromise;\n return {\n then(onFulfilled, onRejected) {\n awaited = true;\n return (resultPromise ||= promise()).then(onFulfilled, onRejected);\n },\n catch(onRejected) {\n return (resultPromise ||= promise()).catch(onRejected);\n },\n finally(onFinally) {\n return (resultPromise ||= promise()).finally(onFinally);\n },\n [Symbol.toStringTag]: \"Promise\"\n };\n };\n }\n });\n return proxy;\n };\n}\nfunction copyStackTrace$1(target, source) {\n if (source.stack !== void 0) {\n target.stack = source.stack.replace(source.message, target.message);\n }\n return 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 const not = util.flag(assertion, \"negate\") ? \"not.\" : \"\";\n const name = `${util.flag(assertion, \"_name\")}(${\"expected\" })`;\n const promiseName = util.flag(assertion, \"promise\");\n const promise = promiseName ? `.${promiseName}` : \"\";\n return `expect(actual)${promise}.${not}${name}`;\n}\nfunction recordAsyncExpect(_test, promise, assertion, error) {\n const test = _test;\n if (test && promise instanceof Promise) {\n promise = promise.finally(() => {\n if (!test.promises) {\n return;\n }\n const index = test.promises.indexOf(promise);\n if (index !== -1) {\n test.promises.splice(index, 1);\n }\n });\n if (!test.promises) {\n test.promises = [];\n }\n test.promises.push(promise);\n let resolved = false;\n test.onFinished ??= [];\n test.onFinished.push(() => {\n if (!resolved) {\n const processor = globalThis.__vitest_worker__?.onFilterStackTrace || ((s) => s || \"\");\n const stack = processor(error.stack);\n console.warn([\n `Promise returned by \\`${assertion}\\` was not awaited. `,\n \"Vitest currently auto-awaits hanging assertions at the end of the test, but this will cause the test to fail in Vitest 3. \",\n \"Please remember to await the assertion.\\n\",\n stack\n ].join(\"\"));\n }\n });\n return {\n then(onFullfilled, onRejected) {\n resolved = true;\n return promise.then(onFullfilled, onRejected);\n },\n catch(onRejected) {\n return promise.catch(onRejected);\n },\n finally(onFinally) {\n return promise.finally(onFinally);\n },\n [Symbol.toStringTag]: \"Promise\"\n };\n }\n return promise;\n}\n\nlet _client;\nfunction getSnapshotClient() {\n if (!_client) {\n _client = new SnapshotClient({\n isEqual: (received, expected) => {\n return equals(received, expected, [iterableEquality, subsetEquality]);\n }\n });\n }\n return _client;\n}\nfunction getError(expected, promise) {\n if (typeof expected !== \"function\") {\n if (!promise) {\n throw new Error(\n `expected must be a function, received ${typeof expected}`\n );\n }\n return expected;\n }\n try {\n expected();\n } catch (e) {\n return e;\n }\n throw new Error(\"snapshot function didn't throw\");\n}\nfunction getTestNames(test) {\n if (!test) {\n return {};\n }\n return {\n filepath: test.file.filepath,\n name: getNames(test).slice(1).join(\" > \")\n };\n}\nconst SnapshotPlugin = (chai, utils) => {\n for (const key of [\"matchSnapshot\", \"toMatchSnapshot\"]) {\n utils.addMethod(\n chai.Assertion.prototype,\n key,\n function(properties, message) {\n utils.flag(this, \"_name\", key);\n const isNot = utils.flag(this, \"negate\");\n if (isNot) {\n throw new Error(`${key} cannot be used with \"not\"`);\n }\n const expected = utils.flag(this, \"object\");\n const test = utils.flag(this, \"vitest-test\");\n if (typeof properties === \"string\" && typeof message === \"undefined\") {\n message = properties;\n properties = void 0;\n }\n const errorMessage = utils.flag(this, \"message\");\n getSnapshotClient().assert({\n received: expected,\n message,\n isInline: false,\n properties,\n errorMessage,\n ...getTestNames(test)\n });\n }\n );\n }\n utils.addMethod(\n chai.Assertion.prototype,\n \"toMatchFileSnapshot\",\n function(file, message) {\n utils.flag(this, \"_name\", \"toMatchFileSnapshot\");\n const isNot = utils.flag(this, \"negate\");\n if (isNot) {\n throw new Error('toMatchFileSnapshot cannot be used with \"not\"');\n }\n const error = new Error(\"resolves\");\n const expected = utils.flag(this, \"object\");\n const test = utils.flag(this, \"vitest-test\");\n const errorMessage = utils.flag(this, \"message\");\n const promise = getSnapshotClient().assertRaw({\n received: expected,\n message,\n isInline: false,\n rawSnapshot: {\n file\n },\n errorMessage,\n ...getTestNames(test)\n });\n return recordAsyncExpect(\n test,\n promise,\n createAssertionMessage(utils, this),\n error\n );\n }\n );\n utils.addMethod(\n chai.Assertion.prototype,\n \"toMatchInlineSnapshot\",\n function __INLINE_SNAPSHOT__(properties, inlineSnapshot, message) {\n utils.flag(this, \"_name\", \"toMatchInlineSnapshot\");\n const isNot = utils.flag(this, \"negate\");\n if (isNot) {\n throw new Error('toMatchInlineSnapshot cannot be used with \"not\"');\n }\n const test = utils.flag(this, \"vitest-test\");\n const isInsideEach = test && (test.each || test.suite?.each);\n if (isInsideEach) {\n throw new Error(\n \"InlineSnapshot cannot be used inside of test.each or describe.each\"\n );\n }\n const expected = utils.flag(this, \"object\");\n const error = utils.flag(this, \"error\");\n if (typeof properties === \"string\") {\n message = inlineSnapshot;\n inlineSnapshot = properties;\n properties = void 0;\n }\n if (inlineSnapshot) {\n inlineSnapshot = stripSnapshotIndentation(inlineSnapshot);\n }\n const errorMessage = utils.flag(this, \"message\");\n getSnapshotClient().assert({\n received: expected,\n message,\n isInline: true,\n properties,\n inlineSnapshot,\n error,\n errorMessage,\n ...getTestNames(test)\n });\n }\n );\n utils.addMethod(\n chai.Assertion.prototype,\n \"toThrowErrorMatchingSnapshot\",\n function(message) {\n utils.flag(this, \"_name\", \"toThrowErrorMatchingSnapshot\");\n const isNot = utils.flag(this, \"negate\");\n if (isNot) {\n throw new Error(\n 'toThrowErrorMatchingSnapshot cannot be used with \"not\"'\n );\n }\n const expected = utils.flag(this, \"object\");\n const test = utils.flag(this, \"vitest-test\");\n const promise = utils.flag(this, \"promise\");\n const errorMessage = utils.flag(this, \"message\");\n getSnapshotClient().assert({\n received: getError(expected, promise),\n message,\n errorMessage,\n ...getTestNames(test)\n });\n }\n );\n utils.addMethod(\n chai.Assertion.prototype,\n \"toThrowErrorMatchingInlineSnapshot\",\n function __INLINE_SNAPSHOT__(inlineSnapshot, message) {\n const isNot = utils.flag(this, \"negate\");\n if (isNot) {\n throw new Error(\n 'toThrowErrorMatchingInlineSnapshot cannot be used with \"not\"'\n );\n }\n const test = utils.flag(this, \"vitest-test\");\n const isInsideEach = test && (test.each || test.suite?.each);\n if (isInsideEach) {\n throw new Error(\n \"InlineSnapshot cannot be used inside of test.each or describe.each\"\n );\n }\n const expected = utils.flag(this, \"object\");\n const error = utils.flag(this, \"error\");\n const promise = utils.flag(this, \"promise\");\n const errorMessage = utils.flag(this, \"message\");\n if (inlineSnapshot) {\n inlineSnapshot = stripSnapshotIndentation(inlineSnapshot);\n }\n getSnapshotClient().assert({\n received: getError(expected, promise),\n message,\n inlineSnapshot,\n isInline: true,\n error,\n errorMessage,\n ...getTestNames(test)\n });\n }\n );\n utils.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 const expect = (value, message) => {\n const { assertionCalls } = getState(expect);\n setState({ assertionCalls: assertionCalls + 1 }, expect);\n const assert2 = chai$1.expect(value, message);\n const _test = test || getCurrentTest();\n if (_test) {\n return assert2.withTest(_test);\n } else {\n return assert2;\n }\n };\n Object.assign(expect, chai$1.expect);\n Object.assign(expect, globalThis[ASYMMETRIC_MATCHERS_OBJECT]);\n expect.getState = () => getState(expect);\n expect.setState = (state) => setState(state, expect);\n const globalState = getState(globalThis[GLOBAL_EXPECT]) || {};\n setState(\n {\n // this should also add \"snapshotState\" that is added conditionally\n ...globalState,\n assertionCalls: 0,\n isExpectingAssertions: false,\n isExpectingAssertionsError: null,\n expectedAssertionsNumber: null,\n expectedAssertionsNumberErrorGen: null,\n environment: getCurrentEnvironment(),\n get testPath() {\n return getWorkerState().filepath;\n },\n currentTestName: test ? getTestName(test) : globalState.currentTestName\n },\n expect\n );\n expect.extend = (matchers) => chai$1.expect.extend(expect, matchers);\n expect.addEqualityTesters = (customTesters) => addCustomEqualityTesters(customTesters);\n expect.soft = (...args) => {\n return expect(...args).withContext({ soft: true });\n };\n expect.poll = createExpectPoll(expect);\n expect.unreachable = (message) => {\n chai$1.assert.fail(\n `expected${message ? ` \"${message}\" ` : \" \"}not to be reached`\n );\n };\n function assertions(expected) {\n const errorGen = () => new Error(\n `expected number of assertions to be ${expected}, but got ${expect.getState().assertionCalls}`\n );\n if (Error.captureStackTrace) {\n Error.captureStackTrace(errorGen(), assertions);\n }\n expect.setState({\n expectedAssertionsNumber: expected,\n expectedAssertionsNumberErrorGen: errorGen\n });\n }\n function hasAssertions() {\n const error = new Error(\"expected any number of assertion, but got none\");\n if (Error.captureStackTrace) {\n Error.captureStackTrace(error, hasAssertions);\n }\n expect.setState({\n isExpectingAssertions: true,\n isExpectingAssertionsError: error\n });\n }\n chai$1.util.addMethod(expect, \"assertions\", assertions);\n chai$1.util.addMethod(expect, \"hasAssertions\", hasAssertions);\n return expect;\n}\nconst globalExpect = createExpect();\nObject.defineProperty(globalThis, GLOBAL_EXPECT, {\n value: globalExpect,\n writable: true,\n configurable: true\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 *\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 *\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 *\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 *\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 *\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 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 *\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 className_1;\nvar hasRequiredClassName;\n\nfunction requireClassName () {\n\tif (hasRequiredClassName) return className_1;\n\thasRequiredClassName = 1;\n\n\tvar functionName = requireFunctionName();\n\n\t/**\n\t * Returns a display name for a value from a constructor\n\t *\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 return (\n\t (value.constructor && value.constructor.name) ||\n\t // The next branch is for IE11 support only:\n\t // Because the name property is not set on the prototype\n\t // of the Function object, we finally try to grab the\n\t // name from its definition. This will never be reached\n\t // in node, so we are not able to test this properly.\n\t // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/name\n\t (typeof value.constructor === \"function\" &&\n\t /* istanbul ignore next */\n\t functionName(value.constructor)) ||\n\t null\n\t );\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 *\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 *\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 *\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 *\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 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 *\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 *\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 *\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 *\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;\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}\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 *\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 {...*} arguments - 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 {...*} arguments - 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 */\n\t/* eslint-enable jsdoc/require-property-description */\n\n\t/**\n\t * Configuration object for the `install` method.\n\t *\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 */\n\n\t/* eslint-disable jsdoc/require-property-description */\n\t/**\n\t * The internal structure to describe a scheduled fake timer\n\t *\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 *\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 *\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 timeoutResult = _global.setTimeout(NOOP, 0);\n\t const addTimerReturnsObject = typeof timeoutResult === \"object\";\n\t const hrtimePresent =\n\t _global.process && typeof _global.process.hrtime === \"function\";\n\t const hrtimeBigintPresent =\n\t hrtimePresent && typeof _global.process.hrtime.bigint === \"function\";\n\t const nextTickPresent =\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 const performancePresent =\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 const queueMicrotaskPresent = _global.hasOwnProperty(\"queueMicrotask\");\n\t const requestAnimationFramePresent =\n\t _global.requestAnimationFrame &&\n\t typeof _global.requestAnimationFrame === \"function\";\n\t const cancelAnimationFramePresent =\n\t _global.cancelAnimationFrame &&\n\t typeof _global.cancelAnimationFrame === \"function\";\n\t const requestIdleCallbackPresent =\n\t _global.requestIdleCallback &&\n\t typeof _global.requestIdleCallback === \"function\";\n\t const cancelIdleCallbackPresent =\n\t _global.cancelIdleCallback &&\n\t typeof _global.cancelIdleCallback === \"function\";\n\t const setImmediatePresent =\n\t _global.setImmediate && typeof _global.setImmediate === \"function\";\n\t const intlPresent = _global.Intl && typeof _global.Intl === \"object\";\n\n\t _global.clearTimeout(timeoutResult);\n\n\t const NativeDate = _global.Date;\n\t const NativeIntl = _global.Intl;\n\t let uniqueTimerId = idCounterStart;\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 *\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 *\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 *\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 /**\n\t * @param {Date} target\n\t * @param {Date} source\n\t * @returns {Date} the target after modifications\n\t */\n\t function mirrorDateProperties(target, source) {\n\t let prop;\n\t for (prop in source) {\n\t if (source.hasOwnProperty(prop)) {\n\t target[prop] = source[prop];\n\t }\n\t }\n\n\t // set special now implementation\n\t if (source.now) {\n\t target.now = function now() {\n\t return target.clock.now;\n\t };\n\t } else {\n\t delete target.now;\n\t }\n\n\t // set special toSource implementation\n\t if (source.toSource) {\n\t target.toSource = function toSource() {\n\t return source.toSource();\n\t };\n\t } else {\n\t delete target.toSource;\n\t }\n\n\t // set special toString implementation\n\t target.toString = function toString() {\n\t return source.toString();\n\t };\n\n\t target.prototype = source.prototype;\n\t target.parse = source.parse;\n\t target.UTC = source.UTC;\n\t target.prototype.toUTCString = source.prototype.toUTCString;\n\t target.isFake = true;\n\n\t return target;\n\t }\n\n\t //eslint-disable-next-line jsdoc/require-jsdoc\n\t function createDate() {\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 {Date}\n\t */\n\t function ClockDate(year, month, date, hour, minute, second, ms) {\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 return new NativeDate(ClockDate.clock.now).toString();\n\t }\n\n\t // if Date is called as a constructor with 'new' keyword\n\t // Defensive and verbose to avoid potential harm in passing\n\t // explicit undefined when user does not pass argument\n\t switch (arguments.length) {\n\t case 0:\n\t return new NativeDate(ClockDate.clock.now);\n\t case 1:\n\t return new NativeDate(year);\n\t case 2:\n\t return new NativeDate(year, month);\n\t case 3:\n\t return new NativeDate(year, month, date);\n\t case 4:\n\t return new NativeDate(year, month, date, hour);\n\t case 5:\n\t return new NativeDate(year, month, date, hour, minute);\n\t case 6:\n\t return new NativeDate(\n\t year,\n\t month,\n\t date,\n\t hour,\n\t minute,\n\t second\n\t );\n\t default:\n\t return new NativeDate(\n\t year,\n\t month,\n\t date,\n\t hour,\n\t minute,\n\t second,\n\t ms\n\t );\n\t }\n\t }\n\n\t return mirrorDateProperties(ClockDate, NativeDate);\n\t }\n\n\t //eslint-disable-next-line jsdoc/require-jsdoc\n\t function createIntl() {\n\t const ClockIntl = { ...NativeIntl };\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 *\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 *\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 *\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 }\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 // 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 const date = mirrorDateProperties(clock[method], target[method]);\n\t target[method] = date;\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 (setImmediatePresent) {\n\t timers.setImmediate = _global.setImmediate;\n\t timers.clearImmediate = _global.clearImmediate;\n\t }\n\n\t if (hrtimePresent) {\n\t timers.hrtime = _global.process.hrtime;\n\t }\n\n\t if (nextTickPresent) {\n\t timers.nextTick = _global.process.nextTick;\n\t }\n\n\t if (performancePresent) {\n\t timers.performance = _global.performance;\n\t }\n\n\t if (requestAnimationFramePresent) {\n\t timers.requestAnimationFrame = _global.requestAnimationFrame;\n\t }\n\n\t if (queueMicrotaskPresent) {\n\t timers.queueMicrotask = true;\n\t }\n\n\t if (cancelAnimationFramePresent) {\n\t timers.cancelAnimationFrame = _global.cancelAnimationFrame;\n\t }\n\n\t if (requestIdleCallbackPresent) {\n\t timers.requestIdleCallback = _global.requestIdleCallback;\n\t }\n\n\t if (cancelIdleCallbackPresent) {\n\t timers.cancelIdleCallback = _global.cancelIdleCallback;\n\t }\n\n\t if (intlPresent) {\n\t timers.Intl = _global.Intl;\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 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\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 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 (hrtimeBigintPresent) {\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 (intlPresent) {\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 (setImmediatePresent) {\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 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 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 (performancePresent) {\n\t clock.performance = Object.create(null);\n\t clock.performance.now = fakePerformanceNow;\n\t }\n\n\t if (hrtimePresent) {\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 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.methods = config.toFake || [];\n\n\t if (clock.methods.length === 0) {\n\t // do not fake nextTick by default - GitHub#126\n\t clock.methods = Object.keys(timers).filter(function (key) {\n\t return key !== \"nextTick\" && key !== \"queueMicrotask\";\n\t });\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 } else if ((config.toFake || []).includes(\"performance\")) {\n\t // user explicitly tried to fake performance when not present\n\t throw new ReferenceError(\n\t \"non-existent performance object cannot be faked\"\n\t );\n\t }\n\t }\n\t if (_global === globalObject && timersModule) {\n\t clock.timersModuleMethods = [];\n\t }\n\t for (i = 0, l = clock.methods.length; i < l; i++) {\n\t const nameOfMethodToReplace = clock.methods[i];\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 }\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 _global;\n _clock;\n _fakingTime;\n _fakingDate;\n _fakeTimers;\n _userConfig;\n _now = RealDate.now;\n constructor({\n global,\n config\n }) {\n this._userConfig = config;\n this._fakingDate = false;\n this._fakingTime = false;\n this._fakeTimers = fakeTimersSrcExports.withGlobal(global);\n this._global = global;\n }\n clearAllTimers() {\n if (this._fakingTime) {\n this._clock.reset();\n }\n }\n dispose() {\n this.useRealTimers();\n }\n runAllTimers() {\n if (this._checkFakeTimers()) {\n this._clock.runAll();\n }\n }\n async runAllTimersAsync() {\n if (this._checkFakeTimers()) {\n await this._clock.runAllAsync();\n }\n }\n runOnlyPendingTimers() {\n if (this._checkFakeTimers()) {\n this._clock.runToLast();\n }\n }\n async runOnlyPendingTimersAsync() {\n if (this._checkFakeTimers()) {\n await this._clock.runToLastAsync();\n }\n }\n advanceTimersToNextTimer(steps = 1) {\n if (this._checkFakeTimers()) {\n for (let i = steps; i > 0; i--) {\n this._clock.next();\n this._clock.tick(0);\n if (this._clock.countTimers() === 0) {\n break;\n }\n }\n }\n }\n async advanceTimersToNextTimerAsync(steps = 1) {\n if (this._checkFakeTimers()) {\n for (let i = steps; i > 0; i--) {\n await this._clock.nextAsync();\n this._clock.tick(0);\n if (this._clock.countTimers() === 0) {\n break;\n }\n }\n }\n }\n advanceTimersByTime(msToRun) {\n if (this._checkFakeTimers()) {\n this._clock.tick(msToRun);\n }\n }\n async advanceTimersByTimeAsync(msToRun) {\n if (this._checkFakeTimers()) {\n await this._clock.tickAsync(msToRun);\n }\n }\n advanceTimersToNextFrame() {\n if (this._checkFakeTimers()) {\n this._clock.runToFrame();\n }\n }\n runAllTicks() {\n if (this._checkFakeTimers()) {\n this._clock.runMicrotasks();\n }\n }\n useRealTimers() {\n if (this._fakingDate) {\n resetDate();\n this._fakingDate = false;\n }\n if (this._fakingTime) {\n this._clock.uninstall();\n this._fakingTime = false;\n }\n }\n useFakeTimers() {\n if (this._fakingDate) {\n throw new Error(\n '\"setSystemTime\" was called already and date was mocked. Reset timers using `vi.useRealTimers()` if you want to use fake timers again.'\n );\n }\n if (!this._fakingTime) {\n const toFake = Object.keys(this._fakeTimers.timers).filter(\n (timer) => timer !== \"nextTick\"\n );\n if (this._userConfig?.toFake?.includes(\"nextTick\") && isChildProcess()) {\n throw new Error(\n \"process.nextTick cannot be mocked inside child_process\"\n );\n }\n const existingFakedMethods = (this._userConfig?.toFake || toFake).filter(\n (method) => {\n switch (method) {\n case \"setImmediate\":\n case \"clearImmediate\":\n return method in this._global && this._global[method];\n default:\n return true;\n }\n }\n );\n this._clock = this._fakeTimers.install({\n now: Date.now(),\n ...this._userConfig,\n toFake: existingFakedMethods\n });\n this._fakingTime = true;\n }\n }\n reset() {\n if (this._checkFakeTimers()) {\n const { now } = this._clock;\n this._clock.reset();\n this._clock.setSystemTime(now);\n }\n }\n setSystemTime(now) {\n if (this._fakingTime) {\n this._clock.setSystemTime(now);\n } else {\n mockDate(now ?? this.getRealSystemTime());\n this._fakingDate = true;\n }\n }\n getRealSystemTime() {\n return this._now();\n }\n getTimerCount() {\n if (this._checkFakeTimers()) {\n return this._clock.countTimers();\n }\n return 0;\n }\n configure(config) {\n this._userConfig = config;\n }\n isFakeTimers() {\n return this._fakingTime;\n }\n _checkFakeTimers() {\n if (!this._fakingTime) {\n throw new Error(\n 'Timers are not mocked. Try calling \"vi.useFakeTimers()\" first.'\n );\n }\n return this._fakingTime;\n }\n}\n\nfunction copyStackTrace(target, source) {\n if (source.stack !== void 0) {\n target.stack = source.stack.replace(source.message, target.message);\n }\n return target;\n}\nfunction waitFor(callback, options = {}) {\n const { setTimeout, setInterval, clearTimeout, clearInterval } = getSafeTimers();\n const { interval = 50, timeout = 1e3 } = typeof options === \"number\" ? { timeout: options } : options;\n const STACK_TRACE_ERROR = new Error(\"STACK_TRACE_ERROR\");\n return new Promise((resolve, reject) => {\n let lastError;\n let promiseStatus = \"idle\";\n let timeoutId;\n let intervalId;\n const onResolve = (result) => {\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n if (intervalId) {\n clearInterval(intervalId);\n }\n resolve(result);\n };\n const handleTimeout = () => {\n if (intervalId) {\n clearInterval(intervalId);\n }\n let error = lastError;\n if (!error) {\n error = copyStackTrace(\n new Error(\"Timed out in waitFor!\"),\n STACK_TRACE_ERROR\n );\n }\n reject(error);\n };\n const checkCallback = () => {\n if (vi.isFakeTimers()) {\n vi.advanceTimersByTime(interval);\n }\n if (promiseStatus === \"pending\") {\n return;\n }\n try {\n const result = callback();\n if (result !== null && typeof result === \"object\" && typeof result.then === \"function\") {\n const thenable = result;\n promiseStatus = \"pending\";\n thenable.then(\n (resolvedValue) => {\n promiseStatus = \"resolved\";\n onResolve(resolvedValue);\n },\n (rejectedValue) => {\n promiseStatus = \"rejected\";\n lastError = rejectedValue;\n }\n );\n } else {\n onResolve(result);\n return true;\n }\n } catch (error) {\n lastError = error;\n }\n };\n if (checkCallback() === true) {\n return;\n }\n timeoutId = setTimeout(handleTimeout, timeout);\n intervalId = setInterval(checkCallback, interval);\n });\n}\nfunction waitUntil(callback, options = {}) {\n const { setTimeout, setInterval, clearTimeout, clearInterval } = getSafeTimers();\n const { interval = 50, timeout = 1e3 } = typeof options === \"number\" ? { timeout: options } : options;\n const STACK_TRACE_ERROR = new Error(\"STACK_TRACE_ERROR\");\n return new Promise((resolve, reject) => {\n let promiseStatus = \"idle\";\n let timeoutId;\n let intervalId;\n const onReject = (error) => {\n if (intervalId) {\n clearInterval(intervalId);\n }\n if (!error) {\n error = copyStackTrace(\n new Error(\"Timed out in waitUntil!\"),\n STACK_TRACE_ERROR\n );\n }\n reject(error);\n };\n const onResolve = (result) => {\n if (!result) {\n return;\n }\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n if (intervalId) {\n clearInterval(intervalId);\n }\n resolve(result);\n return true;\n };\n const checkCallback = () => {\n if (vi.isFakeTimers()) {\n vi.advanceTimersByTime(interval);\n }\n if (promiseStatus === \"pending\") {\n return;\n }\n try {\n const result = callback();\n if (result !== null && typeof result === \"object\" && typeof result.then === \"function\") {\n const thenable = result;\n promiseStatus = \"pending\";\n thenable.then(\n (resolvedValue) => {\n promiseStatus = \"resolved\";\n onResolve(resolvedValue);\n },\n (rejectedValue) => {\n promiseStatus = \"rejected\";\n onReject(rejectedValue);\n }\n );\n } else {\n return onResolve(result);\n }\n } catch (error) {\n onReject(error);\n }\n };\n if (checkCallback() === true) {\n return;\n }\n timeoutId = setTimeout(onReject, timeout);\n intervalId = setInterval(checkCallback, interval);\n });\n}\n\nfunction createVitest() {\n let _mockedDate = null;\n let _config = null;\n const workerState = getWorkerState();\n let _timers;\n const timers = () => _timers ||= new FakeTimers({\n global: globalThis,\n config: workerState.config.fakeTimers\n });\n const _stubsGlobal = /* @__PURE__ */ new Map();\n const _stubsEnv = /* @__PURE__ */ new Map();\n const _envBooleans = [\"PROD\", \"DEV\", \"SSR\"];\n const utils = {\n useFakeTimers(config) {\n if (isChildProcess()) {\n if (config?.toFake?.includes(\"nextTick\") || workerState.config?.fakeTimers?.toFake?.includes(\"nextTick\")) {\n throw new Error(\n 'vi.useFakeTimers({ toFake: [\"nextTick\"] }) is not supported in node:child_process. Use --pool=threads if mocking nextTick is required.'\n );\n }\n }\n if (config) {\n timers().configure({ ...workerState.config.fakeTimers, ...config });\n } else {\n timers().configure(workerState.config.fakeTimers);\n }\n timers().useFakeTimers();\n return utils;\n },\n isFakeTimers() {\n return timers().isFakeTimers();\n },\n useRealTimers() {\n timers().useRealTimers();\n _mockedDate = null;\n return utils;\n },\n runOnlyPendingTimers() {\n timers().runOnlyPendingTimers();\n return utils;\n },\n async runOnlyPendingTimersAsync() {\n await timers().runOnlyPendingTimersAsync();\n return utils;\n },\n runAllTimers() {\n timers().runAllTimers();\n return utils;\n },\n async runAllTimersAsync() {\n await timers().runAllTimersAsync();\n return utils;\n },\n runAllTicks() {\n timers().runAllTicks();\n return utils;\n },\n advanceTimersByTime(ms) {\n timers().advanceTimersByTime(ms);\n return utils;\n },\n async advanceTimersByTimeAsync(ms) {\n await timers().advanceTimersByTimeAsync(ms);\n return utils;\n },\n advanceTimersToNextTimer() {\n timers().advanceTimersToNextTimer();\n return utils;\n },\n async advanceTimersToNextTimerAsync() {\n await timers().advanceTimersToNextTimerAsync();\n return utils;\n },\n advanceTimersToNextFrame() {\n timers().advanceTimersToNextFrame();\n return utils;\n },\n getTimerCount() {\n return timers().getTimerCount();\n },\n setSystemTime(time) {\n const date = time instanceof Date ? time : new Date(time);\n _mockedDate = date;\n timers().setSystemTime(date);\n return utils;\n },\n getMockedSystemTime() {\n return _mockedDate;\n },\n getRealSystemTime() {\n return timers().getRealSystemTime();\n },\n clearAllTimers() {\n timers().clearAllTimers();\n return utils;\n },\n // mocks\n spyOn,\n fn,\n waitFor,\n waitUntil,\n hoisted(factory) {\n assertTypes(factory, '\"vi.hoisted\" factory', [\"function\"]);\n return factory();\n },\n mock(path, factory) {\n if (typeof path !== \"string\") {\n throw new TypeError(\n `vi.mock() expects a string path, but received a ${typeof path}`\n );\n }\n const importer = getImporter(\"mock\");\n _mocker().queueMock(\n path,\n importer,\n typeof factory === \"function\" ? () => factory(\n () => _mocker().importActual(\n path,\n importer,\n _mocker().getMockContext().callstack\n )\n ) : factory\n );\n },\n unmock(path) {\n if (typeof path !== \"string\") {\n throw new TypeError(\n `vi.unmock() expects a string path, but received a ${typeof path}`\n );\n }\n _mocker().queueUnmock(path, getImporter(\"unmock\"));\n },\n doMock(path, factory) {\n if (typeof path !== \"string\") {\n throw new TypeError(\n `vi.doMock() expects a string path, but received a ${typeof path}`\n );\n }\n const importer = getImporter(\"doMock\");\n _mocker().queueMock(\n path,\n importer,\n typeof factory === \"function\" ? () => factory(\n () => _mocker().importActual(\n path,\n importer,\n _mocker().getMockContext().callstack\n )\n ) : factory\n );\n },\n doUnmock(path) {\n if (typeof path !== \"string\") {\n throw new TypeError(\n `vi.doUnmock() expects a string path, but received a ${typeof path}`\n );\n }\n _mocker().queueUnmock(path, getImporter(\"doUnmock\"));\n },\n async importActual(path) {\n return _mocker().importActual(\n path,\n getImporter(\"importActual\"),\n _mocker().getMockContext().callstack\n );\n },\n async importMock(path) {\n return _mocker().importMock(path, getImporter(\"importMock\"));\n },\n // this is typed in the interface so it's not necessary to type it here\n mocked(item, _options = {}) {\n return item;\n },\n isMockFunction(fn2) {\n return isMockFunction(fn2);\n },\n clearAllMocks() {\n mocks.forEach((spy) => spy.mockClear());\n return utils;\n },\n resetAllMocks() {\n mocks.forEach((spy) => spy.mockReset());\n return utils;\n },\n restoreAllMocks() {\n mocks.forEach((spy) => spy.mockRestore());\n return utils;\n },\n stubGlobal(name, value) {\n if (!_stubsGlobal.has(name)) {\n _stubsGlobal.set(\n name,\n Object.getOwnPropertyDescriptor(globalThis, name)\n );\n }\n Object.defineProperty(globalThis, name, {\n value,\n writable: true,\n configurable: true,\n enumerable: true\n });\n return utils;\n },\n stubEnv(name, value) {\n if (!_stubsEnv.has(name)) {\n _stubsEnv.set(name, process.env[name]);\n }\n if (_envBooleans.includes(name)) {\n process.env[name] = value ? \"1\" : \"\";\n } else if (value === void 0) {\n delete process.env[name];\n } else {\n process.env[name] = String(value);\n }\n return utils;\n },\n unstubAllGlobals() {\n _stubsGlobal.forEach((original, name) => {\n if (!original) {\n Reflect.deleteProperty(globalThis, name);\n } else {\n Object.defineProperty(globalThis, name, original);\n }\n });\n _stubsGlobal.clear();\n return utils;\n },\n unstubAllEnvs() {\n _stubsEnv.forEach((original, name) => {\n if (original === void 0) {\n delete process.env[name];\n } else {\n process.env[name] = original;\n }\n });\n _stubsEnv.clear();\n return utils;\n },\n resetModules() {\n resetModules(workerState.moduleCache);\n return utils;\n },\n async dynamicImportSettled() {\n return waitForImportsToResolve();\n },\n setConfig(config) {\n if (!_config) {\n _config = { ...workerState.config };\n }\n Object.assign(workerState.config, config);\n },\n resetConfig() {\n if (_config) {\n Object.assign(workerState.config, _config);\n }\n }\n };\n return utils;\n}\nconst vitest = createVitest();\nconst vi = vitest;\nfunction _mocker() {\n return typeof __vitest_mocker__ !== \"undefined\" ? __vitest_mocker__ : new Proxy(\n {},\n {\n get(_, name) {\n throw new Error(\n `Vitest mocker was not initialized in this environment. vi.${String(name)}() is forbidden.`\n );\n }\n }\n );\n}\nfunction getImporter(name) {\n const stackTrace = createSimpleStackTrace({ stackTraceLimit: 5 });\n const stackArray = stackTrace.split(\"\\n\");\n const importerStackIndex = stackArray.findIndex((stack2) => {\n return stack2.includes(` at Object.${name}`) || stack2.includes(`${name}@`);\n });\n const stack = parseSingleStack(stackArray[importerStackIndex + 1]);\n return stack?.file || \"\";\n}\n\nexport { globalExpect as a, vitest as b, createExpect as c, getSnapshotClient as g, vi as v };\n","/*\n * Copyright 2025 Hypergiant Galactic Systems Inc. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport * as matchers from '@testing-library/jest-dom/matchers';\nimport { cleanup } from '@testing-library/react';\nimport { afterEach, expect } from 'vitest';\n\nexpect.extend(matchers);\n\nafterEach(() => {\n cleanup();\n});\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../node_modules/.pnpm/@testing-library+jest-dom@6.9.1/node_modules/@testing-library/jest-dom/dist/matchers.mjs","../../../node_modules/.pnpm/@testing-library+jest-dom@6.9.1/node_modules/@testing-library/jest-dom/dist/matchers-35e4d3bd.mjs","../../../node_modules/.pnpm/@testing-library+dom@10.4.1/node_modules/@testing-library/dom/dist/@testing-library/dom.esm.js","../../../node_modules/.pnpm/@testing-library+react@16.3.1_@testing-library+dom@10.4.1_@types+react-dom@19.0.0_@type_e58d195d2fe7d9a4e3d711d7fbfc8046/node_modules/@testing-library/react/dist/@testing-library/react.esm.js","../../../node_modules/.pnpm/vitest@4.0.16_@types+node@25.0.3_jiti@2.6.1_jsdom@25.0.1_msw@2.12.7_@types+node@25.0.3_typescript@5.9.3__tsx@4.21.0/node_modules/vitest/dist/chunks/utils.DvEY5TfP.js","../../../node_modules/.pnpm/vitest@4.0.16_@types+node@25.0.3_jiti@2.6.1_jsdom@25.0.1_msw@2.12.7_@types+node@25.0.3_typescript@5.9.3__tsx@4.21.0/node_modules/vitest/dist/chunks/_commonjsHelpers.D26ty3Ew.js","../../../node_modules/.pnpm/vitest@4.0.16_@types+node@25.0.3_jiti@2.6.1_jsdom@25.0.1_msw@2.12.7_@types+node@25.0.3_typescript@5.9.3__tsx@4.21.0/node_modules/vitest/dist/chunks/date.Bq6ZW5rf.js","../../../node_modules/.pnpm/vitest@4.0.16_@types+node@25.0.3_jiti@2.6.1_jsdom@25.0.1_msw@2.12.7_@types+node@25.0.3_typescript@5.9.3__tsx@4.21.0/node_modules/vitest/dist/chunks/vi.2VT5v0um.js","../../../node_modules/.pnpm/vite@7.3.1_@types+node@25.0.3_jiti@2.6.1_tsx@4.21.0/node_modules/vite/dist/node/module-runner.js","../../src/test/setup.ts"],"names":["window","array","roles","document","display","config","isCustomElement","object","matches","elementRoleList","buildElementRoleList","elementRoles","getImplicitAriaRoles","computeAccessibleName","computeAccessibleDescription","normalize","string","getMultipleError","getMissingError","initialValue","fn","act","jestFakeTimersAreEnabled","test","setTimeout","clearTimeout","getSafeTimers","chai","assert","global","copyPrototypeMethods","every","functionName","module","typeDetect","typeOf","now","timers","setInterval","clearInterval","delay","afterEach"],"mappings":"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","file":"setup.js","sourcesContent":["export { H as toAppearAfter, G as toAppearBefore, z as toBeChecked, r as toBeDisabled, b as toBeEmpty, c as toBeEmptyDOMElement, s as toBeEnabled, t as toBeInTheDOM, a as toBeInTheDocument, v as toBeInvalid, A as toBePartiallyChecked, F as toBePartiallyPressed, E as toBePressed, u as toBeRequired, w as toBeValid, q as toBeVisible, d as toContainElement, f as toContainHTML, h as toHaveAccessibleDescription, i as toHaveAccessibleErrorMessage, k as toHaveAccessibleName, l as toHaveAttribute, m as toHaveClass, B as toHaveDescription, y as toHaveDisplayValue, C as toHaveErrorMessage, o as toHaveFocus, p as toHaveFormValues, j as toHaveRole, D as toHaveSelection, n as toHaveStyle, g as toHaveTextContent, x as toHaveValue } from './matchers-35e4d3bd.mjs';\nimport 'redent';\nimport '@adobe/css-tools';\nimport 'dom-accessibility-api';\nimport 'aria-query';\nimport 'picocolors';\nimport 'css.escape';\n","import redent from 'redent';\nimport { parse } from '@adobe/css-tools';\nimport { computeAccessibleDescription, computeAccessibleName } from 'dom-accessibility-api';\nimport { elementRoles, roles } from 'aria-query';\nimport pico from 'picocolors';\nimport escape from 'css.escape';\n\nclass GenericTypeError extends Error {\n constructor(expectedString, received, matcherFn, context) {\n super();\n\n /* istanbul ignore next */\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, matcherFn);\n }\n let withType = '';\n try {\n withType = context.utils.printWithType(\n 'Received',\n received,\n context.utils.printReceived,\n );\n } catch (e) {\n // Can throw for Document:\n // https://github.com/jsdom/jsdom/issues/2304\n }\n this.message = [\n context.utils.matcherHint(\n `${context.isNot ? '.not' : ''}.${matcherFn.name}`,\n 'received',\n '',\n ),\n '',\n // eslint-disable-next-line new-cap\n `${context.utils.RECEIVED_COLOR(\n 'received',\n )} value must ${expectedString}.`,\n withType,\n ].join('\\n');\n }\n}\n\nclass HtmlElementTypeError extends GenericTypeError {\n constructor(...args) {\n super('be an HTMLElement or an SVGElement', ...args);\n }\n}\n\nclass NodeTypeError extends GenericTypeError {\n constructor(...args) {\n super('be a Node', ...args);\n }\n}\n\nfunction checkHasWindow(htmlElement, ErrorClass, ...args) {\n if (\n !htmlElement ||\n !htmlElement.ownerDocument ||\n !htmlElement.ownerDocument.defaultView\n ) {\n throw new ErrorClass(htmlElement, ...args)\n }\n}\n\nfunction checkNode(node, ...args) {\n checkHasWindow(node, NodeTypeError, ...args);\n const window = node.ownerDocument.defaultView;\n\n if (!(node instanceof window.Node)) {\n throw new NodeTypeError(node, ...args)\n }\n}\n\nfunction checkHtmlElement(htmlElement, ...args) {\n checkHasWindow(htmlElement, HtmlElementTypeError, ...args);\n const window = htmlElement.ownerDocument.defaultView;\n\n if (\n !(htmlElement instanceof window.HTMLElement) &&\n !(htmlElement instanceof window.SVGElement)\n ) {\n throw new HtmlElementTypeError(htmlElement, ...args)\n }\n}\n\nclass InvalidCSSError extends Error {\n constructor(received, matcherFn, context) {\n super();\n\n /* istanbul ignore next */\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, matcherFn);\n }\n this.message = [\n received.message,\n '',\n // eslint-disable-next-line new-cap\n context.utils.RECEIVED_COLOR(`Failing css:`),\n // eslint-disable-next-line new-cap\n context.utils.RECEIVED_COLOR(`${received.css}`),\n ].join('\\n');\n }\n}\n\nfunction parseCSS(css, ...args) {\n const ast = parse(`selector { ${css} }`, {silent: true}).stylesheet;\n\n if (ast.parsingErrors && ast.parsingErrors.length > 0) {\n const {reason, line} = ast.parsingErrors[0];\n\n throw new InvalidCSSError(\n {\n css,\n message: `Syntax error parsing expected css: ${reason} on line: ${line}`,\n },\n ...args,\n )\n }\n\n const parsedRules = ast.rules[0].declarations\n .filter(d => d.type === 'declaration')\n .reduce(\n (obj, {property, value}) => Object.assign(obj, {[property]: value}),\n {},\n );\n return parsedRules\n}\n\nfunction display(context, value) {\n return typeof value === 'string' ? value : context.utils.stringify(value)\n}\n\nfunction getMessage(\n context,\n matcher,\n expectedLabel,\n expectedValue,\n receivedLabel,\n receivedValue,\n) {\n return [\n `${matcher}\\n`,\n // eslint-disable-next-line new-cap\n `${expectedLabel}:\\n${context.utils.EXPECTED_COLOR(\n redent(display(context, expectedValue), 2),\n )}`,\n // eslint-disable-next-line new-cap\n `${receivedLabel}:\\n${context.utils.RECEIVED_COLOR(\n redent(display(context, receivedValue), 2),\n )}`,\n ].join('\\n')\n}\n\nfunction matches(textToMatch, matcher) {\n if (matcher instanceof RegExp) {\n return matcher.test(textToMatch)\n } else {\n return textToMatch.includes(String(matcher))\n }\n}\n\nfunction deprecate(name, replacementText) {\n // Notify user that they are using deprecated functionality.\n // eslint-disable-next-line no-console\n console.warn(\n `Warning: ${name} has been deprecated and will be removed in future updates.`,\n replacementText,\n );\n}\n\nfunction normalize(text) {\n return text.replace(/\\s+/g, ' ').trim()\n}\n\nfunction getTag(element) {\n return element.tagName && element.tagName.toLowerCase()\n}\n\nfunction getSelectValue({multiple, options}) {\n const selectedOptions = [...options].filter(option => option.selected);\n\n if (multiple) {\n return [...selectedOptions].map(opt => opt.value)\n }\n /* istanbul ignore if */\n if (selectedOptions.length === 0) {\n return undefined // Couldn't make this happen, but just in case\n }\n return selectedOptions[0].value\n}\n\nfunction getInputValue(inputElement) {\n switch (inputElement.type) {\n case 'number':\n return inputElement.value === '' ? null : Number(inputElement.value)\n case 'checkbox':\n return inputElement.checked\n default:\n return inputElement.value\n }\n}\n\nconst rolesSupportingValues = ['meter', 'progressbar', 'slider', 'spinbutton'];\nfunction getAccessibleValue(element) {\n if (!rolesSupportingValues.includes(element.getAttribute('role'))) {\n return undefined\n }\n return Number(element.getAttribute('aria-valuenow'))\n}\n\nfunction getSingleElementValue(element) {\n /* istanbul ignore if */\n if (!element) {\n return undefined\n }\n\n switch (element.tagName.toLowerCase()) {\n case 'input':\n return getInputValue(element)\n case 'select':\n return getSelectValue(element)\n default: {\n return element.value ?? getAccessibleValue(element)\n }\n }\n}\n\nfunction toSentence(\n array,\n {wordConnector = ', ', lastWordConnector = ' and '} = {},\n) {\n return [array.slice(0, -1).join(wordConnector), array[array.length - 1]].join(\n array.length > 1 ? lastWordConnector : '',\n )\n}\n\nfunction compareAsSet(val1, val2) {\n if (Array.isArray(val1) && Array.isArray(val2)) {\n return [...new Set(val1)].every(v => new Set(val2).has(v))\n }\n return val1 === val2\n}\n\nfunction toBeInTheDOM(element, container) {\n deprecate(\n 'toBeInTheDOM',\n 'Please use toBeInTheDocument for searching the entire document and toContainElement for searching a specific container.',\n );\n\n if (element) {\n checkHtmlElement(element, toBeInTheDOM, this);\n }\n\n if (container) {\n checkHtmlElement(container, toBeInTheDOM, this);\n }\n\n return {\n pass: container ? container.contains(element) : !!element,\n message: () => {\n return [\n this.utils.matcherHint(\n `${this.isNot ? '.not' : ''}.toBeInTheDOM`,\n 'element',\n '',\n ),\n '',\n 'Received:',\n ` ${this.utils.printReceived(\n element ? element.cloneNode(false) : element,\n )}`,\n ].join('\\n')\n },\n }\n}\n\nfunction toBeInTheDocument(element) {\n if (element !== null || !this.isNot) {\n checkHtmlElement(element, toBeInTheDocument, this);\n }\n\n const pass =\n element === null\n ? false\n : element.ownerDocument === element.getRootNode({composed: true});\n\n const errorFound = () => {\n return `expected document not to contain element, found ${this.utils.stringify(\n element.cloneNode(true),\n )} instead`\n };\n const errorNotFound = () => {\n return `element could not be found in the document`\n };\n\n return {\n pass,\n message: () => {\n return [\n this.utils.matcherHint(\n `${this.isNot ? '.not' : ''}.toBeInTheDocument`,\n 'element',\n '',\n ),\n '',\n // eslint-disable-next-line new-cap\n this.utils.RECEIVED_COLOR(this.isNot ? errorFound() : errorNotFound()),\n ].join('\\n')\n },\n }\n}\n\nfunction toBeEmpty(element) {\n deprecate(\n 'toBeEmpty',\n 'Please use instead toBeEmptyDOMElement for finding empty nodes in the DOM.',\n );\n checkHtmlElement(element, toBeEmpty, this);\n\n return {\n pass: element.innerHTML === '',\n message: () => {\n return [\n this.utils.matcherHint(\n `${this.isNot ? '.not' : ''}.toBeEmpty`,\n 'element',\n '',\n ),\n '',\n 'Received:',\n ` ${this.utils.printReceived(element.innerHTML)}`,\n ].join('\\n')\n },\n }\n}\n\nfunction toBeEmptyDOMElement(element) {\n checkHtmlElement(element, toBeEmptyDOMElement, this);\n\n return {\n pass: isEmptyElement(element),\n message: () => {\n return [\n this.utils.matcherHint(\n `${this.isNot ? '.not' : ''}.toBeEmptyDOMElement`,\n 'element',\n '',\n ),\n '',\n 'Received:',\n ` ${this.utils.printReceived(element.innerHTML)}`,\n ].join('\\n')\n },\n }\n}\n\n/**\n * Identifies if an element doesn't contain child nodes (excluding comments)\n * ℹ Node.COMMENT_NODE can't be used because of the following issue \n * https://github.com/jsdom/jsdom/issues/2220\n *\n * @param {*} element an HtmlElement or SVGElement\n * @return {*} true if the element only contains comments or none\n */\nfunction isEmptyElement(element){\n const nonCommentChildNodes = [...element.childNodes].filter(node => node.nodeType !== 8);\n return nonCommentChildNodes.length === 0;\n}\n\nfunction toContainElement(container, element) {\n checkHtmlElement(container, toContainElement, this);\n\n if (element !== null) {\n checkHtmlElement(element, toContainElement, this);\n }\n\n return {\n pass: container.contains(element),\n message: () => {\n return [\n this.utils.matcherHint(\n `${this.isNot ? '.not' : ''}.toContainElement`,\n 'element',\n 'element',\n ),\n '',\n // eslint-disable-next-line new-cap\n this.utils.RECEIVED_COLOR(`${this.utils.stringify(\n container.cloneNode(false),\n )} ${\n this.isNot ? 'contains:' : 'does not contain:'\n } ${this.utils.stringify(element ? element.cloneNode(false) : element)}\n `),\n ].join('\\n')\n },\n }\n}\n\nfunction getNormalizedHtml(container, htmlText) {\n const div = container.ownerDocument.createElement('div');\n div.innerHTML = htmlText;\n return div.innerHTML\n}\n\nfunction toContainHTML(container, htmlText) {\n checkHtmlElement(container, toContainHTML, this);\n\n if (typeof htmlText !== 'string') {\n throw new Error(`.toContainHTML() expects a string value, got ${htmlText}`)\n }\n\n return {\n pass: container.outerHTML.includes(getNormalizedHtml(container, htmlText)),\n message: () => {\n return [\n this.utils.matcherHint(\n `${this.isNot ? '.not' : ''}.toContainHTML`,\n 'element',\n '',\n ),\n 'Expected:',\n // eslint-disable-next-line new-cap\n ` ${this.utils.EXPECTED_COLOR(htmlText)}`,\n 'Received:',\n ` ${this.utils.printReceived(container.cloneNode(true))}`,\n ].join('\\n')\n },\n }\n}\n\nfunction toHaveTextContent(\n node,\n checkWith,\n options = {normalizeWhitespace: true},\n) {\n checkNode(node, toHaveTextContent, this);\n\n const textContent = options.normalizeWhitespace\n ? normalize(node.textContent)\n : node.textContent.replace(/\\u00a0/g, ' '); // Replace with normal spaces\n\n const checkingWithEmptyString = textContent !== '' && checkWith === '';\n\n return {\n pass: !checkingWithEmptyString && matches(textContent, checkWith),\n message: () => {\n const to = this.isNot ? 'not to' : 'to';\n return getMessage(\n this,\n this.utils.matcherHint(\n `${this.isNot ? '.not' : ''}.toHaveTextContent`,\n 'element',\n '',\n ),\n checkingWithEmptyString\n ? `Checking with empty string will always match, use .toBeEmptyDOMElement() instead`\n : `Expected element ${to} have text content`,\n checkWith,\n 'Received',\n textContent,\n )\n },\n }\n}\n\nfunction toHaveAccessibleDescription(\n htmlElement,\n expectedAccessibleDescription,\n) {\n checkHtmlElement(htmlElement, toHaveAccessibleDescription, this);\n const actualAccessibleDescription = computeAccessibleDescription(htmlElement);\n const missingExpectedValue = arguments.length === 1;\n\n let pass = false;\n if (missingExpectedValue) {\n // When called without an expected value we only want to validate that the element has an\n // accessible description, whatever it may be.\n pass = actualAccessibleDescription !== '';\n } else {\n pass =\n expectedAccessibleDescription instanceof RegExp\n ? expectedAccessibleDescription.test(actualAccessibleDescription)\n : this.equals(\n actualAccessibleDescription,\n expectedAccessibleDescription,\n );\n }\n\n return {\n pass,\n\n message: () => {\n const to = this.isNot ? 'not to' : 'to';\n return getMessage(\n this,\n this.utils.matcherHint(\n `${this.isNot ? '.not' : ''}.${toHaveAccessibleDescription.name}`,\n 'element',\n '',\n ),\n `Expected element ${to} have accessible description`,\n expectedAccessibleDescription,\n 'Received',\n actualAccessibleDescription,\n )\n },\n }\n}\n\nconst ariaInvalidName = 'aria-invalid';\nconst validStates = ['false'];\n\n// See `aria-errormessage` spec at https://www.w3.org/TR/wai-aria-1.2/#aria-errormessage\nfunction toHaveAccessibleErrorMessage(\n htmlElement,\n expectedAccessibleErrorMessage,\n) {\n checkHtmlElement(htmlElement, toHaveAccessibleErrorMessage, this);\n const to = this.isNot ? 'not to' : 'to';\n const method = this.isNot\n ? '.not.toHaveAccessibleErrorMessage'\n : '.toHaveAccessibleErrorMessage';\n\n // Enforce Valid Id\n const errormessageId = htmlElement.getAttribute('aria-errormessage');\n const errormessageIdInvalid = !!errormessageId && /\\s+/.test(errormessageId);\n\n if (errormessageIdInvalid) {\n return {\n pass: false,\n message: () => {\n return getMessage(\n this,\n this.utils.matcherHint(method, 'element'),\n \"Expected element's `aria-errormessage` attribute to be empty or a single, valid ID\",\n '',\n 'Received',\n `aria-errormessage=\"${errormessageId}\"`,\n )\n },\n }\n }\n\n // See `aria-invalid` spec at https://www.w3.org/TR/wai-aria-1.2/#aria-invalid\n const ariaInvalidVal = htmlElement.getAttribute(ariaInvalidName);\n const fieldValid =\n !htmlElement.hasAttribute(ariaInvalidName) ||\n validStates.includes(ariaInvalidVal);\n\n // Enforce Valid `aria-invalid` Attribute\n if (fieldValid) {\n return {\n pass: false,\n message: () => {\n return getMessage(\n this,\n this.utils.matcherHint(method, 'element'),\n 'Expected element to be marked as invalid with attribute',\n `${ariaInvalidName}=\"${String(true)}\"`,\n 'Received',\n htmlElement.hasAttribute('aria-invalid')\n ? `${ariaInvalidName}=\"${htmlElement.getAttribute(ariaInvalidName)}`\n : null,\n )\n },\n }\n }\n\n const error = normalize(\n htmlElement.ownerDocument.getElementById(errormessageId)?.textContent ?? '',\n );\n\n return {\n pass:\n expectedAccessibleErrorMessage === undefined\n ? Boolean(error)\n : expectedAccessibleErrorMessage instanceof RegExp\n ? expectedAccessibleErrorMessage.test(error)\n : this.equals(error, expectedAccessibleErrorMessage),\n\n message: () => {\n return getMessage(\n this,\n this.utils.matcherHint(method, 'element'),\n `Expected element ${to} have accessible error message`,\n expectedAccessibleErrorMessage ?? '',\n 'Received',\n error,\n )\n },\n }\n}\n\nconst elementRoleList = buildElementRoleList(elementRoles);\n\nfunction toHaveRole(htmlElement, expectedRole) {\n checkHtmlElement(htmlElement, toHaveRole, this);\n\n const actualRoles = getExplicitOrImplicitRoles(htmlElement);\n const pass = actualRoles.some(el => el === expectedRole);\n\n return {\n pass,\n\n message: () => {\n const to = this.isNot ? 'not to' : 'to';\n return getMessage(\n this,\n this.utils.matcherHint(\n `${this.isNot ? '.not' : ''}.${toHaveRole.name}`,\n 'element',\n '',\n ),\n `Expected element ${to} have role`,\n expectedRole,\n 'Received',\n actualRoles.join(', '),\n )\n },\n }\n}\n\nfunction getExplicitOrImplicitRoles(htmlElement) {\n const hasExplicitRole = htmlElement.hasAttribute('role');\n\n if (hasExplicitRole) {\n const roleValue = htmlElement.getAttribute('role');\n\n // Handle fallback roles, such as role=\"switch button\"\n // testing-library gates this behind the `queryFallbacks` flag; it is\n // unclear why, but it makes sense to support this pattern out of the box\n // https://testing-library.com/docs/queries/byrole/#queryfallbacks\n return roleValue.split(' ').filter(Boolean)\n }\n\n const implicitRoles = getImplicitAriaRoles(htmlElement);\n\n return implicitRoles\n}\n\nfunction getImplicitAriaRoles(currentNode) {\n for (const {match, roles} of elementRoleList) {\n if (match(currentNode)) {\n return [...roles]\n }\n }\n\n /* istanbul ignore next */\n return [] // this does not get reached in practice, since elements have at least a 'generic' role\n}\n\n/**\n * Transform the roles map (with required attributes and constraints) to a list\n * of roles. Each item in the list has functions to match an element against it.\n *\n * Essentially copied over from [dom-testing-library's\n * helpers](https://github.com/testing-library/dom-testing-library/blob/bd04cf95a1ed85a2238f7dfc1a77d5d16b4f59dc/src/role-helpers.js#L80)\n *\n * TODO: If we are truly just copying over stuff, would it make sense to move\n * this to a separate package?\n *\n * TODO: This technique relies on CSS selectors; are those consistently\n * available in all jest-dom environments? Why do other matchers in this package\n * not use them like this?\n */\nfunction buildElementRoleList(elementRolesMap) {\n function makeElementSelector({name, attributes}) {\n return `${name}${attributes\n .map(({name: attributeName, value, constraints = []}) => {\n const shouldNotExist = constraints.indexOf('undefined') !== -1;\n if (shouldNotExist) {\n return `:not([${attributeName}])`\n } else if (value) {\n return `[${attributeName}=\"${value}\"]`\n } else {\n return `[${attributeName}]`\n }\n })\n .join('')}`\n }\n\n function getSelectorSpecificity({attributes = []}) {\n return attributes.length\n }\n\n function bySelectorSpecificity(\n {specificity: leftSpecificity},\n {specificity: rightSpecificity},\n ) {\n return rightSpecificity - leftSpecificity\n }\n\n function match(element) {\n let {attributes = []} = element;\n\n // https://github.com/testing-library/dom-testing-library/issues/814\n const typeTextIndex = attributes.findIndex(\n attribute =>\n attribute.value &&\n attribute.name === 'type' &&\n attribute.value === 'text',\n );\n\n if (typeTextIndex >= 0) {\n // not using splice to not mutate the attributes array\n attributes = [\n ...attributes.slice(0, typeTextIndex),\n ...attributes.slice(typeTextIndex + 1),\n ];\n }\n\n const selector = makeElementSelector({...element, attributes});\n\n return node => {\n if (typeTextIndex >= 0 && node.type !== 'text') {\n return false\n }\n\n return node.matches(selector)\n }\n }\n\n let result = [];\n\n for (const [element, roles] of elementRolesMap.entries()) {\n result = [\n ...result,\n {\n match: match(element),\n roles: Array.from(roles),\n specificity: getSelectorSpecificity(element),\n },\n ];\n }\n\n return result.sort(bySelectorSpecificity)\n}\n\nfunction toHaveAccessibleName(htmlElement, expectedAccessibleName) {\n checkHtmlElement(htmlElement, toHaveAccessibleName, this);\n const actualAccessibleName = computeAccessibleName(htmlElement);\n const missingExpectedValue = arguments.length === 1;\n\n let pass = false;\n if (missingExpectedValue) {\n // When called without an expected value we only want to validate that the element has an\n // accessible name, whatever it may be.\n pass = actualAccessibleName !== '';\n } else {\n pass =\n expectedAccessibleName instanceof RegExp\n ? expectedAccessibleName.test(actualAccessibleName)\n : this.equals(actualAccessibleName, expectedAccessibleName);\n }\n\n return {\n pass,\n\n message: () => {\n const to = this.isNot ? 'not to' : 'to';\n return getMessage(\n this,\n this.utils.matcherHint(\n `${this.isNot ? '.not' : ''}.${toHaveAccessibleName.name}`,\n 'element',\n '',\n ),\n `Expected element ${to} have accessible name`,\n expectedAccessibleName,\n 'Received',\n actualAccessibleName,\n )\n },\n }\n}\n\nfunction printAttribute(stringify, name, value) {\n return value === undefined ? name : `${name}=${stringify(value)}`\n}\n\nfunction getAttributeComment(stringify, name, value) {\n return value === undefined\n ? `element.hasAttribute(${stringify(name)})`\n : `element.getAttribute(${stringify(name)}) === ${stringify(value)}`\n}\n\nfunction toHaveAttribute(htmlElement, name, expectedValue) {\n checkHtmlElement(htmlElement, toHaveAttribute, this);\n const isExpectedValuePresent = expectedValue !== undefined;\n const hasAttribute = htmlElement.hasAttribute(name);\n const receivedValue = htmlElement.getAttribute(name);\n return {\n pass: isExpectedValuePresent\n ? hasAttribute && this.equals(receivedValue, expectedValue)\n : hasAttribute,\n message: () => {\n const to = this.isNot ? 'not to' : 'to';\n const receivedAttribute = hasAttribute\n ? printAttribute(this.utils.stringify, name, receivedValue)\n : null;\n const matcher = this.utils.matcherHint(\n `${this.isNot ? '.not' : ''}.toHaveAttribute`,\n 'element',\n this.utils.printExpected(name),\n {\n secondArgument: isExpectedValuePresent\n ? this.utils.printExpected(expectedValue)\n : undefined,\n comment: getAttributeComment(\n this.utils.stringify,\n name,\n expectedValue,\n ),\n },\n );\n return getMessage(\n this,\n matcher,\n `Expected the element ${to} have attribute`,\n printAttribute(this.utils.stringify, name, expectedValue),\n 'Received',\n receivedAttribute,\n )\n },\n }\n}\n\nfunction getExpectedClassNamesAndOptions(params) {\n const lastParam = params.pop();\n let expectedClassNames, options;\n\n if (typeof lastParam === 'object' && !(lastParam instanceof RegExp)) {\n expectedClassNames = params;\n options = lastParam;\n } else {\n expectedClassNames = params.concat(lastParam);\n options = {exact: false};\n }\n return {expectedClassNames, options}\n}\n\nfunction splitClassNames(str) {\n if (!str) return []\n return str.split(/\\s+/).filter(s => s.length > 0)\n}\n\nfunction isSubset$1(subset, superset) {\n return subset.every(strOrRegexp =>\n typeof strOrRegexp === 'string'\n ? superset.includes(strOrRegexp)\n : superset.some(className => strOrRegexp.test(className)),\n )\n}\n\nfunction toHaveClass(htmlElement, ...params) {\n checkHtmlElement(htmlElement, toHaveClass, this);\n const {expectedClassNames, options} = getExpectedClassNamesAndOptions(params);\n\n const received = splitClassNames(htmlElement.getAttribute('class'));\n const expected = expectedClassNames.reduce(\n (acc, className) =>\n acc.concat(\n typeof className === 'string' || !className\n ? splitClassNames(className)\n : className,\n ),\n [],\n );\n\n const hasRegExp = expected.some(className => className instanceof RegExp);\n if (options.exact && hasRegExp) {\n throw new Error('Exact option does not support RegExp expected class names')\n }\n\n if (options.exact) {\n return {\n pass: isSubset$1(expected, received) && expected.length === received.length,\n message: () => {\n const to = this.isNot ? 'not to' : 'to';\n return getMessage(\n this,\n this.utils.matcherHint(\n `${this.isNot ? '.not' : ''}.toHaveClass`,\n 'element',\n this.utils.printExpected(expected.join(' ')),\n ),\n `Expected the element ${to} have EXACTLY defined classes`,\n expected.join(' '),\n 'Received',\n received.join(' '),\n )\n },\n }\n }\n\n return expected.length > 0\n ? {\n pass: isSubset$1(expected, received),\n message: () => {\n const to = this.isNot ? 'not to' : 'to';\n return getMessage(\n this,\n this.utils.matcherHint(\n `${this.isNot ? '.not' : ''}.toHaveClass`,\n 'element',\n this.utils.printExpected(expected.join(' ')),\n ),\n `Expected the element ${to} have class`,\n expected.join(' '),\n 'Received',\n received.join(' '),\n )\n },\n }\n : {\n pass: this.isNot ? received.length > 0 : false,\n message: () =>\n this.isNot\n ? getMessage(\n this,\n this.utils.matcherHint('.not.toHaveClass', 'element', ''),\n 'Expected the element to have classes',\n '(none)',\n 'Received',\n received.join(' '),\n )\n : [\n this.utils.matcherHint(`.toHaveClass`, 'element'),\n 'At least one expected class must be provided.',\n ].join('\\n'),\n }\n}\n\nfunction getStyleDeclaration(document, css) {\n const styles = {};\n\n // The next block is necessary to normalize colors\n const copy = document.createElement('div');\n Object.keys(css).forEach(property => {\n copy.style[property] = css[property];\n styles[property] = copy.style[property];\n });\n\n return styles\n}\n\nfunction isSubset(styles, computedStyle) {\n return (\n !!Object.keys(styles).length &&\n Object.entries(styles).every(([prop, value]) => {\n const isCustomProperty = prop.startsWith('--');\n const spellingVariants = [prop];\n if (!isCustomProperty) spellingVariants.push(prop.toLowerCase());\n\n return spellingVariants.some(\n name =>\n computedStyle[name] === value ||\n computedStyle.getPropertyValue(name) === value,\n )\n })\n )\n}\n\nfunction printoutStyles(styles) {\n return Object.keys(styles)\n .sort()\n .map(prop => `${prop}: ${styles[prop]};`)\n .join('\\n')\n}\n\n// Highlights only style rules that were expected but were not found in the\n// received computed styles\nfunction expectedDiff(diffFn, expected, computedStyles) {\n const received = Array.from(computedStyles)\n .filter(prop => expected[prop] !== undefined)\n .reduce(\n (obj, prop) =>\n Object.assign(obj, {[prop]: computedStyles.getPropertyValue(prop)}),\n {},\n );\n const diffOutput = diffFn(printoutStyles(expected), printoutStyles(received));\n // Remove the \"+ Received\" annotation because this is a one-way diff\n return diffOutput.replace(`${pico.red('+ Received')}\\n`, '')\n}\n\nfunction toHaveStyle(htmlElement, css) {\n checkHtmlElement(htmlElement, toHaveStyle, this);\n const parsedCSS =\n typeof css === 'object' ? css : parseCSS(css, toHaveStyle, this);\n const {getComputedStyle} = htmlElement.ownerDocument.defaultView;\n\n const expected = getStyleDeclaration(htmlElement.ownerDocument, parsedCSS);\n const received = getComputedStyle(htmlElement);\n\n return {\n pass: isSubset(expected, received),\n message: () => {\n const matcher = `${this.isNot ? '.not' : ''}.toHaveStyle`;\n return [\n this.utils.matcherHint(matcher, 'element', ''),\n expectedDiff(this.utils.diff, expected, received),\n ].join('\\n\\n')\n },\n }\n}\n\nfunction toHaveFocus(element) {\n checkHtmlElement(element, toHaveFocus, this);\n\n return {\n pass: element.ownerDocument.activeElement === element,\n message: () => {\n return [\n this.utils.matcherHint(\n `${this.isNot ? '.not' : ''}.toHaveFocus`,\n 'element',\n '',\n ),\n '',\n ...(this.isNot\n ? [\n 'Received element is focused:',\n ` ${this.utils.printReceived(element)}`,\n ]\n : [\n 'Expected element with focus:',\n ` ${this.utils.printExpected(element)}`,\n 'Received element with focus:',\n ` ${this.utils.printReceived(\n element.ownerDocument.activeElement,\n )}`,\n ]),\n ].join('\\n')\n },\n }\n}\n\n// Returns the combined value of several elements that have the same name\n// e.g. radio buttons or groups of checkboxes\nfunction getMultiElementValue(elements) {\n const types = [...new Set(elements.map(element => element.type))];\n if (types.length !== 1) {\n throw new Error(\n 'Multiple form elements with the same name must be of the same type',\n )\n }\n switch (types[0]) {\n case 'radio': {\n const theChosenOne = elements.find(radio => radio.checked);\n return theChosenOne ? theChosenOne.value : undefined\n }\n case 'checkbox':\n return elements\n .filter(checkbox => checkbox.checked)\n .map(checkbox => checkbox.value)\n default:\n // NOTE: Not even sure this is a valid use case, but just in case...\n return elements.map(element => element.value)\n }\n}\n\nfunction getFormValue(container, name) {\n const elements = [...container.querySelectorAll(`[name=\"${escape(name)}\"]`)];\n /* istanbul ignore if */\n if (elements.length === 0) {\n return undefined // shouldn't happen, but just in case\n }\n switch (elements.length) {\n case 1:\n return getSingleElementValue(elements[0])\n default:\n return getMultiElementValue(elements)\n }\n}\n\n// Strips the `[]` suffix off a form value name\nfunction getPureName(name) {\n return /\\[\\]$/.test(name) ? name.slice(0, -2) : name\n}\n\nfunction getAllFormValues(container) {\n const names = Array.from(container.elements).map(element => element.name);\n return names.reduce(\n (obj, name) => ({\n ...obj,\n [getPureName(name)]: getFormValue(container, name),\n }),\n {},\n )\n}\n\nfunction toHaveFormValues(formElement, expectedValues) {\n checkHtmlElement(formElement, toHaveFormValues, this);\n if (!formElement.elements) {\n // TODO: Change condition to use instanceof against the appropriate element classes instead\n throw new Error('toHaveFormValues must be called on a form or a fieldset')\n }\n const formValues = getAllFormValues(formElement);\n return {\n pass: Object.entries(expectedValues).every(([name, expectedValue]) =>\n compareAsSet(formValues[name], expectedValue),\n ),\n message: () => {\n const to = this.isNot ? 'not to' : 'to';\n const matcher = `${this.isNot ? '.not' : ''}.toHaveFormValues`;\n const commonKeyValues = Object.keys(formValues)\n .filter(key => expectedValues.hasOwnProperty(key))\n .reduce((obj, key) => ({...obj, [key]: formValues[key]}), {});\n return [\n this.utils.matcherHint(matcher, 'element', ''),\n `Expected the element ${to} have form values`,\n this.utils.diff(expectedValues, commonKeyValues),\n ].join('\\n\\n')\n },\n }\n}\n\nfunction isStyleVisible(element) {\n const {getComputedStyle} = element.ownerDocument.defaultView;\n\n const {display, visibility, opacity} = getComputedStyle(element);\n return (\n display !== 'none' &&\n visibility !== 'hidden' &&\n visibility !== 'collapse' &&\n opacity !== '0' &&\n opacity !== 0\n )\n}\n\nfunction isAttributeVisible(element, previousElement) {\n let detailsVisibility;\n\n if (previousElement) {\n detailsVisibility =\n element.nodeName === 'DETAILS' && previousElement.nodeName !== 'SUMMARY'\n ? element.hasAttribute('open')\n : true;\n } else {\n detailsVisibility =\n element.nodeName === 'DETAILS' ? element.hasAttribute('open') : true;\n }\n\n return !element.hasAttribute('hidden') && detailsVisibility\n}\n\nfunction isElementVisible(element, previousElement) {\n return (\n isStyleVisible(element) &&\n isAttributeVisible(element, previousElement) &&\n (!element.parentElement || isElementVisible(element.parentElement, element))\n )\n}\n\nfunction toBeVisible(element) {\n checkHtmlElement(element, toBeVisible, this);\n const isInDocument =\n element.ownerDocument === element.getRootNode({composed: true});\n const isVisible = isInDocument && isElementVisible(element);\n return {\n pass: isVisible,\n message: () => {\n const is = isVisible ? 'is' : 'is not';\n return [\n this.utils.matcherHint(\n `${this.isNot ? '.not' : ''}.toBeVisible`,\n 'element',\n '',\n ),\n '',\n `Received element ${is} visible${\n isInDocument ? '' : ' (element is not in the document)'\n }:`,\n ` ${this.utils.printReceived(element.cloneNode(false))}`,\n ].join('\\n')\n },\n }\n}\n\n// form elements that support 'disabled'\nconst FORM_TAGS$2 = [\n 'fieldset',\n 'input',\n 'select',\n 'optgroup',\n 'option',\n 'button',\n 'textarea',\n];\n\n/*\n * According to specification:\n * If <fieldset> is disabled, the form controls that are its descendants,\n * except descendants of its first optional <legend> element, are disabled\n *\n * https://html.spec.whatwg.org/multipage/form-elements.html#concept-fieldset-disabled\n *\n * This method tests whether element is first legend child of fieldset parent\n */\nfunction isFirstLegendChildOfFieldset(element, parent) {\n return (\n getTag(element) === 'legend' &&\n getTag(parent) === 'fieldset' &&\n element.isSameNode(\n Array.from(parent.children).find(child => getTag(child) === 'legend'),\n )\n )\n}\n\nfunction isElementDisabledByParent(element, parent) {\n return (\n isElementDisabled(parent) && !isFirstLegendChildOfFieldset(element, parent)\n )\n}\n\nfunction isCustomElement(tag) {\n return tag.includes('-')\n}\n\n/*\n * Only certain form elements and custom elements can actually be disabled:\n * https://html.spec.whatwg.org/multipage/semantics-other.html#disabled-elements\n */\nfunction canElementBeDisabled(element) {\n const tag = getTag(element);\n return FORM_TAGS$2.includes(tag) || isCustomElement(tag)\n}\n\nfunction isElementDisabled(element) {\n return canElementBeDisabled(element) && element.hasAttribute('disabled')\n}\n\nfunction isAncestorDisabled(element) {\n const parent = element.parentElement;\n return (\n Boolean(parent) &&\n (isElementDisabledByParent(element, parent) || isAncestorDisabled(parent))\n )\n}\n\nfunction isElementOrAncestorDisabled(element) {\n return (\n canElementBeDisabled(element) &&\n (isElementDisabled(element) || isAncestorDisabled(element))\n )\n}\n\nfunction toBeDisabled(element) {\n checkHtmlElement(element, toBeDisabled, this);\n\n const isDisabled = isElementOrAncestorDisabled(element);\n\n return {\n pass: isDisabled,\n message: () => {\n const is = isDisabled ? 'is' : 'is not';\n return [\n this.utils.matcherHint(\n `${this.isNot ? '.not' : ''}.toBeDisabled`,\n 'element',\n '',\n ),\n '',\n `Received element ${is} disabled:`,\n ` ${this.utils.printReceived(element.cloneNode(false))}`,\n ].join('\\n')\n },\n }\n}\n\nfunction toBeEnabled(element) {\n checkHtmlElement(element, toBeEnabled, this);\n\n const isEnabled = !isElementOrAncestorDisabled(element);\n\n return {\n pass: isEnabled,\n message: () => {\n const is = isEnabled ? 'is' : 'is not';\n return [\n this.utils.matcherHint(\n `${this.isNot ? '.not' : ''}.toBeEnabled`,\n 'element',\n '',\n ),\n '',\n `Received element ${is} enabled:`,\n ` ${this.utils.printReceived(element.cloneNode(false))}`,\n ].join('\\n')\n },\n }\n}\n\n// form elements that support 'required'\nconst FORM_TAGS$1 = ['select', 'textarea'];\n\nconst ARIA_FORM_TAGS = ['input', 'select', 'textarea'];\n\nconst UNSUPPORTED_INPUT_TYPES = [\n 'color',\n 'hidden',\n 'range',\n 'submit',\n 'image',\n 'reset',\n];\n\nconst SUPPORTED_ARIA_ROLES = [\n 'checkbox',\n 'combobox',\n 'gridcell',\n 'listbox',\n 'radiogroup',\n 'spinbutton',\n 'textbox',\n 'tree',\n];\n\nfunction isRequiredOnFormTagsExceptInput(element) {\n return FORM_TAGS$1.includes(getTag(element)) && element.hasAttribute('required')\n}\n\nfunction isRequiredOnSupportedInput(element) {\n return (\n getTag(element) === 'input' &&\n element.hasAttribute('required') &&\n ((element.hasAttribute('type') &&\n !UNSUPPORTED_INPUT_TYPES.includes(element.getAttribute('type'))) ||\n !element.hasAttribute('type'))\n )\n}\n\nfunction isElementRequiredByARIA(element) {\n return (\n element.hasAttribute('aria-required') &&\n element.getAttribute('aria-required') === 'true' &&\n (ARIA_FORM_TAGS.includes(getTag(element)) ||\n (element.hasAttribute('role') &&\n SUPPORTED_ARIA_ROLES.includes(element.getAttribute('role'))))\n )\n}\n\nfunction toBeRequired(element) {\n checkHtmlElement(element, toBeRequired, this);\n\n const isRequired =\n isRequiredOnFormTagsExceptInput(element) ||\n isRequiredOnSupportedInput(element) ||\n isElementRequiredByARIA(element);\n\n return {\n pass: isRequired,\n message: () => {\n const is = isRequired ? 'is' : 'is not';\n return [\n this.utils.matcherHint(\n `${this.isNot ? '.not' : ''}.toBeRequired`,\n 'element',\n '',\n ),\n '',\n `Received element ${is} required:`,\n ` ${this.utils.printReceived(element.cloneNode(false))}`,\n ].join('\\n')\n },\n }\n}\n\nconst FORM_TAGS = ['form', 'input', 'select', 'textarea'];\n\nfunction isElementHavingAriaInvalid(element) {\n return (\n element.hasAttribute('aria-invalid') &&\n element.getAttribute('aria-invalid') !== 'false'\n )\n}\n\nfunction isSupportsValidityMethod(element) {\n return FORM_TAGS.includes(getTag(element))\n}\n\nfunction isElementInvalid(element) {\n const isHaveAriaInvalid = isElementHavingAriaInvalid(element);\n if (isSupportsValidityMethod(element)) {\n return isHaveAriaInvalid || !element.checkValidity()\n } else {\n return isHaveAriaInvalid\n }\n}\n\nfunction toBeInvalid(element) {\n checkHtmlElement(element, toBeInvalid, this);\n\n const isInvalid = isElementInvalid(element);\n\n return {\n pass: isInvalid,\n message: () => {\n const is = isInvalid ? 'is' : 'is not';\n return [\n this.utils.matcherHint(\n `${this.isNot ? '.not' : ''}.toBeInvalid`,\n 'element',\n '',\n ),\n '',\n `Received element ${is} currently invalid:`,\n ` ${this.utils.printReceived(element.cloneNode(false))}`,\n ].join('\\n')\n },\n }\n}\n\nfunction toBeValid(element) {\n checkHtmlElement(element, toBeValid, this);\n\n const isValid = !isElementInvalid(element);\n\n return {\n pass: isValid,\n message: () => {\n const is = isValid ? 'is' : 'is not';\n return [\n this.utils.matcherHint(\n `${this.isNot ? '.not' : ''}.toBeValid`,\n 'element',\n '',\n ),\n '',\n `Received element ${is} currently valid:`,\n ` ${this.utils.printReceived(element.cloneNode(false))}`,\n ].join('\\n')\n },\n }\n}\n\nfunction toHaveValue(htmlElement, expectedValue) {\n checkHtmlElement(htmlElement, toHaveValue, this);\n\n if (\n htmlElement.tagName.toLowerCase() === 'input' &&\n ['checkbox', 'radio'].includes(htmlElement.type)\n ) {\n throw new Error(\n 'input with type=checkbox or type=radio cannot be used with .toHaveValue(). Use .toBeChecked() for type=checkbox or .toHaveFormValues() instead',\n )\n }\n\n const receivedValue = getSingleElementValue(htmlElement);\n const expectsValue = expectedValue !== undefined;\n\n let expectedTypedValue = expectedValue;\n let receivedTypedValue = receivedValue;\n if (expectedValue == receivedValue && expectedValue !== receivedValue) {\n expectedTypedValue = `${expectedValue} (${typeof expectedValue})`;\n receivedTypedValue = `${receivedValue} (${typeof receivedValue})`;\n }\n\n return {\n pass: expectsValue\n ? compareAsSet(receivedValue, expectedValue)\n : Boolean(receivedValue),\n message: () => {\n const to = this.isNot ? 'not to' : 'to';\n const matcher = this.utils.matcherHint(\n `${this.isNot ? '.not' : ''}.toHaveValue`,\n 'element',\n expectedValue,\n );\n return getMessage(\n this,\n matcher,\n `Expected the element ${to} have value`,\n expectsValue ? expectedTypedValue : '(any)',\n 'Received',\n receivedTypedValue,\n )\n },\n }\n}\n\nfunction toHaveDisplayValue(htmlElement, expectedValue) {\n checkHtmlElement(htmlElement, toHaveDisplayValue, this);\n const tagName = htmlElement.tagName.toLowerCase();\n\n if (!['select', 'input', 'textarea'].includes(tagName)) {\n throw new Error(\n '.toHaveDisplayValue() currently supports only input, textarea or select elements, try with another matcher instead.',\n )\n }\n\n if (tagName === 'input' && ['radio', 'checkbox'].includes(htmlElement.type)) {\n throw new Error(\n `.toHaveDisplayValue() currently does not support input[type=\"${htmlElement.type}\"], try with another matcher instead.`,\n )\n }\n\n const values = getValues(tagName, htmlElement);\n const expectedValues = getExpectedValues(expectedValue);\n const numberOfMatchesWithValues = expectedValues.filter(expected =>\n values.some(value =>\n expected instanceof RegExp\n ? expected.test(value)\n : this.equals(value, String(expected)),\n ),\n ).length;\n\n const matchedWithAllValues = numberOfMatchesWithValues === values.length;\n const matchedWithAllExpectedValues =\n numberOfMatchesWithValues === expectedValues.length;\n\n return {\n pass: matchedWithAllValues && matchedWithAllExpectedValues,\n message: () =>\n getMessage(\n this,\n this.utils.matcherHint(\n `${this.isNot ? '.not' : ''}.toHaveDisplayValue`,\n 'element',\n '',\n ),\n `Expected element ${this.isNot ? 'not ' : ''}to have display value`,\n expectedValue,\n 'Received',\n values,\n ),\n }\n}\n\nfunction getValues(tagName, htmlElement) {\n return tagName === 'select'\n ? Array.from(htmlElement)\n .filter(option => option.selected)\n .map(option => option.textContent)\n : [htmlElement.value]\n}\n\nfunction getExpectedValues(expectedValue) {\n return expectedValue instanceof Array ? expectedValue : [expectedValue]\n}\n\nfunction toBeChecked(element) {\n checkHtmlElement(element, toBeChecked, this);\n\n const isValidInput = () => {\n return (\n element.tagName.toLowerCase() === 'input' &&\n ['checkbox', 'radio'].includes(element.type)\n )\n };\n\n const isValidAriaElement = () => {\n return (\n roleSupportsChecked(element.getAttribute('role')) &&\n ['true', 'false'].includes(element.getAttribute('aria-checked'))\n )\n };\n\n if (!isValidInput() && !isValidAriaElement()) {\n return {\n pass: false,\n message: () =>\n `only inputs with type=\"checkbox\" or type=\"radio\" or elements with ${supportedRolesSentence()} and a valid aria-checked attribute can be used with .toBeChecked(). Use .toHaveValue() instead`,\n }\n }\n\n const isChecked = () => {\n if (isValidInput()) return element.checked\n return element.getAttribute('aria-checked') === 'true'\n };\n\n return {\n pass: isChecked(),\n message: () => {\n const is = isChecked() ? 'is' : 'is not';\n return [\n this.utils.matcherHint(\n `${this.isNot ? '.not' : ''}.toBeChecked`,\n 'element',\n '',\n ),\n '',\n `Received element ${is} checked:`,\n ` ${this.utils.printReceived(element.cloneNode(false))}`,\n ].join('\\n')\n },\n }\n}\n\nfunction supportedRolesSentence() {\n return toSentence(\n supportedRoles().map(role => `role=\"${role}\"`),\n {lastWordConnector: ' or '},\n )\n}\n\nfunction supportedRoles() {\n return roles.keys().filter(roleSupportsChecked)\n}\n\nfunction roleSupportsChecked(role) {\n return roles.get(role)?.props['aria-checked'] !== undefined\n}\n\nfunction toBePartiallyChecked(element) {\n checkHtmlElement(element, toBePartiallyChecked, this);\n\n const isValidInput = () => {\n return (\n element.tagName.toLowerCase() === 'input' && element.type === 'checkbox'\n )\n };\n\n const isValidAriaElement = () => {\n return element.getAttribute('role') === 'checkbox'\n };\n\n if (!isValidInput() && !isValidAriaElement()) {\n return {\n pass: false,\n message: () =>\n 'only inputs with type=\"checkbox\" or elements with role=\"checkbox\" and a valid aria-checked attribute can be used with .toBePartiallyChecked(). Use .toHaveValue() instead',\n }\n }\n\n const isPartiallyChecked = () => {\n const isAriaMixed = element.getAttribute('aria-checked') === 'mixed';\n\n if (isValidInput()) {\n return element.indeterminate || isAriaMixed\n }\n\n return isAriaMixed\n };\n\n return {\n pass: isPartiallyChecked(),\n message: () => {\n const is = isPartiallyChecked() ? 'is' : 'is not';\n return [\n this.utils.matcherHint(\n `${this.isNot ? '.not' : ''}.toBePartiallyChecked`,\n 'element',\n '',\n ),\n '',\n `Received element ${is} partially checked:`,\n ` ${this.utils.printReceived(element.cloneNode(false))}`,\n ].join('\\n')\n },\n }\n}\n\n// See algoritm: https://www.w3.org/TR/accname-1.1/#mapping_additional_nd_description\nfunction toHaveDescription(htmlElement, checkWith) {\n deprecate(\n 'toHaveDescription',\n 'Please use toHaveAccessibleDescription.',\n );\n\n checkHtmlElement(htmlElement, toHaveDescription, this);\n\n const expectsDescription = checkWith !== undefined;\n\n const descriptionIDRaw = htmlElement.getAttribute('aria-describedby') || '';\n const descriptionIDs = descriptionIDRaw.split(/\\s+/).filter(Boolean);\n let description = '';\n if (descriptionIDs.length > 0) {\n const document = htmlElement.ownerDocument;\n const descriptionEls = descriptionIDs\n .map(descriptionID => document.getElementById(descriptionID))\n .filter(Boolean);\n description = normalize(descriptionEls.map(el => el.textContent).join(' '));\n }\n\n return {\n pass: expectsDescription\n ? checkWith instanceof RegExp\n ? checkWith.test(description)\n : this.equals(description, checkWith)\n : Boolean(description),\n message: () => {\n const to = this.isNot ? 'not to' : 'to';\n return getMessage(\n this,\n this.utils.matcherHint(\n `${this.isNot ? '.not' : ''}.toHaveDescription`,\n 'element',\n '',\n ),\n `Expected the element ${to} have description`,\n this.utils.printExpected(checkWith),\n 'Received',\n this.utils.printReceived(description),\n )\n },\n }\n}\n\n// See aria-errormessage spec https://www.w3.org/TR/wai-aria-1.2/#aria-errormessage\nfunction toHaveErrorMessage(htmlElement, checkWith) {\n deprecate('toHaveErrorMessage', 'Please use toHaveAccessibleErrorMessage.');\n checkHtmlElement(htmlElement, toHaveErrorMessage, this);\n\n if (\n !htmlElement.hasAttribute('aria-invalid') ||\n htmlElement.getAttribute('aria-invalid') === 'false'\n ) {\n const not = this.isNot ? '.not' : '';\n\n return {\n pass: false,\n message: () => {\n return getMessage(\n this,\n this.utils.matcherHint(`${not}.toHaveErrorMessage`, 'element', ''),\n `Expected the element to have invalid state indicated by`,\n 'aria-invalid=\"true\"',\n 'Received',\n htmlElement.hasAttribute('aria-invalid')\n ? `aria-invalid=\"${htmlElement.getAttribute('aria-invalid')}\"`\n : this.utils.printReceived(''),\n )\n },\n }\n }\n\n const expectsErrorMessage = checkWith !== undefined;\n\n const errormessageIDRaw = htmlElement.getAttribute('aria-errormessage') || '';\n const errormessageIDs = errormessageIDRaw.split(/\\s+/).filter(Boolean);\n\n let errormessage = '';\n if (errormessageIDs.length > 0) {\n const document = htmlElement.ownerDocument;\n\n const errormessageEls = errormessageIDs\n .map(errormessageID => document.getElementById(errormessageID))\n .filter(Boolean);\n\n errormessage = normalize(\n errormessageEls.map(el => el.textContent).join(' '),\n );\n }\n\n return {\n pass: expectsErrorMessage\n ? checkWith instanceof RegExp\n ? checkWith.test(errormessage)\n : this.equals(errormessage, checkWith)\n : Boolean(errormessage),\n message: () => {\n const to = this.isNot ? 'not to' : 'to';\n return getMessage(\n this,\n this.utils.matcherHint(\n `${this.isNot ? '.not' : ''}.toHaveErrorMessage`,\n 'element',\n '',\n ),\n `Expected the element ${to} have error message`,\n this.utils.printExpected(checkWith),\n 'Received',\n this.utils.printReceived(errormessage),\n )\n },\n }\n}\n\n/**\n * Returns the selection from the element.\n *\n * @param element {HTMLElement} The element to get the selection from.\n * @returns {String} The selection.\n */\nfunction getSelection(element) {\n const selection = element.ownerDocument.getSelection();\n\n if (['input', 'textarea'].includes(element.tagName.toLowerCase())) {\n if (['radio', 'checkbox'].includes(element.type)) return ''\n return element.value\n .toString()\n .substring(element.selectionStart, element.selectionEnd)\n }\n\n if (selection.anchorNode === null || selection.focusNode === null) {\n // No selection\n return ''\n }\n\n const originalRange = selection.getRangeAt(0);\n const temporaryRange = element.ownerDocument.createRange();\n\n if (selection.containsNode(element, false)) {\n // Whole element is inside selection\n temporaryRange.selectNodeContents(element);\n selection.removeAllRanges();\n selection.addRange(temporaryRange);\n } else if (\n element.contains(selection.anchorNode) &&\n element.contains(selection.focusNode)\n ) ; else {\n // Element is partially selected\n const selectionStartsWithinElement =\n element === originalRange.startContainer ||\n element.contains(originalRange.startContainer);\n const selectionEndsWithinElement =\n element === originalRange.endContainer ||\n element.contains(originalRange.endContainer);\n selection.removeAllRanges();\n\n if (selectionStartsWithinElement || selectionEndsWithinElement) {\n temporaryRange.selectNodeContents(element);\n\n if (selectionStartsWithinElement) {\n temporaryRange.setStart(\n originalRange.startContainer,\n originalRange.startOffset,\n );\n }\n if (selectionEndsWithinElement) {\n temporaryRange.setEnd(\n originalRange.endContainer,\n originalRange.endOffset,\n );\n }\n\n selection.addRange(temporaryRange);\n }\n }\n\n const result = selection.toString();\n\n selection.removeAllRanges();\n selection.addRange(originalRange);\n\n return result\n}\n\n/**\n * Checks if the element has the string selected.\n *\n * @param htmlElement {HTMLElement} The html element to check the selection for.\n * @param expectedSelection {String} The selection as a string.\n */\nfunction toHaveSelection(htmlElement, expectedSelection) {\n checkHtmlElement(htmlElement, toHaveSelection, this);\n\n const expectsSelection = expectedSelection !== undefined;\n\n if (expectsSelection && typeof expectedSelection !== 'string') {\n throw new Error(`expected selection must be a string or undefined`)\n }\n\n const receivedSelection = getSelection(htmlElement);\n\n return {\n pass: expectsSelection\n ? compareAsSet(receivedSelection, expectedSelection)\n : Boolean(receivedSelection),\n message: () => {\n const to = this.isNot ? 'not to' : 'to';\n const matcher = this.utils.matcherHint(\n `${this.isNot ? '.not' : ''}.toHaveSelection`,\n 'element',\n expectedSelection,\n );\n return getMessage(\n this,\n matcher,\n `Expected the element ${to} have selection`,\n expectsSelection ? expectedSelection : '(any)',\n 'Received',\n receivedSelection,\n )\n },\n }\n}\n\nfunction toBePressed(element) {\n checkHtmlElement(element, toBePressed, this);\n\n const roles = (element.getAttribute('role') || '')\n .split(' ')\n .map(role => role.trim());\n\n const isButton =\n element.tagName.toLowerCase() === 'button' ||\n (element.tagName.toLowerCase() === 'input' && element.type === 'button') ||\n roles.includes('button');\n\n const pressedAttribute = element.getAttribute('aria-pressed');\n\n const isValidAriaElement =\n pressedAttribute === 'true' || pressedAttribute === 'false';\n\n if (!isButton || !isValidAriaElement) {\n return {\n pass: false,\n message: () =>\n `Only button or input with type=\"button\" or element with role=\"button\" and a valid aria-pressed attribute can be used with .toBePressed()`,\n }\n }\n\n const isPressed = pressedAttribute === 'true';\n\n return {\n pass: isButton && isPressed,\n\n message: () => {\n const matcher = this.utils.matcherHint(\n `${this.isNot ? '.not' : ''}.toBePressed`,\n 'element',\n '',\n );\n\n return getMessage(\n this,\n matcher,\n `Expected element to have`,\n `aria-pressed=\"${this.isNot ? 'false' : 'true'}\"`,\n `Received`,\n `aria-pressed=\"${pressedAttribute}\"`,\n )\n },\n }\n}\n\nfunction toBePartiallyPressed(element) {\n checkHtmlElement(element, toBePartiallyPressed, this);\n\n const roles = (element.getAttribute('role') || '')\n .split(' ')\n .map(role => role.trim());\n\n const isButton =\n element.tagName.toLowerCase() === 'button' ||\n (element.tagName.toLowerCase() === 'input' && element.type === 'button') ||\n roles.includes('button');\n\n const pressedAttribute = element.getAttribute('aria-pressed');\n\n const isValidAriaElement =\n pressedAttribute === 'true' ||\n pressedAttribute === 'false' ||\n pressedAttribute === 'mixed';\n\n if (!isButton || !isValidAriaElement) {\n return {\n pass: false,\n message: () =>\n `Only button or input with type=\"button\" or element with role=\"button\" and a valid aria-pressed attribute can be used with .toBePartiallyPressed()`,\n }\n }\n\n const isPartiallyPressed = pressedAttribute === 'mixed';\n\n return {\n pass: isButton && isPartiallyPressed,\n\n message: () => {\n const to = this.isNot ? 'not to' : 'to';\n\n const matcher = this.utils.matcherHint(\n `${this.isNot ? '.not' : ''}.toBePartiallyPressed`,\n 'element',\n '',\n );\n\n return getMessage(\n this,\n matcher,\n `Expected element ${to} have`,\n `aria-pressed=\"mixed\"`,\n `Received`,\n `aria-pressed=\"${pressedAttribute}\"`,\n )\n },\n }\n}\n\n// ref: https://dom.spec.whatwg.org/#dom-node-document_position_disconnected\nconst DOCUMENT_POSITION_DISCONNECTED = 0x01;\nconst DOCUMENT_POSITION_PRECEDING = 0x02;\nconst DOCUMENT_POSITION_FOLLOWING = 0x04;\nconst DOCUMENT_POSITION_CONTAINS = 0x08;\nconst DOCUMENT_POSITION_CONTAINED_BY = 0x10;\nconst DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC = 0x20;\n\n// ref: https://developer.mozilla.org/en-US/docs/Web/API/Node/compareDocumentPosition\nconst DOCUMENT_POSITIONS_STRINGS = {\n [DOCUMENT_POSITION_DISCONNECTED]: 'Node.DOCUMENT_POSITION_DISCONNECTED',\n [DOCUMENT_POSITION_PRECEDING]: 'Node.DOCUMENT_POSITION_PRECEDING',\n [DOCUMENT_POSITION_FOLLOWING]: 'Node.DOCUMENT_POSITION_FOLLOWING',\n [DOCUMENT_POSITION_CONTAINS]: 'Node.DOCUMENT_POSITION_CONTAINS',\n [DOCUMENT_POSITION_CONTAINED_BY]: 'Node.DOCUMENT_POSITION_CONTAINED_BY',\n [DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC]:\n 'Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC',\n};\n\nfunction makeDocumentPositionErrorString(documentPosition) {\n if (documentPosition in DOCUMENT_POSITIONS_STRINGS) {\n return `${DOCUMENT_POSITIONS_STRINGS[documentPosition]} (${documentPosition})`\n }\n\n return `Unknown document position (${documentPosition})`\n}\n\nfunction checkToAppear(methodName, targetDocumentPosition) {\n // eslint-disable-next-line func-names\n return function (element, secondElement) {\n checkHtmlElement(element, toAppearBefore, this);\n checkHtmlElement(secondElement, toAppearBefore, this);\n\n const documentPosition = element.compareDocumentPosition(secondElement);\n const pass = documentPosition === targetDocumentPosition;\n\n return {\n pass,\n message: () => {\n return [\n this.utils.matcherHint(\n `${this.isNot ? '.not' : ''}.${methodName}`,\n 'element',\n 'secondElement',\n ),\n '',\n `Received: ${makeDocumentPositionErrorString(documentPosition)}`,\n ].join('\\n')\n },\n }\n }\n}\n\nfunction toAppearBefore(element, secondElement) {\n return checkToAppear('toAppearBefore', DOCUMENT_POSITION_FOLLOWING).apply(\n this,\n [element, secondElement],\n )\n}\n\nfunction toAppearAfter(element, secondElement) {\n return checkToAppear('toAppearAfter', DOCUMENT_POSITION_PRECEDING).apply(\n this,\n [element, secondElement],\n )\n}\n\nvar extensions = /*#__PURE__*/Object.freeze({\n __proto__: null,\n toAppearAfter: toAppearAfter,\n toAppearBefore: toAppearBefore,\n toBeChecked: toBeChecked,\n toBeDisabled: toBeDisabled,\n toBeEmpty: toBeEmpty,\n toBeEmptyDOMElement: toBeEmptyDOMElement,\n toBeEnabled: toBeEnabled,\n toBeInTheDOM: toBeInTheDOM,\n toBeInTheDocument: toBeInTheDocument,\n toBeInvalid: toBeInvalid,\n toBePartiallyChecked: toBePartiallyChecked,\n toBePartiallyPressed: toBePartiallyPressed,\n toBePressed: toBePressed,\n toBeRequired: toBeRequired,\n toBeValid: toBeValid,\n toBeVisible: toBeVisible,\n toContainElement: toContainElement,\n toContainHTML: toContainHTML,\n toHaveAccessibleDescription: toHaveAccessibleDescription,\n toHaveAccessibleErrorMessage: toHaveAccessibleErrorMessage,\n toHaveAccessibleName: toHaveAccessibleName,\n toHaveAttribute: toHaveAttribute,\n toHaveClass: toHaveClass,\n toHaveDescription: toHaveDescription,\n toHaveDisplayValue: toHaveDisplayValue,\n toHaveErrorMessage: toHaveErrorMessage,\n toHaveFocus: toHaveFocus,\n toHaveFormValues: toHaveFormValues,\n toHaveRole: toHaveRole,\n toHaveSelection: toHaveSelection,\n toHaveStyle: toHaveStyle,\n toHaveTextContent: toHaveTextContent,\n toHaveValue: toHaveValue\n});\n\nexport { toBePartiallyChecked as A, toHaveDescription as B, toHaveErrorMessage as C, toHaveSelection as D, toBePressed as E, toBePartiallyPressed as F, toAppearBefore as G, toAppearAfter as H, toBeInTheDocument as a, toBeEmpty as b, toBeEmptyDOMElement as c, toContainElement as d, extensions as e, toContainHTML as f, toHaveTextContent as g, toHaveAccessibleDescription as h, toHaveAccessibleErrorMessage as i, toHaveRole as j, toHaveAccessibleName as k, toHaveAttribute as l, toHaveClass as m, toHaveStyle as n, toHaveFocus as o, toHaveFormValues as p, toBeVisible as q, toBeDisabled as r, toBeEnabled as s, toBeInTheDOM as t, toBeRequired as u, toBeInvalid as v, toBeValid as w, toHaveValue as x, toHaveDisplayValue as y, toBeChecked as z };\n","import * as prettyFormat from 'pretty-format';\nexport { prettyFormat };\nimport { computeAccessibleName, computeAccessibleDescription } from 'dom-accessibility-api';\nimport { elementRoles, roles, roleElements } from 'aria-query';\nimport lzString from 'lz-string';\n\n/**\n * Source: https://github.com/facebook/jest/blob/e7bb6a1e26ffab90611b2593912df15b69315611/packages/pretty-format/src/plugins/DOMElement.ts\n */\n/* eslint-disable -- trying to stay as close to the original as possible */\n/* istanbul ignore file */\n\nfunction escapeHTML(str) {\n return str.replace(/</g, '<').replace(/>/g, '>');\n}\n// Return empty string if keys is empty.\nconst printProps = (keys, props, config, indentation, depth, refs, printer) => {\n const indentationNext = indentation + config.indent;\n const colors = config.colors;\n return keys.map(key => {\n const value = props[key];\n let printed = printer(value, config, indentationNext, depth, refs);\n if (typeof value !== 'string') {\n if (printed.indexOf('\\n') !== -1) {\n printed = config.spacingOuter + indentationNext + printed + config.spacingOuter + indentation;\n }\n printed = '{' + printed + '}';\n }\n return config.spacingInner + indentation + colors.prop.open + key + colors.prop.close + '=' + colors.value.open + printed + colors.value.close;\n }).join('');\n};\n\n// https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType#node_type_constants\nconst NodeTypeTextNode = 3;\n\n// Return empty string if children is empty.\nconst printChildren = (children, config, indentation, depth, refs, printer) => children.map(child => {\n const printedChild = typeof child === 'string' ? printText(child, config) : printer(child, config, indentation, depth, refs);\n if (printedChild === '' && typeof child === 'object' && child !== null && child.nodeType !== NodeTypeTextNode) {\n // A plugin serialized this Node to '' meaning we should ignore it.\n return '';\n }\n return config.spacingOuter + indentation + printedChild;\n}).join('');\nconst printText = (text, config) => {\n const contentColor = config.colors.content;\n return contentColor.open + escapeHTML(text) + contentColor.close;\n};\nconst printComment = (comment, config) => {\n const commentColor = config.colors.comment;\n return commentColor.open + '<!--' + escapeHTML(comment) + '-->' + commentColor.close;\n};\n\n// Separate the functions to format props, children, and element,\n// so a plugin could override a particular function, if needed.\n// Too bad, so sad: the traditional (but unnecessary) space\n// in a self-closing tagColor requires a second test of printedProps.\nconst printElement = (type, printedProps, printedChildren, config, indentation) => {\n const tagColor = config.colors.tag;\n return tagColor.open + '<' + type + (printedProps && tagColor.close + printedProps + config.spacingOuter + indentation + tagColor.open) + (printedChildren ? '>' + tagColor.close + printedChildren + config.spacingOuter + indentation + tagColor.open + '</' + type : (printedProps && !config.min ? '' : ' ') + '/') + '>' + tagColor.close;\n};\nconst printElementAsLeaf = (type, config) => {\n const tagColor = config.colors.tag;\n return tagColor.open + '<' + type + tagColor.close + ' …' + tagColor.open + ' />' + tagColor.close;\n};\nconst ELEMENT_NODE$1 = 1;\nconst TEXT_NODE$1 = 3;\nconst COMMENT_NODE$1 = 8;\nconst FRAGMENT_NODE = 11;\nconst ELEMENT_REGEXP = /^((HTML|SVG)\\w*)?Element$/;\nconst isCustomElement = val => {\n const {\n tagName\n } = val;\n return Boolean(typeof tagName === 'string' && tagName.includes('-') || typeof val.hasAttribute === 'function' && val.hasAttribute('is'));\n};\nconst testNode = val => {\n const constructorName = val.constructor.name;\n const {\n nodeType\n } = val;\n return nodeType === ELEMENT_NODE$1 && (ELEMENT_REGEXP.test(constructorName) || isCustomElement(val)) || nodeType === TEXT_NODE$1 && constructorName === 'Text' || nodeType === COMMENT_NODE$1 && constructorName === 'Comment' || nodeType === FRAGMENT_NODE && constructorName === 'DocumentFragment';\n};\nfunction nodeIsText(node) {\n return node.nodeType === TEXT_NODE$1;\n}\nfunction nodeIsComment(node) {\n return node.nodeType === COMMENT_NODE$1;\n}\nfunction nodeIsFragment(node) {\n return node.nodeType === FRAGMENT_NODE;\n}\nfunction createDOMElementFilter(filterNode) {\n return {\n test: val => {\n var _val$constructor2;\n return ((val == null || (_val$constructor2 = val.constructor) == null ? void 0 : _val$constructor2.name) || isCustomElement(val)) && testNode(val);\n },\n serialize: (node, config, indentation, depth, refs, printer) => {\n if (nodeIsText(node)) {\n return printText(node.data, config);\n }\n if (nodeIsComment(node)) {\n return printComment(node.data, config);\n }\n const type = nodeIsFragment(node) ? \"DocumentFragment\" : node.tagName.toLowerCase();\n if (++depth > config.maxDepth) {\n return printElementAsLeaf(type, config);\n }\n return printElement(type, printProps(nodeIsFragment(node) ? [] : Array.from(node.attributes).map(attr => attr.name).sort(), nodeIsFragment(node) ? {} : Array.from(node.attributes).reduce((props, attribute) => {\n props[attribute.name] = attribute.value;\n return props;\n }, {}), config, indentation + config.indent, depth, refs, printer), printChildren(Array.prototype.slice.call(node.childNodes || node.children).filter(filterNode), config, indentation + config.indent, depth, refs, printer), config, indentation);\n }\n };\n}\n\n// We try to load node dependencies\nlet picocolors = null;\nlet readFileSync = null;\nlet codeFrameColumns = null;\ntry {\n const nodeRequire = module && module.require;\n readFileSync = nodeRequire.call(module, 'fs').readFileSync;\n codeFrameColumns = nodeRequire.call(module, '@babel/code-frame').codeFrameColumns;\n picocolors = nodeRequire.call(module, 'picocolors');\n} catch {\n // We're in a browser environment\n}\n\n// frame has the form \"at myMethod (location/to/my/file.js:10:2)\"\nfunction getCodeFrame(frame) {\n const locationStart = frame.indexOf('(') + 1;\n const locationEnd = frame.indexOf(')');\n const frameLocation = frame.slice(locationStart, locationEnd);\n const frameLocationElements = frameLocation.split(':');\n const [filename, line, column] = [frameLocationElements[0], parseInt(frameLocationElements[1], 10), parseInt(frameLocationElements[2], 10)];\n let rawFileContents = '';\n try {\n rawFileContents = readFileSync(filename, 'utf-8');\n } catch {\n return '';\n }\n const codeFrame = codeFrameColumns(rawFileContents, {\n start: {\n line,\n column\n }\n }, {\n highlightCode: true,\n linesBelow: 0\n });\n return picocolors.dim(frameLocation) + \"\\n\" + codeFrame + \"\\n\";\n}\nfunction getUserCodeFrame() {\n // If we couldn't load dependencies, we can't generate the user trace\n /* istanbul ignore next */\n if (!readFileSync || !codeFrameColumns) {\n return '';\n }\n const err = new Error();\n const firstClientCodeFrame = err.stack.split('\\n').slice(1) // Remove first line which has the form \"Error: TypeError\"\n .find(frame => !frame.includes('node_modules/')); // Ignore frames from 3rd party libraries\n\n return getCodeFrame(firstClientCodeFrame);\n}\n\n// Constant node.nodeType for text nodes, see:\n// https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType#Node_type_constants\nconst TEXT_NODE = 3;\nfunction jestFakeTimersAreEnabled() {\n /* istanbul ignore else */\n // eslint-disable-next-line\n if (typeof jest !== 'undefined' && jest !== null) {\n return (\n // legacy timers\n setTimeout._isMockFunction === true ||\n // modern timers\n // eslint-disable-next-line prefer-object-has-own -- not supported by our support matrix\n Object.prototype.hasOwnProperty.call(setTimeout, 'clock')\n );\n }\n // istanbul ignore next\n return false;\n}\nfunction getDocument() {\n /* istanbul ignore if */\n if (typeof window === 'undefined') {\n throw new Error('Could not find default container');\n }\n return window.document;\n}\nfunction getWindowFromNode(node) {\n if (node.defaultView) {\n // node is document\n return node.defaultView;\n } else if (node.ownerDocument && node.ownerDocument.defaultView) {\n // node is a DOM node\n return node.ownerDocument.defaultView;\n } else if (node.window) {\n // node is window\n return node.window;\n } else if (node.ownerDocument && node.ownerDocument.defaultView === null) {\n throw new Error(\"It looks like the window object is not available for the provided node.\");\n } else if (node.then instanceof Function) {\n throw new Error(\"It looks like you passed a Promise object instead of a DOM node. Did you do something like `fireEvent.click(screen.findBy...` when you meant to use a `getBy` query `fireEvent.click(screen.getBy...`, or await the findBy query `fireEvent.click(await screen.findBy...`?\");\n } else if (Array.isArray(node)) {\n throw new Error(\"It looks like you passed an Array instead of a DOM node. Did you do something like `fireEvent.click(screen.getAllBy...` when you meant to use a `getBy` query `fireEvent.click(screen.getBy...`?\");\n } else if (typeof node.debug === 'function' && typeof node.logTestingPlaygroundURL === 'function') {\n throw new Error(\"It looks like you passed a `screen` object. Did you do something like `fireEvent.click(screen, ...` when you meant to use a query, e.g. `fireEvent.click(screen.getBy..., `?\");\n } else {\n // The user passed something unusual to a calling function\n throw new Error(\"The given node is not an Element, the node type is: \" + typeof node + \".\");\n }\n}\nfunction checkContainerType(container) {\n if (!container || !(typeof container.querySelector === 'function') || !(typeof container.querySelectorAll === 'function')) {\n throw new TypeError(\"Expected container to be an Element, a Document or a DocumentFragment but got \" + getTypeName(container) + \".\");\n }\n function getTypeName(object) {\n if (typeof object === 'object') {\n return object === null ? 'null' : object.constructor.name;\n }\n return typeof object;\n }\n}\n\nconst shouldHighlight = () => {\n if (typeof process === 'undefined') {\n // Don't colorize in non-node environments (e.g. Browsers)\n return false;\n }\n let colors;\n // Try to safely parse env COLORS: We will default behavior if any step fails.\n try {\n var _process$env;\n const colorsJSON = (_process$env = process.env) == null ? void 0 : _process$env.COLORS;\n if (colorsJSON) {\n colors = JSON.parse(colorsJSON);\n }\n } catch {\n // If this throws, process.env?.COLORS wasn't parsable. Since we only\n // care about `true` or `false`, we can safely ignore the error.\n }\n if (typeof colors === 'boolean') {\n // If `colors` is set explicitly (both `true` and `false`), use that value.\n return colors;\n } else {\n // If `colors` is not set, colorize if we're in node.\n return process.versions !== undefined && process.versions.node !== undefined;\n }\n};\nconst {\n DOMCollection\n} = prettyFormat.plugins;\n\n// https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType#node_type_constants\nconst ELEMENT_NODE = 1;\nconst COMMENT_NODE = 8;\n\n// https://github.com/facebook/jest/blob/615084195ae1ae61ddd56162c62bbdda17587569/packages/pretty-format/src/plugins/DOMElement.ts#L50\nfunction filterCommentsAndDefaultIgnoreTagsTags(value) {\n return value.nodeType !== COMMENT_NODE && (value.nodeType !== ELEMENT_NODE || !value.matches(getConfig().defaultIgnore));\n}\nfunction prettyDOM(dom, maxLength, options) {\n if (options === void 0) {\n options = {};\n }\n if (!dom) {\n dom = getDocument().body;\n }\n if (typeof maxLength !== 'number') {\n maxLength = typeof process !== 'undefined' && typeof process.env !== 'undefined' && process.env.DEBUG_PRINT_LIMIT || 7000;\n }\n if (maxLength === 0) {\n return '';\n }\n if (dom.documentElement) {\n dom = dom.documentElement;\n }\n let domTypeName = typeof dom;\n if (domTypeName === 'object') {\n domTypeName = dom.constructor.name;\n } else {\n // To don't fall with `in` operator\n dom = {};\n }\n if (!('outerHTML' in dom)) {\n throw new TypeError(\"Expected an element or document but got \" + domTypeName);\n }\n const {\n filterNode = filterCommentsAndDefaultIgnoreTagsTags,\n ...prettyFormatOptions\n } = options;\n const debugContent = prettyFormat.format(dom, {\n plugins: [createDOMElementFilter(filterNode), DOMCollection],\n printFunctionName: false,\n highlight: shouldHighlight(),\n ...prettyFormatOptions\n });\n return maxLength !== undefined && dom.outerHTML.length > maxLength ? debugContent.slice(0, maxLength) + \"...\" : debugContent;\n}\nconst logDOM = function () {\n const userCodeFrame = getUserCodeFrame();\n if (userCodeFrame) {\n console.log(prettyDOM(...arguments) + \"\\n\\n\" + userCodeFrame);\n } else {\n console.log(prettyDOM(...arguments));\n }\n};\n\n// It would be cleaner for this to live inside './queries', but\n// other parts of the code assume that all exports from\n// './queries' are query functions.\nlet config = {\n testIdAttribute: 'data-testid',\n asyncUtilTimeout: 1000,\n // asyncWrapper and advanceTimersWrapper is to support React's async `act` function.\n // forcing react-testing-library to wrap all async functions would've been\n // a total nightmare (consider wrapping every findBy* query and then also\n // updating `within` so those would be wrapped too. Total nightmare).\n // so we have this config option that's really only intended for\n // react-testing-library to use. For that reason, this feature will remain\n // undocumented.\n asyncWrapper: cb => cb(),\n unstable_advanceTimersWrapper: cb => cb(),\n eventWrapper: cb => cb(),\n // default value for the `hidden` option in `ByRole` queries\n defaultHidden: false,\n // default value for the `ignore` option in `ByText` queries\n defaultIgnore: 'script, style',\n // showOriginalStackTrace flag to show the full error stack traces for async errors\n showOriginalStackTrace: false,\n // throw errors w/ suggestions for better queries. Opt in so off by default.\n throwSuggestions: false,\n // called when getBy* queries fail. (message, container) => Error\n getElementError(message, container) {\n const prettifiedDOM = prettyDOM(container);\n const error = new Error([message, \"Ignored nodes: comments, \" + config.defaultIgnore + \"\\n\" + prettifiedDOM].filter(Boolean).join('\\n\\n'));\n error.name = 'TestingLibraryElementError';\n return error;\n },\n _disableExpensiveErrorDiagnostics: false,\n computedStyleSupportsPseudoElements: false\n};\nfunction runWithExpensiveErrorDiagnosticsDisabled(callback) {\n try {\n config._disableExpensiveErrorDiagnostics = true;\n return callback();\n } finally {\n config._disableExpensiveErrorDiagnostics = false;\n }\n}\nfunction configure(newConfig) {\n if (typeof newConfig === 'function') {\n // Pass the existing config out to the provided function\n // and accept a delta in return\n newConfig = newConfig(config);\n }\n\n // Merge the incoming config delta\n config = {\n ...config,\n ...newConfig\n };\n}\nfunction getConfig() {\n return config;\n}\n\nconst labelledNodeNames = ['button', 'meter', 'output', 'progress', 'select', 'textarea', 'input'];\nfunction getTextContent(node) {\n if (labelledNodeNames.includes(node.nodeName.toLowerCase())) {\n return '';\n }\n if (node.nodeType === TEXT_NODE) return node.textContent;\n return Array.from(node.childNodes).map(childNode => getTextContent(childNode)).join('');\n}\nfunction getLabelContent(element) {\n let textContent;\n if (element.tagName.toLowerCase() === 'label') {\n textContent = getTextContent(element);\n } else {\n textContent = element.value || element.textContent;\n }\n return textContent;\n}\n\n// Based on https://github.com/eps1lon/dom-accessibility-api/pull/352\nfunction getRealLabels(element) {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- types are not aware of older browsers that don't implement `labels`\n if (element.labels !== undefined) {\n var _labels;\n return (_labels = element.labels) != null ? _labels : [];\n }\n if (!isLabelable(element)) return [];\n const labels = element.ownerDocument.querySelectorAll('label');\n return Array.from(labels).filter(label => label.control === element);\n}\nfunction isLabelable(element) {\n return /BUTTON|METER|OUTPUT|PROGRESS|SELECT|TEXTAREA/.test(element.tagName) || element.tagName === 'INPUT' && element.getAttribute('type') !== 'hidden';\n}\nfunction getLabels(container, element, _temp) {\n let {\n selector = '*'\n } = _temp === void 0 ? {} : _temp;\n const ariaLabelledBy = element.getAttribute('aria-labelledby');\n const labelsId = ariaLabelledBy ? ariaLabelledBy.split(' ') : [];\n return labelsId.length ? labelsId.map(labelId => {\n const labellingElement = container.querySelector(\"[id=\\\"\" + labelId + \"\\\"]\");\n return labellingElement ? {\n content: getLabelContent(labellingElement),\n formControl: null\n } : {\n content: '',\n formControl: null\n };\n }) : Array.from(getRealLabels(element)).map(label => {\n const textToMatch = getLabelContent(label);\n const formControlSelector = 'button, input, meter, output, progress, select, textarea';\n const labelledFormControl = Array.from(label.querySelectorAll(formControlSelector)).filter(formControlElement => formControlElement.matches(selector))[0];\n return {\n content: textToMatch,\n formControl: labelledFormControl\n };\n });\n}\n\nfunction assertNotNullOrUndefined(matcher) {\n if (matcher === null || matcher === undefined) {\n throw new Error(// eslint-disable-next-line @typescript-eslint/restrict-template-expressions -- implicitly converting `T` to `string`\n \"It looks like \" + matcher + \" was passed instead of a matcher. Did you do something like getByText(\" + matcher + \")?\");\n }\n}\nfunction fuzzyMatches(textToMatch, node, matcher, normalizer) {\n if (typeof textToMatch !== 'string') {\n return false;\n }\n assertNotNullOrUndefined(matcher);\n const normalizedText = normalizer(textToMatch);\n if (typeof matcher === 'string' || typeof matcher === 'number') {\n return normalizedText.toLowerCase().includes(matcher.toString().toLowerCase());\n } else if (typeof matcher === 'function') {\n return matcher(normalizedText, node);\n } else {\n return matchRegExp(matcher, normalizedText);\n }\n}\nfunction matches(textToMatch, node, matcher, normalizer) {\n if (typeof textToMatch !== 'string') {\n return false;\n }\n assertNotNullOrUndefined(matcher);\n const normalizedText = normalizer(textToMatch);\n if (matcher instanceof Function) {\n return matcher(normalizedText, node);\n } else if (matcher instanceof RegExp) {\n return matchRegExp(matcher, normalizedText);\n } else {\n return normalizedText === String(matcher);\n }\n}\nfunction getDefaultNormalizer(_temp) {\n let {\n trim = true,\n collapseWhitespace = true\n } = _temp === void 0 ? {} : _temp;\n return text => {\n let normalizedText = text;\n normalizedText = trim ? normalizedText.trim() : normalizedText;\n normalizedText = collapseWhitespace ? normalizedText.replace(/\\s+/g, ' ') : normalizedText;\n return normalizedText;\n };\n}\n\n/**\n * Constructs a normalizer to pass to functions in matches.js\n * @param {boolean|undefined} trim The user-specified value for `trim`, without\n * any defaulting having been applied\n * @param {boolean|undefined} collapseWhitespace The user-specified value for\n * `collapseWhitespace`, without any defaulting having been applied\n * @param {Function|undefined} normalizer The user-specified normalizer\n * @returns {Function} A normalizer\n */\n\nfunction makeNormalizer(_ref) {\n let {\n trim,\n collapseWhitespace,\n normalizer\n } = _ref;\n if (!normalizer) {\n // No custom normalizer specified. Just use default.\n return getDefaultNormalizer({\n trim,\n collapseWhitespace\n });\n }\n if (typeof trim !== 'undefined' || typeof collapseWhitespace !== 'undefined') {\n // They've also specified a value for trim or collapseWhitespace\n throw new Error('trim and collapseWhitespace are not supported with a normalizer. ' + 'If you want to use the default trim and collapseWhitespace logic in your normalizer, ' + 'use \"getDefaultNormalizer({trim, collapseWhitespace})\" and compose that into your normalizer');\n }\n return normalizer;\n}\nfunction matchRegExp(matcher, text) {\n const match = matcher.test(text);\n if (matcher.global && matcher.lastIndex !== 0) {\n console.warn(\"To match all elements we had to reset the lastIndex of the RegExp because the global flag is enabled. We encourage to remove the global flag from the RegExp.\");\n matcher.lastIndex = 0;\n }\n return match;\n}\n\nfunction getNodeText(node) {\n if (node.matches('input[type=submit], input[type=button], input[type=reset]')) {\n return node.value;\n }\n return Array.from(node.childNodes).filter(child => child.nodeType === TEXT_NODE && Boolean(child.textContent)).map(c => c.textContent).join('');\n}\n\nconst elementRoleList = buildElementRoleList(elementRoles);\n\n/**\n * @param {Element} element -\n * @returns {boolean} - `true` if `element` and its subtree are inaccessible\n */\nfunction isSubtreeInaccessible(element) {\n if (element.hidden === true) {\n return true;\n }\n if (element.getAttribute('aria-hidden') === 'true') {\n return true;\n }\n const window = element.ownerDocument.defaultView;\n if (window.getComputedStyle(element).display === 'none') {\n return true;\n }\n return false;\n}\n\n/**\n * Partial implementation https://www.w3.org/TR/wai-aria-1.2/#tree_exclusion\n * which should only be used for elements with a non-presentational role i.e.\n * `role=\"none\"` and `role=\"presentation\"` will not be excluded.\n *\n * Implements aria-hidden semantics (i.e. parent overrides child)\n * Ignores \"Child Presentational: True\" characteristics\n *\n * @param {Element} element -\n * @param {object} [options] -\n * @param {function (element: Element): boolean} options.isSubtreeInaccessible -\n * can be used to return cached results from previous isSubtreeInaccessible calls\n * @returns {boolean} true if excluded, otherwise false\n */\nfunction isInaccessible(element, options) {\n if (options === void 0) {\n options = {};\n }\n const {\n isSubtreeInaccessible: isSubtreeInaccessibleImpl = isSubtreeInaccessible\n } = options;\n const window = element.ownerDocument.defaultView;\n // since visibility is inherited we can exit early\n if (window.getComputedStyle(element).visibility === 'hidden') {\n return true;\n }\n let currentElement = element;\n while (currentElement) {\n if (isSubtreeInaccessibleImpl(currentElement)) {\n return true;\n }\n currentElement = currentElement.parentElement;\n }\n return false;\n}\nfunction getImplicitAriaRoles(currentNode) {\n // eslint bug here:\n // eslint-disable-next-line no-unused-vars\n for (const {\n match,\n roles\n } of elementRoleList) {\n if (match(currentNode)) {\n return [...roles];\n }\n }\n return [];\n}\nfunction buildElementRoleList(elementRolesMap) {\n function makeElementSelector(_ref) {\n let {\n name,\n attributes\n } = _ref;\n return \"\" + name + attributes.map(_ref2 => {\n let {\n name: attributeName,\n value,\n constraints = []\n } = _ref2;\n const shouldNotExist = constraints.indexOf('undefined') !== -1;\n const shouldBeNonEmpty = constraints.indexOf('set') !== -1;\n const hasExplicitValue = typeof value !== 'undefined';\n if (hasExplicitValue) {\n return \"[\" + attributeName + \"=\\\"\" + value + \"\\\"]\";\n } else if (shouldNotExist) {\n return \":not([\" + attributeName + \"])\";\n } else if (shouldBeNonEmpty) {\n return \"[\" + attributeName + \"]:not([\" + attributeName + \"=\\\"\\\"])\";\n }\n return \"[\" + attributeName + \"]\";\n }).join('');\n }\n function getSelectorSpecificity(_ref3) {\n let {\n attributes = []\n } = _ref3;\n return attributes.length;\n }\n function bySelectorSpecificity(_ref4, _ref5) {\n let {\n specificity: leftSpecificity\n } = _ref4;\n let {\n specificity: rightSpecificity\n } = _ref5;\n return rightSpecificity - leftSpecificity;\n }\n function match(element) {\n let {\n attributes = []\n } = element;\n\n // https://github.com/testing-library/dom-testing-library/issues/814\n const typeTextIndex = attributes.findIndex(attribute => attribute.value && attribute.name === 'type' && attribute.value === 'text');\n if (typeTextIndex >= 0) {\n // not using splice to not mutate the attributes array\n attributes = [...attributes.slice(0, typeTextIndex), ...attributes.slice(typeTextIndex + 1)];\n }\n const selector = makeElementSelector({\n ...element,\n attributes\n });\n return node => {\n if (typeTextIndex >= 0 && node.type !== 'text') {\n return false;\n }\n return node.matches(selector);\n };\n }\n let result = [];\n\n // eslint bug here:\n // eslint-disable-next-line no-unused-vars\n for (const [element, roles] of elementRolesMap.entries()) {\n result = [...result, {\n match: match(element),\n roles: Array.from(roles),\n specificity: getSelectorSpecificity(element)\n }];\n }\n return result.sort(bySelectorSpecificity);\n}\nfunction getRoles(container, _temp) {\n let {\n hidden = false\n } = _temp === void 0 ? {} : _temp;\n function flattenDOM(node) {\n return [node, ...Array.from(node.children).reduce((acc, child) => [...acc, ...flattenDOM(child)], [])];\n }\n return flattenDOM(container).filter(element => {\n return hidden === false ? isInaccessible(element) === false : true;\n }).reduce((acc, node) => {\n let roles = [];\n // TODO: This violates html-aria which does not allow any role on every element\n if (node.hasAttribute('role')) {\n roles = node.getAttribute('role').split(' ').slice(0, 1);\n } else {\n roles = getImplicitAriaRoles(node);\n }\n return roles.reduce((rolesAcc, role) => Array.isArray(rolesAcc[role]) ? {\n ...rolesAcc,\n [role]: [...rolesAcc[role], node]\n } : {\n ...rolesAcc,\n [role]: [node]\n }, acc);\n }, {});\n}\nfunction prettyRoles(dom, _ref6) {\n let {\n hidden,\n includeDescription\n } = _ref6;\n const roles = getRoles(dom, {\n hidden\n });\n // We prefer to skip generic role, we don't recommend it\n return Object.entries(roles).filter(_ref7 => {\n let [role] = _ref7;\n return role !== 'generic';\n }).map(_ref8 => {\n let [role, elements] = _ref8;\n const delimiterBar = '-'.repeat(50);\n const elementsString = elements.map(el => {\n const nameString = \"Name \\\"\" + computeAccessibleName(el, {\n computedStyleSupportsPseudoElements: getConfig().computedStyleSupportsPseudoElements\n }) + \"\\\":\\n\";\n const domString = prettyDOM(el.cloneNode(false));\n if (includeDescription) {\n const descriptionString = \"Description \\\"\" + computeAccessibleDescription(el, {\n computedStyleSupportsPseudoElements: getConfig().computedStyleSupportsPseudoElements\n }) + \"\\\":\\n\";\n return \"\" + nameString + descriptionString + domString;\n }\n return \"\" + nameString + domString;\n }).join('\\n\\n');\n return role + \":\\n\\n\" + elementsString + \"\\n\\n\" + delimiterBar;\n }).join('\\n');\n}\nconst logRoles = function (dom, _temp2) {\n let {\n hidden = false\n } = _temp2 === void 0 ? {} : _temp2;\n return console.log(prettyRoles(dom, {\n hidden\n }));\n};\n\n/**\n * @param {Element} element -\n * @returns {boolean | undefined} - false/true if (not)selected, undefined if not selectable\n */\nfunction computeAriaSelected(element) {\n // implicit value from html-aam mappings: https://www.w3.org/TR/html-aam-1.0/#html-attribute-state-and-property-mappings\n // https://www.w3.org/TR/html-aam-1.0/#details-id-97\n if (element.tagName === 'OPTION') {\n return element.selected;\n }\n\n // explicit value\n return checkBooleanAttribute(element, 'aria-selected');\n}\n\n/**\n * @param {Element} element -\n * @returns {boolean} -\n */\nfunction computeAriaBusy(element) {\n // https://www.w3.org/TR/wai-aria-1.1/#aria-busy\n return element.getAttribute('aria-busy') === 'true';\n}\n\n/**\n * @param {Element} element -\n * @returns {boolean | undefined} - false/true if (not)checked, undefined if not checked-able\n */\nfunction computeAriaChecked(element) {\n // implicit value from html-aam mappings: https://www.w3.org/TR/html-aam-1.0/#html-attribute-state-and-property-mappings\n // https://www.w3.org/TR/html-aam-1.0/#details-id-56\n // https://www.w3.org/TR/html-aam-1.0/#details-id-67\n if ('indeterminate' in element && element.indeterminate) {\n return undefined;\n }\n if ('checked' in element) {\n return element.checked;\n }\n\n // explicit value\n return checkBooleanAttribute(element, 'aria-checked');\n}\n\n/**\n * @param {Element} element -\n * @returns {boolean | undefined} - false/true if (not)pressed, undefined if not press-able\n */\nfunction computeAriaPressed(element) {\n // https://www.w3.org/TR/wai-aria-1.1/#aria-pressed\n return checkBooleanAttribute(element, 'aria-pressed');\n}\n\n/**\n * @param {Element} element -\n * @returns {boolean | string | null} -\n */\nfunction computeAriaCurrent(element) {\n var _ref9, _checkBooleanAttribut;\n // https://www.w3.org/TR/wai-aria-1.1/#aria-current\n return (_ref9 = (_checkBooleanAttribut = checkBooleanAttribute(element, 'aria-current')) != null ? _checkBooleanAttribut : element.getAttribute('aria-current')) != null ? _ref9 : false;\n}\n\n/**\n * @param {Element} element -\n * @returns {boolean | undefined} - false/true if (not)expanded, undefined if not expand-able\n */\nfunction computeAriaExpanded(element) {\n // https://www.w3.org/TR/wai-aria-1.1/#aria-expanded\n return checkBooleanAttribute(element, 'aria-expanded');\n}\nfunction checkBooleanAttribute(element, attribute) {\n const attributeValue = element.getAttribute(attribute);\n if (attributeValue === 'true') {\n return true;\n }\n if (attributeValue === 'false') {\n return false;\n }\n return undefined;\n}\n\n/**\n * @param {Element} element -\n * @returns {number | undefined} - number if implicit heading or aria-level present, otherwise undefined\n */\nfunction computeHeadingLevel(element) {\n // https://w3c.github.io/html-aam/#el-h1-h6\n // https://w3c.github.io/html-aam/#el-h1-h6\n const implicitHeadingLevels = {\n H1: 1,\n H2: 2,\n H3: 3,\n H4: 4,\n H5: 5,\n H6: 6\n };\n // explicit aria-level value\n // https://www.w3.org/TR/wai-aria-1.2/#aria-level\n const ariaLevelAttribute = element.getAttribute('aria-level') && Number(element.getAttribute('aria-level'));\n return ariaLevelAttribute || implicitHeadingLevels[element.tagName];\n}\n\n/**\n * @param {Element} element -\n * @returns {number | undefined} -\n */\nfunction computeAriaValueNow(element) {\n const valueNow = element.getAttribute('aria-valuenow');\n return valueNow === null ? undefined : +valueNow;\n}\n\n/**\n * @param {Element} element -\n * @returns {number | undefined} -\n */\nfunction computeAriaValueMax(element) {\n const valueMax = element.getAttribute('aria-valuemax');\n return valueMax === null ? undefined : +valueMax;\n}\n\n/**\n * @param {Element} element -\n * @returns {number | undefined} -\n */\nfunction computeAriaValueMin(element) {\n const valueMin = element.getAttribute('aria-valuemin');\n return valueMin === null ? undefined : +valueMin;\n}\n\n/**\n * @param {Element} element -\n * @returns {string | undefined} -\n */\nfunction computeAriaValueText(element) {\n const valueText = element.getAttribute('aria-valuetext');\n return valueText === null ? undefined : valueText;\n}\n\nconst normalize = getDefaultNormalizer();\nfunction escapeRegExp(string) {\n return string.replace(/[.*+\\-?^${}()|[\\]\\\\]/g, '\\\\$&'); // $& means the whole matched string\n}\nfunction getRegExpMatcher(string) {\n return new RegExp(escapeRegExp(string.toLowerCase()), 'i');\n}\nfunction makeSuggestion(queryName, element, content, _ref) {\n let {\n variant,\n name\n } = _ref;\n let warning = '';\n const queryOptions = {};\n const queryArgs = [['Role', 'TestId'].includes(queryName) ? content : getRegExpMatcher(content)];\n if (name) {\n queryOptions.name = getRegExpMatcher(name);\n }\n if (queryName === 'Role' && isInaccessible(element)) {\n queryOptions.hidden = true;\n warning = \"Element is inaccessible. This means that the element and all its children are invisible to screen readers.\\n If you are using the aria-hidden prop, make sure this is the right choice for your case.\\n \";\n }\n if (Object.keys(queryOptions).length > 0) {\n queryArgs.push(queryOptions);\n }\n const queryMethod = variant + \"By\" + queryName;\n return {\n queryName,\n queryMethod,\n queryArgs,\n variant,\n warning,\n toString() {\n if (warning) {\n console.warn(warning);\n }\n let [text, options] = queryArgs;\n text = typeof text === 'string' ? \"'\" + text + \"'\" : text;\n options = options ? \", { \" + Object.entries(options).map(_ref2 => {\n let [k, v] = _ref2;\n return k + \": \" + v;\n }).join(', ') + \" }\" : '';\n return queryMethod + \"(\" + text + options + \")\";\n }\n };\n}\nfunction canSuggest(currentMethod, requestedMethod, data) {\n return data && (!requestedMethod || requestedMethod.toLowerCase() === currentMethod.toLowerCase());\n}\nfunction getSuggestedQuery(element, variant, method) {\n var _element$getAttribute, _getImplicitAriaRoles;\n if (variant === void 0) {\n variant = 'get';\n }\n // don't create suggestions for script and style elements\n if (element.matches(getConfig().defaultIgnore)) {\n return undefined;\n }\n\n //We prefer to suggest something else if the role is generic\n const role = (_element$getAttribute = element.getAttribute('role')) != null ? _element$getAttribute : (_getImplicitAriaRoles = getImplicitAriaRoles(element)) == null ? void 0 : _getImplicitAriaRoles[0];\n if (role !== 'generic' && canSuggest('Role', method, role)) {\n return makeSuggestion('Role', element, role, {\n variant,\n name: computeAccessibleName(element, {\n computedStyleSupportsPseudoElements: getConfig().computedStyleSupportsPseudoElements\n })\n });\n }\n const labelText = getLabels(document, element).map(label => label.content).join(' ');\n if (canSuggest('LabelText', method, labelText)) {\n return makeSuggestion('LabelText', element, labelText, {\n variant\n });\n }\n const placeholderText = element.getAttribute('placeholder');\n if (canSuggest('PlaceholderText', method, placeholderText)) {\n return makeSuggestion('PlaceholderText', element, placeholderText, {\n variant\n });\n }\n const textContent = normalize(getNodeText(element));\n if (canSuggest('Text', method, textContent)) {\n return makeSuggestion('Text', element, textContent, {\n variant\n });\n }\n if (canSuggest('DisplayValue', method, element.value)) {\n return makeSuggestion('DisplayValue', element, normalize(element.value), {\n variant\n });\n }\n const alt = element.getAttribute('alt');\n if (canSuggest('AltText', method, alt)) {\n return makeSuggestion('AltText', element, alt, {\n variant\n });\n }\n const title = element.getAttribute('title');\n if (canSuggest('Title', method, title)) {\n return makeSuggestion('Title', element, title, {\n variant\n });\n }\n const testId = element.getAttribute(getConfig().testIdAttribute);\n if (canSuggest('TestId', method, testId)) {\n return makeSuggestion('TestId', element, testId, {\n variant\n });\n }\n return undefined;\n}\n\n// This is so the stack trace the developer sees is one that's\n// closer to their code (because async stack traces are hard to follow).\nfunction copyStackTrace(target, source) {\n target.stack = source.stack.replace(source.message, target.message);\n}\nfunction waitFor(callback, _ref) {\n let {\n container = getDocument(),\n timeout = getConfig().asyncUtilTimeout,\n showOriginalStackTrace = getConfig().showOriginalStackTrace,\n stackTraceError,\n interval = 50,\n onTimeout = error => {\n Object.defineProperty(error, 'message', {\n value: getConfig().getElementError(error.message, container).message\n });\n return error;\n },\n mutationObserverOptions = {\n subtree: true,\n childList: true,\n attributes: true,\n characterData: true\n }\n } = _ref;\n if (typeof callback !== 'function') {\n throw new TypeError('Received `callback` arg must be a function');\n }\n return new Promise(async (resolve, reject) => {\n let lastError, intervalId, observer;\n let finished = false;\n let promiseStatus = 'idle';\n const overallTimeoutTimer = setTimeout(handleTimeout, timeout);\n const usingJestFakeTimers = jestFakeTimersAreEnabled();\n if (usingJestFakeTimers) {\n const {\n unstable_advanceTimersWrapper: advanceTimersWrapper\n } = getConfig();\n checkCallback();\n // this is a dangerous rule to disable because it could lead to an\n // infinite loop. However, eslint isn't smart enough to know that we're\n // setting finished inside `onDone` which will be called when we're done\n // waiting or when we've timed out.\n // eslint-disable-next-line no-unmodified-loop-condition\n while (!finished) {\n if (!jestFakeTimersAreEnabled()) {\n const error = new Error(\"Changed from using fake timers to real timers while using waitFor. This is not allowed and will result in very strange behavior. Please ensure you're awaiting all async things your test is doing before changing to real timers. For more info, please go to https://github.com/testing-library/dom-testing-library/issues/830\");\n if (!showOriginalStackTrace) copyStackTrace(error, stackTraceError);\n reject(error);\n return;\n }\n\n // In this rare case, we *need* to wait for in-flight promises\n // to resolve before continuing. We don't need to take advantage\n // of parallelization so we're fine.\n // https://stackoverflow.com/a/59243586/971592\n // eslint-disable-next-line no-await-in-loop\n await advanceTimersWrapper(async () => {\n // we *could* (maybe should?) use `advanceTimersToNextTimer` but it's\n // possible that could make this loop go on forever if someone is using\n // third party code that's setting up recursive timers so rapidly that\n // the user's timer's don't get a chance to resolve. So we'll advance\n // by an interval instead. (We have a test for this case).\n jest.advanceTimersByTime(interval);\n });\n\n // Could have timed-out\n if (finished) {\n break;\n }\n // It's really important that checkCallback is run *before* we flush\n // in-flight promises. To be honest, I'm not sure why, and I can't quite\n // think of a way to reproduce the problem in a test, but I spent\n // an entire day banging my head against a wall on this.\n checkCallback();\n }\n } else {\n try {\n checkContainerType(container);\n } catch (e) {\n reject(e);\n return;\n }\n intervalId = setInterval(checkRealTimersCallback, interval);\n const {\n MutationObserver\n } = getWindowFromNode(container);\n observer = new MutationObserver(checkRealTimersCallback);\n observer.observe(container, mutationObserverOptions);\n checkCallback();\n }\n function onDone(error, result) {\n finished = true;\n clearTimeout(overallTimeoutTimer);\n if (!usingJestFakeTimers) {\n clearInterval(intervalId);\n observer.disconnect();\n }\n if (error) {\n reject(error);\n } else {\n resolve(result);\n }\n }\n function checkRealTimersCallback() {\n if (jestFakeTimersAreEnabled()) {\n const error = new Error(\"Changed from using real timers to fake timers while using waitFor. This is not allowed and will result in very strange behavior. Please ensure you're awaiting all async things your test is doing before changing to fake timers. For more info, please go to https://github.com/testing-library/dom-testing-library/issues/830\");\n if (!showOriginalStackTrace) copyStackTrace(error, stackTraceError);\n return reject(error);\n } else {\n return checkCallback();\n }\n }\n function checkCallback() {\n if (promiseStatus === 'pending') return;\n try {\n const result = runWithExpensiveErrorDiagnosticsDisabled(callback);\n if (typeof (result == null ? void 0 : result.then) === 'function') {\n promiseStatus = 'pending';\n result.then(resolvedValue => {\n promiseStatus = 'resolved';\n onDone(null, resolvedValue);\n }, rejectedValue => {\n promiseStatus = 'rejected';\n lastError = rejectedValue;\n });\n } else {\n onDone(null, result);\n }\n // If `callback` throws, wait for the next mutation, interval, or timeout.\n } catch (error) {\n // Save the most recent callback error to reject the promise with it in the event of a timeout\n lastError = error;\n }\n }\n function handleTimeout() {\n let error;\n if (lastError) {\n error = lastError;\n if (!showOriginalStackTrace && error.name === 'TestingLibraryElementError') {\n copyStackTrace(error, stackTraceError);\n }\n } else {\n error = new Error('Timed out in waitFor.');\n if (!showOriginalStackTrace) {\n copyStackTrace(error, stackTraceError);\n }\n }\n onDone(onTimeout(error), null);\n }\n });\n}\nfunction waitForWrapper(callback, options) {\n // create the error here so its stack trace is as close to the\n // calling code as possible\n const stackTraceError = new Error('STACK_TRACE_MESSAGE');\n return getConfig().asyncWrapper(() => waitFor(callback, {\n stackTraceError,\n ...options\n }));\n}\n\n/*\neslint\n max-lines-per-function: [\"error\", {\"max\": 200}],\n*/\n\nfunction getElementError(message, container) {\n return getConfig().getElementError(message, container);\n}\nfunction getMultipleElementsFoundError(message, container) {\n return getElementError(message + \"\\n\\n(If this is intentional, then use the `*AllBy*` variant of the query (like `queryAllByText`, `getAllByText`, or `findAllByText`)).\", container);\n}\nfunction queryAllByAttribute(attribute, container, text, _temp) {\n let {\n exact = true,\n collapseWhitespace,\n trim,\n normalizer\n } = _temp === void 0 ? {} : _temp;\n const matcher = exact ? matches : fuzzyMatches;\n const matchNormalizer = makeNormalizer({\n collapseWhitespace,\n trim,\n normalizer\n });\n return Array.from(container.querySelectorAll(\"[\" + attribute + \"]\")).filter(node => matcher(node.getAttribute(attribute), node, text, matchNormalizer));\n}\nfunction queryByAttribute(attribute, container, text, options) {\n const els = queryAllByAttribute(attribute, container, text, options);\n if (els.length > 1) {\n throw getMultipleElementsFoundError(\"Found multiple elements by [\" + attribute + \"=\" + text + \"]\", container);\n }\n return els[0] || null;\n}\n\n// this accepts a query function and returns a function which throws an error\n// if more than one elements is returned, otherwise it returns the first\n// element or null\nfunction makeSingleQuery(allQuery, getMultipleError) {\n return function (container) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n const els = allQuery(container, ...args);\n if (els.length > 1) {\n const elementStrings = els.map(element => getElementError(null, element).message).join('\\n\\n');\n throw getMultipleElementsFoundError(getMultipleError(container, ...args) + \"\\n\\nHere are the matching elements:\\n\\n\" + elementStrings, container);\n }\n return els[0] || null;\n };\n}\nfunction getSuggestionError(suggestion, container) {\n return getConfig().getElementError(\"A better query is available, try this:\\n\" + suggestion.toString() + \"\\n\", container);\n}\n\n// this accepts a query function and returns a function which throws an error\n// if an empty list of elements is returned\nfunction makeGetAllQuery(allQuery, getMissingError) {\n return function (container) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n const els = allQuery(container, ...args);\n if (!els.length) {\n throw getConfig().getElementError(getMissingError(container, ...args), container);\n }\n return els;\n };\n}\n\n// this accepts a getter query function and returns a function which calls\n// waitFor and passing a function which invokes the getter.\nfunction makeFindQuery(getter) {\n return (container, text, options, waitForOptions) => {\n return waitForWrapper(() => {\n return getter(container, text, options);\n }, {\n container,\n ...waitForOptions\n });\n };\n}\nconst wrapSingleQueryWithSuggestion = (query, queryAllByName, variant) => function (container) {\n for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n args[_key3 - 1] = arguments[_key3];\n }\n const element = query(container, ...args);\n const [{\n suggest = getConfig().throwSuggestions\n } = {}] = args.slice(-1);\n if (element && suggest) {\n const suggestion = getSuggestedQuery(element, variant);\n if (suggestion && !queryAllByName.endsWith(suggestion.queryName)) {\n throw getSuggestionError(suggestion.toString(), container);\n }\n }\n return element;\n};\nconst wrapAllByQueryWithSuggestion = (query, queryAllByName, variant) => function (container) {\n for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n args[_key4 - 1] = arguments[_key4];\n }\n const els = query(container, ...args);\n const [{\n suggest = getConfig().throwSuggestions\n } = {}] = args.slice(-1);\n if (els.length && suggest) {\n // get a unique list of all suggestion messages. We are only going to make a suggestion if\n // all the suggestions are the same\n const uniqueSuggestionMessages = [...new Set(els.map(element => {\n var _getSuggestedQuery;\n return (_getSuggestedQuery = getSuggestedQuery(element, variant)) == null ? void 0 : _getSuggestedQuery.toString();\n }))];\n if (\n // only want to suggest if all the els have the same suggestion.\n uniqueSuggestionMessages.length === 1 && !queryAllByName.endsWith(\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- TODO: Can this be null at runtime?\n getSuggestedQuery(els[0], variant).queryName)) {\n throw getSuggestionError(uniqueSuggestionMessages[0], container);\n }\n }\n return els;\n};\n\n// TODO: This deviates from the published declarations\n// However, the implementation always required a dyadic (after `container`) not variadic `queryAllBy` considering the implementation of `makeFindQuery`\n// This is at least statically true and can be verified by accepting `QueryMethod<Arguments, HTMLElement[]>`\nfunction buildQueries(queryAllBy, getMultipleError, getMissingError) {\n const queryBy = wrapSingleQueryWithSuggestion(makeSingleQuery(queryAllBy, getMultipleError), queryAllBy.name, 'query');\n const getAllBy = makeGetAllQuery(queryAllBy, getMissingError);\n const getBy = makeSingleQuery(getAllBy, getMultipleError);\n const getByWithSuggestions = wrapSingleQueryWithSuggestion(getBy, queryAllBy.name, 'get');\n const getAllWithSuggestions = wrapAllByQueryWithSuggestion(getAllBy, queryAllBy.name.replace('query', 'get'), 'getAll');\n const findAllBy = makeFindQuery(wrapAllByQueryWithSuggestion(getAllBy, queryAllBy.name, 'findAll'));\n const findBy = makeFindQuery(wrapSingleQueryWithSuggestion(getBy, queryAllBy.name, 'find'));\n return [queryBy, getAllWithSuggestions, getByWithSuggestions, findAllBy, findBy];\n}\n\nvar queryHelpers = /*#__PURE__*/Object.freeze({\n __proto__: null,\n getElementError: getElementError,\n wrapAllByQueryWithSuggestion: wrapAllByQueryWithSuggestion,\n wrapSingleQueryWithSuggestion: wrapSingleQueryWithSuggestion,\n getMultipleElementsFoundError: getMultipleElementsFoundError,\n queryAllByAttribute: queryAllByAttribute,\n queryByAttribute: queryByAttribute,\n makeSingleQuery: makeSingleQuery,\n makeGetAllQuery: makeGetAllQuery,\n makeFindQuery: makeFindQuery,\n buildQueries: buildQueries\n});\n\nfunction queryAllLabels(container) {\n return Array.from(container.querySelectorAll('label,input')).map(node => {\n return {\n node,\n textToMatch: getLabelContent(node)\n };\n }).filter(_ref => {\n let {\n textToMatch\n } = _ref;\n return textToMatch !== null;\n });\n}\nconst queryAllLabelsByText = function (container, text, _temp) {\n let {\n exact = true,\n trim,\n collapseWhitespace,\n normalizer\n } = _temp === void 0 ? {} : _temp;\n const matcher = exact ? matches : fuzzyMatches;\n const matchNormalizer = makeNormalizer({\n collapseWhitespace,\n trim,\n normalizer\n });\n const textToMatchByLabels = queryAllLabels(container);\n return textToMatchByLabels.filter(_ref2 => {\n let {\n node,\n textToMatch\n } = _ref2;\n return matcher(textToMatch, node, text, matchNormalizer);\n }).map(_ref3 => {\n let {\n node\n } = _ref3;\n return node;\n });\n};\nconst queryAllByLabelText = function (container, text, _temp2) {\n let {\n selector = '*',\n exact = true,\n collapseWhitespace,\n trim,\n normalizer\n } = _temp2 === void 0 ? {} : _temp2;\n checkContainerType(container);\n const matcher = exact ? matches : fuzzyMatches;\n const matchNormalizer = makeNormalizer({\n collapseWhitespace,\n trim,\n normalizer\n });\n const matchingLabelledElements = Array.from(container.querySelectorAll('*')).filter(element => {\n return getRealLabels(element).length || element.hasAttribute('aria-labelledby');\n }).reduce((labelledElements, labelledElement) => {\n const labelList = getLabels(container, labelledElement, {\n selector\n });\n labelList.filter(label => Boolean(label.formControl)).forEach(label => {\n if (matcher(label.content, label.formControl, text, matchNormalizer) && label.formControl) {\n labelledElements.push(label.formControl);\n }\n });\n const labelsValue = labelList.filter(label => Boolean(label.content)).map(label => label.content);\n if (matcher(labelsValue.join(' '), labelledElement, text, matchNormalizer)) {\n labelledElements.push(labelledElement);\n }\n if (labelsValue.length > 1) {\n labelsValue.forEach((labelValue, index) => {\n if (matcher(labelValue, labelledElement, text, matchNormalizer)) {\n labelledElements.push(labelledElement);\n }\n const labelsFiltered = [...labelsValue];\n labelsFiltered.splice(index, 1);\n if (labelsFiltered.length > 1) {\n if (matcher(labelsFiltered.join(' '), labelledElement, text, matchNormalizer)) {\n labelledElements.push(labelledElement);\n }\n }\n });\n }\n return labelledElements;\n }, []).concat(queryAllByAttribute('aria-label', container, text, {\n exact,\n normalizer: matchNormalizer\n }));\n return Array.from(new Set(matchingLabelledElements)).filter(element => element.matches(selector));\n};\n\n// the getAll* query would normally look like this:\n// const getAllByLabelText = makeGetAllQuery(\n// queryAllByLabelText,\n// (c, text) => `Unable to find a label with the text of: ${text}`,\n// )\n// however, we can give a more helpful error message than the generic one,\n// so we're writing this one out by hand.\nconst getAllByLabelText = function (container, text) {\n for (var _len = arguments.length, rest = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n rest[_key - 2] = arguments[_key];\n }\n const els = queryAllByLabelText(container, text, ...rest);\n if (!els.length) {\n const labels = queryAllLabelsByText(container, text, ...rest);\n if (labels.length) {\n const tagNames = labels.map(label => getTagNameOfElementAssociatedWithLabelViaFor(container, label)).filter(tagName => !!tagName);\n if (tagNames.length) {\n throw getConfig().getElementError(tagNames.map(tagName => \"Found a label with the text of: \" + text + \", however the element associated with this label (<\" + tagName + \" />) is non-labellable [https://html.spec.whatwg.org/multipage/forms.html#category-label]. If you really need to label a <\" + tagName + \" />, you can use aria-label or aria-labelledby instead.\").join('\\n\\n'), container);\n } else {\n throw getConfig().getElementError(\"Found a label with the text of: \" + text + \", however no form control was found associated to that label. Make sure you're using the \\\"for\\\" attribute or \\\"aria-labelledby\\\" attribute correctly.\", container);\n }\n } else {\n throw getConfig().getElementError(\"Unable to find a label with the text of: \" + text, container);\n }\n }\n return els;\n};\nfunction getTagNameOfElementAssociatedWithLabelViaFor(container, label) {\n const htmlFor = label.getAttribute('for');\n if (!htmlFor) {\n return null;\n }\n const element = container.querySelector(\"[id=\\\"\" + htmlFor + \"\\\"]\");\n return element ? element.tagName.toLowerCase() : null;\n}\n\n// the reason mentioned above is the same reason we're not using buildQueries\nconst getMultipleError$7 = (c, text) => \"Found multiple elements with the text of: \" + text;\nconst queryByLabelText = wrapSingleQueryWithSuggestion(makeSingleQuery(queryAllByLabelText, getMultipleError$7), queryAllByLabelText.name, 'query');\nconst getByLabelText = makeSingleQuery(getAllByLabelText, getMultipleError$7);\nconst findAllByLabelText = makeFindQuery(wrapAllByQueryWithSuggestion(getAllByLabelText, getAllByLabelText.name, 'findAll'));\nconst findByLabelText = makeFindQuery(wrapSingleQueryWithSuggestion(getByLabelText, getAllByLabelText.name, 'find'));\nconst getAllByLabelTextWithSuggestions = wrapAllByQueryWithSuggestion(getAllByLabelText, getAllByLabelText.name, 'getAll');\nconst getByLabelTextWithSuggestions = wrapSingleQueryWithSuggestion(getByLabelText, getAllByLabelText.name, 'get');\nconst queryAllByLabelTextWithSuggestions = wrapAllByQueryWithSuggestion(queryAllByLabelText, queryAllByLabelText.name, 'queryAll');\n\nconst queryAllByPlaceholderText = function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n checkContainerType(args[0]);\n return queryAllByAttribute('placeholder', ...args);\n};\nconst getMultipleError$6 = (c, text) => \"Found multiple elements with the placeholder text of: \" + text;\nconst getMissingError$6 = (c, text) => \"Unable to find an element with the placeholder text of: \" + text;\nconst queryAllByPlaceholderTextWithSuggestions = wrapAllByQueryWithSuggestion(queryAllByPlaceholderText, queryAllByPlaceholderText.name, 'queryAll');\nconst [queryByPlaceholderText, getAllByPlaceholderText, getByPlaceholderText, findAllByPlaceholderText, findByPlaceholderText] = buildQueries(queryAllByPlaceholderText, getMultipleError$6, getMissingError$6);\n\nconst queryAllByText = function (container, text, _temp) {\n let {\n selector = '*',\n exact = true,\n collapseWhitespace,\n trim,\n ignore = getConfig().defaultIgnore,\n normalizer\n } = _temp === void 0 ? {} : _temp;\n checkContainerType(container);\n const matcher = exact ? matches : fuzzyMatches;\n const matchNormalizer = makeNormalizer({\n collapseWhitespace,\n trim,\n normalizer\n });\n let baseArray = [];\n if (typeof container.matches === 'function' && container.matches(selector)) {\n baseArray = [container];\n }\n return [...baseArray, ...Array.from(container.querySelectorAll(selector))]\n // TODO: `matches` according lib.dom.d.ts can get only `string` but according our code it can handle also boolean :)\n .filter(node => !ignore || !node.matches(ignore)).filter(node => matcher(getNodeText(node), node, text, matchNormalizer));\n};\nconst getMultipleError$5 = (c, text) => \"Found multiple elements with the text: \" + text;\nconst getMissingError$5 = function (c, text, options) {\n if (options === void 0) {\n options = {};\n }\n const {\n collapseWhitespace,\n trim,\n normalizer,\n selector\n } = options;\n const matchNormalizer = makeNormalizer({\n collapseWhitespace,\n trim,\n normalizer\n });\n const normalizedText = matchNormalizer(text.toString());\n const isNormalizedDifferent = normalizedText !== text.toString();\n const isCustomSelector = (selector != null ? selector : '*') !== '*';\n return \"Unable to find an element with the text: \" + (isNormalizedDifferent ? normalizedText + \" (normalized from '\" + text + \"')\" : text) + (isCustomSelector ? \", which matches selector '\" + selector + \"'\" : '') + \". This could be because the text is broken up by multiple elements. In this case, you can provide a function for your text matcher to make your matcher more flexible.\";\n};\nconst queryAllByTextWithSuggestions = wrapAllByQueryWithSuggestion(queryAllByText, queryAllByText.name, 'queryAll');\nconst [queryByText, getAllByText, getByText, findAllByText, findByText] = buildQueries(queryAllByText, getMultipleError$5, getMissingError$5);\n\nconst queryAllByDisplayValue = function (container, value, _temp) {\n let {\n exact = true,\n collapseWhitespace,\n trim,\n normalizer\n } = _temp === void 0 ? {} : _temp;\n checkContainerType(container);\n const matcher = exact ? matches : fuzzyMatches;\n const matchNormalizer = makeNormalizer({\n collapseWhitespace,\n trim,\n normalizer\n });\n return Array.from(container.querySelectorAll(\"input,textarea,select\")).filter(node => {\n if (node.tagName === 'SELECT') {\n const selectedOptions = Array.from(node.options).filter(option => option.selected);\n return selectedOptions.some(optionNode => matcher(getNodeText(optionNode), optionNode, value, matchNormalizer));\n } else {\n return matcher(node.value, node, value, matchNormalizer);\n }\n });\n};\nconst getMultipleError$4 = (c, value) => \"Found multiple elements with the display value: \" + value + \".\";\nconst getMissingError$4 = (c, value) => \"Unable to find an element with the display value: \" + value + \".\";\nconst queryAllByDisplayValueWithSuggestions = wrapAllByQueryWithSuggestion(queryAllByDisplayValue, queryAllByDisplayValue.name, 'queryAll');\nconst [queryByDisplayValue, getAllByDisplayValue, getByDisplayValue, findAllByDisplayValue, findByDisplayValue] = buildQueries(queryAllByDisplayValue, getMultipleError$4, getMissingError$4);\n\n// Valid tags are img, input, area and custom elements\nconst VALID_TAG_REGEXP = /^(img|input|area|.+-.+)$/i;\nconst queryAllByAltText = function (container, alt, options) {\n if (options === void 0) {\n options = {};\n }\n checkContainerType(container);\n return queryAllByAttribute('alt', container, alt, options).filter(node => VALID_TAG_REGEXP.test(node.tagName));\n};\nconst getMultipleError$3 = (c, alt) => \"Found multiple elements with the alt text: \" + alt;\nconst getMissingError$3 = (c, alt) => \"Unable to find an element with the alt text: \" + alt;\nconst queryAllByAltTextWithSuggestions = wrapAllByQueryWithSuggestion(queryAllByAltText, queryAllByAltText.name, 'queryAll');\nconst [queryByAltText, getAllByAltText, getByAltText, findAllByAltText, findByAltText] = buildQueries(queryAllByAltText, getMultipleError$3, getMissingError$3);\n\nconst isSvgTitle = node => {\n var _node$parentElement;\n return node.tagName.toLowerCase() === 'title' && ((_node$parentElement = node.parentElement) == null ? void 0 : _node$parentElement.tagName.toLowerCase()) === 'svg';\n};\nconst queryAllByTitle = function (container, text, _temp) {\n let {\n exact = true,\n collapseWhitespace,\n trim,\n normalizer\n } = _temp === void 0 ? {} : _temp;\n checkContainerType(container);\n const matcher = exact ? matches : fuzzyMatches;\n const matchNormalizer = makeNormalizer({\n collapseWhitespace,\n trim,\n normalizer\n });\n return Array.from(container.querySelectorAll('[title], svg > title')).filter(node => matcher(node.getAttribute('title'), node, text, matchNormalizer) || isSvgTitle(node) && matcher(getNodeText(node), node, text, matchNormalizer));\n};\nconst getMultipleError$2 = (c, title) => \"Found multiple elements with the title: \" + title + \".\";\nconst getMissingError$2 = (c, title) => \"Unable to find an element with the title: \" + title + \".\";\nconst queryAllByTitleWithSuggestions = wrapAllByQueryWithSuggestion(queryAllByTitle, queryAllByTitle.name, 'queryAll');\nconst [queryByTitle, getAllByTitle, getByTitle, findAllByTitle, findByTitle] = buildQueries(queryAllByTitle, getMultipleError$2, getMissingError$2);\n\n/* eslint-disable complexity */\nconst queryAllByRole = function (container, role, _temp) {\n let {\n hidden = getConfig().defaultHidden,\n name,\n description,\n queryFallbacks = false,\n selected,\n busy,\n checked,\n pressed,\n current,\n level,\n expanded,\n value: {\n now: valueNow,\n min: valueMin,\n max: valueMax,\n text: valueText\n } = {}\n } = _temp === void 0 ? {} : _temp;\n checkContainerType(container);\n if (selected !== undefined) {\n var _allRoles$get;\n // guard against unknown roles\n if (((_allRoles$get = roles.get(role)) == null ? void 0 : _allRoles$get.props['aria-selected']) === undefined) {\n throw new Error(\"\\\"aria-selected\\\" is not supported on role \\\"\" + role + \"\\\".\");\n }\n }\n if (busy !== undefined) {\n var _allRoles$get2;\n // guard against unknown roles\n if (((_allRoles$get2 = roles.get(role)) == null ? void 0 : _allRoles$get2.props['aria-busy']) === undefined) {\n throw new Error(\"\\\"aria-busy\\\" is not supported on role \\\"\" + role + \"\\\".\");\n }\n }\n if (checked !== undefined) {\n var _allRoles$get3;\n // guard against unknown roles\n if (((_allRoles$get3 = roles.get(role)) == null ? void 0 : _allRoles$get3.props['aria-checked']) === undefined) {\n throw new Error(\"\\\"aria-checked\\\" is not supported on role \\\"\" + role + \"\\\".\");\n }\n }\n if (pressed !== undefined) {\n var _allRoles$get4;\n // guard against unknown roles\n if (((_allRoles$get4 = roles.get(role)) == null ? void 0 : _allRoles$get4.props['aria-pressed']) === undefined) {\n throw new Error(\"\\\"aria-pressed\\\" is not supported on role \\\"\" + role + \"\\\".\");\n }\n }\n if (current !== undefined) {\n var _allRoles$get5;\n /* istanbul ignore next */\n // guard against unknown roles\n // All currently released ARIA versions support `aria-current` on all roles.\n // Leaving this for symmetry and forward compatibility\n if (((_allRoles$get5 = roles.get(role)) == null ? void 0 : _allRoles$get5.props['aria-current']) === undefined) {\n throw new Error(\"\\\"aria-current\\\" is not supported on role \\\"\" + role + \"\\\".\");\n }\n }\n if (level !== undefined) {\n // guard against using `level` option with any role other than `heading`\n if (role !== 'heading') {\n throw new Error(\"Role \\\"\" + role + \"\\\" cannot have \\\"level\\\" property.\");\n }\n }\n if (valueNow !== undefined) {\n var _allRoles$get6;\n // guard against unknown roles\n if (((_allRoles$get6 = roles.get(role)) == null ? void 0 : _allRoles$get6.props['aria-valuenow']) === undefined) {\n throw new Error(\"\\\"aria-valuenow\\\" is not supported on role \\\"\" + role + \"\\\".\");\n }\n }\n if (valueMax !== undefined) {\n var _allRoles$get7;\n // guard against unknown roles\n if (((_allRoles$get7 = roles.get(role)) == null ? void 0 : _allRoles$get7.props['aria-valuemax']) === undefined) {\n throw new Error(\"\\\"aria-valuemax\\\" is not supported on role \\\"\" + role + \"\\\".\");\n }\n }\n if (valueMin !== undefined) {\n var _allRoles$get8;\n // guard against unknown roles\n if (((_allRoles$get8 = roles.get(role)) == null ? void 0 : _allRoles$get8.props['aria-valuemin']) === undefined) {\n throw new Error(\"\\\"aria-valuemin\\\" is not supported on role \\\"\" + role + \"\\\".\");\n }\n }\n if (valueText !== undefined) {\n var _allRoles$get9;\n // guard against unknown roles\n if (((_allRoles$get9 = roles.get(role)) == null ? void 0 : _allRoles$get9.props['aria-valuetext']) === undefined) {\n throw new Error(\"\\\"aria-valuetext\\\" is not supported on role \\\"\" + role + \"\\\".\");\n }\n }\n if (expanded !== undefined) {\n var _allRoles$get0;\n // guard against unknown roles\n if (((_allRoles$get0 = roles.get(role)) == null ? void 0 : _allRoles$get0.props['aria-expanded']) === undefined) {\n throw new Error(\"\\\"aria-expanded\\\" is not supported on role \\\"\" + role + \"\\\".\");\n }\n }\n const subtreeIsInaccessibleCache = new WeakMap();\n function cachedIsSubtreeInaccessible(element) {\n if (!subtreeIsInaccessibleCache.has(element)) {\n subtreeIsInaccessibleCache.set(element, isSubtreeInaccessible(element));\n }\n return subtreeIsInaccessibleCache.get(element);\n }\n return Array.from(container.querySelectorAll(\n // Only query elements that can be matched by the following filters\n makeRoleSelector(role))).filter(node => {\n const isRoleSpecifiedExplicitly = node.hasAttribute('role');\n if (isRoleSpecifiedExplicitly) {\n const roleValue = node.getAttribute('role');\n if (queryFallbacks) {\n return roleValue.split(' ').filter(Boolean).some(roleAttributeToken => roleAttributeToken === role);\n }\n // other wise only send the first token to match\n const [firstRoleAttributeToken] = roleValue.split(' ');\n return firstRoleAttributeToken === role;\n }\n const implicitRoles = getImplicitAriaRoles(node);\n return implicitRoles.some(implicitRole => {\n return implicitRole === role;\n });\n }).filter(element => {\n if (selected !== undefined) {\n return selected === computeAriaSelected(element);\n }\n if (busy !== undefined) {\n return busy === computeAriaBusy(element);\n }\n if (checked !== undefined) {\n return checked === computeAriaChecked(element);\n }\n if (pressed !== undefined) {\n return pressed === computeAriaPressed(element);\n }\n if (current !== undefined) {\n return current === computeAriaCurrent(element);\n }\n if (expanded !== undefined) {\n return expanded === computeAriaExpanded(element);\n }\n if (level !== undefined) {\n return level === computeHeadingLevel(element);\n }\n if (valueNow !== undefined || valueMax !== undefined || valueMin !== undefined || valueText !== undefined) {\n let valueMatches = true;\n if (valueNow !== undefined) {\n valueMatches && (valueMatches = valueNow === computeAriaValueNow(element));\n }\n if (valueMax !== undefined) {\n valueMatches && (valueMatches = valueMax === computeAriaValueMax(element));\n }\n if (valueMin !== undefined) {\n valueMatches && (valueMatches = valueMin === computeAriaValueMin(element));\n }\n if (valueText !== undefined) {\n var _computeAriaValueText;\n valueMatches && (valueMatches = matches((_computeAriaValueText = computeAriaValueText(element)) != null ? _computeAriaValueText : null, element, valueText, text => text));\n }\n return valueMatches;\n }\n // don't care if aria attributes are unspecified\n return true;\n }).filter(element => {\n if (name === undefined) {\n // Don't care\n return true;\n }\n return matches(computeAccessibleName(element, {\n computedStyleSupportsPseudoElements: getConfig().computedStyleSupportsPseudoElements\n }), element, name, text => text);\n }).filter(element => {\n if (description === undefined) {\n // Don't care\n return true;\n }\n return matches(computeAccessibleDescription(element, {\n computedStyleSupportsPseudoElements: getConfig().computedStyleSupportsPseudoElements\n }), element, description, text => text);\n }).filter(element => {\n return hidden === false ? isInaccessible(element, {\n isSubtreeInaccessible: cachedIsSubtreeInaccessible\n }) === false : true;\n });\n};\nfunction makeRoleSelector(role) {\n var _roleElements$get;\n const explicitRoleSelector = \"*[role~=\\\"\" + role + \"\\\"]\";\n const roleRelations = (_roleElements$get = roleElements.get(role)) != null ? _roleElements$get : new Set();\n const implicitRoleSelectors = new Set(Array.from(roleRelations).map(_ref => {\n let {\n name\n } = _ref;\n return name;\n }));\n\n // Current transpilation config sometimes assumes `...` is always applied to arrays.\n // `...` is equivalent to `Array.prototype.concat` for arrays.\n // If you replace this code with `[explicitRoleSelector, ...implicitRoleSelectors]`, make sure every transpilation target retains the `...` in favor of `Array.prototype.concat`.\n return [explicitRoleSelector].concat(Array.from(implicitRoleSelectors)).join(',');\n}\nconst getNameHint = name => {\n let nameHint = '';\n if (name === undefined) {\n nameHint = '';\n } else if (typeof name === 'string') {\n nameHint = \" and name \\\"\" + name + \"\\\"\";\n } else {\n nameHint = \" and name `\" + name + \"`\";\n }\n return nameHint;\n};\nconst getMultipleError$1 = function (c, role, _temp2) {\n let {\n name\n } = _temp2 === void 0 ? {} : _temp2;\n return \"Found multiple elements with the role \\\"\" + role + \"\\\"\" + getNameHint(name);\n};\nconst getMissingError$1 = function (container, role, _temp3) {\n let {\n hidden = getConfig().defaultHidden,\n name,\n description\n } = _temp3 === void 0 ? {} : _temp3;\n if (getConfig()._disableExpensiveErrorDiagnostics) {\n return \"Unable to find role=\\\"\" + role + \"\\\"\" + getNameHint(name);\n }\n let roles = '';\n Array.from(container.children).forEach(childElement => {\n roles += prettyRoles(childElement, {\n hidden,\n includeDescription: description !== undefined\n });\n });\n let roleMessage;\n if (roles.length === 0) {\n if (hidden === false) {\n roleMessage = 'There are no accessible roles. But there might be some inaccessible roles. ' + 'If you wish to access them, then set the `hidden` option to `true`. ' + 'Learn more about this here: https://testing-library.com/docs/dom-testing-library/api-queries#byrole';\n } else {\n roleMessage = 'There are no available roles.';\n }\n } else {\n roleMessage = (\"\\nHere are the \" + (hidden === false ? 'accessible' : 'available') + \" roles:\\n\\n \" + roles.replace(/\\n/g, '\\n ').replace(/\\n\\s\\s\\n/g, '\\n\\n') + \"\\n\").trim();\n }\n let nameHint = '';\n if (name === undefined) {\n nameHint = '';\n } else if (typeof name === 'string') {\n nameHint = \" and name \\\"\" + name + \"\\\"\";\n } else {\n nameHint = \" and name `\" + name + \"`\";\n }\n let descriptionHint = '';\n if (description === undefined) {\n descriptionHint = '';\n } else if (typeof description === 'string') {\n descriptionHint = \" and description \\\"\" + description + \"\\\"\";\n } else {\n descriptionHint = \" and description `\" + description + \"`\";\n }\n return (\"\\nUnable to find an \" + (hidden === false ? 'accessible ' : '') + \"element with the role \\\"\" + role + \"\\\"\" + nameHint + descriptionHint + \"\\n\\n\" + roleMessage).trim();\n};\nconst queryAllByRoleWithSuggestions = wrapAllByQueryWithSuggestion(queryAllByRole, queryAllByRole.name, 'queryAll');\nconst [queryByRole, getAllByRole, getByRole, findAllByRole, findByRole] = buildQueries(queryAllByRole, getMultipleError$1, getMissingError$1);\n\nconst getTestIdAttribute = () => getConfig().testIdAttribute;\nconst queryAllByTestId = function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n checkContainerType(args[0]);\n return queryAllByAttribute(getTestIdAttribute(), ...args);\n};\nconst getMultipleError = (c, id) => \"Found multiple elements by: [\" + getTestIdAttribute() + \"=\\\"\" + id + \"\\\"]\";\nconst getMissingError = (c, id) => \"Unable to find an element by: [\" + getTestIdAttribute() + \"=\\\"\" + id + \"\\\"]\";\nconst queryAllByTestIdWithSuggestions = wrapAllByQueryWithSuggestion(queryAllByTestId, queryAllByTestId.name, 'queryAll');\nconst [queryByTestId, getAllByTestId, getByTestId, findAllByTestId, findByTestId] = buildQueries(queryAllByTestId, getMultipleError, getMissingError);\n\nvar queries = /*#__PURE__*/Object.freeze({\n __proto__: null,\n queryAllByLabelText: queryAllByLabelTextWithSuggestions,\n queryByLabelText: queryByLabelText,\n getAllByLabelText: getAllByLabelTextWithSuggestions,\n getByLabelText: getByLabelTextWithSuggestions,\n findAllByLabelText: findAllByLabelText,\n findByLabelText: findByLabelText,\n queryByPlaceholderText: queryByPlaceholderText,\n queryAllByPlaceholderText: queryAllByPlaceholderTextWithSuggestions,\n getByPlaceholderText: getByPlaceholderText,\n getAllByPlaceholderText: getAllByPlaceholderText,\n findAllByPlaceholderText: findAllByPlaceholderText,\n findByPlaceholderText: findByPlaceholderText,\n queryByText: queryByText,\n queryAllByText: queryAllByTextWithSuggestions,\n getByText: getByText,\n getAllByText: getAllByText,\n findAllByText: findAllByText,\n findByText: findByText,\n queryByDisplayValue: queryByDisplayValue,\n queryAllByDisplayValue: queryAllByDisplayValueWithSuggestions,\n getByDisplayValue: getByDisplayValue,\n getAllByDisplayValue: getAllByDisplayValue,\n findAllByDisplayValue: findAllByDisplayValue,\n findByDisplayValue: findByDisplayValue,\n queryByAltText: queryByAltText,\n queryAllByAltText: queryAllByAltTextWithSuggestions,\n getByAltText: getByAltText,\n getAllByAltText: getAllByAltText,\n findAllByAltText: findAllByAltText,\n findByAltText: findByAltText,\n queryByTitle: queryByTitle,\n queryAllByTitle: queryAllByTitleWithSuggestions,\n getByTitle: getByTitle,\n getAllByTitle: getAllByTitle,\n findAllByTitle: findAllByTitle,\n findByTitle: findByTitle,\n queryByRole: queryByRole,\n queryAllByRole: queryAllByRoleWithSuggestions,\n getAllByRole: getAllByRole,\n getByRole: getByRole,\n findAllByRole: findAllByRole,\n findByRole: findByRole,\n queryByTestId: queryByTestId,\n queryAllByTestId: queryAllByTestIdWithSuggestions,\n getByTestId: getByTestId,\n getAllByTestId: getAllByTestId,\n findAllByTestId: findAllByTestId,\n findByTestId: findByTestId\n});\n\n/**\n * @typedef {{[key: string]: Function}} FuncMap\n */\n\n/**\n * @param {HTMLElement} element container\n * @param {FuncMap} queries object of functions\n * @param {Object} initialValue for reducer\n * @returns {FuncMap} returns object of functions bound to container\n */\nfunction getQueriesForElement(element, queries$1, initialValue) {\n if (queries$1 === void 0) {\n queries$1 = queries;\n }\n if (initialValue === void 0) {\n initialValue = {};\n }\n return Object.keys(queries$1).reduce((helpers, key) => {\n const fn = queries$1[key];\n helpers[key] = fn.bind(null, element);\n return helpers;\n }, initialValue);\n}\n\nconst isRemoved = result => !result || Array.isArray(result) && !result.length;\n\n// Check if the element is not present.\n// As the name implies, waitForElementToBeRemoved should check `present` --> `removed`\nfunction initialCheck(elements) {\n if (isRemoved(elements)) {\n throw new Error('The element(s) given to waitForElementToBeRemoved are already removed. waitForElementToBeRemoved requires that the element(s) exist(s) before waiting for removal.');\n }\n}\nasync function waitForElementToBeRemoved(callback, options) {\n // created here so we get a nice stacktrace\n const timeoutError = new Error('Timed out in waitForElementToBeRemoved.');\n if (typeof callback !== 'function') {\n initialCheck(callback);\n const elements = Array.isArray(callback) ? callback : [callback];\n const getRemainingElements = elements.map(element => {\n let parent = element.parentElement;\n if (parent === null) return () => null;\n while (parent.parentElement) parent = parent.parentElement;\n return () => parent.contains(element) ? element : null;\n });\n callback = () => getRemainingElements.map(c => c()).filter(Boolean);\n }\n initialCheck(callback());\n return waitForWrapper(() => {\n let result;\n try {\n result = callback();\n } catch (error) {\n if (error.name === 'TestingLibraryElementError') {\n return undefined;\n }\n throw error;\n }\n if (!isRemoved(result)) {\n throw timeoutError;\n }\n return undefined;\n }, options);\n}\n\n/*\neslint\n require-await: \"off\"\n*/\n\nconst eventMap = {\n // Clipboard Events\n copy: {\n EventType: 'ClipboardEvent',\n defaultInit: {\n bubbles: true,\n cancelable: true,\n composed: true\n }\n },\n cut: {\n EventType: 'ClipboardEvent',\n defaultInit: {\n bubbles: true,\n cancelable: true,\n composed: true\n }\n },\n paste: {\n EventType: 'ClipboardEvent',\n defaultInit: {\n bubbles: true,\n cancelable: true,\n composed: true\n }\n },\n // Composition Events\n compositionEnd: {\n EventType: 'CompositionEvent',\n defaultInit: {\n bubbles: true,\n cancelable: true,\n composed: true\n }\n },\n compositionStart: {\n EventType: 'CompositionEvent',\n defaultInit: {\n bubbles: true,\n cancelable: true,\n composed: true\n }\n },\n compositionUpdate: {\n EventType: 'CompositionEvent',\n defaultInit: {\n bubbles: true,\n cancelable: true,\n composed: true\n }\n },\n // Keyboard Events\n keyDown: {\n EventType: 'KeyboardEvent',\n defaultInit: {\n bubbles: true,\n cancelable: true,\n charCode: 0,\n composed: true\n }\n },\n keyPress: {\n EventType: 'KeyboardEvent',\n defaultInit: {\n bubbles: true,\n cancelable: true,\n charCode: 0,\n composed: true\n }\n },\n keyUp: {\n EventType: 'KeyboardEvent',\n defaultInit: {\n bubbles: true,\n cancelable: true,\n charCode: 0,\n composed: true\n }\n },\n // Focus Events\n focus: {\n EventType: 'FocusEvent',\n defaultInit: {\n bubbles: false,\n cancelable: false,\n composed: true\n }\n },\n blur: {\n EventType: 'FocusEvent',\n defaultInit: {\n bubbles: false,\n cancelable: false,\n composed: true\n }\n },\n focusIn: {\n EventType: 'FocusEvent',\n defaultInit: {\n bubbles: true,\n cancelable: false,\n composed: true\n }\n },\n focusOut: {\n EventType: 'FocusEvent',\n defaultInit: {\n bubbles: true,\n cancelable: false,\n composed: true\n }\n },\n // Form Events\n change: {\n EventType: 'Event',\n defaultInit: {\n bubbles: true,\n cancelable: false\n }\n },\n input: {\n EventType: 'InputEvent',\n defaultInit: {\n bubbles: true,\n cancelable: false,\n composed: true\n }\n },\n invalid: {\n EventType: 'Event',\n defaultInit: {\n bubbles: false,\n cancelable: true\n }\n },\n submit: {\n EventType: 'Event',\n defaultInit: {\n bubbles: true,\n cancelable: true\n }\n },\n reset: {\n EventType: 'Event',\n defaultInit: {\n bubbles: true,\n cancelable: true\n }\n },\n // Mouse Events\n click: {\n EventType: 'MouseEvent',\n defaultInit: {\n bubbles: true,\n cancelable: true,\n button: 0,\n composed: true\n }\n },\n contextMenu: {\n EventType: 'MouseEvent',\n defaultInit: {\n bubbles: true,\n cancelable: true,\n composed: true\n }\n },\n dblClick: {\n EventType: 'MouseEvent',\n defaultInit: {\n bubbles: true,\n cancelable: true,\n composed: true\n }\n },\n drag: {\n EventType: 'DragEvent',\n defaultInit: {\n bubbles: true,\n cancelable: true,\n composed: true\n }\n },\n dragEnd: {\n EventType: 'DragEvent',\n defaultInit: {\n bubbles: true,\n cancelable: false,\n composed: true\n }\n },\n dragEnter: {\n EventType: 'DragEvent',\n defaultInit: {\n bubbles: true,\n cancelable: true,\n composed: true\n }\n },\n dragExit: {\n EventType: 'DragEvent',\n defaultInit: {\n bubbles: true,\n cancelable: false,\n composed: true\n }\n },\n dragLeave: {\n EventType: 'DragEvent',\n defaultInit: {\n bubbles: true,\n cancelable: false,\n composed: true\n }\n },\n dragOver: {\n EventType: 'DragEvent',\n defaultInit: {\n bubbles: true,\n cancelable: true,\n composed: true\n }\n },\n dragStart: {\n EventType: 'DragEvent',\n defaultInit: {\n bubbles: true,\n cancelable: true,\n composed: true\n }\n },\n drop: {\n EventType: 'DragEvent',\n defaultInit: {\n bubbles: true,\n cancelable: true,\n composed: true\n }\n },\n mouseDown: {\n EventType: 'MouseEvent',\n defaultInit: {\n bubbles: true,\n cancelable: true,\n composed: true\n }\n },\n mouseEnter: {\n EventType: 'MouseEvent',\n defaultInit: {\n bubbles: false,\n cancelable: false,\n composed: true\n }\n },\n mouseLeave: {\n EventType: 'MouseEvent',\n defaultInit: {\n bubbles: false,\n cancelable: false,\n composed: true\n }\n },\n mouseMove: {\n EventType: 'MouseEvent',\n defaultInit: {\n bubbles: true,\n cancelable: true,\n composed: true\n }\n },\n mouseOut: {\n EventType: 'MouseEvent',\n defaultInit: {\n bubbles: true,\n cancelable: true,\n composed: true\n }\n },\n mouseOver: {\n EventType: 'MouseEvent',\n defaultInit: {\n bubbles: true,\n cancelable: true,\n composed: true\n }\n },\n mouseUp: {\n EventType: 'MouseEvent',\n defaultInit: {\n bubbles: true,\n cancelable: true,\n composed: true\n }\n },\n // Selection Events\n select: {\n EventType: 'Event',\n defaultInit: {\n bubbles: true,\n cancelable: false\n }\n },\n // Touch Events\n touchCancel: {\n EventType: 'TouchEvent',\n defaultInit: {\n bubbles: true,\n cancelable: false,\n composed: true\n }\n },\n touchEnd: {\n EventType: 'TouchEvent',\n defaultInit: {\n bubbles: true,\n cancelable: true,\n composed: true\n }\n },\n touchMove: {\n EventType: 'TouchEvent',\n defaultInit: {\n bubbles: true,\n cancelable: true,\n composed: true\n }\n },\n touchStart: {\n EventType: 'TouchEvent',\n defaultInit: {\n bubbles: true,\n cancelable: true,\n composed: true\n }\n },\n // UI Events\n resize: {\n EventType: 'UIEvent',\n defaultInit: {\n bubbles: false,\n cancelable: false\n }\n },\n scroll: {\n EventType: 'UIEvent',\n defaultInit: {\n bubbles: false,\n cancelable: false\n }\n },\n // Wheel Events\n wheel: {\n EventType: 'WheelEvent',\n defaultInit: {\n bubbles: true,\n cancelable: true,\n composed: true\n }\n },\n // Media Events\n abort: {\n EventType: 'Event',\n defaultInit: {\n bubbles: false,\n cancelable: false\n }\n },\n canPlay: {\n EventType: 'Event',\n defaultInit: {\n bubbles: false,\n cancelable: false\n }\n },\n canPlayThrough: {\n EventType: 'Event',\n defaultInit: {\n bubbles: false,\n cancelable: false\n }\n },\n durationChange: {\n EventType: 'Event',\n defaultInit: {\n bubbles: false,\n cancelable: false\n }\n },\n emptied: {\n EventType: 'Event',\n defaultInit: {\n bubbles: false,\n cancelable: false\n }\n },\n encrypted: {\n EventType: 'Event',\n defaultInit: {\n bubbles: false,\n cancelable: false\n }\n },\n ended: {\n EventType: 'Event',\n defaultInit: {\n bubbles: false,\n cancelable: false\n }\n },\n loadedData: {\n EventType: 'Event',\n defaultInit: {\n bubbles: false,\n cancelable: false\n }\n },\n loadedMetadata: {\n EventType: 'Event',\n defaultInit: {\n bubbles: false,\n cancelable: false\n }\n },\n loadStart: {\n EventType: 'ProgressEvent',\n defaultInit: {\n bubbles: false,\n cancelable: false\n }\n },\n pause: {\n EventType: 'Event',\n defaultInit: {\n bubbles: false,\n cancelable: false\n }\n },\n play: {\n EventType: 'Event',\n defaultInit: {\n bubbles: false,\n cancelable: false\n }\n },\n playing: {\n EventType: 'Event',\n defaultInit: {\n bubbles: false,\n cancelable: false\n }\n },\n progress: {\n EventType: 'ProgressEvent',\n defaultInit: {\n bubbles: false,\n cancelable: false\n }\n },\n rateChange: {\n EventType: 'Event',\n defaultInit: {\n bubbles: false,\n cancelable: false\n }\n },\n seeked: {\n EventType: 'Event',\n defaultInit: {\n bubbles: false,\n cancelable: false\n }\n },\n seeking: {\n EventType: 'Event',\n defaultInit: {\n bubbles: false,\n cancelable: false\n }\n },\n stalled: {\n EventType: 'Event',\n defaultInit: {\n bubbles: false,\n cancelable: false\n }\n },\n suspend: {\n EventType: 'Event',\n defaultInit: {\n bubbles: false,\n cancelable: false\n }\n },\n timeUpdate: {\n EventType: 'Event',\n defaultInit: {\n bubbles: false,\n cancelable: false\n }\n },\n volumeChange: {\n EventType: 'Event',\n defaultInit: {\n bubbles: false,\n cancelable: false\n }\n },\n waiting: {\n EventType: 'Event',\n defaultInit: {\n bubbles: false,\n cancelable: false\n }\n },\n // Events\n load: {\n // TODO: load events can be UIEvent or Event depending on what generated them\n // This is where this abstraction breaks down.\n // But the common targets are <img />, <script /> and window.\n // Neither of these targets receive a UIEvent\n EventType: 'Event',\n defaultInit: {\n bubbles: false,\n cancelable: false\n }\n },\n error: {\n EventType: 'Event',\n defaultInit: {\n bubbles: false,\n cancelable: false\n }\n },\n // Animation Events\n animationStart: {\n EventType: 'AnimationEvent',\n defaultInit: {\n bubbles: true,\n cancelable: false\n }\n },\n animationEnd: {\n EventType: 'AnimationEvent',\n defaultInit: {\n bubbles: true,\n cancelable: false\n }\n },\n animationIteration: {\n EventType: 'AnimationEvent',\n defaultInit: {\n bubbles: true,\n cancelable: false\n }\n },\n // Transition Events\n transitionCancel: {\n EventType: 'TransitionEvent',\n defaultInit: {\n bubbles: true,\n cancelable: false\n }\n },\n transitionEnd: {\n EventType: 'TransitionEvent',\n defaultInit: {\n bubbles: true,\n cancelable: true\n }\n },\n transitionRun: {\n EventType: 'TransitionEvent',\n defaultInit: {\n bubbles: true,\n cancelable: false\n }\n },\n transitionStart: {\n EventType: 'TransitionEvent',\n defaultInit: {\n bubbles: true,\n cancelable: false\n }\n },\n // pointer events\n pointerOver: {\n EventType: 'PointerEvent',\n defaultInit: {\n bubbles: true,\n cancelable: true,\n composed: true\n }\n },\n pointerEnter: {\n EventType: 'PointerEvent',\n defaultInit: {\n bubbles: false,\n cancelable: false\n }\n },\n pointerDown: {\n EventType: 'PointerEvent',\n defaultInit: {\n bubbles: true,\n cancelable: true,\n composed: true\n }\n },\n pointerMove: {\n EventType: 'PointerEvent',\n defaultInit: {\n bubbles: true,\n cancelable: true,\n composed: true\n }\n },\n pointerUp: {\n EventType: 'PointerEvent',\n defaultInit: {\n bubbles: true,\n cancelable: true,\n composed: true\n }\n },\n pointerCancel: {\n EventType: 'PointerEvent',\n defaultInit: {\n bubbles: true,\n cancelable: false,\n composed: true\n }\n },\n pointerOut: {\n EventType: 'PointerEvent',\n defaultInit: {\n bubbles: true,\n cancelable: true,\n composed: true\n }\n },\n pointerLeave: {\n EventType: 'PointerEvent',\n defaultInit: {\n bubbles: false,\n cancelable: false\n }\n },\n gotPointerCapture: {\n EventType: 'PointerEvent',\n defaultInit: {\n bubbles: true,\n cancelable: false,\n composed: true\n }\n },\n lostPointerCapture: {\n EventType: 'PointerEvent',\n defaultInit: {\n bubbles: true,\n cancelable: false,\n composed: true\n }\n },\n // history events\n popState: {\n EventType: 'PopStateEvent',\n defaultInit: {\n bubbles: true,\n cancelable: false\n }\n },\n // window events\n offline: {\n EventType: 'Event',\n defaultInit: {\n bubbles: false,\n cancelable: false\n }\n },\n online: {\n EventType: 'Event',\n defaultInit: {\n bubbles: false,\n cancelable: false\n }\n },\n pageHide: {\n EventType: 'PageTransitionEvent',\n defaultInit: {\n bubbles: true,\n cancelable: true\n }\n },\n pageShow: {\n EventType: 'PageTransitionEvent',\n defaultInit: {\n bubbles: true,\n cancelable: true\n }\n }\n};\nconst eventAliasMap = {\n doubleClick: 'dblClick'\n};\n\nfunction fireEvent(element, event) {\n return getConfig().eventWrapper(() => {\n if (!event) {\n throw new Error(\"Unable to fire an event - please provide an event object.\");\n }\n if (!element) {\n throw new Error(\"Unable to fire a \\\"\" + event.type + \"\\\" event - please provide a DOM element.\");\n }\n return element.dispatchEvent(event);\n });\n}\nfunction createEvent(eventName, node, init, _temp) {\n let {\n EventType = 'Event',\n defaultInit = {}\n } = _temp === void 0 ? {} : _temp;\n if (!node) {\n throw new Error(\"Unable to fire a \\\"\" + eventName + \"\\\" event - please provide a DOM element.\");\n }\n const eventInit = {\n ...defaultInit,\n ...init\n };\n const {\n target: {\n value,\n files,\n ...targetProperties\n } = {}\n } = eventInit;\n if (value !== undefined) {\n setNativeValue(node, value);\n }\n if (files !== undefined) {\n // input.files is a read-only property so this is not allowed:\n // input.files = [file]\n // so we have to use this workaround to set the property\n Object.defineProperty(node, 'files', {\n configurable: true,\n enumerable: true,\n writable: true,\n value: files\n });\n }\n Object.assign(node, targetProperties);\n const window = getWindowFromNode(node);\n const EventConstructor = window[EventType] || window.Event;\n let event;\n /* istanbul ignore else */\n if (typeof EventConstructor === 'function') {\n event = new EventConstructor(eventName, eventInit);\n } else {\n // IE11 polyfill from https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent/CustomEvent#Polyfill\n event = window.document.createEvent(EventType);\n const {\n bubbles,\n cancelable,\n detail,\n ...otherInit\n } = eventInit;\n event.initEvent(eventName, bubbles, cancelable, detail);\n Object.keys(otherInit).forEach(eventKey => {\n event[eventKey] = otherInit[eventKey];\n });\n }\n\n // DataTransfer is not supported in jsdom: https://github.com/jsdom/jsdom/issues/1568\n const dataTransferProperties = ['dataTransfer', 'clipboardData'];\n dataTransferProperties.forEach(dataTransferKey => {\n const dataTransferValue = eventInit[dataTransferKey];\n if (typeof dataTransferValue === 'object') {\n /* istanbul ignore if */\n if (typeof window.DataTransfer === 'function') {\n Object.defineProperty(event, dataTransferKey, {\n value: Object.getOwnPropertyNames(dataTransferValue).reduce((acc, propName) => {\n Object.defineProperty(acc, propName, {\n value: dataTransferValue[propName]\n });\n return acc;\n }, new window.DataTransfer())\n });\n } else {\n Object.defineProperty(event, dataTransferKey, {\n value: dataTransferValue\n });\n }\n }\n });\n return event;\n}\nObject.keys(eventMap).forEach(key => {\n const {\n EventType,\n defaultInit\n } = eventMap[key];\n const eventName = key.toLowerCase();\n createEvent[key] = (node, init) => createEvent(eventName, node, init, {\n EventType,\n defaultInit\n });\n fireEvent[key] = (node, init) => fireEvent(node, createEvent[key](node, init));\n});\n\n// function written after some investigation here:\n// https://github.com/facebook/react/issues/10135#issuecomment-401496776\nfunction setNativeValue(element, value) {\n const {\n set: valueSetter\n } = Object.getOwnPropertyDescriptor(element, 'value') || {};\n const prototype = Object.getPrototypeOf(element);\n const {\n set: prototypeValueSetter\n } = Object.getOwnPropertyDescriptor(prototype, 'value') || {};\n if (prototypeValueSetter && valueSetter !== prototypeValueSetter) {\n prototypeValueSetter.call(element, value);\n } else {\n /* istanbul ignore if */\n // eslint-disable-next-line no-lonely-if -- Can't be ignored by istanbul otherwise\n if (valueSetter) {\n valueSetter.call(element, value);\n } else {\n throw new Error('The given element does not have a value setter');\n }\n }\n}\nObject.keys(eventAliasMap).forEach(aliasKey => {\n const key = eventAliasMap[aliasKey];\n fireEvent[aliasKey] = function () {\n return fireEvent[key](...arguments);\n };\n});\n\n/* eslint complexity:[\"error\", 9] */\n\n// WARNING: `lz-string` only has a default export but statically we assume named exports are allowed\nfunction unindent(string) {\n // remove white spaces first, to save a few bytes.\n // testing-playground will reformat on load any ways.\n return string.replace(/[ \\t]*[\\n][ \\t]*/g, '\\n');\n}\nfunction encode(value) {\n return lzString.compressToEncodedURIComponent(unindent(value));\n}\nfunction getPlaygroundUrl(markup) {\n return \"https://testing-playground.com/#markup=\" + encode(markup);\n}\nconst debug = (element, maxLength, options) => Array.isArray(element) ? element.forEach(el => logDOM(el, maxLength, options)) : logDOM(element, maxLength, options);\nconst logTestingPlaygroundURL = function (element) {\n if (element === void 0) {\n element = getDocument().body;\n }\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (!element || !('innerHTML' in element)) {\n console.log(\"The element you're providing isn't a valid DOM element.\");\n return;\n }\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (!element.innerHTML) {\n console.log(\"The provided element doesn't have any children.\");\n return;\n }\n const playgroundUrl = getPlaygroundUrl(element.innerHTML);\n console.log(\"Open this URL in your browser\\n\\n\" + playgroundUrl);\n return playgroundUrl;\n};\nconst initialValue = {\n debug,\n logTestingPlaygroundURL\n};\nconst screen = typeof document !== 'undefined' && document.body // eslint-disable-line @typescript-eslint/no-unnecessary-condition\n? getQueriesForElement(document.body, queries, initialValue) : Object.keys(queries).reduce((helpers, key) => {\n // `key` is for all intents and purposes the type of keyof `helpers`, which itself is the type of `initialValue` plus incoming properties from `queries`\n // if `Object.keys(something)` returned Array<keyof typeof something> this explicit type assertion would not be necessary\n // see https://stackoverflow.com/questions/55012174/why-doesnt-object-keys-return-a-keyof-type-in-typescript\n helpers[key] = () => {\n throw new TypeError('For queries bound to document.body a global document has to be available... Learn more: https://testing-library.com/s/screen-global-error');\n };\n return helpers;\n}, initialValue);\n\nexport { buildQueries, configure, createEvent, findAllByAltText, findAllByDisplayValue, findAllByLabelText, findAllByPlaceholderText, findAllByRole, findAllByTestId, findAllByText, findAllByTitle, findByAltText, findByDisplayValue, findByLabelText, findByPlaceholderText, findByRole, findByTestId, findByText, findByTitle, fireEvent, getAllByAltText, getAllByDisplayValue, getAllByLabelTextWithSuggestions as getAllByLabelText, getAllByPlaceholderText, getAllByRole, getAllByTestId, getAllByText, getAllByTitle, getByAltText, getByDisplayValue, getByLabelTextWithSuggestions as getByLabelText, getByPlaceholderText, getByRole, getByTestId, getByText, getByTitle, getConfig, getDefaultNormalizer, getElementError, getMultipleElementsFoundError, getNodeText, getQueriesForElement, getRoles, getSuggestedQuery, isInaccessible, logDOM, logRoles, makeFindQuery, makeGetAllQuery, makeSingleQuery, prettyDOM, queries, queryAllByAltTextWithSuggestions as queryAllByAltText, queryAllByAttribute, queryAllByDisplayValueWithSuggestions as queryAllByDisplayValue, queryAllByLabelTextWithSuggestions as queryAllByLabelText, queryAllByPlaceholderTextWithSuggestions as queryAllByPlaceholderText, queryAllByRoleWithSuggestions as queryAllByRole, queryAllByTestIdWithSuggestions as queryAllByTestId, queryAllByTextWithSuggestions as queryAllByText, queryAllByTitleWithSuggestions as queryAllByTitle, queryByAltText, queryByAttribute, queryByDisplayValue, queryByLabelText, queryByPlaceholderText, queryByRole, queryByTestId, queryByText, queryByTitle, queryHelpers, screen, waitForWrapper as waitFor, waitForElementToBeRemoved, getQueriesForElement as within, wrapAllByQueryWithSuggestion, wrapSingleQueryWithSuggestion };\n","import * as React from 'react';\nimport * as DeprecatedReactTestUtils from 'react-dom/test-utils';\nimport ReactDOM from 'react-dom';\nimport * as ReactDOMClient from 'react-dom/client';\nimport { fireEvent as fireEvent$1, getConfig as getConfig$1, configure as configure$1, prettyDOM, getQueriesForElement } from '@testing-library/dom';\nexport * from '@testing-library/dom';\n\nconst reactAct = typeof React.act === 'function' ? React.act : DeprecatedReactTestUtils.act;\nfunction getGlobalThis() {\n /* istanbul ignore else */\n if (typeof globalThis !== 'undefined') {\n return globalThis;\n }\n /* istanbul ignore next */\n if (typeof self !== 'undefined') {\n return self;\n }\n /* istanbul ignore next */\n if (typeof window !== 'undefined') {\n return window;\n }\n /* istanbul ignore next */\n if (typeof global !== 'undefined') {\n return global;\n }\n /* istanbul ignore next */\n throw new Error('unable to locate global object');\n}\nfunction setIsReactActEnvironment(isReactActEnvironment) {\n getGlobalThis().IS_REACT_ACT_ENVIRONMENT = isReactActEnvironment;\n}\nfunction getIsReactActEnvironment() {\n return getGlobalThis().IS_REACT_ACT_ENVIRONMENT;\n}\nfunction withGlobalActEnvironment(actImplementation) {\n return callback => {\n const previousActEnvironment = getIsReactActEnvironment();\n setIsReactActEnvironment(true);\n try {\n // The return value of `act` is always a thenable.\n let callbackNeedsToBeAwaited = false;\n const actResult = actImplementation(() => {\n const result = callback();\n if (result !== null && typeof result === 'object' && typeof result.then === 'function') {\n callbackNeedsToBeAwaited = true;\n }\n return result;\n });\n if (callbackNeedsToBeAwaited) {\n const thenable = actResult;\n return {\n then: (resolve, reject) => {\n thenable.then(returnValue => {\n setIsReactActEnvironment(previousActEnvironment);\n resolve(returnValue);\n }, error => {\n setIsReactActEnvironment(previousActEnvironment);\n reject(error);\n });\n }\n };\n } else {\n setIsReactActEnvironment(previousActEnvironment);\n return actResult;\n }\n } catch (error) {\n // Can't be a `finally {}` block since we don't know if we have to immediately restore IS_REACT_ACT_ENVIRONMENT\n // or if we have to await the callback first.\n setIsReactActEnvironment(previousActEnvironment);\n throw error;\n }\n };\n}\nconst act = withGlobalActEnvironment(reactAct);\n\n/* eslint no-console:0 */\n\n// react-testing-library's version of fireEvent will call\n// dom-testing-library's version of fireEvent. The reason\n// we make this distinction however is because we have\n// a few extra events that work a bit differently\nconst fireEvent = (...args) => fireEvent$1(...args);\nObject.keys(fireEvent$1).forEach(key => {\n fireEvent[key] = (...args) => fireEvent$1[key](...args);\n});\n\n// React event system tracks native mouseOver/mouseOut events for\n// running onMouseEnter/onMouseLeave handlers\n// @link https://github.com/facebook/react/blob/b87aabdfe1b7461e7331abb3601d9e6bb27544bc/packages/react-dom/src/events/EnterLeaveEventPlugin.js#L24-L31\nconst mouseEnter = fireEvent.mouseEnter;\nconst mouseLeave = fireEvent.mouseLeave;\nfireEvent.mouseEnter = (...args) => {\n mouseEnter(...args);\n return fireEvent.mouseOver(...args);\n};\nfireEvent.mouseLeave = (...args) => {\n mouseLeave(...args);\n return fireEvent.mouseOut(...args);\n};\nconst pointerEnter = fireEvent.pointerEnter;\nconst pointerLeave = fireEvent.pointerLeave;\nfireEvent.pointerEnter = (...args) => {\n pointerEnter(...args);\n return fireEvent.pointerOver(...args);\n};\nfireEvent.pointerLeave = (...args) => {\n pointerLeave(...args);\n return fireEvent.pointerOut(...args);\n};\nconst select = fireEvent.select;\nfireEvent.select = (node, init) => {\n select(node, init);\n // React tracks this event only on focused inputs\n node.focus();\n\n // React creates this event when one of the following native events happens\n // - contextMenu\n // - mouseUp\n // - dragEnd\n // - keyUp\n // - keyDown\n // so we can use any here\n // @link https://github.com/facebook/react/blob/b87aabdfe1b7461e7331abb3601d9e6bb27544bc/packages/react-dom/src/events/SelectEventPlugin.js#L203-L224\n fireEvent.keyUp(node, init);\n};\n\n// React event system tracks native focusout/focusin events for\n// running blur/focus handlers\n// @link https://github.com/facebook/react/pull/19186\nconst blur = fireEvent.blur;\nconst focus = fireEvent.focus;\nfireEvent.blur = (...args) => {\n fireEvent.focusOut(...args);\n return blur(...args);\n};\nfireEvent.focus = (...args) => {\n fireEvent.focusIn(...args);\n return focus(...args);\n};\n\nlet configForRTL = {\n reactStrictMode: false\n};\nfunction getConfig() {\n return {\n ...getConfig$1(),\n ...configForRTL\n };\n}\nfunction configure(newConfig) {\n if (typeof newConfig === 'function') {\n // Pass the existing config out to the provided function\n // and accept a delta in return\n newConfig = newConfig(getConfig());\n }\n const {\n reactStrictMode,\n ...configForDTL\n } = newConfig;\n configure$1(configForDTL);\n configForRTL = {\n ...configForRTL,\n reactStrictMode\n };\n}\n\nfunction jestFakeTimersAreEnabled() {\n /* istanbul ignore else */\n if (typeof jest !== 'undefined' && jest !== null) {\n return (\n // legacy timers\n setTimeout._isMockFunction === true ||\n // modern timers\n // eslint-disable-next-line prefer-object-has-own -- No Object.hasOwn in all target environments we support.\n Object.prototype.hasOwnProperty.call(setTimeout, 'clock')\n );\n } // istanbul ignore next\n\n return false;\n}\nconfigure$1({\n unstable_advanceTimersWrapper: cb => {\n return act(cb);\n },\n // We just want to run `waitFor` without IS_REACT_ACT_ENVIRONMENT\n // But that's not necessarily how `asyncWrapper` is used since it's a public method.\n // Let's just hope nobody else is using it.\n asyncWrapper: async cb => {\n const previousActEnvironment = getIsReactActEnvironment();\n setIsReactActEnvironment(false);\n try {\n const result = await cb();\n // Drain microtask queue.\n // Otherwise we'll restore the previous act() environment, before we resolve the `waitFor` call.\n // The caller would have no chance to wrap the in-flight Promises in `act()`\n await new Promise(resolve => {\n setTimeout(() => {\n resolve();\n }, 0);\n if (jestFakeTimersAreEnabled()) {\n jest.advanceTimersByTime(0);\n }\n });\n return result;\n } finally {\n setIsReactActEnvironment(previousActEnvironment);\n }\n },\n eventWrapper: cb => {\n let result;\n act(() => {\n result = cb();\n });\n return result;\n }\n});\n\n// Ideally we'd just use a WeakMap where containers are keys and roots are values.\n// We use two variables so that we can bail out in constant time when we render with a new container (most common use case)\n/**\n * @type {Set<import('react-dom').Container>}\n */\nconst mountedContainers = new Set();\n/**\n * @type Array<{container: import('react-dom').Container, root: ReturnType<typeof createConcurrentRoot>}>\n */\nconst mountedRootEntries = [];\nfunction strictModeIfNeeded(innerElement, reactStrictMode) {\n return reactStrictMode ?? getConfig().reactStrictMode ? /*#__PURE__*/React.createElement(React.StrictMode, null, innerElement) : innerElement;\n}\nfunction wrapUiIfNeeded(innerElement, wrapperComponent) {\n return wrapperComponent ? /*#__PURE__*/React.createElement(wrapperComponent, null, innerElement) : innerElement;\n}\nfunction createConcurrentRoot(container, {\n hydrate,\n onCaughtError,\n onRecoverableError,\n ui,\n wrapper: WrapperComponent,\n reactStrictMode\n}) {\n let root;\n if (hydrate) {\n act(() => {\n root = ReactDOMClient.hydrateRoot(container, strictModeIfNeeded(wrapUiIfNeeded(ui, WrapperComponent), reactStrictMode), {\n onCaughtError,\n onRecoverableError\n });\n });\n } else {\n root = ReactDOMClient.createRoot(container, {\n onCaughtError,\n onRecoverableError\n });\n }\n return {\n hydrate() {\n /* istanbul ignore if */\n if (!hydrate) {\n throw new Error('Attempted to hydrate a non-hydrateable root. This is a bug in `@testing-library/react`.');\n }\n // Nothing to do since hydration happens when creating the root object.\n },\n render(element) {\n root.render(element);\n },\n unmount() {\n root.unmount();\n }\n };\n}\nfunction createLegacyRoot(container) {\n return {\n hydrate(element) {\n ReactDOM.hydrate(element, container);\n },\n render(element) {\n ReactDOM.render(element, container);\n },\n unmount() {\n ReactDOM.unmountComponentAtNode(container);\n }\n };\n}\nfunction renderRoot(ui, {\n baseElement,\n container,\n hydrate,\n queries,\n root,\n wrapper: WrapperComponent,\n reactStrictMode\n}) {\n act(() => {\n if (hydrate) {\n root.hydrate(strictModeIfNeeded(wrapUiIfNeeded(ui, WrapperComponent), reactStrictMode), container);\n } else {\n root.render(strictModeIfNeeded(wrapUiIfNeeded(ui, WrapperComponent), reactStrictMode), container);\n }\n });\n return {\n container,\n baseElement,\n debug: (el = baseElement, maxLength, options) => Array.isArray(el) ?\n // eslint-disable-next-line no-console\n el.forEach(e => console.log(prettyDOM(e, maxLength, options))) :\n // eslint-disable-next-line no-console,\n console.log(prettyDOM(el, maxLength, options)),\n unmount: () => {\n act(() => {\n root.unmount();\n });\n },\n rerender: rerenderUi => {\n renderRoot(rerenderUi, {\n container,\n baseElement,\n root,\n wrapper: WrapperComponent,\n reactStrictMode\n });\n // Intentionally do not return anything to avoid unnecessarily complicating the API.\n // folks can use all the same utilities we return in the first place that are bound to the container\n },\n asFragment: () => {\n /* istanbul ignore else (old jsdom limitation) */\n if (typeof document.createRange === 'function') {\n return document.createRange().createContextualFragment(container.innerHTML);\n } else {\n const template = document.createElement('template');\n template.innerHTML = container.innerHTML;\n return template.content;\n }\n },\n ...getQueriesForElement(baseElement, queries)\n };\n}\nfunction render(ui, {\n container,\n baseElement = container,\n legacyRoot = false,\n onCaughtError,\n onUncaughtError,\n onRecoverableError,\n queries,\n hydrate = false,\n wrapper,\n reactStrictMode\n} = {}) {\n if (onUncaughtError !== undefined) {\n throw new Error('onUncaughtError is not supported. The `render` call will already throw on uncaught errors.');\n }\n if (legacyRoot && typeof ReactDOM.render !== 'function') {\n const error = new Error('`legacyRoot: true` is not supported in this version of React. ' + 'If your app runs React 19 or later, you should remove this flag. ' + 'If your app runs React 18 or earlier, visit https://react.dev/blog/2022/03/08/react-18-upgrade-guide for upgrade instructions.');\n Error.captureStackTrace(error, render);\n throw error;\n }\n if (!baseElement) {\n // default to document.body instead of documentElement to avoid output of potentially-large\n // head elements (such as JSS style blocks) in debug output\n baseElement = document.body;\n }\n if (!container) {\n container = baseElement.appendChild(document.createElement('div'));\n }\n let root;\n // eslint-disable-next-line no-negated-condition -- we want to map the evolution of this over time. The root is created first. Only later is it re-used so we don't want to read the case that happens later first.\n if (!mountedContainers.has(container)) {\n const createRootImpl = legacyRoot ? createLegacyRoot : createConcurrentRoot;\n root = createRootImpl(container, {\n hydrate,\n onCaughtError,\n onRecoverableError,\n ui,\n wrapper,\n reactStrictMode\n });\n mountedRootEntries.push({\n container,\n root\n });\n // we'll add it to the mounted containers regardless of whether it's actually\n // added to document.body so the cleanup method works regardless of whether\n // they're passing us a custom container or not.\n mountedContainers.add(container);\n } else {\n mountedRootEntries.forEach(rootEntry => {\n // Else is unreachable since `mountedContainers` has the `container`.\n // Only reachable if one would accidentally add the container to `mountedContainers` but not the root to `mountedRootEntries`\n /* istanbul ignore else */\n if (rootEntry.container === container) {\n root = rootEntry.root;\n }\n });\n }\n return renderRoot(ui, {\n container,\n baseElement,\n queries,\n hydrate,\n wrapper,\n root,\n reactStrictMode\n });\n}\nfunction cleanup() {\n mountedRootEntries.forEach(({\n root,\n container\n }) => {\n act(() => {\n root.unmount();\n });\n if (container.parentNode === document.body) {\n document.body.removeChild(container);\n }\n });\n mountedRootEntries.length = 0;\n mountedContainers.clear();\n}\nfunction renderHook(renderCallback, options = {}) {\n const {\n initialProps,\n ...renderOptions\n } = options;\n if (renderOptions.legacyRoot && typeof ReactDOM.render !== 'function') {\n const error = new Error('`legacyRoot: true` is not supported in this version of React. ' + 'If your app runs React 19 or later, you should remove this flag. ' + 'If your app runs React 18 or earlier, visit https://react.dev/blog/2022/03/08/react-18-upgrade-guide for upgrade instructions.');\n Error.captureStackTrace(error, renderHook);\n throw error;\n }\n const result = /*#__PURE__*/React.createRef();\n function TestComponent({\n renderCallbackProps\n }) {\n const pendingResult = renderCallback(renderCallbackProps);\n React.useEffect(() => {\n result.current = pendingResult;\n });\n return null;\n }\n const {\n rerender: baseRerender,\n unmount\n } = render(/*#__PURE__*/React.createElement(TestComponent, {\n renderCallbackProps: initialProps\n }), renderOptions);\n function rerender(rerenderCallbackProps) {\n return baseRerender(/*#__PURE__*/React.createElement(TestComponent, {\n renderCallbackProps: rerenderCallbackProps\n }));\n }\n return {\n result,\n rerender,\n unmount\n };\n}\n\n/* eslint func-name-matching:0 */\n\n// if we're running in a test runner that supports afterEach\n// or teardown then we'll automatically run cleanup afterEach test\n// this ensures that tests run in isolation from each other\n// if you don't like this then either import the `pure` module\n// or set the RTL_SKIP_AUTO_CLEANUP env variable to 'true'.\nif (typeof process === 'undefined' || !process.env?.RTL_SKIP_AUTO_CLEANUP) {\n // ignore teardown() in code coverage because Jest does not support it\n /* istanbul ignore else */\n if (typeof afterEach === 'function') {\n afterEach(() => {\n cleanup();\n });\n } else if (typeof teardown === 'function') {\n // Block is guarded by `typeof` check.\n // eslint does not support `typeof` guards.\n // eslint-disable-next-line no-undef\n teardown(() => {\n cleanup();\n });\n }\n\n // No test setup with other test runners available\n /* istanbul ignore else */\n if (typeof beforeAll === 'function' && typeof afterAll === 'function') {\n // This matches the behavior of React < 18.\n let previousIsReactActEnvironment = getIsReactActEnvironment();\n beforeAll(() => {\n previousIsReactActEnvironment = getIsReactActEnvironment();\n setIsReactActEnvironment(true);\n });\n afterAll(() => {\n setIsReactActEnvironment(previousIsReactActEnvironment);\n });\n }\n}\n\nexport { act, cleanup, configure, fireEvent, getConfig, render, renderHook };\n","import { getSafeTimers } from '@vitest/utils/timers';\n\nconst NAME_WORKER_STATE = \"__vitest_worker__\";\nfunction getWorkerState() {\n\t// @ts-expect-error untyped global\n\tconst workerState = globalThis[NAME_WORKER_STATE];\n\tif (!workerState) throw new Error(\"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- \\\"vitest\\\" is imported inside Vite / Vitest config file\\n- Otherwise, it might be a Vitest bug. Please report it to https://github.com/vitest-dev/vitest/issues\\n\");\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 isChildProcess() {\n\treturn typeof process !== \"undefined\" && !!process.send;\n}\nfunction resetModules(modules, resetMocks = false) {\n\tconst skipPaths = [\n\t\t/\\/vitest\\/dist\\//,\n\t\t/vitest-virtual-\\w+\\/dist/,\n\t\t/@vitest\\/dist/,\n\t\t...!resetMocks ? [/^mock:/] : []\n\t];\n\tmodules.idToModuleMap.forEach((node, path) => {\n\t\tif (skipPaths.some((re) => re.test(path))) return;\n\t\tnode.promise = void 0;\n\t\tnode.exports = void 0;\n\t\tnode.evaluated = false;\n\t\tnode.importers.clear();\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\tconst resolvingCount = state.resolvingModules.size;\n\tfor (const [_, mod] of state.evaluatedModules.idToModuleMap) if (mod.promise && !mod.evaluated) promises.push(mod.promise);\n\tif (!promises.length && !resolvingCount) return;\n\tawait Promise.allSettled(promises);\n\tawait waitForImportsToResolve();\n}\n\nexport { getWorkerState as g, isChildProcess as i, provideWorkerState as p, resetModules as r, waitForImportsToResolve as w };\n","var commonjsGlobal = typeof globalThis !== \"undefined\" ? globalThis : typeof window !== \"undefined\" ? window : typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : {};\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","/* Ported from https://github.com/boblauer/MockDate/blob/master/src/mockdate.ts */\n/*\nThe MIT License (MIT)\n\nCopyright (c) 2014 Bob Lauer\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n*/\nconst 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) date = new RealDate(now.valueOf());\n\t\t\t\telse date = new RealDate();\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())) throw new TypeError(`mockdate: The time set is an invalid date: ${date}`);\n\t// @ts-expect-error global\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","import { chai, equals, iterableEquality, subsetEquality, JestExtend, JestChaiExpect, JestAsymmetricMatchers, GLOBAL_EXPECT, ASYMMETRIC_MATCHERS_OBJECT, getState, setState, addCustomEqualityTesters, customMatchers } from '@vitest/expect';\nimport { getCurrentTest } from '@vitest/runner';\nimport { g as getWorkerState, i as isChildProcess, w as waitForImportsToResolve, r as resetModules } from './utils.DvEY5TfP.js';\nimport { getSafeTimers, delay } from '@vitest/utils/timers';\nimport { getNames } from '@vitest/runner/utils';\nimport { stripSnapshotIndentation, addSerializer, SnapshotClient } from '@vitest/snapshot';\nimport '@vitest/utils/error';\nimport { assertTypes, createSimpleStackTrace } from '@vitest/utils/helpers';\nimport { fn, spyOn, restoreAllMocks, resetAllMocks, clearAllMocks, isMockFunction } from '@vitest/spy';\nimport '@vitest/utils/offset';\nimport { parseSingleStack } from '@vitest/utils/source-map';\nimport { c as commonjsGlobal } from './_commonjsHelpers.D26ty3Ew.js';\nimport { R as RealDate, r as resetDate, m as mockDate } from './date.Bq6ZW5rf.js';\n\n// these matchers are not supported because they don't make sense with poll\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];\n/**\n* Attaches a `cause` property to the error if missing, copies the stack trace from the source, and throws.\n*\n* @param error - The error to throw\n* @param source - Error to copy the stack trace from\n*\n* @throws Always throws the provided error with an amended stack trace\n*/\nfunction throwWithCause(error, source) {\n\tif (error.cause == null) error.cause = /* @__PURE__ */ new Error(\"Matcher did not succeed in time.\");\n\tthrow copyStackTrace$1(error, source);\n}\nfunction createExpectPoll(expect) {\n\treturn function poll(fn, options = {}) {\n\t\tconst defaults = getWorkerState().config.expect?.poll ?? {};\n\t\tconst { interval = defaults.interval ?? 50, timeout = defaults.timeout ?? 1e3, message } = options;\n\t\t// @ts-expect-error private poll access\n\t\tconst assertion = expect(null, message).withContext({ poll: true });\n\t\tfn = fn.bind(assertion);\n\t\tconst test = chai.util.flag(assertion, \"vitest-test\");\n\t\tif (!test) throw new Error(\"expect.poll() must be called inside a test\");\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\") return assertionFunction instanceof chai.Assertion ? proxy : assertionFunction;\n\t\t\tif (key === \"assert\") return assertionFunction;\n\t\t\tif (typeof key === \"string\" && unsupported.includes(key)) throw new SyntaxError(`expect.poll() is not supported in combination with .${key}(). Use vi.waitFor() if your assertion condition is unstable.`);\n\t\t\treturn function(...args) {\n\t\t\t\tconst STACK_TRACE_ERROR = /* @__PURE__ */ new Error(\"STACK_TRACE_ERROR\");\n\t\t\t\tconst promise = async () => {\n\t\t\t\t\tconst { setTimeout, clearTimeout } = getSafeTimers();\n\t\t\t\t\tlet executionPhase = \"fn\";\n\t\t\t\t\tlet hasTimedOut = false;\n\t\t\t\t\tconst timerId = setTimeout(() => {\n\t\t\t\t\t\thasTimedOut = true;\n\t\t\t\t\t}, timeout);\n\t\t\t\t\tchai.util.flag(assertion, \"_name\", key);\n\t\t\t\t\ttry {\n\t\t\t\t\t\twhile (true) {\n\t\t\t\t\t\t\tconst isLastAttempt = hasTimedOut;\n\t\t\t\t\t\t\tif (isLastAttempt) chai.util.flag(assertion, \"_isLastPollAttempt\", true);\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\texecutionPhase = \"fn\";\n\t\t\t\t\t\t\t\tconst obj = await fn();\n\t\t\t\t\t\t\t\tchai.util.flag(assertion, \"object\", obj);\n\t\t\t\t\t\t\t\texecutionPhase = \"assertion\";\n\t\t\t\t\t\t\t\treturn await assertionFunction.call(assertion, ...args);\n\t\t\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\t\t\tif (isLastAttempt || executionPhase === \"assertion\" && chai.util.flag(assertion, \"_poll.assert_once\")) throwWithCause(err, STACK_TRACE_ERROR);\n\t\t\t\t\t\t\t\tawait delay(interval, setTimeout);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tclearTimeout(timerId);\n\t\t\t\t\t}\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.util.flag(assertion, \"negate\") ? \"not.\" : \"\";\n\t\t\t\t\t\tconst assertionString = `expect.${chai.util.flag(assertion, \"_poll.element\") ? \"element(locator)\" : \"poll(assertion)\"}.${negated}${String(key)}()`;\n\t\t\t\t\t\tthrow copyStackTrace$1(/* @__PURE__ */ 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`), STACK_TRACE_ERROR);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tlet resultPromise;\n\t\t\t\t// only .then is enough to check awaited, but we type this as `Promise<void>` in global types\n\t\t\t\t// so let's follow it\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 !== void 0) target.stack = source.stack.replace(source.message, target.message);\n\treturn target;\n}\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\treturn `expect(actual)${promiseName ? `.${promiseName}` : \"\"}.${not}${name}`;\n}\nfunction recordAsyncExpect(_test, promise, assertion, error) {\n\tconst test = _test;\n\t// record promise for test, that resolves before test ends\n\tif (test && promise instanceof Promise) {\n\t\t// if promise is explicitly awaited, remove it from the list\n\t\tpromise = promise.finally(() => {\n\t\t\tif (!test.promises) return;\n\t\t\tconst index = test.promises.indexOf(promise);\n\t\t\tif (index !== -1) test.promises.splice(index, 1);\n\t\t});\n\t\t// record promise\n\t\tif (!test.promises) test.promises = [];\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 stack = (globalThis.__vitest_worker__?.onFilterStackTrace || ((s) => s || \"\"))(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) _client = new SnapshotClient({ isEqual: (received, expected) => {\n\t\treturn equals(received, expected, [iterableEquality, subsetEquality]);\n\t} });\n\treturn _client;\n}\nfunction getError(expected, promise) {\n\tif (typeof expected !== \"function\") {\n\t\tif (!promise) throw new Error(`expected must be a function, received ${typeof expected}`);\n\t\t// when \"promised\", it receives thrown error\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) throw new Error(`'${assertionName}' cannot be used without test context`);\n\t\treturn test;\n\t}\n\tfor (const key of [\"matchSnapshot\", \"toMatchSnapshot\"]) utils.addMethod(chai.Assertion.prototype, key, function(properties, message) {\n\t\tutils.flag(this, \"_name\", key);\n\t\tif (utils.flag(this, \"negate\")) throw new Error(`${key} cannot be used with \"not\"`);\n\t\tconst expected = utils.flag(this, \"object\");\n\t\tconst test = getTest(key, this);\n\t\tif (typeof properties === \"string\" && typeof message === \"undefined\") {\n\t\t\tmessage = properties;\n\t\t\tproperties = void 0;\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: false,\n\t\t\tproperties,\n\t\t\terrorMessage,\n\t\t\t...getTestNames(test)\n\t\t});\n\t});\n\tutils.addMethod(chai.Assertion.prototype, \"toMatchFileSnapshot\", function(file, message) {\n\t\tutils.flag(this, \"_name\", \"toMatchFileSnapshot\");\n\t\tif (utils.flag(this, \"negate\")) throw new Error(\"toMatchFileSnapshot cannot be used with \\\"not\\\"\");\n\t\tconst error = /* @__PURE__ */ 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\treturn recordAsyncExpect(test, 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}), 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\tif (utils.flag(this, \"negate\")) throw new Error(\"toMatchInlineSnapshot cannot be used with \\\"not\\\"\");\n\t\tconst test = getTest(\"toMatchInlineSnapshot\", this);\n\t\tif (test.each || test.suite?.each) throw new Error(\"InlineSnapshot cannot be used inside of test.each or describe.each\");\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 = void 0;\n\t\t}\n\t\tif (inlineSnapshot) inlineSnapshot = stripSnapshotIndentation(inlineSnapshot);\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\tif (utils.flag(this, \"negate\")) throw new Error(\"toThrowErrorMatchingSnapshot cannot be used with \\\"not\\\"\");\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\tif (utils.flag(this, \"negate\")) throw new Error(\"toThrowErrorMatchingInlineSnapshot cannot be used with \\\"not\\\"\");\n\t\tconst test = getTest(\"toThrowErrorMatchingInlineSnapshot\", this);\n\t\tif (test.each || test.suite?.each) throw new Error(\"InlineSnapshot cannot be used inside of test.each or describe.each\");\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) inlineSnapshot = stripSnapshotIndentation(inlineSnapshot);\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.use(JestExtend);\nchai.use(JestChaiExpect);\nchai.use(SnapshotPlugin);\nchai.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.expect(value, message);\n\t\tconst _test = test || getCurrentTest();\n\t\tif (_test)\n // @ts-expect-error internal\n\t\treturn assert.withTest(_test);\n\t\telse return assert;\n\t});\n\tObject.assign(expect, chai.expect);\n\tObject.assign(expect, globalThis[ASYMMETRIC_MATCHERS_OBJECT]);\n\texpect.getState = () => getState(expect);\n\texpect.setState = (state) => setState(state, expect);\n\t// @ts-expect-error global is not typed\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\tget testPath() {\n\t\t\treturn getWorkerState().filepath;\n\t\t},\n\t\tcurrentTestName: test ? test.fullTestName ?? \"\" : globalState.currentTestName\n\t}, expect);\n\texpect.assert = chai.assert;\n\t// @ts-expect-error untyped\n\texpect.extend = (matchers) => chai.expect.extend(expect, matchers);\n\texpect.addEqualityTesters = (customTesters) => addCustomEqualityTesters(customTesters);\n\texpect.soft = (...args) => {\n\t\t// @ts-expect-error private soft access\n\t\treturn expect(...args).withContext({ soft: true });\n\t};\n\texpect.poll = createExpectPoll(expect);\n\texpect.unreachable = (message) => {\n\t\tchai.assert.fail(`expected${message ? ` \"${message}\" ` : \" \"}not to be reached`);\n\t};\n\tfunction assertions(expected) {\n\t\tconst errorGen = () => /* @__PURE__ */ new Error(`expected number of assertions to be ${expected}, but got ${expect.getState().assertionCalls}`);\n\t\tif (Error.captureStackTrace) Error.captureStackTrace(errorGen(), assertions);\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 = /* @__PURE__ */ new Error(\"expected any number of assertion, but got none\");\n\t\tif (Error.captureStackTrace) Error.captureStackTrace(error, hasAssertions);\n\t\texpect.setState({\n\t\t\tisExpectingAssertions: true,\n\t\t\tisExpectingAssertionsError: error\n\t\t});\n\t}\n\tchai.util.addMethod(expect, \"assertions\", assertions);\n\tchai.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});\nconst assert = chai.assert;\nconst should = chai.should;\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\treturn getWorkerState().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$1) {\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$1.wrap = function (func, msg) {\n\t\t var wrapped = function () {\n\t\t exports$1.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$1.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$1.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$1) {\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 | _fakingDate |\n\t// +-------------+-------------+\n\t// | false | falsy | initial\n\t// | false | truthy | vi.setSystemTime called first (for mocking only Date without fake timers)\n\t// | true | falsy | vi.useFakeTimers called first\n\t// | true | truthy | unreachable\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) this._clock.reset();\n\t}\n\tdispose() {\n\t\tthis.useRealTimers();\n\t}\n\trunAllTimers() {\n\t\tif (this._checkFakeTimers()) this._clock.runAll();\n\t}\n\tasync runAllTimersAsync() {\n\t\tif (this._checkFakeTimers()) await this._clock.runAllAsync();\n\t}\n\trunOnlyPendingTimers() {\n\t\tif (this._checkFakeTimers()) this._clock.runToLast();\n\t}\n\tasync runOnlyPendingTimersAsync() {\n\t\tif (this._checkFakeTimers()) await this._clock.runToLastAsync();\n\t}\n\tadvanceTimersToNextTimer(steps = 1) {\n\t\tif (this._checkFakeTimers()) for (let i = steps; i > 0; i--) {\n\t\t\tthis._clock.next();\n\t\t\t// Fire all timers at this point: https://github.com/sinonjs/fake-timers/issues/250\n\t\t\tthis._clock.tick(0);\n\t\t\tif (this._clock.countTimers() === 0) break;\n\t\t}\n\t}\n\tasync advanceTimersToNextTimerAsync(steps = 1) {\n\t\tif (this._checkFakeTimers()) for (let i = steps; i > 0; i--) {\n\t\t\tawait this._clock.nextAsync();\n\t\t\t// Fire all timers at this point: https://github.com/sinonjs/fake-timers/issues/250\n\t\t\tthis._clock.tick(0);\n\t\t\tif (this._clock.countTimers() === 0) break;\n\t\t}\n\t}\n\tadvanceTimersByTime(msToRun) {\n\t\tif (this._checkFakeTimers()) this._clock.tick(msToRun);\n\t}\n\tasync advanceTimersByTimeAsync(msToRun) {\n\t\tif (this._checkFakeTimers()) await this._clock.tickAsync(msToRun);\n\t}\n\tadvanceTimersToNextFrame() {\n\t\tif (this._checkFakeTimers()) this._clock.runToFrame();\n\t}\n\trunAllTicks() {\n\t\tif (this._checkFakeTimers())\n // @ts-expect-error method not exposed\n\t\tthis._clock.runMicrotasks();\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\tconst fakeDate = this._fakingDate || Date.now();\n\t\tif (this._fakingDate) {\n\t\t\tresetDate();\n\t\t\tthis._fakingDate = null;\n\t\t}\n\t\tif (this._fakingTime) this._clock.uninstall();\n\t\tconst toFake = Object.keys(this._fakeTimers.timers).filter((timer) => timer !== \"nextTick\" && timer !== \"queueMicrotask\");\n\t\tif (this._userConfig?.toFake?.includes(\"nextTick\") && isChildProcess()) throw new Error(\"process.nextTick cannot be mocked inside child_process\");\n\t\tthis._clock = this._fakeTimers.install({\n\t\t\tnow: fakeDate,\n\t\t\t...this._userConfig,\n\t\t\ttoFake: this._userConfig?.toFake || toFake,\n\t\t\tignoreMissingTimers: true\n\t\t});\n\t\tthis._fakingTime = true;\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) this._clock.setSystemTime(date);\n\t\telse {\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()) return this._clock.countTimers();\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) throw new Error(\"A function to advance timers was called but the timers APIs are not mocked. Call `vi.useFakeTimers()` in the test file first.\");\n\t\treturn this._fakingTime;\n\t}\n}\n\nfunction copyStackTrace(target, source) {\n\tif (source.stack !== void 0) target.stack = source.stack.replace(source.message, target.message);\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 = /* @__PURE__ */ 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) clearTimeout(timeoutId);\n\t\t\tif (intervalId) clearInterval(intervalId);\n\t\t\tresolve(result);\n\t\t};\n\t\tconst handleTimeout = () => {\n\t\t\tif (intervalId) clearInterval(intervalId);\n\t\t\tlet error = lastError;\n\t\t\tif (!error) error = copyStackTrace(/* @__PURE__ */ new Error(\"Timed out in waitFor!\"), STACK_TRACE_ERROR);\n\t\t\treject(error);\n\t\t};\n\t\tconst checkCallback = () => {\n\t\t\tif (vi.isFakeTimers()) vi.advanceTimersByTime(interval);\n\t\t\tif (promiseStatus === \"pending\") return;\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) return;\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 = /* @__PURE__ */ 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) clearInterval(intervalId);\n\t\t\tif (!error) error = copyStackTrace(/* @__PURE__ */ new Error(\"Timed out in waitUntil!\"), STACK_TRACE_ERROR);\n\t\t\treject(error);\n\t\t};\n\t\tconst onResolve = (result) => {\n\t\t\tif (!result) return;\n\t\t\tif (timeoutId) clearTimeout(timeoutId);\n\t\t\tif (intervalId) clearInterval(intervalId);\n\t\t\tresolve(result);\n\t\t\treturn true;\n\t\t};\n\t\tconst checkCallback = () => {\n\t\t\tif (vi.isFakeTimers()) vi.advanceTimersByTime(interval);\n\t\t\tif (promiseStatus === \"pending\") return;\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 return onResolve(result);\n\t\t\t} catch (error) {\n\t\t\t\tonReject(error);\n\t\t\t}\n\t\t};\n\t\tif (checkCallback() === true) return;\n\t\ttimeoutId = setTimeout(onReject, timeout);\n\t\tintervalId = setInterval(checkCallback, interval);\n\t});\n}\n\nfunction createVitest() {\n\tlet _config = null;\n\tconst state = () => getWorkerState();\n\tlet _timers;\n\tconst timers = () => _timers ||= new FakeTimers({\n\t\tglobal: globalThis,\n\t\tconfig: state().config.fakeTimers\n\t});\n\tconst _stubsGlobal = /* @__PURE__ */ new Map();\n\tconst _stubsEnv = /* @__PURE__ */ 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\") || state().config?.fakeTimers?.toFake?.includes(\"nextTick\")) throw 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}\n\t\t\tif (config) timers().configure({\n\t\t\t\t...state().config.fakeTimers,\n\t\t\t\t...config\n\t\t\t});\n\t\t\telse timers().configure(state().config.fakeTimers);\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\") throw new TypeError(`vi.mock() expects a string path, but received a ${typeof path}`);\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\") throw new TypeError(`vi.unmock() expects a string path, but received a ${typeof path}`);\n\t\t\t_mocker().queueUnmock(path, getImporter(\"unmock\"));\n\t\t},\n\t\tdoMock(path, factory) {\n\t\t\tif (typeof path !== \"string\") throw new TypeError(`vi.doMock() expects a string path, but received a ${typeof path}`);\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\") throw new TypeError(`vi.doUnmock() expects a string path, but received a ${typeof path}`);\n\t\t\tconst importer = getImporter(\"doUnmock\");\n\t\t\t_mocker().queueUnmock(path, importer);\n\t\t},\n\t\tasync importActual(path) {\n\t\t\tconst importer = getImporter(\"importActual\");\n\t\t\treturn _mocker().importActual(path, importer, _mocker().getMockContext().callstack);\n\t\t},\n\t\tasync importMock(path) {\n\t\t\tconst importer = getImporter(\"importMock\");\n\t\t\treturn _mocker().importMock(path, importer);\n\t\t},\n\t\tmockObject(value, options) {\n\t\t\treturn _mocker().mockObject({ value }, void 0, options?.spy ? \"autospy\" : \"automock\").value;\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\tclearAllMocks();\n\t\t\treturn utils;\n\t\t},\n\t\tresetAllMocks() {\n\t\t\tresetAllMocks();\n\t\t\treturn utils;\n\t\t},\n\t\trestoreAllMocks() {\n\t\t\trestoreAllMocks();\n\t\t\treturn utils;\n\t\t},\n\t\tstubGlobal(name, value) {\n\t\t\tif (!_stubsGlobal.has(name)) _stubsGlobal.set(name, Object.getOwnPropertyDescriptor(globalThis, name));\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\tconst env = state().metaEnv;\n\t\t\tif (!_stubsEnv.has(name)) _stubsEnv.set(name, env[name]);\n\t\t\tif (_envBooleans.includes(name)) env[name] = value ? \"1\" : \"\";\n\t\t\telse if (value === void 0) delete env[name];\n\t\t\telse env[name] = String(value);\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) Reflect.deleteProperty(globalThis, name);\n\t\t\t\telse Object.defineProperty(globalThis, name, original);\n\t\t\t});\n\t\t\t_stubsGlobal.clear();\n\t\t\treturn utils;\n\t\t},\n\t\tunstubAllEnvs() {\n\t\t\tconst env = state().metaEnv;\n\t\t\t_stubsEnv.forEach((original, name) => {\n\t\t\t\tif (original === void 0) delete env[name];\n\t\t\t\telse env[name] = original;\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(state().evaluatedModules);\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) _config = { ...state().config };\n\t\t\tObject.assign(state().config, config);\n\t\t},\n\t\tresetConfig() {\n\t\t\tif (_config) Object.assign(state().config, _config);\n\t\t}\n\t};\n\treturn utils;\n}\nconst vitest = createVitest();\nconst vi = vitest;\nfunction _mocker() {\n\t// @ts-expect-error injected by vite-nide\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 stackArray = createSimpleStackTrace({ stackTraceLimit: 5 }).split(\"\\n\");\n\treturn parseSingleStack(stackArray[stackArray.findLastIndex((stack) => {\n\t\treturn stack.includes(` at Object.${name}`) || stack.includes(`${name}@`) || stack.includes(` at ${name} (`);\n\t}) + 1])?.file || \"\";\n}\n\nexport { getSnapshotClient as a, assert as b, createExpect as c, vitest as d, globalExpect as g, inject as i, should as s, vi as v };\n","let SOURCEMAPPING_URL = \"sourceMa\";\nSOURCEMAPPING_URL += \"ppingURL\";\nconst isWindows = typeof process < \"u\" && process.platform === \"win32\";\nfunction unwrapId(id) {\n\treturn id.startsWith(\"/@id/\") ? id.slice(5).replace(\"__x00__\", \"\\0\") : id;\n}\nconst windowsSlashRE = /\\\\/g;\nfunction slash(p) {\n\treturn p.replace(windowsSlashRE, \"/\");\n}\nconst postfixRE = /[?#].*$/;\nfunction cleanUrl(url) {\n\treturn url.replace(postfixRE, \"\");\n}\nfunction isPrimitive(value) {\n\treturn !value || typeof value != \"object\" && typeof value != \"function\";\n}\nconst AsyncFunction = async function() {}.constructor;\nlet asyncFunctionDeclarationPaddingLineCount;\nfunction getAsyncFunctionDeclarationPaddingLineCount() {\n\tif (asyncFunctionDeclarationPaddingLineCount === void 0) {\n\t\tlet body = \"/*code*/\", source = new AsyncFunction(\"a\", \"b\", body).toString();\n\t\tasyncFunctionDeclarationPaddingLineCount = source.slice(0, source.indexOf(body)).split(\"\\n\").length - 1;\n\t}\n\treturn asyncFunctionDeclarationPaddingLineCount;\n}\nfunction promiseWithResolvers() {\n\tlet resolve$1, reject;\n\treturn {\n\t\tpromise: new Promise((_resolve, _reject) => {\n\t\t\tresolve$1 = _resolve, reject = _reject;\n\t\t}),\n\t\tresolve: resolve$1,\n\t\treject\n\t};\n}\nconst _DRIVE_LETTER_START_RE = /^[A-Za-z]:\\//;\nfunction normalizeWindowsPath(input = \"\") {\n\treturn input && input.replace(/\\\\/g, \"/\").replace(_DRIVE_LETTER_START_RE, (r) => r.toUpperCase());\n}\nconst _IS_ABSOLUTE_RE = /^[/\\\\](?![/\\\\])|^[/\\\\]{2}(?!\\.)|^[A-Za-z]:[/\\\\]/, _DRIVE_LETTER_RE = /^[A-Za-z]:$/;\nfunction cwd() {\n\treturn typeof process < \"u\" && typeof process.cwd == \"function\" ? process.cwd().replace(/\\\\/g, \"/\") : \"/\";\n}\nconst resolve = function(...arguments_) {\n\targuments_ = arguments_.map((argument) => normalizeWindowsPath(argument));\n\tlet resolvedPath = \"\", resolvedAbsolute = !1;\n\tfor (let index = arguments_.length - 1; index >= -1 && !resolvedAbsolute; index--) {\n\t\tlet path = index >= 0 ? arguments_[index] : cwd();\n\t\t!path || path.length === 0 || (resolvedPath = `${path}/${resolvedPath}`, resolvedAbsolute = isAbsolute(path));\n\t}\n\treturn resolvedPath = normalizeString(resolvedPath, !resolvedAbsolute), resolvedAbsolute && !isAbsolute(resolvedPath) ? `/${resolvedPath}` : resolvedPath.length > 0 ? resolvedPath : \".\";\n};\nfunction normalizeString(path, allowAboveRoot) {\n\tlet res = \"\", lastSegmentLength = 0, lastSlash = -1, dots = 0, char = null;\n\tfor (let index = 0; index <= path.length; ++index) {\n\t\tif (index < path.length) char = path[index];\n\t\telse if (char === \"/\") break;\n\t\telse char = \"/\";\n\t\tif (char === \"/\") {\n\t\t\tif (!(lastSlash === index - 1 || dots === 1)) if (dots === 2) {\n\t\t\t\tif (res.length < 2 || lastSegmentLength !== 2 || res[res.length - 1] !== \".\" || res[res.length - 2] !== \".\") {\n\t\t\t\t\tif (res.length > 2) {\n\t\t\t\t\t\tlet lastSlashIndex = res.lastIndexOf(\"/\");\n\t\t\t\t\t\tlastSlashIndex === -1 ? (res = \"\", lastSegmentLength = 0) : (res = res.slice(0, lastSlashIndex), lastSegmentLength = res.length - 1 - res.lastIndexOf(\"/\")), lastSlash = index, dots = 0;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t} else if (res.length > 0) {\n\t\t\t\t\t\tres = \"\", lastSegmentLength = 0, lastSlash = index, dots = 0;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tallowAboveRoot && (res += res.length > 0 ? \"/..\" : \"..\", lastSegmentLength = 2);\n\t\t\t} else res.length > 0 ? res += `/${path.slice(lastSlash + 1, index)}` : res = path.slice(lastSlash + 1, index), lastSegmentLength = index - lastSlash - 1;\n\t\t\tlastSlash = index, dots = 0;\n\t\t} else char === \".\" && dots !== -1 ? ++dots : dots = -1;\n\t}\n\treturn res;\n}\nconst isAbsolute = function(p) {\n\treturn _IS_ABSOLUTE_RE.test(p);\n}, dirname = function(p) {\n\tlet segments = normalizeWindowsPath(p).replace(/\\/$/, \"\").split(\"/\").slice(0, -1);\n\treturn segments.length === 1 && _DRIVE_LETTER_RE.test(segments[0]) && (segments[0] += \"/\"), segments.join(\"/\") || (isAbsolute(p) ? \"/\" : \".\");\n}, decodeBase64 = typeof atob < \"u\" ? atob : (str) => Buffer.from(str, \"base64\").toString(\"utf-8\"), percentRegEx = /%/g, backslashRegEx = /\\\\/g, newlineRegEx = /\\n/g, carriageReturnRegEx = /\\r/g, tabRegEx = /\\t/g, questionRegex = /\\?/g, hashRegex = /#/g;\nfunction encodePathChars(filepath) {\n\treturn filepath.indexOf(\"%\") !== -1 && (filepath = filepath.replace(percentRegEx, \"%25\")), !isWindows && filepath.indexOf(\"\\\\\") !== -1 && (filepath = filepath.replace(backslashRegEx, \"%5C\")), filepath.indexOf(\"\\n\") !== -1 && (filepath = filepath.replace(newlineRegEx, \"%0A\")), filepath.indexOf(\"\\r\") !== -1 && (filepath = filepath.replace(carriageReturnRegEx, \"%0D\")), filepath.indexOf(\"\t\") !== -1 && (filepath = filepath.replace(tabRegEx, \"%09\")), filepath;\n}\nconst posixDirname = dirname, posixResolve = resolve;\nfunction posixPathToFileHref(posixPath) {\n\tlet resolved = posixResolve(posixPath), filePathLast = posixPath.charCodeAt(posixPath.length - 1);\n\treturn (filePathLast === 47 || isWindows && filePathLast === 92) && resolved[resolved.length - 1] !== \"/\" && (resolved += \"/\"), resolved = encodePathChars(resolved), resolved.indexOf(\"?\") !== -1 && (resolved = resolved.replace(questionRegex, \"%3F\")), resolved.indexOf(\"#\") !== -1 && (resolved = resolved.replace(hashRegex, \"%23\")), new URL(`file://${resolved}`).href;\n}\nfunction toWindowsPath(path) {\n\treturn path.replace(/\\//g, \"\\\\\");\n}\nvar comma = 44, chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\", intToChar = new Uint8Array(64), charToInt = new Uint8Array(128);\nfor (let i = 0; i < chars.length; i++) {\n\tlet c = chars.charCodeAt(i);\n\tintToChar[i] = c, charToInt[c] = i;\n}\nfunction decodeInteger(reader, relative) {\n\tlet value = 0, shift = 0, integer = 0;\n\tdo\n\t\tinteger = charToInt[reader.next()], value |= (integer & 31) << shift, shift += 5;\n\twhile (integer & 32);\n\tlet shouldNegate = value & 1;\n\treturn value >>>= 1, shouldNegate && (value = -2147483648 | -value), relative + value;\n}\nfunction hasMoreVlq(reader, max) {\n\treturn reader.pos >= max ? !1 : reader.peek() !== comma;\n}\nvar StringReader = class {\n\tconstructor(buffer) {\n\t\tthis.pos = 0, this.buffer = buffer;\n\t}\n\tnext() {\n\t\treturn this.buffer.charCodeAt(this.pos++);\n\t}\n\tpeek() {\n\t\treturn this.buffer.charCodeAt(this.pos);\n\t}\n\tindexOf(char) {\n\t\tlet { buffer, pos } = this, idx = buffer.indexOf(char, pos);\n\t\treturn idx === -1 ? buffer.length : idx;\n\t}\n};\nfunction decode(mappings) {\n\tlet { length } = mappings, reader = new StringReader(mappings), decoded = [], genColumn = 0, sourcesIndex = 0, sourceLine = 0, sourceColumn = 0, namesIndex = 0;\n\tdo {\n\t\tlet semi = reader.indexOf(\";\"), line = [], sorted = !0, lastCol = 0;\n\t\tfor (genColumn = 0; reader.pos < semi;) {\n\t\t\tlet seg;\n\t\t\tgenColumn = decodeInteger(reader, genColumn), genColumn < lastCol && (sorted = !1), lastCol = genColumn, hasMoreVlq(reader, semi) ? (sourcesIndex = decodeInteger(reader, sourcesIndex), sourceLine = decodeInteger(reader, sourceLine), sourceColumn = decodeInteger(reader, sourceColumn), hasMoreVlq(reader, semi) ? (namesIndex = decodeInteger(reader, namesIndex), seg = [\n\t\t\t\tgenColumn,\n\t\t\t\tsourcesIndex,\n\t\t\t\tsourceLine,\n\t\t\t\tsourceColumn,\n\t\t\t\tnamesIndex\n\t\t\t]) : seg = [\n\t\t\t\tgenColumn,\n\t\t\t\tsourcesIndex,\n\t\t\t\tsourceLine,\n\t\t\t\tsourceColumn\n\t\t\t]) : seg = [genColumn], line.push(seg), reader.pos++;\n\t\t}\n\t\tsorted || sort(line), decoded.push(line), reader.pos = semi + 1;\n\t} while (reader.pos <= length);\n\treturn decoded;\n}\nfunction sort(line) {\n\tline.sort(sortComparator);\n}\nfunction sortComparator(a, b) {\n\treturn a[0] - b[0];\n}\nvar COLUMN = 0, SOURCES_INDEX = 1, SOURCE_LINE = 2, SOURCE_COLUMN = 3, NAMES_INDEX = 4, found = !1;\nfunction binarySearch(haystack, needle, low, high) {\n\tfor (; low <= high;) {\n\t\tlet mid = low + (high - low >> 1), cmp = haystack[mid][COLUMN] - needle;\n\t\tif (cmp === 0) return found = !0, mid;\n\t\tcmp < 0 ? low = mid + 1 : high = mid - 1;\n\t}\n\treturn found = !1, low - 1;\n}\nfunction upperBound(haystack, needle, index) {\n\tfor (let i = index + 1; i < haystack.length && haystack[i][COLUMN] === needle; index = i++);\n\treturn index;\n}\nfunction lowerBound(haystack, needle, index) {\n\tfor (let i = index - 1; i >= 0 && haystack[i][COLUMN] === needle; index = i--);\n\treturn index;\n}\nfunction memoizedBinarySearch(haystack, needle, state, key) {\n\tlet { lastKey, lastNeedle, lastIndex } = state, low = 0, high = haystack.length - 1;\n\tif (key === lastKey) {\n\t\tif (needle === lastNeedle) return found = lastIndex !== -1 && haystack[lastIndex][COLUMN] === needle, lastIndex;\n\t\tneedle >= lastNeedle ? low = lastIndex === -1 ? 0 : lastIndex : high = lastIndex;\n\t}\n\treturn state.lastKey = key, state.lastNeedle = needle, state.lastIndex = binarySearch(haystack, needle, low, high);\n}\nvar LINE_GTR_ZERO = \"`line` must be greater than 0 (lines start at line 1)\", COL_GTR_EQ_ZERO = \"`column` must be greater than or equal to 0 (columns start at column 0)\", LEAST_UPPER_BOUND = -1, GREATEST_LOWER_BOUND = 1;\nfunction cast(map) {\n\treturn map;\n}\nfunction decodedMappings(map) {\n\tvar _a;\n\treturn (_a = cast(map))._decoded || (_a._decoded = decode(cast(map)._encoded));\n}\nfunction originalPositionFor(map, needle) {\n\tlet { line, column, bias } = needle;\n\tif (line--, line < 0) throw Error(LINE_GTR_ZERO);\n\tif (column < 0) throw Error(COL_GTR_EQ_ZERO);\n\tlet decoded = decodedMappings(map);\n\tif (line >= decoded.length) return OMapping(null, null, null, null);\n\tlet segments = decoded[line], index = traceSegmentInternal(segments, cast(map)._decodedMemo, line, column, bias || GREATEST_LOWER_BOUND);\n\tif (index === -1) return OMapping(null, null, null, null);\n\tlet segment = segments[index];\n\tif (segment.length === 1) return OMapping(null, null, null, null);\n\tlet { names, resolvedSources } = map;\n\treturn OMapping(resolvedSources[segment[SOURCES_INDEX]], segment[SOURCE_LINE] + 1, segment[SOURCE_COLUMN], segment.length === 5 ? names[segment[NAMES_INDEX]] : null);\n}\nfunction OMapping(source, line, column, name) {\n\treturn {\n\t\tsource,\n\t\tline,\n\t\tcolumn,\n\t\tname\n\t};\n}\nfunction traceSegmentInternal(segments, memo, line, column, bias) {\n\tlet index = memoizedBinarySearch(segments, column, memo, line);\n\treturn found ? index = (bias === LEAST_UPPER_BOUND ? upperBound : lowerBound)(segments, column, index) : bias === LEAST_UPPER_BOUND && index++, index === -1 || index === segments.length ? -1 : index;\n}\nvar DecodedMap = class {\n\t_encoded;\n\t_decoded;\n\t_decodedMemo;\n\turl;\n\tfile;\n\tversion;\n\tnames = [];\n\tresolvedSources;\n\tconstructor(map, from) {\n\t\tthis.map = map;\n\t\tlet { mappings, names, sources } = map;\n\t\tthis.version = map.version, this.names = names || [], this._encoded = mappings || \"\", this._decodedMemo = memoizedState(), this.url = from, this.file = from;\n\t\tlet originDir = posixDirname(from);\n\t\tthis.resolvedSources = (sources || []).map((s) => posixResolve(originDir, s || \"\"));\n\t}\n};\nfunction memoizedState() {\n\treturn {\n\t\tlastKey: -1,\n\t\tlastNeedle: -1,\n\t\tlastIndex: -1\n\t};\n}\nfunction getOriginalPosition(map, needle) {\n\tlet result = originalPositionFor(map, needle);\n\treturn result.column == null ? null : result;\n}\nconst MODULE_RUNNER_SOURCEMAPPING_REGEXP = /* @__PURE__ */ RegExp(`//# ${SOURCEMAPPING_URL}=data:application/json;base64,(.+)`);\nvar EvaluatedModuleNode = class {\n\timporters = /* @__PURE__ */ new Set();\n\timports = /* @__PURE__ */ new Set();\n\tevaluated = !1;\n\tmeta;\n\tpromise;\n\texports;\n\tfile;\n\tmap;\n\tconstructor(id, url) {\n\t\tthis.id = id, this.url = url, this.file = cleanUrl(id);\n\t}\n}, EvaluatedModules = class {\n\tidToModuleMap = /* @__PURE__ */ new Map();\n\tfileToModulesMap = /* @__PURE__ */ new Map();\n\turlToIdModuleMap = /* @__PURE__ */ new Map();\n\tgetModuleById(id) {\n\t\treturn this.idToModuleMap.get(id);\n\t}\n\tgetModulesByFile(file) {\n\t\treturn this.fileToModulesMap.get(file);\n\t}\n\tgetModuleByUrl(url) {\n\t\treturn this.urlToIdModuleMap.get(unwrapId(url));\n\t}\n\tensureModule(id, url) {\n\t\tif (id = normalizeModuleId(id), this.idToModuleMap.has(id)) {\n\t\t\tlet moduleNode$1 = this.idToModuleMap.get(id);\n\t\t\treturn this.urlToIdModuleMap.set(url, moduleNode$1), moduleNode$1;\n\t\t}\n\t\tlet moduleNode = new EvaluatedModuleNode(id, url);\n\t\tthis.idToModuleMap.set(id, moduleNode), this.urlToIdModuleMap.set(url, moduleNode);\n\t\tlet fileModules = this.fileToModulesMap.get(moduleNode.file) || /* @__PURE__ */ new Set();\n\t\treturn fileModules.add(moduleNode), this.fileToModulesMap.set(moduleNode.file, fileModules), moduleNode;\n\t}\n\tinvalidateModule(node) {\n\t\tnode.evaluated = !1, node.meta = void 0, node.map = void 0, node.promise = void 0, node.exports = void 0, node.imports.clear();\n\t}\n\tgetModuleSourceMapById(id) {\n\t\tlet mod = this.getModuleById(id);\n\t\tif (!mod) return null;\n\t\tif (mod.map) return mod.map;\n\t\tif (!mod.meta || !(\"code\" in mod.meta)) return null;\n\t\tlet pattern = `//# ${SOURCEMAPPING_URL}=data:application/json;base64,`, lastIndex = mod.meta.code.lastIndexOf(pattern);\n\t\tif (lastIndex === -1) return null;\n\t\tlet mapString = MODULE_RUNNER_SOURCEMAPPING_REGEXP.exec(mod.meta.code.slice(lastIndex))?.[1];\n\t\treturn mapString ? (mod.map = new DecodedMap(JSON.parse(decodeBase64(mapString)), mod.file), mod.map) : null;\n\t}\n\tclear() {\n\t\tthis.idToModuleMap.clear(), this.fileToModulesMap.clear(), this.urlToIdModuleMap.clear();\n\t}\n};\nconst prefixedBuiltins = new Set([\n\t\"node:sea\",\n\t\"node:sqlite\",\n\t\"node:test\",\n\t\"node:test/reporters\"\n]);\nfunction normalizeModuleId(file) {\n\treturn prefixedBuiltins.has(file) ? file : slash(file).replace(/^\\/@fs\\//, isWindows ? \"\" : \"/\").replace(/^node:/, \"\").replace(/^\\/+/, \"/\").replace(/^file:\\/+/, isWindows ? \"\" : \"/\");\n}\nvar HMRContext = class {\n\tnewListeners;\n\tconstructor(hmrClient, ownerPath) {\n\t\tthis.hmrClient = hmrClient, this.ownerPath = ownerPath, hmrClient.dataMap.has(ownerPath) || hmrClient.dataMap.set(ownerPath, {});\n\t\tlet mod = hmrClient.hotModulesMap.get(ownerPath);\n\t\tmod && (mod.callbacks = []);\n\t\tlet staleListeners = hmrClient.ctxToListenersMap.get(ownerPath);\n\t\tif (staleListeners) for (let [event, staleFns] of staleListeners) {\n\t\t\tlet listeners = hmrClient.customListenersMap.get(event);\n\t\t\tlisteners && hmrClient.customListenersMap.set(event, listeners.filter((l) => !staleFns.includes(l)));\n\t\t}\n\t\tthis.newListeners = /* @__PURE__ */ new Map(), hmrClient.ctxToListenersMap.set(ownerPath, this.newListeners);\n\t}\n\tget data() {\n\t\treturn this.hmrClient.dataMap.get(this.ownerPath);\n\t}\n\taccept(deps, callback) {\n\t\tif (typeof deps == \"function\" || !deps) this.acceptDeps([this.ownerPath], ([mod]) => deps?.(mod));\n\t\telse if (typeof deps == \"string\") this.acceptDeps([deps], ([mod]) => callback?.(mod));\n\t\telse if (Array.isArray(deps)) this.acceptDeps(deps, callback);\n\t\telse throw Error(\"invalid hot.accept() usage.\");\n\t}\n\tacceptExports(_, callback) {\n\t\tthis.acceptDeps([this.ownerPath], ([mod]) => callback?.(mod));\n\t}\n\tdispose(cb) {\n\t\tthis.hmrClient.disposeMap.set(this.ownerPath, cb);\n\t}\n\tprune(cb) {\n\t\tthis.hmrClient.pruneMap.set(this.ownerPath, cb);\n\t}\n\tdecline() {}\n\tinvalidate(message) {\n\t\tlet firstInvalidatedBy = this.hmrClient.currentFirstInvalidatedBy ?? this.ownerPath;\n\t\tthis.hmrClient.notifyListeners(\"vite:invalidate\", {\n\t\t\tpath: this.ownerPath,\n\t\t\tmessage,\n\t\t\tfirstInvalidatedBy\n\t\t}), this.send(\"vite:invalidate\", {\n\t\t\tpath: this.ownerPath,\n\t\t\tmessage,\n\t\t\tfirstInvalidatedBy\n\t\t}), this.hmrClient.logger.debug(`invalidate ${this.ownerPath}${message ? `: ${message}` : \"\"}`);\n\t}\n\ton(event, cb) {\n\t\tlet addToMap = (map) => {\n\t\t\tlet existing = map.get(event) || [];\n\t\t\texisting.push(cb), map.set(event, existing);\n\t\t};\n\t\taddToMap(this.hmrClient.customListenersMap), addToMap(this.newListeners);\n\t}\n\toff(event, cb) {\n\t\tlet removeFromMap = (map) => {\n\t\t\tlet existing = map.get(event);\n\t\t\tif (existing === void 0) return;\n\t\t\tlet pruned = existing.filter((l) => l !== cb);\n\t\t\tif (pruned.length === 0) {\n\t\t\t\tmap.delete(event);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tmap.set(event, pruned);\n\t\t};\n\t\tremoveFromMap(this.hmrClient.customListenersMap), removeFromMap(this.newListeners);\n\t}\n\tsend(event, data) {\n\t\tthis.hmrClient.send({\n\t\t\ttype: \"custom\",\n\t\t\tevent,\n\t\t\tdata\n\t\t});\n\t}\n\tacceptDeps(deps, callback = () => {}) {\n\t\tlet mod = this.hmrClient.hotModulesMap.get(this.ownerPath) || {\n\t\t\tid: this.ownerPath,\n\t\t\tcallbacks: []\n\t\t};\n\t\tmod.callbacks.push({\n\t\t\tdeps,\n\t\t\tfn: callback\n\t\t}), this.hmrClient.hotModulesMap.set(this.ownerPath, mod);\n\t}\n}, HMRClient = class {\n\thotModulesMap = /* @__PURE__ */ new Map();\n\tdisposeMap = /* @__PURE__ */ new Map();\n\tpruneMap = /* @__PURE__ */ new Map();\n\tdataMap = /* @__PURE__ */ new Map();\n\tcustomListenersMap = /* @__PURE__ */ new Map();\n\tctxToListenersMap = /* @__PURE__ */ new Map();\n\tcurrentFirstInvalidatedBy;\n\tconstructor(logger, transport, importUpdatedModule) {\n\t\tthis.logger = logger, this.transport = transport, this.importUpdatedModule = importUpdatedModule;\n\t}\n\tasync notifyListeners(event, data) {\n\t\tlet cbs = this.customListenersMap.get(event);\n\t\tcbs && await Promise.allSettled(cbs.map((cb) => cb(data)));\n\t}\n\tsend(payload) {\n\t\tthis.transport.send(payload).catch((err) => {\n\t\t\tthis.logger.error(err);\n\t\t});\n\t}\n\tclear() {\n\t\tthis.hotModulesMap.clear(), this.disposeMap.clear(), this.pruneMap.clear(), this.dataMap.clear(), this.customListenersMap.clear(), this.ctxToListenersMap.clear();\n\t}\n\tasync prunePaths(paths) {\n\t\tawait Promise.all(paths.map((path) => {\n\t\t\tlet disposer = this.disposeMap.get(path);\n\t\t\tif (disposer) return disposer(this.dataMap.get(path));\n\t\t})), await Promise.all(paths.map((path) => {\n\t\t\tlet fn = this.pruneMap.get(path);\n\t\t\tif (fn) return fn(this.dataMap.get(path));\n\t\t}));\n\t}\n\twarnFailedUpdate(err, path) {\n\t\t(!(err instanceof Error) || !err.message.includes(\"fetch\")) && this.logger.error(err), this.logger.error(`Failed to reload ${path}. This could be due to syntax errors or importing non-existent modules. (see errors above)`);\n\t}\n\tupdateQueue = [];\n\tpendingUpdateQueue = !1;\n\tasync queueUpdate(payload) {\n\t\tif (this.updateQueue.push(this.fetchUpdate(payload)), !this.pendingUpdateQueue) {\n\t\t\tthis.pendingUpdateQueue = !0, await Promise.resolve(), this.pendingUpdateQueue = !1;\n\t\t\tlet loading = [...this.updateQueue];\n\t\t\tthis.updateQueue = [], (await Promise.all(loading)).forEach((fn) => fn && fn());\n\t\t}\n\t}\n\tasync fetchUpdate(update) {\n\t\tlet { path, acceptedPath, firstInvalidatedBy } = update, mod = this.hotModulesMap.get(path);\n\t\tif (!mod) return;\n\t\tlet fetchedModule, isSelfUpdate = path === acceptedPath, qualifiedCallbacks = mod.callbacks.filter(({ deps }) => deps.includes(acceptedPath));\n\t\tif (isSelfUpdate || qualifiedCallbacks.length > 0) {\n\t\t\tlet disposer = this.disposeMap.get(acceptedPath);\n\t\t\tdisposer && await disposer(this.dataMap.get(acceptedPath));\n\t\t\ttry {\n\t\t\t\tfetchedModule = await this.importUpdatedModule(update);\n\t\t\t} catch (e) {\n\t\t\t\tthis.warnFailedUpdate(e, acceptedPath);\n\t\t\t}\n\t\t}\n\t\treturn () => {\n\t\t\ttry {\n\t\t\t\tthis.currentFirstInvalidatedBy = firstInvalidatedBy;\n\t\t\t\tfor (let { deps, fn } of qualifiedCallbacks) fn(deps.map((dep) => dep === acceptedPath ? fetchedModule : void 0));\n\t\t\t\tlet loggedPath = isSelfUpdate ? path : `${acceptedPath} via ${path}`;\n\t\t\t\tthis.logger.debug(`hot updated: ${loggedPath}`);\n\t\t\t} finally {\n\t\t\t\tthis.currentFirstInvalidatedBy = void 0;\n\t\t\t}\n\t\t};\n\t}\n};\nfunction analyzeImportedModDifference(mod, rawId, moduleType, metadata) {\n\tif (!metadata?.isDynamicImport && metadata?.importedNames?.length) {\n\t\tlet missingBindings = metadata.importedNames.filter((s) => !(s in mod));\n\t\tif (missingBindings.length) {\n\t\t\tlet lastBinding = missingBindings[missingBindings.length - 1];\n\t\t\tthrow moduleType === \"module\" ? SyntaxError(`[vite] The requested module '${rawId}' does not provide an export named '${lastBinding}'`) : SyntaxError(`\\\n[vite] Named export '${lastBinding}' not found. The requested module '${rawId}' is a CommonJS module, which may not support all module.exports as named exports.\nCommonJS modules can always be imported via the default export, for example using:\n\nimport pkg from '${rawId}';\nconst {${missingBindings.join(\", \")}} = pkg;\n`);\n\t\t}\n\t}\n}\nlet nanoid = (size = 21) => {\n\tlet id = \"\", i = size | 0;\n\tfor (; i--;) id += \"useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict\"[Math.random() * 64 | 0];\n\treturn id;\n};\nfunction reviveInvokeError(e) {\n\tlet error = Error(e.message || \"Unknown invoke error\");\n\treturn Object.assign(error, e, { runnerError: /* @__PURE__ */ Error(\"RunnerError\") }), error;\n}\nconst createInvokeableTransport = (transport) => {\n\tif (transport.invoke) return {\n\t\t...transport,\n\t\tasync invoke(name, data) {\n\t\t\tlet result = await transport.invoke({\n\t\t\t\ttype: \"custom\",\n\t\t\t\tevent: \"vite:invoke\",\n\t\t\t\tdata: {\n\t\t\t\t\tid: \"send\",\n\t\t\t\t\tname,\n\t\t\t\t\tdata\n\t\t\t\t}\n\t\t\t});\n\t\t\tif (\"error\" in result) throw reviveInvokeError(result.error);\n\t\t\treturn result.result;\n\t\t}\n\t};\n\tif (!transport.send || !transport.connect) throw Error(\"transport must implement send and connect when invoke is not implemented\");\n\tlet rpcPromises = /* @__PURE__ */ new Map();\n\treturn {\n\t\t...transport,\n\t\tconnect({ onMessage, onDisconnection }) {\n\t\t\treturn transport.connect({\n\t\t\t\tonMessage(payload) {\n\t\t\t\t\tif (payload.type === \"custom\" && payload.event === \"vite:invoke\") {\n\t\t\t\t\t\tlet data = payload.data;\n\t\t\t\t\t\tif (data.id.startsWith(\"response:\")) {\n\t\t\t\t\t\t\tlet invokeId = data.id.slice(9), promise = rpcPromises.get(invokeId);\n\t\t\t\t\t\t\tif (!promise) return;\n\t\t\t\t\t\t\tpromise.timeoutId && clearTimeout(promise.timeoutId), rpcPromises.delete(invokeId);\n\t\t\t\t\t\t\tlet { error, result } = data.data;\n\t\t\t\t\t\t\terror ? promise.reject(error) : promise.resolve(result);\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tonMessage(payload);\n\t\t\t\t},\n\t\t\t\tonDisconnection\n\t\t\t});\n\t\t},\n\t\tdisconnect() {\n\t\t\treturn rpcPromises.forEach((promise) => {\n\t\t\t\tpromise.reject(/* @__PURE__ */ Error(`transport was disconnected, cannot call ${JSON.stringify(promise.name)}`));\n\t\t\t}), rpcPromises.clear(), transport.disconnect?.();\n\t\t},\n\t\tsend(data) {\n\t\t\treturn transport.send(data);\n\t\t},\n\t\tasync invoke(name, data) {\n\t\t\tlet promiseId = nanoid(), wrappedData = {\n\t\t\t\ttype: \"custom\",\n\t\t\t\tevent: \"vite:invoke\",\n\t\t\t\tdata: {\n\t\t\t\t\tname,\n\t\t\t\t\tid: `send:${promiseId}`,\n\t\t\t\t\tdata\n\t\t\t\t}\n\t\t\t}, sendPromise = transport.send(wrappedData), { promise, resolve: resolve$1, reject } = promiseWithResolvers(), timeout = transport.timeout ?? 6e4, timeoutId;\n\t\t\ttimeout > 0 && (timeoutId = setTimeout(() => {\n\t\t\t\trpcPromises.delete(promiseId), reject(/* @__PURE__ */ Error(`transport invoke timed out after ${timeout}ms (data: ${JSON.stringify(wrappedData)})`));\n\t\t\t}, timeout), timeoutId?.unref?.()), rpcPromises.set(promiseId, {\n\t\t\t\tresolve: resolve$1,\n\t\t\t\treject,\n\t\t\t\tname,\n\t\t\t\ttimeoutId\n\t\t\t}), sendPromise && sendPromise.catch((err) => {\n\t\t\t\tclearTimeout(timeoutId), rpcPromises.delete(promiseId), reject(err);\n\t\t\t});\n\t\t\ttry {\n\t\t\t\treturn await promise;\n\t\t\t} catch (err) {\n\t\t\t\tthrow reviveInvokeError(err);\n\t\t\t}\n\t\t}\n\t};\n}, normalizeModuleRunnerTransport = (transport) => {\n\tlet invokeableTransport = createInvokeableTransport(transport), isConnected = !invokeableTransport.connect, connectingPromise;\n\treturn {\n\t\t...transport,\n\t\t...invokeableTransport.connect ? { async connect(onMessage) {\n\t\t\tif (isConnected) return;\n\t\t\tif (connectingPromise) {\n\t\t\t\tawait connectingPromise;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tlet maybePromise = invokeableTransport.connect({\n\t\t\t\tonMessage: onMessage ?? (() => {}),\n\t\t\t\tonDisconnection() {\n\t\t\t\t\tisConnected = !1;\n\t\t\t\t}\n\t\t\t});\n\t\t\tmaybePromise && (connectingPromise = maybePromise, await connectingPromise, connectingPromise = void 0), isConnected = !0;\n\t\t} } : {},\n\t\t...invokeableTransport.disconnect ? { async disconnect() {\n\t\t\tisConnected && (connectingPromise && await connectingPromise, isConnected = !1, await invokeableTransport.disconnect());\n\t\t} } : {},\n\t\tasync send(data) {\n\t\t\tif (invokeableTransport.send) {\n\t\t\t\tif (!isConnected) if (connectingPromise) await connectingPromise;\n\t\t\t\telse throw Error(\"send was called before connect\");\n\t\t\t\tawait invokeableTransport.send(data);\n\t\t\t}\n\t\t},\n\t\tasync invoke(name, data) {\n\t\t\tif (!isConnected) if (connectingPromise) await connectingPromise;\n\t\t\telse throw Error(\"invoke was called before connect\");\n\t\t\treturn invokeableTransport.invoke(name, data);\n\t\t}\n\t};\n}, createWebSocketModuleRunnerTransport = (options) => {\n\tlet pingInterval = options.pingInterval ?? 3e4, ws, pingIntervalId;\n\treturn {\n\t\tasync connect({ onMessage, onDisconnection }) {\n\t\t\tlet socket = options.createConnection();\n\t\t\tsocket.addEventListener(\"message\", async ({ data }) => {\n\t\t\t\tonMessage(JSON.parse(data));\n\t\t\t});\n\t\t\tlet isOpened = socket.readyState === socket.OPEN;\n\t\t\tisOpened || await new Promise((resolve$1, reject) => {\n\t\t\t\tsocket.addEventListener(\"open\", () => {\n\t\t\t\t\tisOpened = !0, resolve$1();\n\t\t\t\t}, { once: !0 }), socket.addEventListener(\"close\", async () => {\n\t\t\t\t\tif (!isOpened) {\n\t\t\t\t\t\treject(/* @__PURE__ */ Error(\"WebSocket closed without opened.\"));\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tonMessage({\n\t\t\t\t\t\ttype: \"custom\",\n\t\t\t\t\t\tevent: \"vite:ws:disconnect\",\n\t\t\t\t\t\tdata: { webSocket: socket }\n\t\t\t\t\t}), onDisconnection();\n\t\t\t\t});\n\t\t\t}), onMessage({\n\t\t\t\ttype: \"custom\",\n\t\t\t\tevent: \"vite:ws:connect\",\n\t\t\t\tdata: { webSocket: socket }\n\t\t\t}), ws = socket, pingIntervalId = setInterval(() => {\n\t\t\t\tsocket.readyState === socket.OPEN && socket.send(JSON.stringify({ type: \"ping\" }));\n\t\t\t}, pingInterval);\n\t\t},\n\t\tdisconnect() {\n\t\t\tclearInterval(pingIntervalId), ws?.close();\n\t\t},\n\t\tsend(data) {\n\t\t\tws.send(JSON.stringify(data));\n\t\t}\n\t};\n};\nfunction createIsBuiltin(builtins) {\n\tlet plainBuiltinsSet = new Set(builtins.filter((builtin) => typeof builtin == \"string\")), regexBuiltins = builtins.filter((builtin) => typeof builtin != \"string\");\n\treturn (id) => plainBuiltinsSet.has(id) || regexBuiltins.some((regexp) => regexp.test(id));\n}\nconst ssrModuleExportsKey = \"__vite_ssr_exports__\", ssrImportKey = \"__vite_ssr_import__\", ssrDynamicImportKey = \"__vite_ssr_dynamic_import__\", ssrExportAllKey = \"__vite_ssr_exportAll__\", ssrExportNameKey = \"__vite_ssr_exportName__\", ssrImportMetaKey = \"__vite_ssr_import_meta__\", noop = () => {}, silentConsole = {\n\tdebug: noop,\n\terror: noop\n}, hmrLogger = {\n\tdebug: (...msg) => console.log(\"[vite]\", ...msg),\n\terror: (error) => console.log(\"[vite]\", error)\n};\nfunction createHMRHandler(handler) {\n\tlet queue = new Queue();\n\treturn (payload) => queue.enqueue(() => handler(payload));\n}\nvar Queue = class {\n\tqueue = [];\n\tpending = !1;\n\tenqueue(promise) {\n\t\treturn new Promise((resolve$1, reject) => {\n\t\t\tthis.queue.push({\n\t\t\t\tpromise,\n\t\t\t\tresolve: resolve$1,\n\t\t\t\treject\n\t\t\t}), this.dequeue();\n\t\t});\n\t}\n\tdequeue() {\n\t\tif (this.pending) return !1;\n\t\tlet item = this.queue.shift();\n\t\treturn item ? (this.pending = !0, item.promise().then(item.resolve).catch(item.reject).finally(() => {\n\t\t\tthis.pending = !1, this.dequeue();\n\t\t}), !0) : !1;\n\t}\n};\nfunction createHMRHandlerForRunner(runner) {\n\treturn createHMRHandler(async (payload) => {\n\t\tlet hmrClient = runner.hmrClient;\n\t\tif (!(!hmrClient || runner.isClosed())) switch (payload.type) {\n\t\t\tcase \"connected\":\n\t\t\t\thmrClient.logger.debug(\"connected.\");\n\t\t\t\tbreak;\n\t\t\tcase \"update\":\n\t\t\t\tawait hmrClient.notifyListeners(\"vite:beforeUpdate\", payload), await Promise.all(payload.updates.map(async (update) => {\n\t\t\t\t\tif (update.type === \"js-update\") return update.acceptedPath = unwrapId(update.acceptedPath), update.path = unwrapId(update.path), hmrClient.queueUpdate(update);\n\t\t\t\t\thmrClient.logger.error(\"css hmr is not supported in runner mode.\");\n\t\t\t\t})), await hmrClient.notifyListeners(\"vite:afterUpdate\", payload);\n\t\t\t\tbreak;\n\t\t\tcase \"custom\":\n\t\t\t\tawait hmrClient.notifyListeners(payload.event, payload.data);\n\t\t\t\tbreak;\n\t\t\tcase \"full-reload\": {\n\t\t\t\tlet { triggeredBy } = payload, clearEntrypointUrls = triggeredBy ? getModulesEntrypoints(runner, getModulesByFile(runner, slash(triggeredBy))) : findAllEntrypoints(runner);\n\t\t\t\tif (!clearEntrypointUrls.size) break;\n\t\t\t\thmrClient.logger.debug(\"program reload\"), await hmrClient.notifyListeners(\"vite:beforeFullReload\", payload), runner.evaluatedModules.clear();\n\t\t\t\tfor (let url of clearEntrypointUrls) try {\n\t\t\t\t\tawait runner.import(url);\n\t\t\t\t} catch (err) {\n\t\t\t\t\terr.code !== \"ERR_OUTDATED_OPTIMIZED_DEP\" && hmrClient.logger.error(`An error happened during full reload\\n${err.message}\\n${err.stack}`);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"prune\":\n\t\t\t\tawait hmrClient.notifyListeners(\"vite:beforePrune\", payload), await hmrClient.prunePaths(payload.paths);\n\t\t\t\tbreak;\n\t\t\tcase \"error\": {\n\t\t\t\tawait hmrClient.notifyListeners(\"vite:error\", payload);\n\t\t\t\tlet err = payload.err;\n\t\t\t\thmrClient.logger.error(`Internal Server Error\\n${err.message}\\n${err.stack}`);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"ping\": break;\n\t\t\tdefault: return payload;\n\t\t}\n\t});\n}\nfunction getModulesByFile(runner, file) {\n\tlet nodes = runner.evaluatedModules.getModulesByFile(file);\n\treturn nodes ? [...nodes].map((node) => node.id) : [];\n}\nfunction getModulesEntrypoints(runner, modules, visited = /* @__PURE__ */ new Set(), entrypoints = /* @__PURE__ */ new Set()) {\n\tfor (let moduleId of modules) {\n\t\tif (visited.has(moduleId)) continue;\n\t\tvisited.add(moduleId);\n\t\tlet module = runner.evaluatedModules.getModuleById(moduleId);\n\t\tif (module) {\n\t\t\tif (!module.importers.size) {\n\t\t\t\tentrypoints.add(module.url);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tfor (let importer of module.importers) getModulesEntrypoints(runner, [importer], visited, entrypoints);\n\t\t}\n\t}\n\treturn entrypoints;\n}\nfunction findAllEntrypoints(runner, entrypoints = /* @__PURE__ */ new Set()) {\n\tfor (let mod of runner.evaluatedModules.idToModuleMap.values()) mod.importers.size || entrypoints.add(mod.url);\n\treturn entrypoints;\n}\nconst sourceMapCache = {}, fileContentsCache = {}, evaluatedModulesCache = /* @__PURE__ */ new Set(), retrieveFileHandlers = /* @__PURE__ */ new Set(), retrieveSourceMapHandlers = /* @__PURE__ */ new Set(), createExecHandlers = (handlers) => ((...args) => {\n\tfor (let handler of handlers) {\n\t\tlet result = handler(...args);\n\t\tif (result) return result;\n\t}\n\treturn null;\n}), retrieveFileFromHandlers = createExecHandlers(retrieveFileHandlers), retrieveSourceMapFromHandlers = createExecHandlers(retrieveSourceMapHandlers);\nlet overridden = !1;\nconst originalPrepare = Error.prepareStackTrace;\nfunction resetInterceptor(runner, options) {\n\tevaluatedModulesCache.delete(runner.evaluatedModules), options.retrieveFile && retrieveFileHandlers.delete(options.retrieveFile), options.retrieveSourceMap && retrieveSourceMapHandlers.delete(options.retrieveSourceMap), evaluatedModulesCache.size === 0 && (Error.prepareStackTrace = originalPrepare, overridden = !1);\n}\nfunction interceptStackTrace(runner, options = {}) {\n\treturn overridden ||= (Error.prepareStackTrace = prepareStackTrace, !0), evaluatedModulesCache.add(runner.evaluatedModules), options.retrieveFile && retrieveFileHandlers.add(options.retrieveFile), options.retrieveSourceMap && retrieveSourceMapHandlers.add(options.retrieveSourceMap), () => resetInterceptor(runner, options);\n}\nfunction supportRelativeURL(file, url) {\n\tif (!file) return url;\n\tlet dir = posixDirname(slash(file)), match = /^\\w+:\\/\\/[^/]*/.exec(dir), protocol = match ? match[0] : \"\", startPath = dir.slice(protocol.length);\n\treturn protocol && /^\\/\\w:/.test(startPath) ? (protocol += \"/\", protocol + slash(posixResolve(startPath, url))) : protocol + posixResolve(startPath, url);\n}\nfunction getRunnerSourceMap(position) {\n\tfor (let moduleGraph of evaluatedModulesCache) {\n\t\tlet sourceMap = moduleGraph.getModuleSourceMapById(position.source);\n\t\tif (sourceMap) return {\n\t\t\turl: position.source,\n\t\t\tmap: sourceMap,\n\t\t\tvite: !0\n\t\t};\n\t}\n\treturn null;\n}\nfunction retrieveFile(path) {\n\tif (path in fileContentsCache) return fileContentsCache[path];\n\tlet content = retrieveFileFromHandlers(path);\n\treturn typeof content == \"string\" ? (fileContentsCache[path] = content, content) : null;\n}\nfunction retrieveSourceMapURL(source) {\n\tlet fileData = retrieveFile(source);\n\tif (!fileData) return null;\n\tlet re = /\\/\\/[@#]\\s*sourceMappingURL=([^\\s'\"]+)\\s*$|\\/\\*[@#]\\s*sourceMappingURL=[^\\s*'\"]+\\s*\\*\\/\\s*$/gm, lastMatch, match;\n\tfor (; match = re.exec(fileData);) lastMatch = match;\n\treturn lastMatch ? lastMatch[1] : null;\n}\nconst reSourceMap = /^data:application\\/json[^,]+base64,/;\nfunction retrieveSourceMap(source) {\n\tlet urlAndMap = retrieveSourceMapFromHandlers(source);\n\tif (urlAndMap) return urlAndMap;\n\tlet sourceMappingURL = retrieveSourceMapURL(source);\n\tif (!sourceMappingURL) return null;\n\tlet sourceMapData;\n\tif (reSourceMap.test(sourceMappingURL)) {\n\t\tlet rawData = sourceMappingURL.slice(sourceMappingURL.indexOf(\",\") + 1);\n\t\tsourceMapData = Buffer.from(rawData, \"base64\").toString(), sourceMappingURL = source;\n\t} else sourceMappingURL = supportRelativeURL(source, sourceMappingURL), sourceMapData = retrieveFile(sourceMappingURL);\n\treturn sourceMapData ? {\n\t\turl: sourceMappingURL,\n\t\tmap: sourceMapData\n\t} : null;\n}\nfunction mapSourcePosition(position) {\n\tif (!position.source) return position;\n\tlet sourceMap = getRunnerSourceMap(position);\n\tif (sourceMap ||= sourceMapCache[position.source], !sourceMap) {\n\t\tlet urlAndMap = retrieveSourceMap(position.source);\n\t\tif (urlAndMap && urlAndMap.map) {\n\t\t\tlet url = urlAndMap.url;\n\t\t\tsourceMap = sourceMapCache[position.source] = {\n\t\t\t\turl,\n\t\t\t\tmap: new DecodedMap(typeof urlAndMap.map == \"string\" ? JSON.parse(urlAndMap.map) : urlAndMap.map, url)\n\t\t\t};\n\t\t\tlet contents = sourceMap.map?.map.sourcesContent;\n\t\t\tsourceMap.map && contents && sourceMap.map.resolvedSources.forEach((source, i) => {\n\t\t\t\tlet content = contents[i];\n\t\t\t\tif (content && source && url) {\n\t\t\t\t\tlet contentUrl = supportRelativeURL(url, source);\n\t\t\t\t\tfileContentsCache[contentUrl] = content;\n\t\t\t\t}\n\t\t\t});\n\t\t} else sourceMap = sourceMapCache[position.source] = {\n\t\t\turl: null,\n\t\t\tmap: null\n\t\t};\n\t}\n\tif (sourceMap.map && sourceMap.url) {\n\t\tlet originalPosition = getOriginalPosition(sourceMap.map, position);\n\t\tif (originalPosition && originalPosition.source != null) return originalPosition.source = supportRelativeURL(sourceMap.url, originalPosition.source), sourceMap.vite && (originalPosition._vite = !0), originalPosition;\n\t}\n\treturn position;\n}\nfunction mapEvalOrigin(origin) {\n\tlet match = /^eval at ([^(]+) \\((.+):(\\d+):(\\d+)\\)$/.exec(origin);\n\tif (match) {\n\t\tlet position = mapSourcePosition({\n\t\t\tname: null,\n\t\t\tsource: match[2],\n\t\t\tline: +match[3],\n\t\t\tcolumn: match[4] - 1\n\t\t});\n\t\treturn `eval at ${match[1]} (${position.source}:${position.line}:${position.column + 1})`;\n\t}\n\treturn match = /^eval at ([^(]+) \\((.+)\\)$/.exec(origin), match ? `eval at ${match[1]} (${mapEvalOrigin(match[2])})` : origin;\n}\nfunction CallSiteToString() {\n\tlet fileName, fileLocation = \"\";\n\tif (this.isNative()) fileLocation = \"native\";\n\telse {\n\t\tfileName = this.getScriptNameOrSourceURL(), !fileName && this.isEval() && (fileLocation = this.getEvalOrigin(), fileLocation += \", \"), fileName ? fileLocation += fileName : fileLocation += \"<anonymous>\";\n\t\tlet lineNumber = this.getLineNumber();\n\t\tif (lineNumber != null) {\n\t\t\tfileLocation += `:${lineNumber}`;\n\t\t\tlet columnNumber = this.getColumnNumber();\n\t\t\tcolumnNumber && (fileLocation += `:${columnNumber}`);\n\t\t}\n\t}\n\tlet line = \"\", functionName = this.getFunctionName(), addSuffix = !0, isConstructor = this.isConstructor();\n\tif (this.isToplevel() || isConstructor) isConstructor ? line += `new ${functionName || \"<anonymous>\"}` : functionName ? line += functionName : (line += fileLocation, addSuffix = !1);\n\telse {\n\t\tlet typeName = this.getTypeName();\n\t\ttypeName === \"[object Object]\" && (typeName = \"null\");\n\t\tlet methodName = this.getMethodName();\n\t\tfunctionName ? (typeName && functionName.indexOf(typeName) !== 0 && (line += `${typeName}.`), line += functionName, methodName && functionName.indexOf(`.${methodName}`) !== functionName.length - methodName.length - 1 && (line += ` [as ${methodName}]`)) : line += `${typeName}.${methodName || \"<anonymous>\"}`;\n\t}\n\treturn addSuffix && (line += ` (${fileLocation})`), line;\n}\nfunction cloneCallSite(frame) {\n\tlet object = {};\n\treturn Object.getOwnPropertyNames(Object.getPrototypeOf(frame)).forEach((name) => {\n\t\tlet key = name;\n\t\tobject[key] = /^(?:is|get)/.test(name) ? function() {\n\t\t\treturn frame[key].call(frame);\n\t\t} : frame[key];\n\t}), object.toString = CallSiteToString, object;\n}\nfunction wrapCallSite(frame, state) {\n\tif (state === void 0 && (state = {\n\t\tnextPosition: null,\n\t\tcurPosition: null\n\t}), frame.isNative()) return state.curPosition = null, frame;\n\tlet source = frame.getFileName() || frame.getScriptNameOrSourceURL();\n\tif (source) {\n\t\tlet line = frame.getLineNumber(), column = frame.getColumnNumber() - 1;\n\t\tline === 1 && column > 62 && !frame.isEval() && (column -= 62);\n\t\tlet position = mapSourcePosition({\n\t\t\tname: null,\n\t\t\tsource,\n\t\t\tline,\n\t\t\tcolumn\n\t\t});\n\t\tstate.curPosition = position, frame = cloneCallSite(frame);\n\t\tlet originalFunctionName = frame.getFunctionName;\n\t\treturn frame.getFunctionName = function() {\n\t\t\tlet name = (() => state.nextPosition == null ? originalFunctionName() : state.nextPosition.name || originalFunctionName())();\n\t\t\treturn name === \"eval\" && \"_vite\" in position ? null : name;\n\t\t}, frame.getFileName = function() {\n\t\t\treturn position.source ?? null;\n\t\t}, frame.getLineNumber = function() {\n\t\t\treturn position.line;\n\t\t}, frame.getColumnNumber = function() {\n\t\t\treturn position.column + 1;\n\t\t}, frame.getScriptNameOrSourceURL = function() {\n\t\t\treturn position.source;\n\t\t}, frame;\n\t}\n\tlet origin = frame.isEval() && frame.getEvalOrigin();\n\treturn origin ? (origin = mapEvalOrigin(origin), frame = cloneCallSite(frame), frame.getEvalOrigin = function() {\n\t\treturn origin || void 0;\n\t}, frame) : frame;\n}\nfunction prepareStackTrace(error, stack) {\n\tlet errorString = `${error.name || \"Error\"}: ${error.message || \"\"}`, state = {\n\t\tnextPosition: null,\n\t\tcurPosition: null\n\t}, processedStack = [];\n\tfor (let i = stack.length - 1; i >= 0; i--) processedStack.push(`\\n at ${wrapCallSite(stack[i], state)}`), state.nextPosition = state.curPosition;\n\treturn state.curPosition = state.nextPosition = null, errorString + processedStack.reverse().join(\"\");\n}\nfunction enableSourceMapSupport(runner) {\n\tif (runner.options.sourcemapInterceptor === \"node\") {\n\t\tif (typeof process > \"u\") throw TypeError(\"Cannot use \\\"sourcemapInterceptor: 'node'\\\" because global \\\"process\\\" variable is not available.\");\n\t\tif (typeof process.setSourceMapsEnabled != \"function\") throw TypeError(\"Cannot use \\\"sourcemapInterceptor: 'node'\\\" because \\\"process.setSourceMapsEnabled\\\" function is not available. Please use Node >= 16.6.0.\");\n\t\tlet isEnabledAlready = process.sourceMapsEnabled ?? !1;\n\t\treturn process.setSourceMapsEnabled(!0), () => !isEnabledAlready && process.setSourceMapsEnabled(!1);\n\t}\n\treturn interceptStackTrace(runner, typeof runner.options.sourcemapInterceptor == \"object\" ? runner.options.sourcemapInterceptor : void 0);\n}\nvar ESModulesEvaluator = class {\n\tstartOffset = getAsyncFunctionDeclarationPaddingLineCount();\n\tasync runInlinedModule(context, code) {\n\t\tawait new AsyncFunction(ssrModuleExportsKey, ssrImportMetaKey, ssrImportKey, ssrDynamicImportKey, ssrExportAllKey, ssrExportNameKey, \"\\\"use strict\\\";\" + code)(context[ssrModuleExportsKey], context[ssrImportMetaKey], context[ssrImportKey], context[ssrDynamicImportKey], context[ssrExportAllKey], context[ssrExportNameKey]), Object.seal(context[ssrModuleExportsKey]);\n\t}\n\trunExternalModule(filepath) {\n\t\treturn import(filepath);\n\t}\n};\nconst customizationHookNamespace = \"vite-module-runner:import-meta-resolve/v1/\", customizationHooksModule = `\n\nexport async function resolve(specifier, context, nextResolve) {\n if (specifier.startsWith(${JSON.stringify(customizationHookNamespace)})) {\n const data = specifier.slice(${JSON.stringify(customizationHookNamespace)}.length)\n const [parsedSpecifier, parsedImporter] = JSON.parse(data)\n specifier = parsedSpecifier\n context.parentURL = parsedImporter\n }\n return nextResolve(specifier, context)\n}\n\n`;\nfunction customizationHookResolve(specifier, context, nextResolve) {\n\tif (specifier.startsWith(customizationHookNamespace)) {\n\t\tlet data = specifier.slice(42), [parsedSpecifier, parsedImporter] = JSON.parse(data);\n\t\tspecifier = parsedSpecifier, context.parentURL = parsedImporter;\n\t}\n\treturn nextResolve(specifier, context);\n}\nasync function createImportMetaResolver() {\n\tlet module;\n\ttry {\n\t\tmodule = (await import(\"node:module\")).Module;\n\t} catch {\n\t\treturn;\n\t}\n\tif (module) {\n\t\tif (module.registerHooks) return module.registerHooks({ resolve: customizationHookResolve }), importMetaResolveWithCustomHook;\n\t\tif (module.register) {\n\t\t\ttry {\n\t\t\t\tlet hookModuleContent = `data:text/javascript,${encodeURI(customizationHooksModule)}`;\n\t\t\t\tmodule.register(hookModuleContent);\n\t\t\t} catch (e) {\n\t\t\t\tif (\"code\" in e && e.code === \"ERR_NETWORK_IMPORT_DISALLOWED\") return;\n\t\t\t\tthrow e;\n\t\t\t}\n\t\t\treturn importMetaResolveWithCustomHook;\n\t\t}\n\t}\n}\nfunction importMetaResolveWithCustomHook(specifier, importer) {\n\treturn import.meta.resolve(`${customizationHookNamespace}${JSON.stringify([specifier, importer])}`);\n}\n`${customizationHookNamespace}`;\nconst envProxy = new Proxy({}, { get(_, p) {\n\tthrow Error(`[module runner] Dynamic access of \"import.meta.env\" is not supported. Please, use \"import.meta.env.${String(p)}\" instead.`);\n} });\nfunction createDefaultImportMeta(modulePath) {\n\tlet href = posixPathToFileHref(modulePath), filename = modulePath, dirname$1 = posixDirname(modulePath);\n\treturn {\n\t\tfilename: isWindows ? toWindowsPath(filename) : filename,\n\t\tdirname: isWindows ? toWindowsPath(dirname$1) : dirname$1,\n\t\turl: href,\n\t\tenv: envProxy,\n\t\tresolve(_id, _parent) {\n\t\t\tthrow Error(\"[module runner] \\\"import.meta.resolve\\\" is not supported.\");\n\t\t},\n\t\tglob() {\n\t\t\tthrow Error(\"[module runner] \\\"import.meta.glob\\\" is statically replaced during file transformation. Make sure to reference it by the full name.\");\n\t\t}\n\t};\n}\nlet importMetaResolverCache;\nasync function createNodeImportMeta(modulePath) {\n\tlet defaultMeta = createDefaultImportMeta(modulePath), href = defaultMeta.url;\n\timportMetaResolverCache ??= createImportMetaResolver();\n\tlet importMetaResolver = await importMetaResolverCache;\n\treturn {\n\t\t...defaultMeta,\n\t\tmain: !1,\n\t\tresolve(id, parent) {\n\t\t\treturn (importMetaResolver ?? defaultMeta.resolve)(id, parent ?? href);\n\t\t}\n\t};\n}\nvar ModuleRunner = class {\n\tevaluatedModules;\n\thmrClient;\n\ttransport;\n\tresetSourceMapSupport;\n\tconcurrentModuleNodePromises = /* @__PURE__ */ new Map();\n\tisBuiltin;\n\tbuiltinsPromise;\n\tclosed = !1;\n\tconstructor(options, evaluator = new ESModulesEvaluator(), debug) {\n\t\tif (this.options = options, this.evaluator = evaluator, this.debug = debug, this.evaluatedModules = options.evaluatedModules ?? new EvaluatedModules(), this.transport = normalizeModuleRunnerTransport(options.transport), options.hmr !== !1) {\n\t\t\tlet optionsHmr = options.hmr ?? !0;\n\t\t\tif (this.hmrClient = new HMRClient(optionsHmr === !0 || optionsHmr.logger === void 0 ? hmrLogger : optionsHmr.logger === !1 ? silentConsole : optionsHmr.logger, this.transport, ({ acceptedPath }) => this.import(acceptedPath)), !this.transport.connect) throw Error(\"HMR is not supported by this runner transport, but `hmr` option was set to true\");\n\t\t\tthis.transport.connect(createHMRHandlerForRunner(this));\n\t\t} else this.transport.connect?.();\n\t\toptions.sourcemapInterceptor !== !1 && (this.resetSourceMapSupport = enableSourceMapSupport(this));\n\t}\n\tasync import(url) {\n\t\tlet fetchedModule = await this.cachedModule(url);\n\t\treturn await this.cachedRequest(url, fetchedModule);\n\t}\n\tclearCache() {\n\t\tthis.evaluatedModules.clear(), this.hmrClient?.clear();\n\t}\n\tasync close() {\n\t\tthis.resetSourceMapSupport?.(), this.clearCache(), this.hmrClient = void 0, this.closed = !0, await this.transport.disconnect?.();\n\t}\n\tisClosed() {\n\t\treturn this.closed;\n\t}\n\tprocessImport(exports, fetchResult, metadata) {\n\t\tif (!(\"externalize\" in fetchResult)) return exports;\n\t\tlet { url, type } = fetchResult;\n\t\treturn type !== \"module\" && type !== \"commonjs\" || analyzeImportedModDifference(exports, url, type, metadata), exports;\n\t}\n\tisCircularModule(mod) {\n\t\tfor (let importedFile of mod.imports) if (mod.importers.has(importedFile)) return !0;\n\t\treturn !1;\n\t}\n\tisCircularImport(importers, moduleUrl, visited = /* @__PURE__ */ new Set()) {\n\t\tfor (let importer of importers) {\n\t\t\tif (visited.has(importer)) continue;\n\t\t\tif (visited.add(importer), importer === moduleUrl) return !0;\n\t\t\tlet mod = this.evaluatedModules.getModuleById(importer);\n\t\t\tif (mod && mod.importers.size && this.isCircularImport(mod.importers, moduleUrl, visited)) return !0;\n\t\t}\n\t\treturn !1;\n\t}\n\tasync cachedRequest(url, mod, callstack = [], metadata) {\n\t\tlet meta = mod.meta, moduleId = meta.id, { importers } = mod, importee = callstack[callstack.length - 1];\n\t\tif (importee && importers.add(importee), (callstack.includes(moduleId) || this.isCircularModule(mod) || this.isCircularImport(importers, moduleId)) && mod.exports) return this.processImport(mod.exports, meta, metadata);\n\t\tlet debugTimer;\n\t\tthis.debug && (debugTimer = setTimeout(() => {\n\t\t\tthis.debug(`[module runner] module ${moduleId} takes over 2s to load.\\n${(() => `stack:\\n${[...callstack, moduleId].reverse().map((p) => ` - ${p}`).join(\"\\n\")}`)()}`);\n\t\t}, 2e3));\n\t\ttry {\n\t\t\tif (mod.promise) return this.processImport(await mod.promise, meta, metadata);\n\t\t\tlet promise = this.directRequest(url, mod, callstack);\n\t\t\treturn mod.promise = promise, mod.evaluated = !1, this.processImport(await promise, meta, metadata);\n\t\t} finally {\n\t\t\tmod.evaluated = !0, debugTimer && clearTimeout(debugTimer);\n\t\t}\n\t}\n\tasync cachedModule(url, importer) {\n\t\tlet cached = this.concurrentModuleNodePromises.get(url);\n\t\tif (cached) this.debug?.(\"[module runner] using cached module info for\", url);\n\t\telse {\n\t\t\tlet cachedModule = this.evaluatedModules.getModuleByUrl(url);\n\t\t\tcached = this.getModuleInformation(url, importer, cachedModule).finally(() => {\n\t\t\t\tthis.concurrentModuleNodePromises.delete(url);\n\t\t\t}), this.concurrentModuleNodePromises.set(url, cached);\n\t\t}\n\t\treturn cached;\n\t}\n\tensureBuiltins() {\n\t\tif (!this.isBuiltin) return this.builtinsPromise ??= (async () => {\n\t\t\ttry {\n\t\t\t\tthis.debug?.(\"[module runner] fetching builtins from server\");\n\t\t\t\tlet builtins = (await this.transport.invoke(\"getBuiltins\", [])).map((builtin) => typeof builtin == \"object\" && builtin && \"type\" in builtin ? builtin.type === \"string\" ? builtin.value : new RegExp(builtin.source, builtin.flags) : builtin);\n\t\t\t\tthis.isBuiltin = createIsBuiltin(builtins), this.debug?.(\"[module runner] builtins loaded:\", builtins);\n\t\t\t} finally {\n\t\t\t\tthis.builtinsPromise = void 0;\n\t\t\t}\n\t\t})(), this.builtinsPromise;\n\t}\n\tasync getModuleInformation(url, importer, cachedModule) {\n\t\tif (this.closed) throw Error(\"Vite module runner has been closed.\");\n\t\tawait this.ensureBuiltins(), this.debug?.(\"[module runner] fetching\", url);\n\t\tlet isCached = !!(typeof cachedModule == \"object\" && cachedModule.meta), fetchedModule = url.startsWith(\"data:\") || this.isBuiltin?.(url) ? {\n\t\t\texternalize: url,\n\t\t\ttype: \"builtin\"\n\t\t} : await this.transport.invoke(\"fetchModule\", [\n\t\t\turl,\n\t\t\timporter,\n\t\t\t{\n\t\t\t\tcached: isCached,\n\t\t\t\tstartOffset: this.evaluator.startOffset\n\t\t\t}\n\t\t]);\n\t\tif (\"cache\" in fetchedModule) {\n\t\t\tif (!cachedModule || !cachedModule.meta) throw Error(`Module \"${url}\" was mistakenly invalidated during fetch phase.`);\n\t\t\treturn cachedModule;\n\t\t}\n\t\tlet moduleId = \"externalize\" in fetchedModule ? fetchedModule.externalize : fetchedModule.id, moduleUrl = \"url\" in fetchedModule ? fetchedModule.url : url, module = this.evaluatedModules.ensureModule(moduleId, moduleUrl);\n\t\treturn \"invalidate\" in fetchedModule && fetchedModule.invalidate && this.evaluatedModules.invalidateModule(module), fetchedModule.url = moduleUrl, fetchedModule.id = moduleId, module.meta = fetchedModule, module;\n\t}\n\tasync directRequest(url, mod, _callstack) {\n\t\tlet fetchResult = mod.meta, moduleId = fetchResult.id, callstack = [..._callstack, moduleId], request = async (dep, metadata) => {\n\t\t\tlet importer = \"file\" in fetchResult && fetchResult.file || moduleId, depMod = await this.cachedModule(dep, importer);\n\t\t\treturn depMod.importers.add(moduleId), mod.imports.add(depMod.id), this.cachedRequest(dep, depMod, callstack, metadata);\n\t\t}, dynamicRequest = async (dep) => (dep = String(dep), dep[0] === \".\" && (dep = posixResolve(posixDirname(url), dep)), request(dep, { isDynamicImport: !0 }));\n\t\tif (\"externalize\" in fetchResult) {\n\t\t\tlet { externalize } = fetchResult;\n\t\t\tthis.debug?.(\"[module runner] externalizing\", externalize);\n\t\t\tlet exports$1 = await this.evaluator.runExternalModule(externalize);\n\t\t\treturn mod.exports = exports$1, exports$1;\n\t\t}\n\t\tlet { code, file } = fetchResult;\n\t\tif (code == null) {\n\t\t\tlet importer = callstack[callstack.length - 2];\n\t\t\tthrow Error(`[module runner] Failed to load \"${url}\"${importer ? ` imported from ${importer}` : \"\"}`);\n\t\t}\n\t\tlet createImportMeta = this.options.createImportMeta ?? createDefaultImportMeta, modulePath = cleanUrl(file || moduleId), href = posixPathToFileHref(modulePath), meta = await createImportMeta(modulePath), exports = Object.create(null);\n\t\tObject.defineProperty(exports, Symbol.toStringTag, {\n\t\t\tvalue: \"Module\",\n\t\t\tenumerable: !1,\n\t\t\tconfigurable: !1\n\t\t}), mod.exports = exports;\n\t\tlet hotContext;\n\t\tthis.hmrClient && Object.defineProperty(meta, \"hot\", {\n\t\t\tenumerable: !0,\n\t\t\tget: () => {\n\t\t\t\tif (!this.hmrClient) throw Error(\"[module runner] HMR client was closed.\");\n\t\t\t\treturn this.debug?.(\"[module runner] creating hmr context for\", mod.url), hotContext ||= new HMRContext(this.hmrClient, mod.url), hotContext;\n\t\t\t},\n\t\t\tset: (value) => {\n\t\t\t\thotContext = value;\n\t\t\t}\n\t\t});\n\t\tlet context = {\n\t\t\t[ssrImportKey]: request,\n\t\t\t[ssrDynamicImportKey]: dynamicRequest,\n\t\t\t[ssrModuleExportsKey]: exports,\n\t\t\t[ssrExportAllKey]: (obj) => exportAll(exports, obj),\n\t\t\t[ssrExportNameKey]: (name, getter) => Object.defineProperty(exports, name, {\n\t\t\t\tenumerable: !0,\n\t\t\t\tconfigurable: !0,\n\t\t\t\tget: getter\n\t\t\t}),\n\t\t\t[ssrImportMetaKey]: meta\n\t\t};\n\t\treturn this.debug?.(\"[module runner] executing\", href), await this.evaluator.runInlinedModule(context, code, mod), exports;\n\t}\n};\nfunction exportAll(exports, sourceModule) {\n\tif (exports !== sourceModule && !(isPrimitive(sourceModule) || Array.isArray(sourceModule) || sourceModule instanceof Promise)) {\n\t\tfor (let key in sourceModule) if (key !== \"default\" && key !== \"__esModule\" && !(key in exports)) try {\n\t\t\tObject.defineProperty(exports, key, {\n\t\t\t\tenumerable: !0,\n\t\t\t\tconfigurable: !0,\n\t\t\t\tget: () => sourceModule[key]\n\t\t\t});\n\t\t} catch {}\n\t}\n}\nexport { ESModulesEvaluator, EvaluatedModules, ModuleRunner, createDefaultImportMeta, createNodeImportMeta, createWebSocketModuleRunnerTransport, normalizeModuleId, ssrDynamicImportKey, ssrExportAllKey, ssrExportNameKey, ssrImportKey, ssrImportMetaKey, ssrModuleExportsKey };\n","/*\n * Copyright 2025 Hypergiant Galactic Systems Inc. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport * as matchers from '@testing-library/jest-dom/matchers';\nimport { cleanup } from '@testing-library/react';\nimport { afterEach, expect } from 'vitest';\n\nexpect.extend(matchers);\n\nafterEach(() => {\n cleanup();\n});\n"]}
|